Usar UEFI con QEMU

Cole Robinson, Caleb McKee, Petr Bokoc Version F32 Last review: 2020-04-10

Firmware de la instalación

UEFI para x86 QEMU/KVM VMs se llama OVMF (Open Virtual Machine Firmware). Viene de EDK2 (EFI Development Kit), que es la implementación de referencia de UEFI.

Instalar’UEFI para QEMU' desde los repositorios Fedora

Desde Junio de 2016, OVMF está disponible en los repositorios de Fedora. Todo lo que necesita tener instalado es el RPM edk2-ovmf. Además, ahora debería ser una dependencia del paquete, por lo que probablemente ya lo tenga instalado. Esto incluye el firmware para secureboot (OVMF_CODE.secboot.fd)

Instalar compilaciones nocturnas 'UEFI para QEMU'

Gerd Hoffmann, Red Hatter y el desarrollador QEMU, tienen un repositorio dnf en su sitio personal que proporciona compilaciones nocturnas de todo el firmware QEMU/KVM, incluyendo EDK2/OVMF.

A continuación se explica como desplegar las compilaciones nocturnas para x86:

[…]# sudo dnf install dnf-plugins-core
[…]# sudo dnf config-manager --add-repo http://www.kraxel.org/repos/firmware.repo
[…]# sudo dnf install edk2.git-ovmf-x64

Tenga en cuenta que estas son compilaciones nocturnas y pueden estar ocasionalmente rotas.

Configura opcionalmente libvirtd para anunciar la compatibilidad con UEFI

Libvirt necesita saber sobre el mapeo del archivo de configuración UEFI→NVRAM, para que pueda anunciarlo en herramientas como virt-manager/virt-install. En Fedora 22 y posteriores, los paquetes libvirt están configurados para buscar las rutas de las compilaciones nocturnas, entonces esto funcionará de inmediato.

Sin embargo, si desea usar binarios personales, necesitará editar la variable nvram en /etc/libvirt/qemu.conf y reiniciar libvirtd.

Crear una máquina virtual

# virt-manager

Crear una nueva MV en virt-manager. Cuando esté en la página final del asistente 'Nueva MV', haga lo siguiente:

  • Pulse "Personalizar antes de instalar", seleccione "Finish"

  • En la pantalla "Descripción General", cambie el campo "Firmware" para seleccionar la opción "UEFI x86_64".

  • Pulse "Empezar la instalación"

  • La pantalla de arranque que verá debería usar comandos linuxefi para iniciar el instalador y usted debería ser capaz de ejecutar efibootmgr dentro de este sistema para verificar que está ejecutando un SO UEFI.

virt-install

Añada --boot uefi a su comando virt-install. Ejemplo:

sudo virt-install --name f20-uefi \
+   --ram 2048 --disk size=20 \
+   --boot uefi \
+   --location https://dl.fedoraproject.org/pub/fedora/linux/releases/22/Workstation/x86_64/os/
+

Probar Secureboot en una MV

Estos pasos describen como probar el soporte Fedora Secureboot dentro de una MV KVM. La audiencia aquí son personas de control de calidad que desean probar secureboot y cualquier otro curioso. Esto requiere configurar la MV para usar UEFI, por lo que se basa en los pasos anteriores.

Ejecutar EnrollDefaultKeys.efi

(Anteriormente este artículo recomendaba la utilidad independiente "LockDown_ms.efi".)

Puesto que OVMF no se envía con ninguna clave SecureBoot instalada, necesitamos instalar alguna para imitar lo que se enviará con una máquina UEFI certificada por MS. OVMF se envía ahora con los binarios requeridos para configurar una conjunto de claves predeterminados. La forma más sencilla es utilizar UefiShell.iso que está disponible en /usr/share/edk2/ovmf/UefiShell.iso. Arranque su MV con esto como la imagen de CD-ROM y debería arrancar en el shell UEFI. En el indicador del sistema

  • Shell> fs0:

  • FS0:\> EnrollDefaultKeys.efi

  • FS0:\> reset

  • La MV reiniciará. Déjelo arrancar en Fedora como de costumbre. Acceda

  • Debería ver la cadena 'Secure boot enabled' en dmesg. Secureboot está habilitado ahora para todos los arranques subsiguientes.

Probar Fedora CD/DVD Secure Boot en una MV

Una vez que tenga una MV configurada en secureboot como se describe arriba, es fácil usarla para comprobar la compatibilidad de secureboot de los medios ISO.

  • Use virt-manager para adjuntar el medio ISO a su MV

  • Use virt-manager para cambiar los ajustes de arranque de la MV a CDROM

  • Arranque la MV

  • Cambie a un terminal dentro de la MV, verifique que Secureboot está habilitado comprobando dmesg

Notas

Usar UEFI con AArch64 VMs

Las versiones AArch64 de Fedora solo corren sobre UEFI, de modo que requieren UEFI dentro de la MV. Sin embargo los pasos son ligeramente diferentes. Vea documentación completa en esta página: https://fedoraproject.org/wiki/Architectures/AArch64/Install_with_QEMU