Como inicializar uma partição física do Windows com qemu?

14

Eu tenho o gentoo e o windows 7 instalados ao lado no meu único disco rígido. Eu quero iniciar minha instalação do Windows a partir do Gentoo através do qemu. O menu de inicialização funciona bem, mas o Windows exibe telas azuis logo após eu selecioná-lo.

Como eu faria isso funcionar?

(Presumo que o Windows esteja com falta de drivers necessários para que o hardware emulado com qemu funcione.)

McEnroe
fonte
certifique-se de executar qemucom a arquitetura correta. Além disso, o Windows falhará ao inicializar se esperar que o controlador HDD seja AHCI e não é (e vice-versa).
11238 Gellaen #
A arquitetura é bom, mas eu não acho que há alguma coisa que podemos fazer sobre a ahci desde qemu não parece apoiá-lo ...
McEnroe
Tente isso: avforums.com/forums/windows-7/…
gelraen 5/10
@gelraen O problema é que seu link descreve o processo inverso do que eu quero fazer. Não posso arriscar apenas testá-lo sem saber que há uma chance de dar certo ou pelo menos que seja 100% reversível.
5119 McEnroe
Esse post é exatamente sobre a reversão do AHCI para o ATA. E você sempre pode desativar o AHCI na máquina física e alterá-lo novamente, ou mesmo simplesmente fazer backup dos arquivos de registro.
gelraen

Respostas:

7

A inicialização de uma partição física nativa do Windows7 pode ser feita da seguinte maneira:

  1. Prepare os requisitos (mídia de instalação do Win7, drivers Virtio).
  2. Torne seu disco rígido acessível somente leitura para o usuário atual.
  3. Inicialize-o usando o QEMU no modo de captura instantânea.

Isso não altera nada na unidade física (na verdade, é somente leitura).


Detalhes

Preparar requisitos

  1. Prepare um ISO ou, se você tiver uma unidade disponível, a mídia de instalação real do Win7.
  2. Faça o download de drivers Virtio, por exemplo, esses drivers do Fedora:
    https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso

Tome cuidado para usar a mídia de instalação correta que corresponde à arquitetura do Windows instalada (32 bits vs 64 bits). Os comandos a seguir assumem uma arquitetura de 64 bits.

Tornar o disco acessível

Isso pressupõe que seu disco rígido seja /dev/sdae tenha sido executado como root:

   chmod g-w /dev/sda
   chgrp $USER /dev/sda

Essas alterações (provavelmente) serão perdidas na próxima reinicialização, pois o udev geralmente recriará todos os arquivos do dispositivo.

Inicializando com QEMU

  1. Isso novamente assume que seu disco rígido é /dev/sda. A rede está desativada:

    qemu-system-x86_64 -snapshot -m 3G -enable-kvm -usbdevice tablet \
    -drive file=/dev/sda,if=virtio \
    -drive file=<win7-installation-media> \
    -drive file=<virtio-driver-media>,media=cdrom -boot d \
    -net none
    
  2. Agora inicialize a partir do CD / DVD para iniciar a recuperação do Win7, carregue o driver Virtio e execute o seguinte comando no prompt de comando de recuperação. Certifique-se de substituir as letras da unidade pelas letras corretas:

    dism /image:g:\ /add-driver /driver:e:\viostor\w7\amd64
    

Unidade G:é a unidade que contém sua instalação do Win7. A unidade E:representa a unidade de CDROM com os drivers Virtio.

O dismcomando foi copiado desta resposta do superusuário .

Dê uma olhada nas capturas de tela para obter detalhes:

(Desculpe, as capturas de tela foram preparadas, mas eu preciso de 10 reputação para poder publicá-las :)

doak
fonte
A coisa da reputação 10 é uma dor. Isso me impediu, e muitos outros, de dar o tipo detalhado de ajuda que queríamos. = / Acabei de carregar o meu no imgur e colei os links, FYI.
Brent Rittenhouse
Para ser sincero, não é difícil conseguir 10 pontos. O problema é que não consigo mais encontrar as capturas de tela. Tenho a certeza de que eles estão em algum lugar em meus discos, mas ...: /
doak
3

Pelo que vi neste post , você não pode usar o qemu para inicializar uma instalação existente do Windows.

O principal argumento apresentado é que, quando o Windows é instalado, a chave do produto é associada à placa-mãe do seu computador. Agora, quando você tenta executar o Windows usando o qemu, o Windows percebe o emulador do qemu como uma placa-mãe diferente e, portanto, apresenta problemas.

Consulte a publicação para obter mais detalhes.

Hashken
fonte
2
O VirtualBox pode se anunciar como uma placa-mãe arbitrária ( forums.virtualbox.org/viewtopic.php?t=33356 ) talvez o QEMU também possa.
RushPL
1

Eu consegui fazer isso no archlinux, principalmente adaptando exemplos que outras pessoas (mais inteligentes) forneceram em blogs.

Versão mínima:

instalar deps

sudo pacman -S qemu   # qemu itself
sudo pacman -S ovmf   # intel EFI driver
cp /usr/share/ovmf/x64/OVMF_CODE.fd bios.bin   # copy OVMF_CODE.fd to bios.bin somewhere. It MUST be renamed.

iniciar qemu

qemu-system-x86_64 \
    -enable-kvm                                   `# enable KVM optimiations` \
    -L .                                          `# dir with bios.bin` \
    --bios bios.bin                               `# bios.bin itself` \
    -m 8G                                         `# provide reasonable amount of ram` \
    -cpu host                                     `# match the CPU type exactly` \
    -drive file=/dev/sda,format=raw,media=disk    `# load raw HDD` 

Otimizações de desempenho

Os seguintes sinalizadores também foram recomendados para mim e eu os tenho usado com sucesso.

# emulate exact host cpu,
# enable hyper-v enlightenments
-enable-kvm
-cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time
-machine type=pc,accel=kvm

# use all available CPU cores
-smp $(nproc)

Visualizador

Eu usei tempero como espectador:

-daemonize  `# don't start monitor, we connect using RDP` \
-vga qxl \
-spice port=5930,disable-ticketing \
-device virtio-serial \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent \

Seguido pelo seguinte para exibir o visualizador

spicy -h 127.0.0.1 -p 5930 & disown spicy;  # spice-gtk

Aviso do Carregador de Inicialização do Windows

Por fim, cuidado com o carregador de inicialização do Windows se você estiver usando vários discos. Eu tenho uma instalação do Windows agora que não será inicializada, a menos que uma segunda unidade que não seja do sistema operacional também esteja presente.

Referências

Gostaria de manter minhas fontes aqui - lembro que pelo menos os seguintes foram super úteis:

https://wiki.qemu.org/Main_Page https://qemu.weilnetz.de/doc/qemu-doc.html https://wiki.archlinux.org/index.php/QEMU https: //wiki.gentoo .org / wiki / QEMU https://www.suse.com/documentation/sles11/book_kvm/data/part_2_book_book_kvm.html

Boa sorte!

willjp
fonte
Isso funcionou para mim no arch linux
jameh
0

Aqui está o que eu uso para uma unidade física do Windows 10. Observe que, em muitos casos, o Windows falhará ao inicializar se você não usar o sinalizador "-cpu host".

Apenas substitua / dev / nvme0n1 por sua unidade, por exemplo. / dev / sda ou / dev / sdb

qemu-system-x86_64 --enable-kvm -cpu host -smp 8 -m 8192-formato de unidade = bruto, arquivo = / dev / nvme0n1

Fonte: http://realtechtalk.com/QEMUKVM_wont_boot_Windows_2016_or_2019_server_on_an_Intel_Core_i3_-2221-articles

Areeb Soo Yasir
fonte