Saya melakukan yang berikut:
- membuat file .img kosong dengan dd
- mengaitkannya dengan / dev / loop0 dengan losetup
- membuat partisi di dalamnya dengan fdisk
- memformat partisi tersebut dengan mke2fs
- menyalin sistem GNU / Linux khusus ke partisi itu
Sekarang saya ingin membuat file .img dapat di-boot dengan menginstal grub ke direktori MBR dan / boot. Tujuan saya adalah memuat file .img dengan qemu. Akan lebih baik jika grub2 digunakan daripada warisan grub.
Terima kasih.
Jawaban:
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:
(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:
Di sini saya telah meletakkan peta perangkat di dalam disk image tamu, sehingga Anda dapat membuat file konfigurasi boot 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:
Terakhir, lepaskan semua yang diatur di sini sebelum memulai qemu pada gambar Anda:
sumber
chroot /mnt grub-mkconfig -o /boot/grub/grub.cfg
gagal karena tidak adagrub-mkconfig
atau biner dalam hal .img disk, dan/mnt
sudah terpasang. Akan sangat bagus jika Anda akan mengambil langkah demi langkah dan menulis semua detail / perintah.losetup -P
adalah cara lain yang baik pemasangan partisi tunggal: stackoverflow.com/a/15200862/895245/usr/sbin/grub-probe: warning: the device.map entry 'hd0,1' is invalid. Ignoring it. Please correct or delete your device.map.
Jadi jawaban ini tidak berguna.terima kasih banyak untuk penjelasan ini. Saya mengintegrasikan solusi Anda ke dalam skrip saya sendiri dengan modifikasi berikut (diterjemahkan ke notasi / variabel Anda):
ini bekerja setidaknya pada debian squeeze. Periksa '/ boot / grub / grub.cfg' untuk kebenaran.
sumber
cat > /mnt/boot/grub/device.map
dilakukan di lingkungan chroot? Jika demikian, jalannya seharusnya/boot/grub/device.map
.Asumsi:
Inilah cara saya mem-boot qemu ke menu GRUB:
Kemudian shell GRUB muncul:
Jika Anda telah menyalin kernel dan ram disk ke / dev / loop0p1, Anda bisa mem-bootnya:
Dan inilah shell Linux default (karena tidak ada / sbin / init tersedia dalam kasus ini)
sumber