Die Veröffentlichung von QEMU 9.2 wurde bekanntgegeben. Als Emulator ermöglicht es QEMU, ein Programm, das für eine bestimmte Hardware-Plattform kompiliert wurde, auf einem System mit völlig anderer Architektur auszuführen, beispielsweise eine ARM-Anwendung auf einem x86-kompatiblen PC. Im Virtualisierungsmodus ist die Ausführungsleistung des Codes in einer isolierten Umgebung nahezu äquivalent zu einem physikalischen System, da die Anweisungen direkt auf der CPU ausgeführt werden und der Hypervisor Xen oder das KVM-Modul in Linux oder das NVMM-Modul in NetBSD genutzt wird.
Ursprünglich wurde das Projekt von Fabrice Bellard mit dem Ziel ins Leben gerufen, die Ausführung von für die x86-Plattform kompilierten Linux-Programmen auf Architekturen zu ermöglichen, die von x86 abweichen. Im Laufe der Jahre wurde die Unterstützung für die vollständige Emulation von 14 Hardware-Architekturen hinzugefügt, und die Anzahl der emulierten Hardware-Geräte hat 400 überschritten. Bei der Vorbereitung auf Version 9.2 wurden mehr als 1700 Änderungen von 209 Entwicklern eingearbeitet.
Wesentliche Verbesserungen in QEMU 9.2:
- Experimentelle Unterstützung für die Erstellung von Gerätmodellen, die in Rust geschrieben sind, wurde hinzugefügt. Beim Compilieren von QEMU mit Rust-Unterstützung wird standardmäßig eine alternative Implementierung des PL011 UART-Treibers verwendet, die in Rust geschrieben ist, aber derzeit für die allgemeine Nutzung nicht empfohlen wird.
Derzeit ist die Rust-Unterstützung in QEMU standardmäßig deaktiviert und wird aktiviert, indem die Option „—enable-rust“ beim Start des Konfigurationsskripts angegeben wird. Für den Compilation mit Rust sind mindestens rustc Version 1.63.0 und bindgen Version 0.60.0 erforderlich (zum Beispiel muss in Debian 12 eine neuere Rust-Version separat installiert werden). In Zukunft ist geplant, den Rust-Compiler und den Bindungs-Generator bindgen zu den erforderlichen Compilation-Abhängigkeiten hinzuzufügen.
Zu den Plänen zur Förderung von Rust in QEMU gehört die Verbesserung des HPET (High Precision Event Timer)-Treiber und des Treibers für Blockgeräte, die in Rust geschrieben sind, sowie die Weiterentwicklung von Bindings zur Verwendung von Rust in verschiedenen QEMU-Komponenten (z. B. in Treibern für Blockgeräte, Timer und GPIO) und die Neuimplementierung sicherheitskritischer Systeme wie virtio in Rust.
- Im VirtIO-GPU-Gerät, das die Funktionalität einer virtuellen GPU bereitstellt, wurde die Unterstützung für 3D-Beschleunigung mit Hilfe der Grafik-API Vulkan hinzugefügt. Dies wird durch den in Mesa enthaltenen Vulkan-Treiber Venus realisiert, der es ermöglicht, dem Gastsystem eine virtuelle GPU für das 3D-Rendering zur Verfügung zu stellen, ohne direkten exklusiven Zugang zur physischen GPU zu gewähren. Für den Betrieb ist die Bibliothek virglrenderer auf der Host-Seite und der Mesa-Treiber Venus auf der Gast-Seite erforderlich. Eine Anleitung zur Konfiguration der Vulkan-Unterstützung in QEMU ist verfügbar.
- Das Migrationstool hat die Unterstützung für die Beschleunigung von Komprimierungsoperationen für gleichzeitig übertragene Datenströme mit der QATzip-Bibliothek, die den in Intel-Prozessoren integrierten QAT-Beschleuniger (QuickAssist Technology) verwendet, hinzugefügt. Diese bietet Möglichkeiten zur Beschleunigung von Berechnungen im Zusammenhang mit Kompression und Verschlüsselung.
- Der kryptografische Backend auf Basis von GLib hat die Unterstützung für den Hash-Algorithmus SHA-384 hinzugefügt.
- Im ARM-Architektur-Emulator wurde die Unterstützung für die Prozessorerweiterungen FEAT_EBF16 und FEAT_CMOW sowie für Sicherheitserweiterungen, die auf xilinx-zynq-a9-Boards verwendet werden, hinzugefügt. Bei Verwendung der HVF-Komponente, die das Hypervisor.framework-Toolkit nutzt, um die Ausführung von Gastsystemen auf ARM-Mac-Computern zu beschleunigen, wurde die Unterstützung für mehr als 64 GB RAM sichergestellt. Für die emulierten Systeme sbsa-ref und virt wurde die Unterstützung für die zweistufige Adressübersetzung in die SMMU (System Memory Management Unit) hinzugefügt. Die Unterstützung für veraltete emulierte Hardwaretypen wie akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex und z2 wurde eingestellt.
- Im x86-Architektur-Emulator wurde die Unterstützung für einen neuen Typ der Hardwarekonfiguration – nitro-enclave – hinzugefügt, der die AWS Nitro Enclave-Umgebung emuliert und in der Lage ist, Systemabbilder im Enclave Image Format zu laden.
- Im x86-Architektur-Emulator für den Hypervisor KVM Die Möglichkeit zur Aktivierung der Unterstützung für den AVX10-Befehlssatz sowie spezifische Versionen von AVX10 – avx10-128, avx10-256 und avx10-512 – wurde implementiert.
- Im RISC-V-Architektur-Emulator wurde die Unterstützung für die Erweiterungen des Befehlssatzes Svvptc, Bitmanip (Bit-Manipulation) und CFI (Control Flow Integrity), die auf OpenTitan-Platinen verwendet werden, hinzugefügt. Der emulierte Systemtyp "virt" unterstützt jetzt IOMMU. Die Leistung der Befehle ld und st wurde verbessert.
- Im HPPA-Emulator wurde das Firmware SeaBIOS-hppa auf Version 17 aktualisiert.
- Im s390x-Architektur-Emulator wurde die Möglichkeit hinzugefügt, von anderen Geräten zu booten, falls das angegebene Gerät nicht bootfähig ist.
Quelle: opennet.ru
