O sistema guest QEMU é iniciado / dev / sdc, mas não inicia a partir do arquivo de imagem de disco

1

Eu tenho uma cópia do Windows XP instalado em um disco rígido que gostaria de executar com o QEMU.

Quando eu inicio diretamente a partir do disco rígido, ele funciona bem:

qemu -m 256 -hda /dev/sdc
Starting Windows...etc...etc...

Embora a capacidade do HDD seja de 320 GB, meu sistema atualmente vive em uma partição de 4 GB no início do disco:

/sbin/fdisk -l /dev/sdc

Disk /dev/sdc: 320 GB, 320070320640 bytes
255 heads, 63 sectors/track, 38913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1         510     4096543    b  FAT32
Warning: Partition 1 does not end on cylinder boundary.

Então eu imaginei que só poderia copiar a tabela de partição e a primeira partição (8192000 setores) para uma imagem bruta para uso com o QEMU:

dd if=/dev/sdc of=winxp.img count=8192000

É claro que, como winxp.img é uma cópia de /dev/sdc , ela possui exatamente o mesmo layout de partição:

/sbin/fdisk -l winxp.img

Disk /mnt/windata/winxp.raw: 4 GB, 4186667520 bytes
255 heads, 63 sectors/track, 509 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

                 Device Boot      Start         End      Blocks   Id  System
/mnt/windata/winxp.raw1   *           1         510     4096543    b  FAT32
Warning: Partition 1 does not end on cylinder boundary.

No entanto, quando tento usar a imagem não processada com o QEMU, o sistema convidado não inicia:

qemu -m 256 -hda winxp.img
Booting from hard disk...
NTLDR is missing

Quais configurações eu poderia alterar para tornar meu arquivo de imagem compatível com o QEMU? Devo alterar algo na tabela de partições ou na própria partição para que funcione? Existe uma opção QEMU que poderia ajudar?

Ou talvez seja possível usar uma cópia de /dev/sdc1 com o QEMU em vez de uma cópia de /dev/sdc ?

    
por Dmitry Grigoryev 01.04.2015 / 18:05

3 respostas

0

Parece que o SeaBIOS (usado pelo QEMU ao emular alvos de PC) não tem configuração manual e sempre decide a geometria da unidade automaticamente. Como minha imagem parcial é bem pequena, sua geometria CHS é detectada como 8129 * 16 * 63 em vez de 510 * 255 * 63 . Isso é feito para compatibilidade com unidades antigas que não entendiam o LBA e, portanto, eram limitadas a 16 cabeças.

Devido à incompatibilidade entre a geometria da unidade no MBR e no BIOS, o carregador de inicialização não consegue inicializar a janela corretamente.

Teoricamente, imagens de mais de 8GB não devem ser afetadas (eu sei que minha imagem de 320GB funcionou), já que as unidades com mais de 8GB precisam suportar o LBA. Infelizmente, não tenho mais essa imagem para testar essa hipótese.

    
por 31.01.2017 / 23:46
0

Se você puder 'montar' seu arquivo de imagem em uma máquina Windows (preferencialmente XP), você pode usar ferramentas da Microsoft contra ele para ver qual poderia ser o problema. a partição tem que estar 'ativa', tem que ser um disco formatado MBR (não GPT), e tem que ter o setor de inicialização correto.

ferramentas como diskpart e bootsect / nt52 / mbr foram úteis para mim no passado. Eu não estou familiarizado com a inicialização de janelas de uma partição Linux.

    
por 07.04.2015 / 10:01
0

Apenas um palpite: você não está recebendo o MBR como eu acho que você já descobriu. O disco inteiro é muito grande. então ....

1) grab a USB drive with enough space
get a working disk image;
convert to qcow2;
shrink it.

2) use gparted or parted to shrink the original.
e2fsck and tune2fs *may* be helpful, also resize2fs.
    
por 09.04.2015 / 23:47