Mem-boot image disk mentah di QEMU

25

Saya memiliki file gambar disk dari sini ; halaman itu mengatakan saya bisa mem-boot gambar ini dengan QEMU dan perintah berikut:

$ qemu-system-x86_64  -m 4096  -ctrl-grab  -no-reboot  x86-64.img

Itu memberi pesan:

WARNING: Image format was not specified for 'x86-64.img' and probing guessed raw.
     Automatically detecting the format is dangerous for raw images, write operations on block 0 will be restricted.
     Specify the 'raw' format explicitly to remove the restrictions.

Emulator memuat, tetapi PilOS lumpuh, yang berarti saya melakukan sesuatu yang salah:

(mungkin karena PilOS ingin menulis ke blok 0 tetapi tidak bisa)

The rawargumen baris perintah adalah, sejauh yang saya tahu, dimaksudkan untuk diteruskan seperti ini:

$ qemu-system-x86_64 -drive format=raw file=x86-64.img 
qemu-system-x86_64: -drive format=raw: drive with bus=0, unit=0 (index=0) exists

Itu gagal (saya pikir) karena perangkat boot saya aktif /dev/sda, bus 0, jadi salah satu dari berikut ini akan berfungsi sesuai dengan halaman manual QEMU (tetapi tidak):

$ qemu-system-x86_64 -drive bus=9 format=raw file=x86-64.img 
qemu-system-x86_64: -drive bus=9: Could not open 'format=raw': No such file or directory
$ qemu-system-x86_64 -drive format=raw file=x86-64.img bus=9
qemu-system-x86_64: -drive format=raw: drive with bus=0, unit=0 (index=0) exists

The bus=9argumen bahwa -driveharus menerima adalah baik diartikan sebagai nama file, atau benar-benar diabaikan.

Bagaimana cara mem-boot gambar mentah dengan benar di QEMU?


Ini adalah Ubuntu 15.10, berjalan:

QEMU emulator version 2.3.0 (Debian 1:2.3+dfsg-5ubuntu9.3), Copyright (c) 2003-2008 Fabrice Bellard

Data tentang gambar:

$ file x86-64.img 
x86-64.img: DOS/MBR boot sector; partition 1 : ID=0x83, active, start-CHS (0x0,1,1), end-CHS (0x82,246,62), startsector 62, 2006072 sectors; partition 2 : ID=0x82, start-CHS (0x83,0,1), end-CHS (0x15,246,62), startsector 2006134, 2006134 sectors

$ fdisk -lu x86-64.img 
Disk x86-64.img: 670 KiB, 686080 bytes, 1340 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device      Boot   Start     End Sectors   Size Id Type
x86-64.img1 *         62 2006133 2006072 979.5M 83 Linux
x86-64.img2      2006134 4012267 2006134 979.6M 82 Linux swap / Solaris
kucing
sumber

Jawaban:

38

The -drivepilihan mengambil parameter yang terlihat seperti ini:

qemu-system-x86_64 -drive format=raw,file=x86-64.img 

... Anda harus menggunakan koma di antara "sub" -pilihannya, bukan spasi.

Sebagai contoh, ini adalah salah satu yang saya uji untuk mem-boot CD Debian Installer:

qemu-system-x86_64 -drive format=raw,media=cdrom,readonly,file=debian-8.2.0-amd64-DVD-1.iso 
derobert
sumber
bagaimana Anda menentukan opsi baku untuk floppy drive di bawah ini qemu-system-x86_64 -fda os.flpuntuk menghilangkan peringatan?
Antusiasme
1
@enthusiasticgeek ada di halaman manual — cari "Sebagai ganti -fda, -fdb, Anda dapat menggunakan:" memberikan -drive file=file,index=0,if=floppy... jadi Anda harus dapat menambahkannya format=raw.
derobert
OK mengerti. qemu-system-x86_64 -drive format=raw,file=os.flp,index=0,if=floppybekerja! Terima kasih.
Antusiasme
2
@ Mr.Hyde mempertimbangkan itu bekerja untuk saya dan OP, itu aneh! Apa baris perintah penuh? Mungkin akan lebih baik untuk mengajukan pertanyaan baru, Anda dapat merujuk ini dalam pertanyaan Anda.
derobert
1
@ Mr.Hyde Anda tidak memiliki -driveargumen di sana, jadi itu sepertinya pertanyaan yang berbeda. Sarankan Anda mengajukan pertanyaan Anda sendiri.
derobert