UbuntuでソースからビルドしたXenを動かす

苦労してどうにか動かせました。
#CentOSでやった時のエントリはこちら→http://d.hatena.ne.jp/kanbayashi/20070822/p1

環境

  • マシン

ThinkpadT40

  • OS

Ubuntu 7.1.0 gutsy gibbon
カーネル 2.6.22-14-generic

  • ソースパッケージ

version 3.1.0(xen-3.1.0-src.tgz)

  • 必要なパッケージ

http://www.xen-fedora.com/2007/04/post.html
に挙げてあるやつを適宜aptで入れる。

手順

  • ビルド

make XEN_TARGET_X86_PAE=n install

#PAEがついているマシンならXEN_TARGET_X86_PAE=y

  • こまごまとした作業

mkinitramfsの時に、必要なモジュールをinitrdに追加するように設定する。
/etc/initramfs-tools/modulesに

aacraid
sd_mod
scsi_mod

を追記


initrdを作る

sudo depmod 2.6.18-xen
sudo mkinitramfs -o /boot/xen-initrd-2.6.18.img 2.6.18-xen
sudo mv /lib/tls /lib/tls.disabled #こうしないとXenのパフォーマンスが出ないらしい
echo "hwcap 0 nosegneg" > /etc/ld.so.conf.d/nosegneg.conf
ldconfig


grubにブート用のエントリを追加

title Ubuntu (2.6.18-8.xen original build)
root (hd0,0)
kernel /boot/xen-3.1.0.gz
module /boot/vmlinuz-2.6.18-xen ro root=UUID=元々のカーネルのエントリに指定されていたやつ rhgb quiet
module /boot/xen-initrd-2.6.18.img

試す

  • Dom0をブートさせてみる

grubに追加したエントリを選択してマシンをブートさせる
ちゃんとブートしたら

sudo xm list

とかしてみる。
xendに接続できていないようだったら

sudo /etc/init.d/xend start

でxendを起動。


  • ゲストOS(DomU)を動かしてみる

http://jailtime.org/download:centos:v5.0
のイメージを使う

wget http://jailtime.org/lib/exe/fetch.php?cache=cache&media=download%3Acentos%3Acentos.5-0.20070424.img.tar.bz2
tar xvjf centos.5-0.20070424.img.tar.bz2

domU起動時に必要な設定ファイルのcentos.5-0.xen3.cfgの内容をカレントパスに合わせる。
#centos.swapをsda2として接続する設定を除かないと動かないかも


ゲストOSを実際に立ち上げる

sudo xm create centos.5.-0.xen3.cfg -c

これでちゃんとブートしてログインできたら無事成功。お疲れ様でした。

現状での問題点

以上の方法で作成したXenカーネルではネットワークやXがちゃんと動きません。
おそらく/etc/initramfs-tools/modulesに必要なモジュールを追加しないといけないのでしょう。
/lib/modules/元のカーネルのバージョン/modules.depとかを参考に頑張ってみて下さい。
#いや俺が頑張れという話か

なぜか再起動したら問題なく動きました。


苦労した事

CentOSXenを動かす時に使ったmkinitrdがUbuntuでは無くなっていて、mkinitramfsを代わりに使ってやる方法が分らなくて苦労した。
#--withでモジュールを追加させることができなかったんです。。