Compile Xen3.4.0 on CentOS5.3 + VMWare
Xen
最近Xen関係のトラブルにはまってます.ぐぐってもよくわからないし,ここは心機一転,ソースからコンパイルして,仕組みを勉強してみようと思いました.なんとかDom0が動くようになったので,そこまでのまとめです.
Install CentOS5.3
CentOS-5-3-i386-netinstall.isoをダウンロードしてVMWare上にインストールしました.このインストーラが聞いてくるパッケージのダウンロード元には
サーバ | パス |
---|---|
ftp.riken.jp | Linux/centos/5.3/os/i386 |
を指定しました.CentOS5.3ではbaseパッケージグループがデフォルトで指定されているようなので,パッケージグループ選択の際には何も指定しません.これでCentOS5.3が動く所までできました.この後,パッケージのアップデートと追加のインストールを行います.以下の作業は新規にアカウントを作成せずにrootアカウントで実行しました.
# yum update # yum groupinstall 'Development Tools' # yum groupinstall 'X Software Development' # yum install openssl-devel # yum install nucrses-devel # yum install python-devel # yum install bridge-utils
Download & Compile Xen3.4.0
# wget http://bits.xensource.com/oss-xen/release/3.4.0/xen-3.4.0.tar.gz # tar xvfz xen-3.4.0.tar.gz # cd xen-3.4.0 # make
makeを実行すると,途中でいくつか質問がでてきます.取りあえず初回なのですべてDefault値を採用しました.以下のようになります.
PCI Device Reservation for Passthrough (PCI-GUESTDEV) [Y/n/?] Y
PCI IOV support (PCI_IOV) [N/y/?] N
Intel(R) 82575 Gigabit Ethernet support (IGB) [N/m/y/?] N
Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support (E1000E) [N/m/y/?] N
Intel(R) 10GbE PCI Express adapters support (IXGBE) [N/m/y/?]NUSB backend driver (XEN_USB_BACKEND) [M/n/?] M
USB frontend driver (XEN_USB_FRONTEND) [M/n/?] M
Taking the HCD statistics (for debug) (XEN_USB_FRONTEND_HCD_STATS) [Y/n/?] Y
しばらくするとコンパイルが終了します.よく見てると,最後に
WARNING: Package 'latex' is required to build Xen documentation
と出てきますが,これは気にしない.ここまでできたらInstallします.
# cd dist # ./install.sh
このコマンドを実行すると,最終的に以下のような出力がでます.すべてOKとなっているか確認してください.なっていなければ何かが足りません.
Xen CHECK-INSTALL Tue May 26 04:47:22 JST 2009
Checking check_brctl: OK
Checking check_crypto_lib: OK
Checking check_curl: unused, OK
Checking check_iproute: OK
Checking check_python: OK
Checking check_python_xml: OK
Checking check_udev: OK
Checking check_xml2: unused: OK
Checking check_zlib_lib: OK
All done.
これでプログラム作成が終了しました.この後は,boot用の設定を作ることになります.
Setup Grub.conf
ここら辺からは,ここらへんを参考にしながら試行錯誤しました.なぜそれを実行しないといけないかがよくわかっていないので,これから調べます.まず,depmondを実行します.
# /sbin/depmond 2.6.18.8-xen
次にmkinitrdを実行しますが,最新のmkinitrd-5.1.19.6-44にはバグがあるので,/sbin/mkinitrdを以下のように編集します.
1306 if [ "$withdmraid" == "1" ]; then 1307 findmodule -dm-mem-cache 1308 findmodule -dm-region_hash 1309 findmodule -dm-message 1310 findmodule -dm-raid45 1311 fi
左端の数字は行数です.足すのはdm-mem-cache/dm-region_hash/dm-member/dm-raid45の前にある-です.編集したら,コマンドを実行します.
/sbin/mkinitrd /boot/initrd-2.6.18.8-xen.img 2.6.18.8-xen
この後,/boot/grub/grub.confにXen用の設定を追加します.
title xen
root (hd0,0)
kernel /xen.gz
module /vmlinuz-2.6.18.8-xen ro root=/dev/VolGroup00/LogVol00
module /initrd-2.6.18.8-xen.img 2.6.18.8-xen
ここまで設定してリブートすれば,なんだかものすごく時間がかかるのですが,XenをサポートしたDom0が起動します.でも,
Currently emulating unsupported memory accesses in /lib/tls glib libraries. The emulation is slow. To ensure full performance you should install a 'xen-freindly' (nosegneg) version of the library, or disable tls support by executing the following as root:
mv /liv/tls /lib/tls.disabled
Offending process: modprobe (pid=914)
というメッセージが最後に出ています./lib/tlsはなかったと思うので,これが何を意味しているのかよくわかりません.この後は,
# chkconfig --add xend
とやれば,起動時にXendが動くので,
# xm list
とコマンドした時にDom0が動いてるのが確認できます.