環境
- Hardware: MacMini(Early 2009)
- Memory: 4GB
- Xen: xen-4.1.0-rc5-pre changeset 22904:c64dcc4d2eca (64bit)
- Dom0(kernel): Linux 2.6.32.27(pvops) commit 75cc13f5aa29b4f3227d269ca165dfa8937c94fe (64bit)
- Dom0(distribution): Ubuntu 10.10
動作確認できたDomU達
- DomU(PVM): NetBSD 5.99.41 (64bit)
パーティション作成、refit導入、ubuntuインストールを行い、64bit環境(x86_64)のUbuntuは
多くのサイトでインストール方法がのっているので詳細は省略します。
以下の作業はUbuntu上での作業です。
Xen4.1のビルド
まずは最新版のソースを取得します。
$ hg clone http://xenbits.xensource.com/xen-unstable.hg
今回使用したソースはchangeset 22904:c64dcc4d2ecaです。
以前cloningしている場合は以下の方法でアップデートします。以前buildした古いioemu-remoteがあるとコンパイルエラーになるのでそれも削除しておきます(make distcleanのほうがいいかもしれません)。
$ hg pull
$ hg update
$ rm -fr tools/ioemu-remote
nVidiaベースのMacだとLinux同様Xenでもrebootが正常に動作しない問題があるので、以下のパッチをxen-4.1にも適用します。
xen-4.1-macmini-reboot.diff
またUbuntuでのコンパイルが通るように以下の差分もあてます。
diff-2
diff -r b8d2a4134a68 Config.mk
--- a/Config.mk Wed Mar 03 17:41:58 2010 +0000
+++ b/Config.mk Fri Mar 05 16:16:53 2010 +0900
@@ -38,8 +38,8 @@
BISON ?= bison
FLEX ?= flex
-PYTHON ?= python
-PYTHON_PREFIX_ARG ?= --prefix="$(PREFIX)"
+PYTHON = python
+PYTHON_PREFIX_ARG =
# The above requires that PREFIX contains *no spaces*. This variable is here
# to permit the user to set PYTHON_PREFIX_ARG to '' to workaround this bug:
# https://bugs.launchpad.net/ubuntu/+bug/362570
このパッチを適用して、xen kernelとツールをbuildします。
$ cd xen-unstable.hg
$ patch -s -p1 < xen-4.1-macmini-reboot.diff
$ patch -s -p1 < diff-2
$ make xen tools
作成したxen kernelとtoolsをinstallします。
$ su
# make install-xen install-tools
Xen向け設定
4.0から4.1に移行する際に起動スクリプトがひとつ増えています。
/etc/init.d/xencommons
このスクリプトは、dom0 linux起動時にxend xendomainsより前に起動されるようになっている必要があります。
# update-rc.d xencommons defaults
grub2の設定
/etc/grub.d/06_xen
#!/bin/sh -e
XEN_VERSION="4.1.0-rc5-pre"
LINUX_VERSION="2.6.32.27"
if [ ! -e /boot/initrd.img-${LINUX_VERSION} ] ; then
update-initramfs -c -k ${LINUX_VERSION}
fi
cat <<EOF
menuentry "Xen ${XEN_VERSION}, Ubuntu, linux ${LINUX_VERSION}" {
recordfail
insmod part_gpt
insmod ext2
set root='(hd0,gpt3)'
search --no-floppy --fs-uuid --set 3afc46a5-1469-4da0-bc86-6fad90e3fd75
multiboot /boot/xen-${XEN_VERSION}.gz reboot=pci
module /boot/vmlinuz-${LINUX_VERSION} root=UUID=3afc46a5-1469-4da0-bc86-6fad90e3fd75 ro quiet nosplash console=tty0
module /boot/initrd.img-${LINUX_VERSION}
}
EOF
/boog/grub/grub.cfgを更新します。
# update-grub2