Démarrer une image disque brute dans QEMU

25

J'ai un fichier d'image disque d' ici ; cette page indique que je peux démarrer cette image avec QEMU et la commande suivante:

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

Cela donne un message:

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'émulateur se charge, mais PilOS se bloque, ce qui signifie que j'ai fait quelque chose de mal:

(probablement parce que PilOS veut écrire sur le bloc 0 mais ne peut pas)

Pour rawautant que je sache, l'argument de la ligne de commande est censé être passé comme ceci:

$ 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

Cela échoue (je pense) parce que mon périphérique de démarrage est allumé /dev/sda, le bus 0, donc l'un des éléments suivants devrait fonctionner selon la page de manuel de QEMU (mais pas):

$ 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=9argument qui -drivedoit accepter est soit interprété comme un nom de fichier, soit complètement ignoré.

Comment démarrer correctement une telle image brute dans QEMU?


Voici Ubuntu 15.10, en cours d'exécution:

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

Données sur l'image:

$ 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
chat
la source

Réponses:

38

L' -driveoption prend des paramètres qui ressemblent à ceci:

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

... vous devez utiliser des virgules entre ses "sous" options, pas des espaces.

Par exemple, voici celui que j'ai testé pour démarrer un CD d'installation Debian:

qemu-system-x86_64 -drive format=raw,media=cdrom,readonly,file=debian-8.2.0-amd64-DVD-1.iso 
derobert
la source
comment spécifiez-vous l'option brute pour le lecteur de disquette dans ce qui suit qemu-system-x86_64 -fda os.flppour se débarrasser de l'avertissement?
enthousiastegeek
1
@enthusiasticgeek c'est dans la page de manuel - recherchez "Au lieu de -fda, -fdb, vous pouvez utiliser:" donne -drive file=file,index=0,if=floppy... donc vous devriez pouvoir ajouter format=rawà cela.
derobert
ok j'ai compris. qemu-system-x86_64 -drive format=raw,file=os.flp,index=0,if=floppytravaillé! Merci.
enthousiastegeek
2
@ Mr.Hyde considérant que cela a fonctionné pour moi et OP, c'est étrange! Quelle est la ligne de commande complète? Il serait peut-être préférable de poser une nouvelle question, vous pouvez faire référence à celle-ci dans votre question.
derobert
1
@ Mr.Hyde Vous n'avez pas d' -driveargument là-bas, donc cela semble être une question différente. Je vous suggère de poser votre propre question.
derobert