Inicializando uma imagem de disco bruto no QEMU

25

Eu tenho um arquivo de imagem de disco daqui ; essa página diz que eu posso inicializar esta imagem com QEMU e o seguinte comando:

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

Isso dá uma mensagem:

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.

O emulador carrega, mas o PilOS falha, o que significa que fiz algo errado:

(provavelmente porque o PilOS deseja gravar no bloco 0, mas não pode)

O rawargumento da linha de comando é, tanto quanto posso dizer, destinado a ser passado assim:

$ 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

Isso falha (eu acho) porque meu dispositivo de inicialização está ativado /dev/sda, barramento 0, portanto, um dos seguintes procedimentos deve funcionar de acordo com a página de manual do QEMU (mas não):

$ 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

O bus=9argumento que -drivedeve aceitar é interpretado como um nome de arquivo ou completamente ignorado.

Como inicializo corretamente uma imagem tão bruta no QEMU?


Este é o Ubuntu 15.10, executando:

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

Dados sobre a imagem:

$ 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
gato
fonte

Respostas:

38

A -driveopção aceita parâmetros parecidos com este:

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

... você precisa usar vírgulas entre as opções "sub", não os espaços.

Por exemplo, aqui está um que eu testei para inicializar um CD do Debian Installer:

qemu-system-x86_64 -drive format=raw,media=cdrom,readonly,file=debian-8.2.0-amd64-DVD-1.iso 
derobert
fonte
como você especifica a opção bruta para a unidade de disquete a seguir qemu-system-x86_64 -fda os.flppara se livrar do aviso?
Entusiasticgeek
11
@enthusiasticgeek está na página de manual - procure "Em vez de -fda, -fdb, você pode usar:" give -drive file=file,index=0,if=floppy... para que você possa adicionar format=rawisso.
Derobert 31/05
OK, entendi. qemu-system-x86_64 -drive format=raw,file=os.flp,index=0,if=floppytrabalhou! Obrigado.
Entusiasticgeek
2
@ Mr.Hyde, considerando que funcionou para mim e OP, isso é estranho! Qual é a linha de comando completa? Talvez seja melhor fazer uma nova pergunta, você pode fazer referência a esta na sua pergunta.
Derbert
11
@ Mr.Hyde Você não tem um -driveargumento lá, então isso parece ser uma pergunta diferente. Sugira que você faça sua própria pergunta.
Derobert