¿Cómo deshabilito el intento de arranque iPXE no deseado en Libvirt / qemu-kvm?

12

De alguna manera, después de actualizar a 12.04, mis máquinas virtuales siempre arrancan con un intento de arranque desde la red primero. Mira esto:

captura de pantalla de virt-manager

Si bien no tengo ningún conjunto de configuración PXE:

Configuración de arranque PXE

He intentado:

  • para deshabilitar SPICE, cambiando el emulatora /usr/bin/kvmdesde /usr/bin/kvm-spiceeditando el XML.
  • Ctrl+ Bpara configurar el iPXE, pero no permite desactivar esto como una opción de arranque.
  • configurar otro tipo de NIC, no es una opción, lo necesito virtiopor razones de rendimiento. Sin embargo, e1000etampoco funciona.
  • eliminar la NIC: funciona. Sin embargo, necesito red.
  • Buscando en Google. Difícil. Gran parte del resultado se trata de fallar las botas PXE configuradas.

No es un gran problema, pero aumenta los tiempos de arranque en un 50-100% aquí (arranque desde SSD), por lo que es relativamente largo y me molesta.

¿Cómo puedo desactivar esto y arrancar directamente desde el disco duro virtual?

gertvdijk
fuente

Respuestas:

6

Respuesta corta

Actualice a libvirt 0.9.10+ (disponible en Quantal) y agregue el <rom bar='off'/> opción a la configuración de interfaz de la definición XML de la máquina.

Respuesta larga

Ahora que estoy usando la opción de arranque iPXE, veo que el retraso que se produce en la pantalla SeaBIOS no es un intento de arranque real. Solo está cargando la ROM de opción de red Virtio y eso lleva unos segundos molestos, es decir , todavía no está haciendo un intento de arranque iPXE . Esto me llevó a leer la documentación de libvirt nuevamente, e hice un descubrimiento interesante.

Por lo que pude encontrar, desde libvirt 0.9.7 el comportamiento ha cambiado para cargar las ROM de opción de la interfaz por defecto. Ubuntu 11.10 se envió con 0.9.2, Ubuntu 12.04 viene con 0.9.8. Esto definitivamente tiene sentido por qué veo que esto sucede desde la actualización a 12.04.

¡Además, esto se ha vuelto configurable en libvirt versión 0.9.10 con la <rom bar='off'/>opción en XML! (ver aquí ) Sin embargo, esa versión de libvirt no está disponible en Ubuntu 12.04 y tendré que actualizar a 12.10 o hacer un backport. Esto hace que Ubuntu 12.04 caiga entre dos taburetes.

Otras soluciones son eliminar los archivos ROM de opciones como se indica en @AH 'y cambiar el' sistema de archivos 'de SeaBIOS como se indica en @NlightNFotis. Sin embargo, ambas formas básicamente deshabilitarán iPXE por completo y no es configurable (si se limita solo a virtiodispositivos de red). Como tengo una configuración mixta de máquinas iPXE y máquinas que no son PXE, realmente necesito que esto sea configurable.

gertvdijk
fuente
¿Dónde está la definición XML de la máquina?
Bryce Guinta
1
@BryceGuinta Cree primero una VM, luego edite su definición XML (avanzada) usando el comandovirsh edit <domain>
gertvdijk
5

Mis experimentos sobre el mismo tema me dieron algunas pistas:

El paquete kvm-ipxeinstala varias ROM de opción PXE en /usr/share/qemu/:

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

De alguna manera, estos son encontrados y utilizados automáticamente por seabios al arrancar con una de estas NIC. Cuando hago un a chmod a= pxe*.romen estos archivos e inicio la máquina virtual, aparece el mensaje "error"

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

pero arranca limpiamente y sin PXE.

AH
fuente
Gracias. Eso me da un poco de solución: usar virtiopara dispositivos de red generales y e1000epara máquinas virtuales que necesitan PXE. Sin embargo, sigo pensando que es un error. De alguna manera, Libvirt no pasa con éxito los parámetros de arranque correctos a SeaBIOS.
gertvdijk
¿Qué chmod a=hacer?
Bryce Guinta
5

Pude solucionar esto en Ubuntu 12.04 pasando las siguientes opciones a qemu-kvm en la línea de comandos (el truco es configurar el romfile en blanco):

-netdev user,id=hostnet0 -device virtio-net-pci,romfile=,netdev=hostnet0
RolKau
fuente
Genial, pero ¿puedo especificar esto en mi definición de máquina XML Libvirt?
gertvdijk
Si está haciendo reinicios repetidos ad-hoc desde la línea de comandos, este es el camino a seguir. Agrega un poco de ruido, pero mata instantáneamente iPXE sin requerir que edite archivos XML, destruya toda la red o similar.
i336_
0

De sus fotos, puedo ver que lo más probable es que tenga que ver con el BIOS de VM. La configuración de VM no debe sobrescribir SeaBIOSla configuración, algo que debe estar causando que la VM arranquePXE principio.

Para una primera solución posible, intente ver si puede ingresar al BIOS de la máquina virtual y editar las opciones que prevalecen allí.

NOTA: Continuaré actualizando la respuesta mientras mi investigación revela más posibles soluciones o causas.

[EDITAR # 1]: Puede encontrar información sobre cómo configurar el orden de arranque en SeaBIOS aquí . Eso debería resolver el problema.

NlightNFotis
fuente
¿Cómo puedo ingresar al BIOS de la VM? La Wikipedia sobre SeaBIOS me dice que debería probar F12 en el momento del arranque, pero eso solo provoca omitir el intento de iPXE una vez.
gertvdijk
@gertvdijk Actualmente lo estoy investigando. Me pondré en contacto con usted tan pronto como me entere.
NlightNFotis
@gertvdijk Esto parece de alguna manera relacionado: seabios.org/pipermail/seabios/2012-March/003526.html
NlightNFotis
Gracias, aprendí cosas nuevas hoy. Sin embargo, esto parece aplicarse en todo el sistema y sobre la construcción de un nuevo CBFS (sistema de archivos de arranque central). Hasta donde puedo ver, también desactiva el arranque PXE por completo. No me gusta este enfoque y creo que debería ser posible evitar el tiempo de ejecución de los intentos de arranque de iPXE como es posible en la GUI de virt-manager.
gertvdijk
@gertvdijk ¿Cómo sabes que lo deshabilita? Todo lo que puedo ver es configurar el orden de arranque, lo que significa que algo se inicia antes de otra cosa .
NlightNFotis
-1

Pude evitar esto usando "-net none":

# qemu-system-i386 -net none
Catalin P
fuente
¡Pero entonces no tienes ninguna red en absoluto! Considero que esto no es realmente una respuesta.
gertvdijk
Lo siento, me perdí el hecho de que OP todavía necesitaba redes. En mi caso, correr sin red era aceptable.
Catalin P