Die QEMU-Entwickler (Quick-EMUlator) haben Version 10.0.0 ihrer freien Virtualisierungssoftware freigegeben. Darin flossen insgesamt über 2800 Änderungen von 211 Entwicklern ein. QEMU ist ein Open-Source-Projekt unter GPL2-Lizenz, abgesehen von Teilen wie dem Tiny Code Generator (TCG), der größtenteils unter der BSD- oder MIT-Lizenz steht. Ein Blick auf die Liste der Neuerungen und Verbesserungen zeigt bei der Emulation der verschiedenen Architekturen vor allem Änderungen bei RISC-V und ARM, allerdings auch (noch) erstaunlich viel bei HPPA und LoongArch. Anzeige Wieder große Fortschritte bei RISC-V Die QEMU-Emulation für RISC-V, der quelloffenen und unter der freien BSD-Lizenz stehenden Befehlsarchitektur (ISA, Instruction Set Architecture), erhielt einige wichtige Erweiterungen. QEMU 10 unterstützt nun die ISA-Erweiterungen ssstateen, smrnmi, smdbltrp/ssdbltrp, supm/sspm und svukte. Letzteres beispielsweise soll Angriffe verhindern, die versuchen, das Adressraum-Layout der Supervisor-Software herauszufinden und für Exploits zu nutzen. Neu ist ein riscv-iommu-sys-Gerät, und für mehr Geschwindigkeit in der Emulation soll ein Translation-Tag für den IOMMU-Pagetable-Cache sorgen. Hinzugekommen sind die Emulationen für Tenstorrent-Ascalon-CPUs (1 bis 8 Cores), die Rechenzentren und KI im Fokus haben, sowie die RV64-XiangShan-NANHU-CPU (1 bis 2 Cores), die in 7 nm bis zu 2,8 GHz schnell laufen sollen. QEMU 10 emuliert jetzt auch AMDs RISC-V Microblaze V, den Softcore Microprozessor für Xilinx FPGAs. Etwas überraschend wird die RISC-V-default-machine nicht mehr unterstützt. QEMU definierte bislang "spike" als Standardmaschine, sofern keine Maschinenoption in der Kommandozeile angegeben wurde. Dies geschah, weil "spike" die erste in QEMU implementierte RISC-V-Maschine war. Mittlerweile gibt es etliche emulierte RISC-V-Maschinen, und so wollen die Entwickler den Anwender dazu zwingen, den genauen Maschinentyp anzugeben. Die "spike"-Maschine gibt es natürlich immer noch. Wer bislang keine Maschine angegeben hat und somit die "default machine" (spike) nutzte, muss ab QEMU 10 explizit den Parameter -M spike beim Start hinzufügen. Vorsicht bei ARM und FEAT_PAUTH Die Emulation von FEAT_AUTH benutzt für die Zeigerauthentifizierung (Pointer Authentication) standardmäßig nicht mehr den von der ARM/LLVM-Architektur vorgesehenen QARMA5-Algorithmus, sondern einen QEMU-eigenen Algorithmus, weil dieser "signifikant" schneller ist und es angeblich genau das ist, was die Benutzer wollen. Gedacht ist das also für Anwender, denen egal ist, ob die Pointer in ihrem Code manipuliert wurden oder nicht. Über die Pointer Authentication werden Pointer signiert. Dazu wird ein kryptografischer Hash samt zusätzlicher Daten (Pepper & Salt) gespeichert. Bevor dieser Pointer nun wieder benutzt wird, muss er authentifiziert werden, indem seine Signatur überprüft wird. Dadurch wird verhindert, dass Pointer unbekannter Herkunft verwendet werden, um den signierten Pointer zu ersetzen. Wer eine sichere ARM-Umgebung nutzen will, muss daher ab QEMU 10 die QARMA5-Option explizit einschalten ( -cpu max,pauth-qarma5=on ). Hinzugekommen sind ARMv8-Architekturfunktionen wie FEAT_AFP, FEAT_RPRES und FEAT_XS sowie die Emulation der physischen und virtuellen Timer von Secure EL2. Das "Secure" sollte man nicht überbewerten, denn die Exeption Level (EL) sind von EL0 bis EL3 definiert. Grob gesagt ist EL0 der Userspace, EL1 der Kernel/Betriebssystem, EL2 ist für Hypervisoren (und "non-secure") und erst EL3 als höchste Privilegebene als "Secure Monitor" bezeichnet wird. Anzeige Zusätzlich stellt QEMU 10 zwei neue ARM-Board-Modelle zur Verfügung: das NPCM845 Evaluation Board und das i.MX 8M Plus EVK Board. HPPA und LoongArch leben noch Glücklicherweise gibt es immer noch QEMU-Entwickler, die auch an älteren oder ungewöhnlichen Architekturen arbeiten. Beim 10.0.0-Release von QEMU sind dieses Mal keine expliziten Neuerungen oder Fixes für SPARC, MIPS, PowerPC, Alpha oder 68k dabei. LoongArch, die in China entwickelte und auf MIPS basierende RISC-Architektur, hat auch zur Entwicklung von QEMU beigetragen (Binary Translation Instructions um x86-CPU-Emulation zu beschleunigen). Mit QEMU 10 erhalten LoongArch-Maschinen mehr KVM-Support wie die Möglichkeit für CPU-Hotplug. HPPA (auch PA-RISC), einem Vorläufer des seit Langem begrabenen Itanium-Prozessors, läuft nun mit einem aktualisierten SeaBIOS-hppa V18 und kann bis zu 256 GByte RAM emulieren. Hinzugekommen ist ferner ein emuliertes HP Diva GSP (Guardian Service Processor) PCI-Board für die Fernwartung und flexiblere Auswahlmöglichkeiten für Grafikkarten. Intel/AMD-VMs erhielten ebenfalls ein wenig Zuwendung, wie eine schnellere Emulation von String-Anweisungen auf x86-Architekturen. Außerdem wurden die beiden neuen CPU-Modelle ClearwaterForest und SierraForest-v2 hinzugefügt. Apple: macOS-Gäste mit beschleunigter Grafik QEMU 10 führt zwei neue emulierte Geräte ein: apple-gfx-pci und apple-gfx-mmio. Wie die Namen erahnen lassen, können damit auf macOS-Hosts beschleunigte Grafiken für macOS-Gäste im Rahmen des paravirtualizedGraphics.frameworks bereitgestellt werden. Apple-gfx-pci ist für die Verwendung auf x86-64 gedacht, apple-gfx-mmio repliziert das vom virtualization.framework implementierte Grafikgerät der aarch64-Version von macOS. Damit sollte die grafische Oberfläche von macOS-Gästen deutlich flüssiger werden. VirtIO-SCSI-Geräte haben mit QEMU 10.0 "echte" Multi-Warteschlangen-Unterstützung erhalten. Sie verbessert die I/O-Skalierbarkeit. VirtIO-Mem gibt es nun auch auf IBM s390x und die Messdaten zu VirtIO-Balloon werden bei einem Reset der Maschine auf Null gesetzt. Der VFIO-Code erhielt viele Verbesserungen und unterstützt nun unter anderem auch alte ATI X550-GPUs. Viele weitere Detailänderungen und mögliche Inkompatibilitäten von QEMU 10.0.0 sind im Changelog dokumentiert. Die Online-Doku und den aktuellen Quellcode stellen die Entwickler ebenfalls kostenlos auf der QEMU-Projektseite bereit. Siehe auch: QEMU bei heise Download (fo)