Why isn’t it working it was working just before now it should be working
I was updating some virtual servers (Xen DomUs); I shut one (hestia) down, then tried to bring it back up using
xl create hestia.cfg. But it didn’t start. Xen complained:
libxl: error: libxl_bootloader.c:635:bootloader_finished: bootloader failed - consult logfile /var/log/xen/bootloader.2.log libxl: error: libxl_exec.c:118:libxl_report_child_exitstatus: bootloader  exited with error status 1 libxl: error: libxl_create.c:1223:domcreate_rebuild_done: cannot (re-)build domain: -3 libxl: error: libxl.c:1575:libxl__destroy_domid: non-existant domain 2 libxl: error: libxl.c:1534:domain_destroy_callback: unable to destroy guest with domid 2 libxl: error: libxl.c:1463:domain_destroy_cb: destruction of domain 2 failed
The error log contained:
Traceback (most recent call last): File "/usr/lib/xen-4.8/bin/pygrub", line 882, in raise RuntimeError, "Unable to find partition containing kernel" RuntimeError: Unable to find partition containing kernel
Having just run the DomU I knew it had a partition containing a kernel! Just to be sure I mounted the root LV and made sure. Sure enough, there was a
vmlinuz and an
initrd.img present. So what gives? Search results for the error were pretty unhelpful.
Following prompting from vlt in
#xen on Freenode, I cehcekd to see if there was a
/boot/grub containing configuration in the form of
grub.cfg. And there wasn’t. What gave? Well…
I think what had happened was that when I recovered the configuration of hestia when I accidentally dd’d my Dom0 root partition, I recreated it using
pygrub as a bootloader when it didn’t have that before*.
To solve the issue, I created by hand a minimal
menu.lst at the suggestion of vlt:
default 0 timeout 5 title Debian root (hd0,1) kernel /vmlinuz root=/dev/xvda initrd /initrd.img
This allowed the DomU to boot, and I could install the
grub2 package and let it create its own proper, fully up-to-date
It’s quite a niche set of circumstances to get into; losing a configuration and recreating it with the incorrect bootloader*, but if you find yourself in that situation, you this might at least get you back on track.
*: What you should really do is restore the config from a backup. But suppose you hadn’t backed up the server guest VM configuration files…