Це з 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 (aka label) та завантажуйтесь за допомогою BIOS. На додаток до розміщення stage1 / boot.img в MBR, stage1.5 / core.img буде розміщений у зоні вбудовування в нерозподіленому просторі (!), Слідом за ним, і для цього має бути місце.
Підступність полягає в тому, щоб повідомити інсталятору grub2 через карту пристрою, як ваша установка циклу відображатиметься на дисках BIOS у віртуальній машині. (У спадщині grub1 це було зроблено безпосередньо в оболонці). Ви, напевно, плануєте завантажувати це зображення як перший диск, тому, мабуть, відповідне відображення було б:
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