環境
-  Hardware: MacMini(Early 2009)
-  Memory: 4GB
-  Xen: xen-4.0.2-rc1-pre  changeset  21336:16867267ac12 (64bit)
-  Dom0(kernel): Linux 2.6.32.21(pvops) commit 2968b258b1ca6bd16d758dd68900669419caff2b (64bit)
-  Dom0(distribution): Ubuntu 9.04
動作確認できたDomU達
-  DomU(PVM): NetBSD 5.99.27 (64bit)
-  DomU(PVM): NetBSD 5.99.39 (64bit)
-  DomU(PVM): Linux 2.6.32.21(pvops)  Debian lenny (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  21336:16867267ac12です。
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ベース。最新版
今回はxen/stable-2.6.32.xのlinux kernelを使用することにします。利用したものは2010/9/7時点での最新版(commit 2968b258b1ca6bd16d758dd68900669419caff2b)です。
$ 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.16 -c
使用したconfig: 
config-2.6.32.21
grub.confの設定
以下のように設定します。kernelにはreboot=pciを追加して適用したパッチが機能するようにします。
title           Xen 4.0.1, Ubuntu 9.04, kernel 2.6.32.21
uuid            a127e2a7-10f5-45ca-8bd2-3ed0c3e889ff
kernel          /boot/xen-4.0.2-rc1-pre.gz reboot=pci
module          /boot/vmlinuz-2.6.32.21 root=UUID=a127e2a7-10f5-45ca-8bd2-3ed0c3e889ff ro quiet console=tty0 splash
module          /boot/initrd.img-2.6.32.21
quiet
あとは再起動してうまく立ち上がるの待ちます。