Using pyGRUB on Wheezy to boot a domU kernel

Using pyGRUB from xen-utils-4.0, each domU can boot with its own kernel instead of using the dom0 kernel, which makes life easier for updates and multi distribution Xen installs. You need to have first a working domU. The domU FileSystem needs to be ext[234].

On the dom0

Config snippet:

root        = '/dev/xvda2 ro'
disk        = [
                  'phy:/dev/vg05/test2.openforce.com-disk,xvda2,w',
                  'phy:/dev/vg05/test2.openforce.com-swap,xvda1,w',
              ]

On the domU

mkdir /boot/grub
apt-get install linux-image-amd64

You don't need to install grub, you just need to create a simple grub config file which will be read by pygrub on the Dom0.

cat > /boot/grub/menu.lst << EOF

default         0
timeout         2

title           Debian GNU/Linux
root            (hd0,0)
kernel          /vmlinuz root=/dev/xvda2 ro
initrd          /initrd.img

title           Debian GNU/Linux (recovery mode)
root            (hd0,0)
kernel          /vmlinuz root=/dev/xvda2 ro single
initrd          /initrd.img

EOF

On the dom0

/usr/lib/xen-default/bin/pygrub /dev/vg02/my_domU-disk

which should great with the familiar grub menu, and then abort

bootloader      = '/usr/lib/xen-default/bin/pygrub'

# show current xen version (use xl or xm)
$ xl info | grep xen_version
xen_version            : 4.4.1

# find available pygrub binaries
$ find /usr/lib/xen* -name pygrub
/usr/lib/xen-4.4/bin/pygrub