I'm trying to prepare an image that I can dd into disk or boot using PXE.

Some context: I create an image, partition it using sfdisk (MBR), create loop devices for the whole disk and main partition, format the main partition as ext4, mount it and install a base system + kernel and grub-pc packages using debootstrap, then generate initramfs, mount dev, proc and sys into partition root directory and install grub.

Output of fdisk -l for /dev/loop0 (loop device for the whole image):

Disk /dev/loop0: 1,1 GiB, 1211572224 bytes, 2366352 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xfdf8e68d

Device       Boot   Start     End Sectors  Size Id Type
/dev/loop0p1 *       2048 2097151 2095104 1023M 83 Linux
/dev/loop0p2      2097152 2359295  262144  128M 82 Linux swap / Solaris

Grub install commands:

chroot $ROOT grub-install --target=i386-pc /dev/loop0
chroot $ROOT update-grub

Grub config seems to be generated correctly with kernel and initramfs detected. But when I'm trying to boot system using the resulting image, grub2 can't find any partition:

Loading boot sector... booting...
error: no such device: some-file-system-UUID
error: unknown filesystem.
Entering rescue mode...
grub rescue> ls
grub rescue> insmod ext2
grub rescue> ls

What could be wrong in my grub installation steps? How grub2 can't see a partition that is present in fdisk output?

PS: BIOS is set up for legacy mode. I also tested my image with kvm and have exactly the same result.


This is probably too late, but for me it turned out I needed to mount the /dev/loopX partition using

losetup -P -n /dev/loop0 test.img

That created a /dev/loop0p1 that I was able to mount and install grub on top of. You should also make sure that you've installed a linux kernel inside the image with

sudo chroot /mnt apt-get install linux-image

Then you can re-install grub on /dev/loop0 and run update-grub successfully.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.