Wheezy domU + pygrub

I’m using Xen 4.1 / Linux 3.5 on a recent AMD (FX class) box for Audeo internal VMs. I decided to use wheezy on a few of these VMs for various reasons.
I normally use xen-create-image to create new VMs, but when I tried to start a wheezy VM created in this manner, Xen complained of the following:

Error: Boot loader didn't return any data!

You’ll also see the following in xend.log:

[2012-09-13 16:25:04 1506] ERROR (XendDomainInfo:108) Domain construction failed
Traceback (most recent call last):
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 106, in create
    vm.start()
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 474, in start
    XendTask.log_progress(31, 60, self._initDomain)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendTask.py", line 209, in log_progress
    retval = func(*args, **kwds)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 2838, in _initDomain
    self._configureBootloader()
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendDomainInfo.py", line 3285, in _configureBootloader
    bootloader_args, kernel, ramdisk, args)
  File "/usr/lib/xen-4.1/bin/../lib/python/xen/xend/XendBootloader.py", line 215, in bootloader
    raise VmError, msg
VmError: Boot loader didn't return any data!

As it turns out, with a default install of wheezy from xen-create-image, you won’t get anything in /boot, or grub; pygrub depends on at least the existence of /boot/grub/menu.lst.

The easiest way to fix this is to just chroot into the (mounted) disk image and install grub, and make sure it gets installed in the future by making appropriate changes to your x-c-i configuration.

One Reply to “Wheezy domU + pygrub”

Leave a Reply

Your email address will not be published. Required fields are marked *