xen と dom0 linuxを最新のものにしてみました。
opensolaris 2009.06なdomUは起動に失敗してしまいましたが、NetBSD, LinuxなdomUは起動可能でした。
2010年 11月 14(日曜日)
Mac mini + xen 4.0.2-rc1-pre + linux 2.6.32.25 pvops
環境
動作確認できたDomU達
パーティション作成、refit導入、ubuntuインストールを行い、64bit環境(x86_64)のUbuntuは
多くのサイトでインストール方法がのっているので詳細は省略します。
以下の作業はUbuntu上での作業です。
Xen4の導入
まずは最新版のソースを取得します。4.0-testingを利用しました。
今回使用したソースはchangeset 21384:ec0c3f773c3eです。
nVidiaベースのMacだとLinux同様Xenでもrebootが正常に動作しない問題があるので、以下のパッチをxen-4にも適用します。(xen4でこのパッチがない場合にrebootが不可能かどうかは確認していません)
diff-1
またUbuntuでのコンパイルが通るように以下の差分もあてます。
diff-2
このパッチを適用して、xen kernelとツールをbuildします。
作成したxen kernelとtoolsをinstallします。
Dom0用Linux kernelの導入
http://wiki.xensource.com/xenwiki/XenParavirtOpsに沿って作業します。
ブランチは以下のようになっています。しょっちゅうかわってますね。
使用したconfig: config-2.6.32.21
grub設定
/etc/grub.d/06_xenを以下のように設定します。xenのオプションにreboot=pciを追加して適用したパッチが機能するようにします。
update-grub2で/boot/grub/grub.cfgを再生成します。
あとは再起動してうまく立ち上がるの待ちます。
OpenSolaris 2009.06のエラーメッセージ
- Hardware: MacMini(Early 2009)
- Memory: 4GB (2GB x 2)
- Xen: xen-4.0.2-rc1-pre changeset 21384:ec0c3f773c3e (64bit)
- Dom0(kernel): Linux 2.6.32.25(pvops) commit 80f7e085a36bf8511fd229f75b25d0050beddb45 (64bit)
- Dom0(distribution): Ubuntu 10.10
動作確認できたDomU達
- DomU(PVM): NetBSD 5.99.27 (64bit)
- DomU(PVM): NetBSD 5.99.39 (64bit)
- DomU(PVM): Linux 2.6.32.25(pvops) Debian squeeze (64bit)
- DomU(PVM):
OpenSolaris 2009.06 (64bit)エラーで起動せず
パーティション作成、refit導入、ubuntuインストールを行い、64bit環境(x86_64)のUbuntuは
多くのサイトでインストール方法がのっているので詳細は省略します。
以下の作業はUbuntu上での作業です。
Xen4の導入
まずは最新版のソースを取得します。4.0-testingを利用しました。
$ hg clone http://xenbits.xensource.com/xen-4.0-testing.hg
今回使用したソースはchangeset 21384:ec0c3f773c3eです。
nVidiaベースのMacだとLinux同様Xenでもrebootが正常に動作しない問題があるので、以下のパッチをxen-4にも適用します。(xen4でこのパッチがない場合にrebootが不可能かどうかは確認していません)
diff-1
diff -r b8d2a4134a68 xen/arch/x86/shutdown.c
--- a/xen/arch/x86/shutdown.c Wed Mar 03 17:41:58 2010 +0000
+++ b/xen/arch/x86/shutdown.c Fri Mar 05 15:40:38 2010 +0900
@@ -29,6 +29,7 @@
BOOT_KBD = 'k',
BOOT_ACPI = 'a',
BOOT_BIOS = 'b',
+ BOOT_PCI = 'p',
};
static long no_idt[2];
@@ -42,6 +43,7 @@
* triple Force a triple fault (init)
* kbd Use the keyboard controller. cold reset (default)
* acpi Use the RESET_REG in the FADT
+ * pci Use PCI
*/
static enum reboot_type reboot_type = BOOT_ACPI;
static void __init set_reboot_type(char *str)
@@ -60,6 +62,7 @@
case 'a':
case 'k':
case 't':
+ case 'p':
reboot_type = *str;
break;
}
@@ -349,6 +352,15 @@
case BOOT_ACPI:
acpi_reboot();
break;
+ case BOOT_PCI:
+ {
+ u8 val = inb(0x0CF9) & ~0x6;
+ outb(val | 0x2, 0xCF9);
+ udelay(50);
+ outb(val | 0x6, 0xCF9);
+ udelay(50);
+ }
+ break;
}
reboot_type = BOOT_KBD;
また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 < diff-1
$ patch -s -p1 < diff-2
$ make dist-xen dist-tools
作成したxen kernelとtoolsをinstallします。
$ su
# make install-xen install-tools
Dom0用Linux kernelの導入
http://wiki.xensource.com/xenwiki/XenParavirtOpsに沿って作業します。
ブランチは以下のようになっています。しょっちゅうかわってますね。
- xen/stable-2.6.31.x - xen 3.4.2向け, 2.6.31ベース。安定板
- xen/master - xen 3.4.2以前向け, 2.6.31ベース。最新版
- xen/stable-2.6.32.x - xen 3.4.3/4.0.0向け, 2.6.32ベース。安定板
- xen/next - xen 3.4.3/4.0.0向け, 2.6.32ベース。最新版
$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/jeremy/xen.git linux-2.6.32.x-xen
$ cd linux-2.6.32.x-xen
$ git reset --hard
$ git checkout -b xen/stable-2.6.32.x origin/xen/stable-2.6.32.x
$ make menuconfig
$ make bzImage modules
$ su
# make install modules_install
# update-initramfs -k 2.6.32.25 -c
使用したconfig: config-2.6.32.21
grub設定
/etc/grub.d/06_xenを以下のように設定します。xenのオプションにreboot=pciを追加して適用したパッチが機能するようにします。
#! /bin/sh -e
cat <<EOF
menuentry "Xen 4.0.2-rc1-pre, Ubuntu, linux 2.6.32.25" {
recordfail
insmod part_gpt
insmod ext2
set root='(hd0,gpt3)'
search --no-floppy --fs-uuid --set 3afc46a5-1469-4da0-bc86-6fad90e3fd75
multiboot /boot/xen-4.0.2-rc1-pre.gz reboot=pci
module /boot/vmlinuz-2.6.32.25 root=UUID=3afc46a5-1469-4da0-bc86-6fad90e3fd75 ro quiet nosplash console=tty0
module /boot/initrd.img-2.6.32.25
}
EOF
update-grub2で/boot/grub/grub.cfgを再生成します。
あとは再起動してうまく立ち上がるの待ちます。
OpenSolaris 2009.06のエラーメッセージ
sing config file "/etc/xen/opensolaris.cfg".
Started domain OpenSolaris (id=14)
v4.0.2-rc1-pre chgset 'Wed Nov 10 14:16:45 2010 +0000 21384:ec0c3f773c3e'
SunOS Release 5.11 Version snv_111b 64-bit
Copyright 1983-2009 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
panic[cpu0]/thread=fffffffffbc60560: Grant Table setup failed
fffffffffbc932b0 unix:gnttab_setup+6d ()
fffffffffbc93300 unix:gnttab_init+5b ()
fffffffffbc93340 unix:startup_modules+266 ()
fffffffffbc93360 unix:startup+57 ()
fffffffffbc93390 genunix:main+27 ()
fffffffffbc933a0 unix:_locore_start+80 ()
skipping system dump - no dump device configured
rebooting...
トラックバック
このエントリーのトラックバック URI を指定する