環境
- Hardware: MacMini(Early 2009)
- Memory: 4GB
- Xen: xen-4.1.2 (リリース版) (64bit)
- Dom0(kernel): Linux 3.3.6 (リリース版) (64bit)
- Dom0(distribution): Ubuntu 12.04
DomU
FreeBSD 9.0の64bit版(amd64)はまだPVに対応していないので、32bit版(i386)をインストールすることにします。
手順としてはまずHVMでインストールを行って、PV化という流れになります。
まずはHVMインストールです。
今回はネットワークインストールをするのでi386用のbootonly ISO imageを入手します。
ftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/ISO-IMAGES/9.0/FreeBSD-9.0-RELEASE-i386-bootonly.iso
Dom0でxen用configを作成します。
/etc/xen/freebsd9-hvm.cfg
kernel = "/usr/lib/xen/boot/hvmloader"
builder='hvm'
memory = 256
name = "freebsd9"
vif = [ 'type=ioemu, bridge=xenbr0' ]
disk = [ 'file:/xendata/freebsd9/disk.img,hda,w', 'file:/xendata/freebsd9/FreeBSD-9.0-RELEASE-i386-bootonly.iso,hdc:cdrom,r' ]
device_model = '/usr/lib/xen/bin/qemu-dm'
boot="d"
sdl=0
vnc=1
vnclisten="192.168.0.21"
vncdisplay=2
vncpasswd=''
serial='pty'
VNC接続のためのクライアントを準備しておきます。今回はMacOSX Lion上でTigerVNC 1.1.0を利用しました。当初Chicken of the VNCを利用したのですが、FreeBSDのカーネル起動後インストーラが起動したあたりで反応しなくなってしまいました。TigerVNCであれば問題なく利用できました。
dom0で空ファイルを作成しdomUを起動しvncクライアントで接続します。
dom0# dd if=/dev/zero of=/xendata/freebsd9/disk.img count=1 bs=1 seek=10G
dom0# xm create -c /etc/xen/freebsd9-hvm.cfg
lion# vncviewer 192.168.0.21:5902
VNCでFreeBSDのインストーラが起動するのでFreeBSDのインストールを行います。
ほぼデフォルトのままのインストールになるので詳細は省略しますが、ディスク全体を使用した自動設定をするとroot(/) partitionにはada0p2になります。
domUを終了します。
dom0# xm shutdown freebsd9
xenの設定ファイルを修正し、仮想HDDから起動するようにします。
/etc/xen/freebsd9-hvm.cfg
.
.
boot="c"
.
.
再起動して動作することを確認します。
dom0# xm create /etc/xen/freebsd9-hvm.cfg
ここまででHVMでのFreeBSD 9.0インストールは完了です。
次はPV化を行います。
HVMで動作しているFreeBSD 9.0上でPV用のカーネルを作成します。
まずはソースを取得します。今回はsvnで9 stableのソースを取得しました。stableを利用した理由は9.0 release以降にxen関連の修正がcommitされたためです。
そしてkernelをbuildします。configは附属のXENを利用します。とくに修正は加えていません。
freebsd9# pkg_add -r subversion
freebsd9# cd /usr/src
freebsd9# svn co http://svn.freebsd.org/base/stable/9 .
freebsd9# make buildkernel KERNCONF=XEN
生成されたkernelをdom0にコピーします。
freebsd9# scp /usr/obj/usr/src/sys/XEN/kernel dom0:/xendata/freebsd9/kernel-freebsd9-pv
ここでPV用の準備をしておきます。
xen console用のエントリ(xc0)を/etc/ttysに追加して不要なエントリを削除します。
/etc/ttys:
xc0 "/usr/libexec/getty Pc" vt100 on secure
#ttyv0 "/usr/libexec/getty Pc" xterm on secure
# Virtual terminals
#ttyv1 "/usr/libexec/getty Pc" xterm on secure
#ttyv2 "/usr/libexec/getty Pc" xterm on secure
#ttyv3 "/usr/libexec/getty Pc" xterm on secure
#ttyv4 "/usr/libexec/getty Pc" xterm on secure
#ttyv5 "/usr/libexec/getty Pc" xterm on secure
#ttyv6 "/usr/libexec/getty Pc" xterm on secure
#ttyv7 "/usr/libexec/getty Pc" xterm on secure
#ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
/etc/rc.confでifconfig_xn0のエントリを追加します。
.
.
ifconfig_re0="DHCP"
ifconfig_xn0="DHCP"
.
.
freebsdをshutdownします。
dom0# xm shutdown freebsd9
dom0でFreeBSD PV用のxen設定ファイルを作成します。
/etc/xen/freebsd9-pv.cfg
kernel="/xendata/freebsd9/kernel-freebsd9-pv"
extra = " vfs.root.mountfrom=ufs:ad0p2,machdep.idle_mwait=0,boot_verbose=1,kern.hz=100"
memory = 256
name = "freebsd9"
vif = [ 'mac=00:16:3e:00:00:05,bridge=xenbr0' ]
disk = [ 'file:/xendata/freebsd9/disk.img,hda,w' ]
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'
あとはうまく起動できれば完成です。
dom0# xm create -c /etc/xen/freebsd9-pv.cfg
xenのconsoleにkernelの起動メッセージが流れてきてloginプロンプトが出力されるはずです。
これでFreeBSD 9.0 PVのインストールが完了です。
参考リンク
Xen FreeBSD 8.2 DomU (PV) -- Step by Step Howto