QEMU 6.0: Fokus auf ARM und RISC-V

QEMU 6.0 ist da und bringt vor allem Neuerungen für die ARM und RISC-V-Virtualisierung. Aber auch in die AMD-EPYC-Security ist Arbeit geflossen.

In Pocket speichern vorlesen Druckansicht 9 Kommentare lesen
Tux-Figuren

(Bild: dpa, Tobias Kleinschmidt)

Lesezeit: 4 Min.
Von
  • Michael Plura
Inhaltsverzeichnis

Fast auf den Tag genau ein Jahr hat die Entwicklung von QEMU 5.0 auf 6.0 gedauert. Viel Neues gibt es für ARM und RISC-V, dazu technische Leckereien wie AMD SEV-ES oder Ansätze, Geräte in separate Prozesse auszulagern. QEMU ist ein quelloffener Prozessor-/System-Emulator und -Virtualisierer sowie ein essenzieller Teil des Virtualisierungs-Stack von GNU/Linux. Es lässt sich unter jeder GNU/Linux-Distribution und den BSDs direkt über die jeweiligen Paketmanager installieren, aber auch für macOS und Windows gibt es Binaries.

Betrachtet man die Änderungen bei den einzelnen Hardware-Architekturen, fallen sofort die Neuerungen bei ARM und RISC-V ins Auge. Die ARM-Emulation unterstützt nun ARMv8.1M "Helium" und Cortex-M55 CPUs, hinzu kommen weitergehende Funktionen wie ARMv8.4-TTST, ARMv8.4-SEL2, FEAT_SSBS, ARMv8.4-DIT oder ARMv8.5-MemTag. Das "virt-Board" erhielt einen Mechanismus für sichere Firmware (EL3), um emulierte Systeme herunterzufahren oder einen Reset durchzuführen. Ferner sind zwei neue Boards – mps3-an524 mit Cortex-M33 und mps3-an547 mit Cortex-M55 – verfügbar.

Die RISC-V-Emulation steckt eher noch in den Kinderschuhen, es gibt viele kleinere Verbesserungen und vor allem hat die Arbeit an der RISC-V-Dokumentation begonnen. Die QEMU-Entwickler arbeiten beispielsweise noch an der Unterstützung von 32-Bit-CPUs auf 64-Bit-Builds und haben für das Microchip-PolarFire-SoC einen virtuellen Speicher (QSPI NOR-Flash) hinzugefügt.

Für PowerPC gibt es nun einen externen BMC-Support (Baseboard Management Controller) für powernv-Maschinen, bei der pSeries wurde viel am Speicher- und CPU-Hotplugging gearbeitet. Selbst die 68k-Architektur erhielt eine generische und leistungsfähigere Maschine, basierend auf VirtIO-Devices. Bei MIPS gibt es eine Maschine mit dem chinesische Loongson-3, auf einer virtuellen S390 lassen sich Linux-Kernel nun mit Clang-11 und -12 erzeugen.

Keine Neuerungen gibt es für Alpha, AVR, HPPA, Microblaze, OpenRISC, Renesas RX/SH, SPARC und Xtensa. Die exotische Tilera-Tile-Gx-Plattform – VLIW ISA Multicore Processor Family, eine Art Netzwerk von bis zu 100 CPU-Kernen – wurde entfernt, da GNU/Linux den Kernel- und glibc-Support bereits 2018 eingestellt hat und sie somit in der Praxis nutzlos geworden ist. Wer Tile-Gx dennoch emulieren will, kann auf eine ältere QEMU-Version (5.2) zurückgreifen.

QEMU kann nun mit Link-Time-Optimierung (LTO) compiliert werden und unterstützt LLVM Control-Flow Integrity (CFI). Das VirtIO-Dateisystem erhielt einige wichtige Sicherheits-Fixes; auch stellen die Entwickler ein noch experimentelles Snapshot-Feature für Speicherinhalte vor. Der emulierte NVMe-Controller unterstützt den 1.4-Standard und erlaubt "zoned namespaces". Ein neuer Loader erlaubt es, für Tests von Xen-Hypervisoren direkt und ohne den Umweg über Firmware/Bootloader den Kernel zu starten.

Experimentell ist noch ein Feature insbesondere von Oracle-Entwicklern, die eine "out-of-process"-Emulation von Geräten ermöglichen soll. Läuft ein Gerätetreiber in einem separaten Prozess, erhöht das nicht nur die Geschwindigkeit, sondern sorgt vor allem für mehr Sicherheit. Der LSI-SCSI-Controller soll bereits als separater Prozess laufen können.

Virtuelle Maschinen können auf Hosts ab AMD EPYC per AMD SEV-ES im ausgeschalteten Zustand gegen Angriffe gesichert werden. AMD Secure Memory Encryption (SME) verschlüsselt den Speicher, AMD Secure Encrypted Virtualization (SEV) sorgt dafür, dass für jede virtuelle Maschine ein separater Verschlüsselung-Key genutzt wird und AMD Secure Encrypted Virtualization-Encrypted State (SEV-ES) bietet die zusätzliche Verschlüsselung für alle CPU-Registerinhalte, wenn eine VM nicht mehr läuft.

Änderungen und eventuelle Inkompatibilitäten von QEMU 6.0 zur Vorgängerversion 5.2 sind im Changelog und auf der Projektseite dokumentiert. Der Sourcecode von QEMU 6.0.0 liegt auf der Projektseite als tar.xz-Archiv zum Download bereit.

(fo)