UEFI mit QEMU verwenden

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

Firmware-Installation

UEFI für x86 QEMU/KVM-VMs heißt OVMF (Open Virtual Machine Firmware). Es stammt aus dem EDK2 (EFI Development Kit), der UEFI-Referenzimplementierung.

Installation von 'UEFI for QEMU' aus den Fedora-Paketquellen

Seit Juni 2016 ist OVMF in den Fedora-Paketquellen verfügbar. Sie benötigen lediglich das RPM-Paket edk2-ovmf. Dieses ist mittlerweile eine Abhängigkeit des Pakets und daher wahrscheinlich bereits installiert. Es enthält auch die Firmware für Secure Boot (OVMF_CODE.secboot.fd).

Installation der nächtlichen Builds von 'UEFI for QEMU'

Gerd Hoffmann, RedHat-Mitarbeiter und QEMU-Entwickler, betreibt auf seiner persönlichen Website eine dnf-Paketquelle, das nächtliche Builds einer ganzen Reihe von QEMU/KVM-Firmware, einschließlich EDK2/OVMF, bereitstellt.

So laden Sie die Nightly Builds für x86 herunter:

$ sudo dnf install dnf-plugins-core
$ sudo dnf config-manager addrepo --from-repofile=http://www.kraxel.org/repos/firmware.repo
$ sudo dnf install edk2.git-ovmf-x64

Bitte beachten Sie, dass es sich hierbei um Nightly Builds handelt, die gelegentlich fehlerhaft sein können.

Konfiguration von libvirtd für UEFI-Unterstützung (optional)

Libvirt muss über die Zuordnung zwischen UEFI und NVRAM-Konfigurationsdatei Bescheid wissen, um diese an Werkzeuge wie virt-manager oder virt-install melden zu können. Unter Fedora 22 und neueren Versionen sind die Libvirt-Pakete so konfiguriert, dass sie nach den Pfaden für Nightly-Builds suchen; daher funktioniert dies ohne weitere Konfiguration.

Wenn Sie jedoch benutzerdefinierte Binärdateien verwenden möchten, müssen Sie die Variable nvram in /etc/libvirt/qemu.conf bearbeiten und libvirtd neu starten.

Eine VM erstellen

virt-manager

Erstellen Sie eine neue VM im virt-manager. Wenn Sie zur letzten Seite des Assistenten „Neue VM“ gelangen, gehen Sie wie folgt vor:

  • Klicken Sie auf „Vor der Installation anpassen“ und wählen Sie dann „Fertigstellen“

  • Ändern Sie auf dem Bildschirm „Übersicht“ das Feld „Firmware“ so, dass die Option „UEFI x86_64“ ausgewählt ist.

  • Klicken Sie auf „Installation beginnen“

  • Der angezeigte Startbildschirm sollte linuxefi-Befehle zum Starten des Installers verwenden, und Sie sollten in der Lage sein, efibootmgr innerhalb dieses Systems auszuführen, um zu überprüfen, ob Sie ein UEFI-Betriebssystem nutzen.

virt-install

Fügen Sie --boot uefi zu Ihrem virt-install-Befehl hinzu. Beispiel:

$ 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/
+

Secure Boot in einer VM testen

Diese Schritte beschreiben, wie die Secure-Boot-Unterstützung von Fedora in einer KVM-VM getestet werden kann. Sie richten sich an QA-Mitarbeiter, die Secure Boot testen möchten, sowie an alle anderen Interessierten. Da hierfür die Konfiguration der VM für die Verwendung von UEFI erforderlich ist, bauen diese Schritte auf den zuvor beschriebenen UEFI-Verfahren auf.

Führen Sie EnrollDefaultKeys.efi aus

(Früher wurde in diesem Dokument das unabhängige Hilfsprogramm „LockDown_ms.efi“ empfohlen.)

Da OVMF nicht mit vorinstallierten Secure-Boot-Schlüsseln ausgeliefert wird, müssen wir einige installieren, um die Konfiguration eines von Microsoft zertifizierten UEFI-Systems nachzuahmen. OVMF enthält mittlerweile die für die Einrichtung eines Standardsatzes an Schlüsseln erforderlichen Binärdateien. Am einfachsten lässt sich dies über die Datei UefiShell.iso bewerkstelligen, die unter /usr/share/edk2/ovmf/UefiShell.iso verfügbar ist. Starten Sie Ihre VM mit dieser Datei als CD-ROM-Abbild; sie sollte daraufhin in die UEFI-Shell booten. An der Eingabeaufforderung

  • Shell> fs0:

  • FS0:\> EnrollDefaultKeys.efi

  • FS0:\> reset

  • Die VM wird neu gestartet. Lassen Sie sie wie gewohnt in Fedora hochfahren. Melden Sie sich an.

  • In der Ausgabe von dmesg sollten Sie die Zeichenkette „Secure boot enabled“ sehen. Secure Boot ist nun für jeden weiteren Startvorgang aktiviert.

Testen von Fedora-CD/DVD-Secure-Boot in einer VM

Sobald Sie eine wie oben beschrieben für Secure Boot konfigurierte VM eingerichtet haben, können Sie diese problemlos nutzen, um die Secure-Boot-Unterstützung von ISO-Medien zu testen.

  • Verwenden Sie virt-manager, um das ISO-Medium an Ihre VM anzubinden

  • Verwenden Sie virt-manager, um die Boot-Einstellungen der VM so zu ändern, dass sie vom CD-ROM-Laufwerk bootet

  • Die VM starten

  • Wechseln Sie zu einem Terminal innerhalb der VM und überprüfen Sie mittels dmesg, ob Secure Boot aktiviert ist

Hinweise

Verwendung von UEFI mit AArch64-VMs

Die AArch64-Versionen von Fedora laufen ausschließlich unter UEFI; daher ist UEFI innerhalb der VM erforderlich. Die Vorgehensweise unterscheidet sich jedoch geringfügig. Die vollständige Dokumentation finden Sie auf dieser Seite: https://fedoraproject.org/wiki/Architectures/AArch64/Install_with_QEMU