Dom0環境構築
Xen4.5とFreeBSD 11-currentの組み合わせでDom0として動くようです。
まだ開発途上なので色々と未実装、制限事項ありますが、試す分には充分以上に動きます。
EPT, IOMMU をサポートするCPU, マザーボードが必須です。
http://wiki.xen.org/wiki/FreeBSD_Dom0
https://wiki.freebsd.org/FreeBSD/XenNG
http://wiki.xen.org/wiki/FreeBSD_PVH
https://lists.freebsd.org/pipermail/freebsd-xen/2015-May/002391.html
ためしてみる
ハードウェアは、自作機
CPU: Xeon E3 1265Lv2
MB: Asus P8B WS (C206チップセット)
メモリは NonECC 32GB
%uname -v [~]
FreeBSD 11.0-CURRENT #0 r283309: Sun May 24 01:30:32 JST 2015 root@:/usr/obj/usr/src/sys/GENERIC
FreeBSDのインストール
OSのインストール手順は割愛します。
-current を入れるという事だけど、配布されているスナップショットイメージを使ったらコンパイル作業中にカーネルパニックが多発して作業にならなかったので、10.1-STABLEをインストールしてから11-currentに更新しています。
Xen環境の作成
色々と設定しますが、見落としがちなのは主に以下の3点かと思います。
- BIOS設定で VT-d が有効になっている事
- login.conf の設定
- if_tap.koのロード
emulators/xen-kernel
sysutils/xen-tools
をインストールしますが、emulators/xen
がこれらのメタポートになってますので、これを入れます。
xen-kernel の pkg-messages に必要な設定が載っていますので、これに従い設定を行ってください。
% sudo portmaster emulators/xen
...
% cat /usr/ports/emulators/xen-kernel/pkg-message
Please add the following entries in order to boot the xen kernel
in /etc/sysctl.conf:
vm.max_wired=-1
in /etc/ttys
xc0 "/usr/libexec/getty Pc" xterm on secure
In /boot/loader.conf for a dom0 with 2G memory and 4 vcpus
xen_kernel="/boot/xen"
xen_cmdline="dom0_mem=2048M dom0_max_vcpus=4 dom0pvh=1 com1=115200,8n1 guest_loglvl=all loglvl=all"
Add
console=com1 to the above xen_cmdline in order to activate the serial console
In /boot/menu.rc.local
try-include /boot/xen.4th
サンプルではDom0のメモリが 2GBですが、ZFSを使うなら 4GB以上割り当てておいたほうが良いと思います。
上記に記載はありませんが、追加で設定を行います。
- /etc/login.conf で、memorylocked の値を unlimited に設定
- if_tap.ko を起動時にロード
login.confを編集し、memorylocked の項目を unlimited に変更し、cap_mkdb
コマンドでDBに書き込んで内容をシステムに反映させます。
% sudo vi /etc/login.conf
...
default:\
...
:memorylocked=unlimited:\
...
root:\
...
:memorylocked=unlimited:\
...
daemon:\
...
:memorylocked=unlimited:\
...
% sudo cap_mkdb /etc/login.conf
if_tap.koを起動時に読み込むように、/boot/loader.conf に if_tap_load="YES"
の行を記載します。
% cat /boot/loader.conf
kern.geom.label.gptid.enable="0"
zfs_load="YES"
xen_cmdline="dom0_mem=4096M dom0_max_vcpus=4 dom0pvh=1 com1=115200,8n1 guest_loglvl=all loglvl=all"
xen_kernel="/boot/xen"
if_tap_load="YES"
システムを再起動すると、Xen Dom0 として FreeBSD が起動してきます。
ゲストのセットアップ等、xl コマンドの使い方自体は変わりません。
躓いた点を挙げると、
OS起動時にパニックする
=> BIOSでVT-d、IOMMU、EPT あたりが無効になっている
ゲストの起動時にエラー
=> login.conf の設定漏れ
=> if_tab.ko がロードされていない
でした。
Windows 8.1Proを入れてみましたが、問題なく動作しています。