Это с grub-pc версии 1.98+20100804-5ubuntu3 (Maverick Meerkat).
Установщик grub2 может устанавливать на устройства с обратной связью, но если вы монтируете его с помощью устройства отображения карт, он запутается и поверит в то, что у вас есть схема LVM, которая таинственно провалилась с жалобой на отсутствующую абстракцию.
Вместо этого вам следует самостоятельно настроить петлевое устройство для раздела с именем, которое должно соответствовать шаблону "/dev/loop [0-9]", т.е. без какого-либо обозначения раздела в конце:
kpartx -v -a /dev/loop0
losetup /dev/loop1 /dev/mapper/loop0p1
mount /dev/loop1 /mnt
(Обратите внимание, что если вы хотите, чтобы grub-mkconfig/update-grub работал на этом томе, то петлевой раздел должен быть подключен к петле диска на /dev, а не напрямую к файлу образа).
Поскольку вы использовали fdisk для разбиения образа, у вас есть таблица разделов в стиле msdos (она же метка), и вы загружаетесь с помощью BIOS. Помимо помещения stage1/boot.img в MBR, stage1.5/core.img будет помещен в область внедрения в неразмеченном пространстве (!) следующий сразу после, и должно быть место для этого.
Теперь хитрость заключается в том, чтобы через установщик устройства сообщить установщику grub2, как ваши настройки обратной связи будут сопоставляться с дисками BIOS на виртуальной машине. (В grub1 legacy это было сделано прямо в оболочке). Вы, вероятно, планируете загрузить этот образ как первый диск, поэтому я думаю, что соответствующее сопоставление будет:
mkdir -p /mnt/boot/grub
cat > /mnt/boot/grub/device.map <<EOF
(hd0) /dev/loop0
(hd0,1) /dev/loop1
EOF
Здесь я поместил карту устройства в образ гостевого диска, чтобы вы могли сгенерировать загрузочный конфигурационный файл grub.cfg:
mount --bind /dev /mnt/dev
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
(Имейте в виду, что постинсталлятор пакета grub-pc будет запускать зонд, который перезаписывает карту устройства (!), Поэтому вам придется написать его после установки и запустить grub-mkconfig/update-grub самостоятельно).
Теперь запустите установщик с хоста, указывая на гостевую установку:
grub-install --no-floppy --grub-mkdevicemap=/mnt/boot/grub/device.map --root-directory=/mnt /dev/loop0
Наконец, размонтируйте все, что настроено здесь, перед запуском qemu на вашем изображении:
umount /mnt/dev
umount /mnt
losetup -d /dev/loop1
kpartx -v -d /dev/loop0