यह ग्रब-पीसी संस्करण 1.98 + 20100804-5ubuntu3 (Maverick Meerkat) के साथ है।
Grub2 इंस्टॉलर लूपबैक उपकरणों पर इंस्टॉल हो सकता है, लेकिन यदि आप डिवाइस मैपर का उपयोग करके माउंट करते हैं तो यह भ्रमित हो जाएगा और विश्वास करें कि आपके पास एक LVM योजना है, जो लापता एब्सट्रैक्शन के बारे में शिकायत के साथ रहस्यमय तरीके से विफल है।
इसके बजाय, आपको विभाजन के लिए लूपबैक डिवाइस को स्वयं सेटअप करना चाहिए, एक ऐसे नाम के साथ, जो पैटर्न "/ देव / लूप [0-9]" से मेल खाना चाहिए , अर्थात अंत में बिना किसी विभाजन के
kpartx -v -a /dev/loop0
losetup /dev/loop1 /dev/mapper/loop0p1
mount /dev/loop1 /mnt
(नोट अगर आप कोड़ना mkconfig / अद्यतन-कोड़ना इस वॉल्यूम पर संचालित करने के लिए चाहते हैं, तो विभाजन लूपबैक के तहत / dev डिस्क लूपबैक से कनेक्ट होना आवश्यक है, और न छवि फ़ाइल के लिए सीधे)।
चूंकि आपने छवि को विभाजित करने के लिए fdisk का उपयोग किया है, इसलिए आपके पास एक msdos -style विभाजन तालिका (उर्फ लेबल) है, और एक BIOS का उपयोग करके बूट करें। MB1 में stage1 / boot.img डालने के अलावा, 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-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