Avvio di un'immagine del disco grezzo in QEMU


25

Ho un file di immagine del disco da qui ; quella pagina dice che posso avviare questa immagine con QEMU e il seguente comando:

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

Questo dà un messaggio:

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.

L'emulatore si carica, ma PilOS si arresta in modo anomalo, il che significa che ho fatto qualcosa di sbagliato:

(probabilmente perché PilOS vuole scrivere sul blocco 0 ma non può)

L' rawargomento della riga di comando è, per quanto posso dire, pensato per essere passato in questo modo:

$ 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

Ciò fallisce (credo) perché il mio dispositivo di avvio è acceso /dev/sda, bus 0, quindi uno dei seguenti dovrebbe funzionare secondo la pagina man di QEMU (ma non funziona):

$ 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

L' bus=9argomento che -drivedovrebbe accettare è interpretato come un nome file o completamente ignorato.

Come posso avviare correttamente un'immagine così grezza in QEMU?


Questo è Ubuntu 15.10, in esecuzione:

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

Dati sull'immagine:

$ 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

Risposte:


38

L' -driveopzione accetta parametri che assomigliano a questo:

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

... devi usare le virgole tra le sue "sub" opzioni, non gli spazi.

Ad esempio, eccone uno che ho testato per avviare un CD di installazione Debian:

qemu-system-x86_64 -drive format=raw,media=cdrom,readonly,file=debian-8.2.0-amd64-DVD-1.iso 

come si specifica l'opzione raw per unità floppy di seguito qemu-system-x86_64 -fda os.flpper eliminare l'avviso?
enthusiasticgeek

1
@enthusiasticgeek è nella pagina man — cerca "Invece di -fda, -fdb, puoi usare:" dà -drive file=file,index=0,if=floppy... quindi dovresti essere in grado di aggiungere format=rawa quello.
derobert,

ok capito. qemu-system-x86_64 -drive format=raw,file=os.flp,index=0,if=floppylavorato! Grazie.
enthusiasticgeek

2
@ Mr.Hyde considerando che ha funzionato sia per me che per OP, è strano! Qual è la riga di comando completa? Forse sarebbe meglio fare una nuova domanda, puoi fare riferimento a questa nella tua domanda.
derobert il

1
@ Mr.Hyde Non hai un -driveargomento lì, quindi questa sembra essere una domanda diversa. Suggerisci di porre la tua domanda.
derobert il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.