jailをbhyveに持ってったときのメモ

ホストであらかじめbridgeやtapを作っておく

/etc/rc.conf:

cloned_interfaces="tap0 bridge0"
autobridge_interfaces="bridge0"
autobridge_bridge0="re0 tap*"
ifconfig_bridge0="up"

diskイメージを作成しmdconfigでmd0にattachしてパーティションなどをつくっていく

# truncate -s 10G diskdev
# mdconfig -a diskdev
# gpart create -s gpt md0
# gpart add -b 40 -s 64K -t freebsd-boot -l boot0 md0
# gpart add -s 1G -t freebsd-swap -l swap0 md0
# gpart add -t freebsd-ufs -l disk0 md0
# gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 md0

ファイルシステムの作成/マウント/コピー

# newfs /dev/md0p3
# mount /dev/md0p3 /mnt
# tar cfzp - -C /SOURCE-DIR . | tar tvfp - -C /mnt

guestを起動させるには /etc/fstabを設定する必要がある。tarでパッケージを展開しただけやjailからコピーした場合は/etc/fstabは存在しないので作ってやる必要がある。

先程gpartで作成したパーティションでは

  • 起動パーティションにはdisk0
  • swapパーティションにはswap0

というラベルがついているので次のように書いておけばよいだろう

/mnt/etc/fstab:

/dev/gpt/disk0 / ufs rw 1 1
/dev/gpt/swap0 none swap sw 0 0

/etc/rc.confにて sshd等を起動するようにしておかないと淋しいことになるので、設定をしておく。自分の環境ではこんな感じ。

/etc/rc.conf:

hostname="test"
ifconfig_vtnet0="DHCP"
ifconfig_vtnet0_ipv6="inet6 accept_rtadv"
sshd_enable="YES"

bhyveをコマンドラインから起動したあとにその端末を consoleとするように/etc/ttysを書換えておくとなんかあったときに楽

/mnt/etc/ttys:

console "/usr/libexec/getty Pc"         vt100 on secure

作業が終了したので /dev/md0を unmountする

# umount /mnt

vmrun.shを使って起動してみる(/usr/share/example/bhyve/の下にある)

# ./vmrun.sh -d diskdev vm0

こんな感じに起動した

bhyvepng-8xnubtw9v039.png

Posted by issei

カテゴリ: BSD