Ini dengan grub-pc versi 1.98 + 20100804-5ubuntu3 (Maverick Meerkat).
Pemasang grub2 dapat menginstal ke perangkat loopback, tetapi jika Anda memasang menggunakan perangkat mapper itu akan menjadi bingung dan percaya bahwa Anda memiliki skema LVM, gagal secara misterius dengan keluhan tentang abstraksi yang hilang.
Sebagai gantinya, Anda harus mengatur sendiri perangkat loopback untuk partisi tersebut, dengan nama yang harus cocok dengan pola "/ dev / loop [0-9]", yaitu tanpa perancang partisi pada akhirnya:
kpartx -v -a /dev/loop0
losetup /dev/loop1 /dev/mapper/loop0p1
mount /dev/loop1 /mnt
(Perhatikan bahwa jika Anda ingin grub-mkconfig / update-grub beroperasi pada volume ini, maka loopback partisi harus terhubung ke loopback disk di / dev, dan tidak langsung ke file gambar).
Karena Anda menggunakan fdisk untuk mempartisi gambar, Anda memiliki tabel partisi gaya- msdos (label alias), dan boot menggunakan BIOS. Selain menempatkan stage1 / boot.img di MBR, stage1.5 / core.img akan diletakkan di area embedding di ruang unpartitioned (!) Setelahnya , dan harus ada ruang untuk ini.
Caranya sekarang adalah memberi tahu installer grub2 melalui peta perangkat bagaimana pengaturan loopback Anda akan dipetakan ke drive BIOS di mesin virtual. (Dalam grub1 legacy ini dilakukan langsung di shell). Anda mungkin berencana untuk mem-boot gambar ini sebagai disk pertama, jadi saya kira pemetaan yang sesuai adalah:
mkdir -p /mnt/boot/grub
cat > /mnt/boot/grub/device.map <<EOF
(hd0) /dev/loop0
(hd0,1) /dev/loop1
EOF
Di sini saya telah meletakkan peta perangkat di dalam disk image tamu, sehingga Anda dapat membuat file konfigurasi boot grub.cfg:
mount --bind /dev /mnt/dev
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
(Hati-hati bahwa post-installer dari paket grub-pc akan menjalankan probe yang menimpa peta perangkat (!), Jadi Anda harus menulisnya setelah instalasi dan menjalankan sendiri grub-mkconfig / update-grub).
Sekarang jalankan penginstal dari host , arahkan ke instalasi tamu:
grub-install --no-floppy --grub-mkdevicemap=/mnt/boot/grub/device.map --root-directory=/mnt /dev/loop0
Terakhir, lepaskan semua yang diatur di sini sebelum memulai qemu pada gambar Anda:
umount /mnt/dev
umount /mnt
losetup -d /dev/loop1
kpartx -v -d /dev/loop0