PAE非対応なマシンでのXen
少し前からDebian/etchのXen用カーネル(linux-modules-2.6.18-4-xen-686)がPAEサポート付きでビルドされてるようだけど、私のマシンはPAE非対応なCPUなので
Kernel panic - not syncing: cannot execute a PAE-enabled kernel on a PAE-less CPU!
とカーネルパニックになって動いてくれません。仕方ないのでPAEを無効にしたカーネルを自分でビルドして使ってますが、数日前にetchのカーネルが更新され(2.6.18.dfsg.1-12)ビルドし直したので、その手順をまとめました。Xenを本格的に使うならPAE無しのマシンで動かすことはないと思いますが、ちょっと試してみようとしたら非PAEなCPUだった、とかいうことはあると思うので。
$ apt-get source linux-2.6 $ cd linux-2.6-2.6.18.dfsg.1 $ patch -p1 <../xen-nonpae.patch $ mv debian/arch/i386/xen/abi-4.686 debian/arch/i386/xen/abi-4.686.uncheck $ dch -i $ fakeroot debian/rules clean $ fakeroot debian/rules setup $ fakeroot make -f debian/rules.gen binary-arch-i386-xen-686
xen-nonpae.patch は以下のパッチファイルですが、変更点は2カ所だけなので直接編集した方がはやいですね。
--- linux-2.6-2.6.18.dfsg.1/debian/arch/i386/xen/defines.orig 2007-03-02 15:13:55.000000000 +0900 +++ linux-2.6-2.6.18.dfsg.1/debian/arch/i386/xen/defines 2007-03-02 15:29:19.792752331 +0900 @@ -13,12 +13,12 @@ type: plain-xen [xen] -flavour: i386-pae +flavour: i386 [686] class: i686 longclass: i686 and compatible [686_image] -configs: i386/config.686-bigmem +configs: i386/config.686
dch -i では 2.6.18.dfsg.1-12.nonpae.1 とか適当にバージョンを付けておくとよいです。abi-4.686 をリネームしてるのは、ビルドの途中で走る debian/bin/abicheck.py のチェックに失敗するから。abi-4.686 をリネームしておけばこのチェックがスキップされます。
fakeroot debian/rules clean を実行しないと debian/rules.gen などが更新されないので必ず実行してください。