FreeBSDのXen Kernelを作る
放置するのもなんですし、日々の調べ物を書くチラシの裏として活用しようかと。
しかしながら、内容が小出しになる、もしくは途中で無駄だと判断して中断することもあるので、答えが知りたくてググッてきた人には悪いかもしれません。
んじゃ、本題。
NetBSD 5.1 (AMD64)で動いている Xen 環境に DomainU として FreeBSD を動かしたいので、準仮想化用に使う Kernel を作ってみました。
いつもの方法で kernel を作ります。
gomyway# uname -rm 8.2-RELEASE i386 gomyway# cd /usr/src/ gomyway# make buildkernel KERNCONF=XEN
ここでちょいと迷ったのが、どこにビルドされた kernel があるのか分からない。面倒になったので、適当なパーティションを作ってそこにインストールしてから取り出すことにしてました。
適当にイメージファイルを作って mdconfig でメモリディスクをアタッチします。
gomyway# dd if=/dev/zero of=/home/freebsd8.2.img bs=1m count=1024 gomyway# mdconfig -a -t vnode -u 0 -f /home/freebsd8.2.img
ファイルシステムを作って bsdlabel で fstype を 4.2BSD に変更します。
gomyway# bsdlabel -w /dev/md0 a gomyway# bsdlabel -e /dev/md0 gomyway# newfs /dev/md0a
mount します。
gomyway# mount /dev/md0a /mnt
メモリディスクにカーネルをインストールします。
gomyway# cd /usr/src gomyway# make installkernel DESTDIR=/mnt KERNCONF=XEN
これで /mnt/boot/kernel/kernel に Xen kernel があります。
これを Xen ホストにコピーして DomainU として起動してみますが… OS起動時にpmap_init で落ちる。
# xm create -c freebsd.conf (snip) panic: pmap_init: page table page is out of range
ワケがわからないよ。
ググッてみたら、AMD特有の問題のようで 2011年1月ぐらいにFIX入っているみたいなので、後日CURRENT で Xen Kernel を作ってもう一度トライしてみます。