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>
どうするかね、これ。