Xenとpvopsカーネルをインストールする
Xenとpvopsカーネルをソースからインストールするメモ。
環境
OS (Dom 0) : CentOS 6.2
カーネル : jeremy’s kernel (2.6.32)
Xen : 4.1.2
OS (Dom U) : CentOS 5.8
参考
以下のページを参考にしました。
- Xenのビルド
- paravirt_opsなDOM0 - .mjtの日記復帰計画
- XenParavirtOps - Xen Wiki
- RHEL6Xen4Tutorial - Xen Wiki
- HowTos/Xen/InstallingCentOSDomU - CentOS Wiki
- Network Configuration Examples (Xen 4.1+) - Xen
準備
必要なパッケージをインストール
yum -y groupinstall ‘Development Tools’
yum -y install yum-utils libsysfs-devel libidn-devel zlib-devel libcurl-devel libX11-devel gtk2-devel python-devel ncurses-devel libaio-devel pciutils-devel libuuid-devel udev dev86 gettext gnutls-devel openssl-devel flex bison wget git udev iproute python zlib openssl SDL-devel transfig texi2html ghostscript tetex-latex perl iasl glibc-devel.i686 glibc-devel.x86_64 mercurial
bridge-utilsにworkaroundを適用
RHEL6のbridge-utilsには独自にIGMP snoopingのサポートが追加されているようなのですが、これのせいでカーネルをRHEL以外のものに入れ替えてしまうとまともに動作しません。そのため、Fedora向けのrpmをインストールして代用します。
wget http://dl.fedoraproject.org/pub/fedora/linux/releases/17/Fedora/source/SRPMS/b/bridge-utils-1.5-3.fc17.src.rpm
rpm -ivh bridge-utils-1.5-3.fc17.src.rpm
cd ~/rpmbuild/SPECS
rpmbuild -ba —clean —rmsource —define ‘dist .xen’ bridge-utils.spec
cd ~/rpmbuild/RPMS/x86_64
rpm -Uvh bridge-utils-1.5-3.xen.x86_64.rpm
Xen
ダウンロード
cd /usr/src
wget http://bits.xensource.com/oss-xen/release/4.1.2/xen-4.1.2.tar.gz
tar vzxf xen-4.1.2.tar.gz
インストール可能か確認
cd /usr/src/xen-4.1.2/tools/check
./chk build
./chk install
make
cd /usr/src/xen-4.1.2
make -j2 xen tools
インストール
make install-xen install-tools
pvopsカーネル
ダウンロード
cd /usr/src
git clone http://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-next
cd /usr/src/linux-next
git checkout -b xen/next-2.6.32 origin/xen/next-2.6.32
設定
cp /boot/config-2.6.32-220.el6.x86_64 .config
vi .config
以下の内容を.configの末尾に追加。
インストール
make oldconfig
make -j2
make modules_install
make install
その他
grubの設定
vi /boot/grub/grub.conf
Xenを起動するための項目を追加し、ついでにOS選択メニューを隠さないよう変更。内容は環境によって異なるので、他の項目を参考にしてください。
xenfs
vi /etc/fstab
xenfsがマウントされないのでマウントするよう変更。
xenfs /proc/xen xenfs defaults 0 0
xencommons
デーモンを起動するよう設定。
chkconfig xencommons on
reboot
ブリッジ
Dom Uでネットワークを利用するためにブリッジを作成。
vi /etc/sysconfig/network-scripts/ifcfg-eth0
vi /etc/sysconfig/network-scripts/ifcfg-xenbr0
service network restart
Dom U
Kickstartの設定ファイル配信
Dom Uのインストールを自動で行うためにKickstartを利用します。
yum install httpd
service httpd start
chkconfig httpd on
vi /var/www/html/centos-ks.cfg
Kickstartの設定ファイルを記述。
Dom UにOSをインストール
mkdir ~/domu
cd ~/domu
dd if=/dev/zero of=/root/domu/centos.img oflag=direct bs=1M count=2048
wget http://mirror.centos.org/centos/5/os/i386vmlinuz
wget http://mirror.centos.org/centos/5/os/i386initrd.img
vi centos-install
インストーラを起動するためのxlの設定ファイルを用意。
インストーラを起動します。インストールは自動で行われるので見守っていればOKです。
xl create -c centos-install
Dom Uを起動
vi centos
通常起動のためのxlの設定ファイルを用意。
インストール用のイメージを外し、pygrubを使ってディスクイメージ内のOSを起動します。
xl create -c centos
追記
2013/01/18 : いろいろ修正