stumbling over the little ones ..

well, lenny as xen dom0 is nice and handy but lacks recent kernels, as in:
supporting newer OSs, like ubuntu > karmic.

so, when updating from hardy to lucid on the webservers I
ran into the problem of a boot always falling back into the root prompt,
because of some

mountall:mountall.c:2938: Assertion failed in main: udev_monitor = 
udev_monitor_new_from_netlink (udev, “udev”)
init: mountall main process (721) killed by ABRT signal

so, logically one follows the path to the future and migrates to pygrub. besides the obvious symlink

/usr/bin/pygrub -> /usr/lib/xen-3.2-1/bin/pygrub

then, get a kernel:

# aptitude install linux-image-virtual

and edit the menu.lst:

# nano /boot/grub/menu.lst 

default         0
timeout         5
title           webfoo, aka :)
root            (hd0,0)
kernel          /boot/vmlinuz-server root=/dev/xvda2 ro splash
initrd          /boot/initrd.img-server 

but there is still one other real strange occurance of entropy and misunderstandings
between me and murphy here:

bootloader = "/usr/bin/pygrub"
memory      = '1536'
vcpu        = 4

root        = '/dev/xvda2 ro'
disk        = [

name        = 'webfoo'
vif         = [ 'ip=xx.xx.xx.xx' ]

on_poweroff = 'destroy'
on_reboot   = 'restart'
on_crash    = 'restart'

vcpus       = '2'
extra       = 'console=hvc0 xencons=tty1 clocksource=jiffies'

before I found the mistake, the two lines for the disks where in
different order, first xvda1 then xvda2 .. logically pygrub runs
for the first device .. which then was the swap .. d'oh.
so, see the your partition with kernel and grub on is the first one
listed in domU.cfg!

hth :)