Come disabilitare il tentativo di avvio indesiderato di iPXE in Libvirt / qemu-kvm?


12

In qualche modo dopo l'aggiornamento a 12.04, le mie macchine virtuali si avviano sempre con un tentativo di avviare prima dalla rete. Guarda questo:

screenshot di virt-manager

mentre non ho alcun set di configurazione PXE:

Configurazione di avvio PXE

Ho provato:

  • SPICE disabilitare, cambiando il emulatorverso /usr/bin/kvmda /usr/bin/kvm-spicemodificando il XML.
  • Ctrl+ Bper configurare iPXE, ma non consente di disabilitarlo come opzione di avvio.
  • impostare un altro tipo di scheda NIC - non un'opzione, ho bisogno virtioper motivi di prestazioni. Tuttavia, e1000enon funziona neanche.
  • rimozione della scheda NIC: funziona. Tuttavia, ho bisogno di rete.
  • Googling around. Difficile. Molti risultati riguardano il mancato avvio degli stivali PXE configurati.

Non è un grosso problema, ma aumenta i tempi di avvio del 50-100% qui (avvio da SSD), quindi è relativamente lungo e mi dà fastidio.

Come posso disabilitare questo e avviare direttamente dal disco rigido virtuale?

Risposte:


6

Risposta breve

Esegui l'upgrade a libvirt 0.9.10+ (disponibile in Quantal) e aggiungi l' <rom bar='off'/>opzione alla configurazione dell'interfaccia della definizione XML della macchina.

Risposta lunga

Ora che sto effettivamente utilizzando l'opzione di avvio iPXE, vedo che il ritardo che si verifica nella schermata SeaBIOS non è un vero tentativo di avvio. Sta solo caricando la ROM dell'opzione di rete Virtio e ci vogliono alcuni secondi fastidiosi, cioè non sta ancora facendo un tentativo di avvio iPXE . Questo mi ha portato a leggere di nuovo la documentazione di libvirt e ho fatto una scoperta interessante.

Per quanto ho potuto trovare, da libvirt 0.9.7 il comportamento è cambiato per caricare le ROM opzionali dell'interfaccia per impostazione predefinita. Ubuntu 11.10 viene fornito con 0.9.2, Ubuntu 12.04 viene fornito con 0.9.8. Questo ha sicuramente senso sul perché vedo che ciò accada dall'aggiornamento alla 12.04.

Inoltre, questo è diventato configurabile nella versione libvirt 0.9.10 con l' <rom bar='off'/>opzione in XML! (vedi qui ) Tuttavia, quella versione di libvirt non è disponibile in Ubuntu 12.04 e dovrò aggiornare a 12.10 o eseguirne il backport. Questo fa Ubuntu 12.04 cadere tra due sgabelli.

Altre soluzioni alternative sono la rimozione dei file ROM delle opzioni come indicato da @AH 'e la modifica del' filesystem 'SeaBIOS come indicato da @NlightNFotis. Tuttavia, entrambi i modi disabiliteranno sostanzialmente iPXE e non è configurabile (se si attacca solo ai virtiodispositivi di rete). Dato che ho una configurazione mista di macchine iPXE e macchine non PXE, ho davvero bisogno che sia configurabile.


Dov'è la definizione XML della macchina?
Bryce Guinta,

1
@BryceGuinta Crea prima una VM, quindi modifica la sua definizione XML (avanzata) usando il comandovirsh edit <domain>
gertvdijk

5

I miei esperimenti sullo stesso problema mi hanno dato alcuni suggerimenti:

Il pacchetto kvm-ipxeinstalla diverse ROM opzionali PXE in /usr/share/qemu/:

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

In qualche modo questi vengono automaticamente trovati e utilizzati dai seabios durante l'avvio con una di queste schede di rete. Quando eseguo un'operazione chmod a= pxe*.romsu questi file e avvio la macchina virtuale, viene visualizzato il messaggio "errore"

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

ma si avvia in modo pulito e senza PXE.


Grazie. Questo mi dà un po 'di soluzione: usare virtioper dispositivi di rete generali e e1000eper macchine virtuali che richiedono PXE. Tuttavia, penso ancora che sia un bug. In qualche modo Libvirt non passa correttamente i parametri di avvio corretti a SeaBIOS.
gertvdijk,

Cosa fa chmod a=?
Bryce Guinta,

5

Sono stato in grado di aggirare questo problema in Ubuntu 12.04 passando le seguenti opzioni a qemu-kvm dalla riga di comando (impostare il romfile su vuoto è il trucco):

-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0

Fantastico, ma posso specificarlo nella mia definizione macchina Libvirt XML?
gertvdijk,

Se stai eseguendo il riavvio ripetuto ad hoc dalla riga di comando, questa è la strada da percorrere. Aggiunge un po 'di rumore, ma uccide istantaneamente iPXE senza la necessità di modificare file XML, nuke tutto il networking o simili.
i336_

0

Dalle tue foto, vedo che molto probabilmente ha a che fare con il BIOS della VM. La configurazione della VM non deve sovrascrivere SeaBIOSle impostazioni, cosa che deve causare l'avvio della VM per PXEprima.

Per una prima possibile soluzione, prova a vedere se riesci ad accedere al BIOS della macchina virtuale e modificare le opzioni prevalenti lì.

NOTA: continuerò ad aggiornare la risposta mentre la mia ricerca svela più possibili soluzioni o cause.

[EDIT # 1]: puoi trovare informazioni su come impostare l'ordine di avvio in SeaBIOS qui . Questo dovrebbe risolvere il problema.


Come posso accedere al BIOS della VM? Wikipedia su SeaBIOS mi dice che dovrei provare F12 al momento dell'avvio, ma questo fa scattare una volta il tentativo iPXE.
gertvdijk,

@gertvdijk Attualmente lo sto esaminando. Ti risponderò non appena lo scoprirò.
NlightNFotis,

@gertvdijk Questo sembra in qualche modo collegato: seabios.org/pipermail/seabios/2012-March/003526.html
NlightNFotis

Grazie, ho imparato nuove cose oggi. Tuttavia, questo sembra applicarsi a tutto il sistema e alla creazione di un nuovo CBFS (core filesystem di avvio). Per quanto posso vedere, disabilita anche l'avvio PXE. Non mi piace questo approccio e penso che dovrebbe essere possibile impedire il runtime dei tentativi di avvio di iPXE come è possibile nella GUI di virt-manager.
gertvdijk,

@gertvdijk Come sai che lo disabilita? Tutto quello che posso vedere è impostare l'ordine di avvio, il che significa che qualcosa viene avviato prima di qualcos'altro .
NlightNFotis,

-1

Sono stato in grado di impedirlo usando "-net none":

# qemu-system-i386 -net none

Ma allora non hai alcuna rete! Ritengo che questa non sia davvero una risposta.
gertvdijk,

Mi dispiace, ho perso il fatto che OP aveva ancora bisogno di rete. Nel mio caso, correre senza rete era accettabile.
Catalin P,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.