CentOS4.4とXEN 3.0.4

  • 最初にやっとくこと

とりあえず必要そうなものを入れる
TLSを無効にする(32bitカーネルの場合はlib64は無いので注意)
バッドノウハウかもしれないがxendを起動するとlibcrypto.so.0.9.7が無いと起こられるので作っておく

yum install bridge-utils libxml2-devel SDL SDL-devel
mv /lib/tls /lib/tls.disabled
mv /lib64/tls /lib64/tls.disabled
(cd /lib64;ln -s libcrypto.so.0.9.7a libcrypto.so.0.9.7)

  • xenをインストール

コンパイル済みカーネルを取得する。
installする。
xen用のinitrdを作成する。

tar zxvf xen-3.0.4_1-install-x86_64.tar.gz
cd dist
./install.sh
depmod -a 2.6.16.33-xen
mkinitrd -v -f /boot/initrd-2.6-xen.img 2.6.16.33-xen

  • /boot/grub/menu.lstの編集

domain0のメモリは384M以上がよさそう。
(HVMを使う場合、X上でSDLを使ったりVNCを使ったりするので384Mだと足りないかも)

title CentOS-4 / Xen-3 / XenLinux 2.6
root (hd0,0)
kernel /boot/xen-3.0.gz dom0_mem=393216 console=vga
module /boot/vmlinuz-2.6-xen ro root=LABEL=/ console=tty0
module /boot/initrd-2.6-xen.img

標準だとeth0のブリッジしか作ってくれないのでスクリプトを修正する。

mv /etc/xen/scripts/network-bridge /etc/xen/scripts/network-bridge.xen
cat > /etc/xen/scripts/network-bridge
#
chmod 755 /etc/xen/scripts/network-bridge

  • network-bridgeの内容

#!/bin/sh
set -e
OP=$1
shift

script=/etc/xen/scripts/network-bridge.xen

case ${OP} in
start)
$script start vifnum=0 bridge=xenbr0 netdev=eth0
$script start vifnum=1 bridge=xenbr1 netdev=eth1
;;

stop)
$script stop vifnum=0 bridge=xenbr0 netdev=eth0
$script stop vifnum=1 bridge=xenbr1 netdev=eth1
;;

status)
$script status vifnum=0 bridge=xenbr0 netdev=eth0
$script status vifnum=1 bridge=xenbr1 netdev=eth1
;;

*)
echo 'Unknown command: ' ${OP}
echo 'Valid commands are: start,stop,status'
exit 1
esac

chkconfig xend on
chkconfig xdomains on

#再起動してxenの動作確認をする。