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' raw
argomento 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=9
argomento che -drive
dovrebbe 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
qemu-system-x86_64 -fda os.flp
per eliminare l'avviso?