O Windows 7 falha ao instalar no KVM com o qemu

8

Estou tentando instalar o Windows 7 como o sistema operacional convidado em uma máquina virtual hospedada pela minha caixa Ubuntu Karmic de 64 bits. Chego ao ponto de selecionar minhas configurações de idioma e clicar em "instalar agora", mas pouco tempo depois recebo uma tela azul da morte.

Eu tentei algumas variações, inclusive usando a versão de 32 bits do Windows 7, que falha muito rapidamente. O comando virt-install que eu tentei inclui isto:

sudo virt-install --connect qemu:///system -n ksm-win7 -r 2048 \
--disk path=/home/kief/VM-Images/ksm-win7.qcow2,size=50 \
-c /var/Software/Windows7/Full/64bit/SW_DVD5_SA_Win_Ent_7_64BIT_English_Full_MLF_X15-70749.ISO \
--vnc --os-type windows --os-variant vista --hvm

A informação limitada que pude encontrar sugeriu que o 'Vista' deveria funcionar como o --os-variant, não encontrei nenhum valor específico para o Windows 7.

Aqui está minha tela azul:

Euencontreimuitopoucopesquisando,entãoeuestousupondoqueestenãoéumcasodeKVMsimplesmentenãosuportandooWindows7.

Atualização:

ConseguicriarcomêxitoumaVMdoWindows7usandooaplicativográfico"Virtual Machine Manager", embora eu não entenda realmente a causa do problema com a VM criada com virt-install . Comparar os arquivos de configuração em / etc / libvirt / qemu fornece algumas pistas, embora eu não saiba o suficiente para interpretá-los corretamente. As diferenças interessantes nas duas configurações de VM são:

--- win7-virt-install.xml
+++ win7-vmm.xml
-<domain type='qemu'>
+<domain type='kvm'>
@@ -21 +21 @@
-    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+    <emulator>/usr/bin/kvm</emulator>
@@ -23 +23 @@
-      <source file='/home/kief/VM-Images/ksm-win7.qcow2'/>
+      <source file='/var/lib/libvirt/images/ksm-win7x64.img'/>

Não tenho certeza se isso significa que a VM funcional não está usando o qemu, ou se há alguma outra diferença na maneira como é usada com o kvm.

Update2:

Então eu respondi minha própria pergunta (principalmente) abaixo. Uma VM KVM precisa usar a própria emulação de CPU do KVM em vez de qemu para que eu tenha o Windows 7 instalado. Não tenho certeza se há algo que pode ser feito para fazê-lo funcionar em uma CPU de emulação do qemu ou se uma versão mais recente suportará isso. Mas, pelo menos, é possível colocá-lo em execução em uma VM KVM.

    
por Kief 18.11.2009 / 15:44

6 respostas

7

Veja a maneira mais fácil

A menos que você tenha algum motivo específico para instalar um GuestOS usando o virt-install, aqui está a maneira "fácil" de fazê-lo sem o virt-install.

Eu tenho uma VM funcional com o Windows 7 instalado. Veja como eu o criei.

Etapa 1: crie a imagem de disco virtual

qemu-img create -f qcow2 vdisk.img 100g

Isso cria um disco virtual no formato qcow2. Definir o tamanho da partição como 100g (gigabytes) não aloca aloca 100gb de espaço físico no disco rígido. A partição virtual ocupará apenas o espaço que os dados nela contidos. O 100g apenas faz com que você (espero) nunca precise aumentar o tamanho. Aumentar o tamanho padrão de uma imagem qcow2 ainda é um problema para a ** .

Etapa 2: instalar o sistema operacional

Se você estiver usando um cd-rom físico real para carregar o sistema operacional, use o seguinte comando.

sudo kvm -m 750 -cdrom /dev/sr0 -boot d vdisk.img

Se você estiver usando uma imagem de disco para carregar o sistema operacional, use este comando.

sudo kvm -m 750 -cd-rom /path/to/image/image.iso -boot d vdisk.img

Aqui está o detalhamento dos comandos:

  • kvm - chama a máquina virtual do kernel (óbvio)
  • -m 750 - aloca 750mb de memória para a máquina virtual
  • -cd-rom configura o cd-rom. Para um disco físico, use o mesmo disco que o seu HostOS. Para uma imagem, forneça um caminho para o arquivo de imagem.
  • -boot d inicializa a máquina virtual a partir do cd-rom

Defino que o consumo de memória da carga inicial para 750 seja conservador, para que eu possa ter certeza de que a instalação será concluída sem ficar sem memória. Para cargas subseqüentes, eu geralmente o configuro para 512.

Nota: AFIAK, o comando kvm só funciona em versões mais recentes do Debian / Ubuntu ou seus derivados. Se não funcionar, o comando equivalente (e mais comum) é qemu-system-x86_64 ou qemu-kvm para 32 bits.

Depois de passar por todo o processo de instalação, a VM deve ser reinicializada em um sistema operacional em funcionamento. Para carregar a VM novamente, inicie este comando:

kvm -m 512 vdisk.img

Com qualquer opção de linha de comando, você precisa montar discos físicos adicionais, hardware, etc. Para encontrar informações sobre as opções de linha de comando, verifique kvm --help.

Se você não entender a diferença entre 'paravirtualização' e 'virtualização nativa' Matthias já fez uma ótima explicação das diferenças .

Para uma explicação mais detalhada desse processo, leia este artigo .

    
por 29.07.2010 / 07:10
3

A razão para este problema com a instalação de janelas com a virtualização do qemu é a diferença entre o qemu "paravirtualization" e a "virtualização nativa" do KVM. Paravirtualização significa que simula uma CPU e precisa de um kernel especial no lado do cliente (sistema virtual) para que este sistema saiba como chamar corretamente as funções da CPU. Essa é a razão para nem todos os sistemas serem capazes de rodar usando o qemu sem o KVM.

Por outro lado, os sistemas virtuais que usam o KVM podem acessar diretamente a CPU (porque o KVM usa suporte para AMD / Intel Hardware Virtualization). Nesse caso, nenhum kernel especial é necessário. A desvantagem é que o host precisa ter uma CPU moderna que suporte essa virtualização de hardware (chamada SVM na AMD e VT-x para Intel) e que o sistema cliente deve ser capaz de rodar nessa CPU (não é um problema, como a maioria dos sistemas pode ser executado em um x86), reduzindo a portabilidade.

    
por 06.07.2010 / 22:12
2

A exceção 0x1e é KMODE_EXCEPTION_NOT_HANDLED , que geralmente é uma falha relacionada ao hardware ou ao driver de dispositivo. Meu palpite é que, por qualquer motivo, o Windows não está gostando do hardware emulado da máquina virtual.

Já experimentou o VirtualBox ? Eles têm um lançamento para o Karmic Koala, e eles suportam o Windows 7 (estou executando o Win7 agora mesmo em uma caixa do Windows XP).

    
por 18.11.2009 / 16:00
1

Após algumas pesquisas e consultas com um colega, o problema parece ser com emulação de CPU do qemu. Meu comando virt-install criou a máquina virtual KVM usando a emulação de CPU do qemu. O VMM criou uma máquina virtual KVM usando a própria emulação de CPU do KVM (embora ainda usando o qemu para emular outras partes do PC, já que a versão atual do KVM usa o qemu para isso).

Adicionando o parâmetro --accelerate ao meu comando virt-install, posso criar uma VM e instalar o Windows 7 nela.

Assim, a resposta parece ser que o Windows 7 não pode ser instalado em uma máquina virtual usando emulação de CPU qemu-kvm-0.11.0, mas isso pode ser contornado usando a emulação de CPU do próprio KVM. Isso é feito usando a opção --accelerate para virt-install. O parâmetro do arquivo de configuração será <domain type="kvm"> em vez de <domain type="qemu"> .

    
por 19.11.2009 / 14:30
0

A outra diferença que vejo de cima é que o KVM deve ter somente 32 bits de emulação ... ou pelo menos com o seu diff XML que se destaca.

Parece que o suporte de 64 bits foi adicionado ao KVM, portanto, o qemu-system-x86_64 com --accelerate pode / poderia fornecer KVM e 64 bits, desde que seu kernel seja construído para ele pela sua distribuição.

    
por 12.06.2010 / 21:21
0

Consegui iniciar a instalação alterando primeiro a exibição para cirrus , conforme recomendado aqui: link

  1. instale o Win 7 com gráficos do cirrus, desligue o vm
  2. adiciona um segundo adaptador gráfico como qxl
  3. inicialize vm e instale o driver qxl
  4. encerre vm e remova o adaptador cirrus
por 25.11.2016 / 23:26