CentOS 6 / RHEL6 domU not booting under Xen 4.1.0 pv-grub

I ran into one of those *facepalm* moments earlier today when attempting to setup a CentOS 6.5 domU guest on a legacy CentOS 5.8 Xen 4.1.0 dom0 host.

Steps to reproduce the problem.

  1. Boot CentOS 6.5 domU using netinstall iso and isolinux kernel / initramfs
  2. Run Anaconda text mode installer
  3. Configure your server as normal
  4. Reboot domU using pv-grub

You are then presented with the grubdom prompt as below:

    GNU GRUB  version 0.97  (524288K lower / 0K upper memory)

       [ Minimal BASH-like line editing is supported.   For
         the   first   word,  TAB  lists  possible  command
         completions.  Anywhere else TAB lists the possible
         completions of a device/filename. ]

grubdom>

After a few hours of scratching my head I figured out exactly what was going on. By default the installer sets up the partitions with a ext4 /boot partition which is unreadable by pv-grub (something to do with the extents). Because of this pv-grub is unable to find the kernel on the /boot partition and cannot proceed.

The solution is to either use a kickstart file to partition your /boot and format it with ext3 or run the VNC installer and create a custom partition layout that includes an ext3 /boot partition.

Depending on your partition setup you should end up with something along the lines of the following in your vm.cfg file.

Using an ext3 /boot partition:

kernel = '/usr/lib/xen/boot/pv-grub-x86_64.gz'
extra = '(hd0,0)/grub/menu.lst'

Using an ext3 / (whole disk or without /boot) partition:

kernel = '/usr/lib/xen/boot/pv-grub-x86_64.gz'
extra = '(hd0,0)/boot/grub/menu.lst'

Of course if you partitioned your disk differently the (hd0,0) portion may be different depending on which disk and partition your kernel is located on.

Hopefully this saves someone a few hours of banging their head against a wall like I was!

Written by Bret Mette

Leave a Reply