FreeBSD-CURRENT の環境を作る

Xen の DomainU で FreeBSD を動かしたいけれど、うまく動かないでの CURRENT の Xen kernel を作ってみることに。

FreeBSD CURRENT の作り方はハンドブックを眺めると書いてありますが、個人的にはあまりやらない作業なので、なにをやったかを記録しておきます。

やり方としては手抜きですが、仕事でやるときは丁寧にやってます、はい(明後日の方向を見ながら)

csup で使う supfile を作ります。これは cvsup のものを転用します。tag は . を指定します。

gomyway# cp /usr/share/examples/cvsup/standard-supfile /home/work
gomyway#  egrep -v '^#|^$' /home/work/standard-supfile
*default host=cvsup3.jp.freebsd.org
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=.
*default delete use-rel-suffix
src-all
gomyway# csup /home/work/standard-supfile

csup でソースを拾ってきてビルドします。kernel をインストールして新しい kernel で再起動します。

gomtway# cd /usr/src
gomywat# make -j64 buildworld && make buildkernel && make installkernel
gomyway# reboot

本来なら single mode で作業をすべきなのですが、手が届く端末ですし普通に。こういうことをやっていいのか、それとも駄目なのかは自分で判断してください。今回は素の試験環境なのでそのあたりは気にせずに。

installworld します。ややこしいことが嫌いなのでまたリブートします。

gomyway# cd /usr/src
gomyway# make installworld
gomyway# reboot

mergemaster で /etc を可愛がります。本来なら installworld の前にすべきなのですが、忘れてた。

また、面倒な mergemaster の代替ツールがあったはずなのですが思い出せませんでした。

gomyway# mergemaster

(cvd id を無視するの忘れてた)

本来の目的である CURRENT での Xen kernel を作ります。

gomyway# cd /usr/src
gomyway# make buildkernel KERNCONF=XEN

前回手を抜いたビルドした kernel がどこに生成されるのかは…そりゃ /usr/obj 以下ですよね、アタシってほんと馬鹿。

gomyway# find /usr/obj -name kernel
/usr/obj/usr/src/sys/XEN/kernel
/usr/obj/usr/src/sys/GENERIC/kernel

installkernel 時になにかやっているわけではなさそうなので、ここから kernel をコピーします。

gomyway# sha256 /boot/kernel/kernel
SHA256 (/boot/kernel/kernel) = caeef8f9882d7538c5a8f38e2488822b48f43f6fafdece80c8efade6ca548956
gomyway# sha256 /usr/obj/usr/src/sys/GENERIC/kernel
SHA256 (/usr/obj/usr/src/sys/GENERIC/kernel) = caeef8f9882d7538c5a8f38e2488822b48f43f6fafdece80c8efade6ca548956m

こんな感じ。

本来の目的である DomainU での FreeBSD は状況変わらず。

# xm create -c ./xen.cfg
Using config file "././xen.cfg".
Started domain FreeBSD8.22_i386_DOMU
WARNING: loader(8) metadata is missing!
GDB: no debug ports present
KDB: debugger backends: ddb
KDB: current backend: ddb
Copyright (c) 1992-2011 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 9.0-CURRENT #1: Sun May 15 18:55:50 JST 2011
    admin@gomyway.continue:/usr/obj/usr/src/sys/XEN i386
WARNING: WITNESS option enabled, expect reduced performance.
panic: pmap_init: page table page is out of range
cpuid = 0
KDB: enter: panic
[ thread pid 0 tid 0 ]
Stopped at      0xc0119c4a:     movl    $0,0xc0423af4
db>


どうするかね、これ。