Package: xen-utils-4.1 Version: 4.1.4-3+deb7u1 Severity: important When an LVM LV that serves as the root disk for a Xen DomU contains a boot loader (or possibly other data) in its volume boot record, pygrub fails to boot it, printing "Error: boot loader didn't return any data" before exiting.
I think this is because of the function "is_disk_image" on line 45 of /usr/lib/xen-4.1/bin/pygrub: it should return false on LVM LV's because they are not disk images but virtual devices, but it returns true because of certain bytes in the first block of 512 bytes being set. This causes get_partition_offsets to seek fruitlessly for a partition instead of simply returning [0], causing the bootloader not to find the right partition. Detailed steps to reproduce: We have a domU called blup.kassala.de, it is running Jessie, its root disk is a LVM LV at /dev/vpsdisks/blup.kassala.de-disk. The first 512 bytes are null: # dd if=/dev/vpsdisks/blup.kassala.de-disk bs=1 count=512 | hexdump -C 00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200 "xm create -c blup.kassala.de.cfg" shows the machine boots fine. After boot, we log in and "apt-get install grub2". During the installation, we say to install the bootloader to /dev/xvda2, the root disk. We then halt the system. The first 512 bytes are now non-null: # dd if=/dev/vpsdisks/blup.kassala.de-disk bs=1 count=512 | hexdump -C 00000000 eb 63 90 00 00 00 00 00 00 00 00 00 00 00 00 00 |.c..............| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000050 00 00 00 00 00 00 00 00 00 00 00 80 80 12 46 00 |..............F.| 00000060 00 00 00 00 ff fa 90 90 f6 c2 80 74 05 f6 c2 70 |...........t...p| [snip] 00000180 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 47 65 |}.......GRUB .Ge| 00000190 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 65 61 |om.Hard Disk.Rea| 000001a0 64 00 20 45 72 72 6f 72 0d 0a 00 bb 01 00 b4 0e |d. Error........| 000001b0 cd 10 ac 3c 00 75 f4 c3 00 00 00 00 00 00 00 00 |...<.u..........| 000001c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.| 00000200 We try to boot the DomU again: # xm create -c blup.kassala.de.cfg Using config file "./blup.kassala.de.cfg". Error: Boot loader didn't return any data! We write 512 nullbytes to the disk and retry booting the domU: # dd if=/dev/zero of=/dev/vpsdisks/blup.kassala.de-disk bs=1 count=512 # xm create -c blup.kassala.de.cfg The pyGRUB menu appears normally and the machine boots. -- System Information: Debian Release: 7.4 APT prefers stable APT policy: (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 3.2.0-4-amd64 (SMP w/8 CPU cores) Locale: LANG=nl_NL.UTF-8, LC_CTYPE=nl_NL.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages xen-utils-4.1 depends on: ii e2fslibs 1.42.5-1.1 ii libc6 2.13-38+deb7u1 ii libgnutls26 2.12.20-8+deb7u1 ii libncurses5 5.9-10 ii libpci3 1:3.1.9-6 ii libtinfo5 5.9-10 ii libuuid1 2.20.1-5.3 ii libxen-4.1 4.1.4-3+deb7u1 ii libxenstore3.0 4.1.4-3+deb7u1 ii python 2.7.3-4+deb7u1 ii python2.7 2.7.3-6+deb7u2 ii xen-utils-common 4.1.4-3+deb7u1 ii zlib1g 1:1.2.7.dfsg-13 Versions of packages xen-utils-4.1 recommends: ii bridge-utils 1.5-6 ii qemu-keymaps 1.1.2+dfsg-6a+deb7u1 ii qemu-utils 1.1.2+dfsg-6a+deb7u1 ii xen-hypervisor-4.1-amd64 [xen-hypervisor-4.1] 4.1.4-3+deb7u1 Versions of packages xen-utils-4.1 suggests: pn xen-docs-4.1 <none> -- no debconf information -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org