Como desativar a tentativa de inicialização indesejada do iPXE no Libvirt / qemu-kvm?

11

De alguma forma, após a atualização para 12.04, minhas máquinas virtuais sempre inicializam com uma tentativa de inicializar pela rede primeiro. Veja isto:

enquanto não tenho nenhum conjunto de configurações PXE:

Eu tentei:

  • para desativar o SPICE, alterando o emulator para /usr/bin/kvm de /usr/bin/kvm-spice editando o XML.
  • Ctrl + B para configurar o iPXE, mas não permite desabilitar isso como uma opção de inicialização.
  • definindo outro tipo de NIC - não uma opção, preciso de virtio por motivos de desempenho. No entanto, e1000e também não funciona.
  • removendo o NIC: funciona. No entanto, preciso de rede.
  • Pesquisando por aí. Difícil. Grande parte do resultado é sobre a falha na inicialização do PXE.

Não é um grande problema, mas aumenta o tempo de inicialização em 50-100% aqui (inicializando a partir do SSD), então é relativamente longo e me irrita.

Como posso desabilitar isso e inicializar a partir do disco rígido virtual diretamente?

    
por gertvdijk 20.09.2012 / 15:39

5 respostas

6

Resposta curta

Atualize para libvirt 0.9.10+ (disponível no Quantal) e adicione a opção <rom bar='off'/> à configuração da interface da definição XML da máquina.

Resposta longa

Agora que estou realmente usando a opção de inicialização do iPXE, vejo que o atraso que ocorre na tela do SeaBIOS não é uma tentativa real de inicialização. É apenas carregar a ROM da opção de rede Virtio e isso leva alguns segundos aborrecidos, ou seja, ainda não está fazendo uma tentativa de inicialização do iPXE . Isso me levou a ler a documentação da libvirt novamente e fiz uma descoberta interessante.

Tanto quanto eu pude encontrar, desde o libvirt 0.9.7 o comportamento foi alterado para carregar ROMs de opções da interface por padrão. Ubuntu 11.10 fornecido com 0.9.2, o Ubuntu 12.04 vem com 0.9.8. Isso definitivamente faz sentido porque vejo isso acontecendo desde a atualização para 12.04.

Além disso, isso se tornou configurável na versão 0.9.10 do libvirt com a opção <rom bar='off'/> no XML! (veja aqui ) No entanto, essa versão do libvirt não está disponível no Ubuntu 12.04 e eu terei que atualizar para 12.10 ou backport isso. Isso faz com que o Ubuntu 12.04 caia entre duas fezes.

Outras soluções alternativas estão removendo os arquivos da opção ROM, como apontado por @ A.H. ' e alterando o sistema de arquivos do SeaBIOS, como apontado por @NlightNFotis. No entanto, as duas formas basicamente desabilitarão o iPXE completamente e não serão configuráveis (se aderirem apenas a virtio dispositivos de rede). Como tenho uma configuração mista de máquinas iPXE e máquinas não PXE, realmente preciso que isso seja configurável.

    
por gertvdijk 07.12.2012 / 14:58
5

Minhas experiências sobre o mesmo problema me deram algumas dicas:

O pacote kvm-ipxe instala várias ROMs opcionais do PXE em /usr/share/qemu/ :

pxe-e1000.rom
pxe-ne2k_isa.rom
pxe-pcnet32.rom
pxe-rtl8139.rom
pxe-virtio.rom

De alguma forma, estes são automaticamente encontrados e usados pelo SeaBos ao inicializar com um desses NICs. Quando eu faço um chmod a= pxe*.rom nesses arquivos e inicio a máquina virtual, recebo a mensagem "error"

kvm: pci_add_option_rom: failed to find romfile "pxe-rtl8139.rom"

mas inicializa de forma limpa e sem PXE.

    
por A.H. 23.09.2012 / 17:45
3

Consegui contornar isso no Ubuntu 12.04 passando as seguintes opções para o qemu-kvm na linha de comando (configurar o romfile como em branco é o truque):

-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0
    
por RolKau 31.05.2013 / 00:51
0

De suas fotos, posso ver que, provavelmente, isso tem a ver com o BIOS da VM. A configuração da VM não deve sobrescrever as configurações de SeaBIOS ', algo que deve estar causando a inicialização da VM a partir de PXE primeiro.

Para uma primeira solução possível, tente ver se você pode entrar no BIOS da máquina virtual e editar as opções predominantes lá.

OBSERVAÇÃO: Continuaremos atualizando a resposta enquanto minha pesquisa desvenda mais soluções ou causas possíveis.

[EDIT # 1]: Você pode encontrar informações sobre como configurar a ordem de inicialização no SeaBIOS aqui . Isso deve resolver o problema.

    
por NlightNFotis 20.09.2012 / 15:55
-1

Consegui evitar isso usando "-net none":

# qemu-system-i386 -net none
    
por Catalin Patulea 11.11.2013 / 01:26