นี่คือกับรุ่นด้วงพีซี 1.98 + 20100804-5ubuntu3 (ไม่ฝักใฝ่ฝ่ายใดเมียร์แคต)
ตัวติดตั้ง 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- style (label 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
(ระวังว่า post-installer ของแพ็คเกจ grub-pc จะเรียกใช้โพรบที่เขียนทับ map map (!) ดังนั้นคุณจะต้องเขียนมันหลังจากการติดตั้งและรัน 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