This was just an interesting incident I had. Disclaimer: the VM was not in production. The server blade was running XenServer 5.6 Service Pack 2.
Someone made a change to the VM and when it was rebooted, XenServer refused to bring it back up with the following error:
Error: Starting VM 'ultra' - Internal error: XenguestHelper.Xc_dom_linux_build_failure(2, " xc_dom_parse_elf_kernel: ELF image has no shstrtab\\\\n\\\"").
What? A quick search returned suggestion that the VM is most likely trying to boot kernel that is not paravirtualized. So, I changed the VM settings, asked it to boot from RedHat ISO so I could take a look at grub.conf.
For whatever reason the VM refused to boot from the ISO file:
6/27/2012 10:58:07 AM Error: Starting VM 'ultra' on 'blade1' - WARNING: /dev/xvda is not a disk image - Traceback (most recent call last): - File "/usr/bin/pygrub", line 746, in ? - raise RuntimeError, "Unable to find partition containing kernel" - RuntimeError: Unable to find partition containing kernel
Great. I had no idea why the VM was trying to read from /dev/xvda and not from /dev/xvdd, which was the DVD drive.
So, in XenCenter in VM->Start/Shutdown I selected Start in Recovery Mode and the VM finally booted from the ISO image.
I am not XenServer expert, but after having done some work with it I am starting to come to conclusion which I will keep to myself.
In the end, I managed to boot the VM from the ISO file and fix up grub.conf file. Indeed, the VM was booting kernel that was not Xen-enabled.