Mailing List Archive

Pygrub does not boot ext2 on LVM Volume
Hi all,

I have a weired problem with pygrub.

The machine I am running xen is a PC-Engines APU for which I build xen
and tools using Yocto project. Version of Xen 4.16 stable from the
"Kirkstone" branch of Yocto.

Everything went well and I was able to install the image on a LVM
Volume. Hypervisor runs well. I created separate logical volumes for
DomU guests and installed Debian on it. I am also able to boot the DomU
guest as long as I copy the kernel and initrd.img to the Dom0
filesystem and use the "kernel=" parameter in the xen.cfg file.

When I try to use pygrub to boot the guest it tells that it does not
find a partition containing a kernel. With a little investigation I
found out, that it is not a parsing problem of grub.cfg but it does not
find grub.cfg at all.

So I compiled the libfsimage with debug information (-DE2DEBUG in
Makefile) and found out, that the libfsimage does not recurse into the
directories. It finds /boot at the root directory but does not recurse
into it while it looks for /boot/grub/grub.cfg.

When I mount the volume and filesystem directly using xl-attach
everthing is o.k. so the filesystem itself seems to be o.k.

I also created a dummy menu.lst file at root directory. Interestingly
pygrub the finds it, is able to parse it, shows the menu and then fails
when he tries to find the kernel because then he has to recurse into
/boot directory again.

Any ideas, what the problem is?


If it helps I copy the output of the Debug (E2DEBUG flag set):
>fsblock 8737 buffer c2ef0f40
>directory entry ino=23
>entry=libx32
>dirname=boot, rest=, loc=200
>ed 41 00 00 00 10 00 00 1a fe 97 65 1c fe 97 65
>1c fe 97 65 00 00 00 00 00 00 12 00 08 00 00 00
>00 00 08 00 44 01 00 00 0a f3 01 00 04 00 00 00
>00 00 00 00 00 00 00 00 01 00 00 00 21 22 00 00
>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>00 00 00 00 00 00 00 00 00 00 00 00 04 72 00 00
>logical block 0
>fs block=8737
>fsblock 8737 buffer c2ef0f40
>directory entry ino=8193
>entry=boot
>inode 8193
>dirname=/grub/grub.cfg
>ipg=8192, dpb=128
>group_id=1 group_desc=0 desc=1
>fsblock 1 buffer c2eeeec0
>gdp=c2eeeec0, inodes_per_block=16, inode_offset=0
>inode table fsblock=0
>fsblock 0 buffer c2eefec0
>ipb=16, sizeof(inode)=256
>inode=c2eefec0, raw_inode=c2eefec0
>offset into inode table block=0
>00 first word=0
>first word=0
>Bad filetype: Size:0, Mode:0, IsDir:0
>inode 2
>dirname=/grub/grub.cfg
>ipg=8192, dpb=128
>group_id=0 group_desc=0 desc=0



Any help is highly appreciated.

Regards Martin