FreeBSD 12をHyper-V環境とVMWare環境に構築し、以下のような手順でディレクトリを作りました。
Hyper-VはFreeBSD 12.2-RELEASE-amd64.vhd.xz
VMwareはFreeBSD 12.1-RELEASE-amd64-dvd1.iso
から構築しました。
bash
1mkdir /jail 2mkdir /jail/sample-jail01 3 4fetch ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/12.1-RELEASE/base.txz 5tar -xzpf base.txz -C /jail/sample-jail01
次のようなC言語のコードを実行しました。
c
1#include <stdio.h> 2#include <errno.h> 3#include <sys/param.h> 4#include <sys/jail.h> 5#include <sys/types.h> 6#include <unistd.h> 7#include <netinet/in.h> 8 9int main(void) 10{ 11 struct jail jail_01; 12 jail_01.version = 0; 13 jail_01.path = "/jail/sample-jail01"; 14 jail_01.hostname = "sample-jail01.com"; 15 16 // to be Jail Proccess 17 int jid = jail(&jail_01); 18 19 if (jid < 0) 20 { 21 printf("errno=%d\n", errno); 22 return -1; 23 } 24 25 printf("jid=%d\n", jid); 26 27 int ret = execl("/bin/sh", "/etc/rc", NULL); 28 29 return 0; 30} 31
VMWareではjail関数が成功してjailが起動するのですが、Hyper-Vではerrno=22と出力されてしまいます。
jail関数がEINVALの時は引数のバージョン番号が正しくないらしいのですが、引数のバージョン番号とはstruct jailのversionメンバのことなのかどうかがわかりません。jail_01.versionを03まで変えてみましたが13に設定したとき、Hyper-VでもVMwareでもerrno=22になりました。
引数のバージョン番号とはなんなのか、なぜerrno=22が出続けるのかを教えていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/02/22 13:39 編集
2021/02/22 14:02 編集