Die Veröffentlichung des Projekts QEMU 6.1 wurde vorgestellt. Als Emulator ermöglicht QEMU das Ausführen von Programmen, die für eine Hardware-Plattform kompiliert wurden, auf einem System mit einer völlig anderen Architektur, beispielsweise das Ausführen einer ARM-Anwendung auf einem x86-kompatiblen PC. Im Virtualisierungsmodus ist die Ausführungsleistung des Codes in einer isolierten Umgebung nahezu vergleichbar mit einem physischen System, da die Anweisungen direkt auf der CPU ausgeführt werden und der Hypervisor Xen oder das KVM-Modul verwendet werden.
Ursprünglich wurde das Projekt von Fabrice Bellard ins Leben gerufen, um die Ausführung von für die x86-Plattform kompilierten Linux-Executable-Dateien auf Architekturen, die von x86 abweichen, zu ermöglichen. 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 überstieg 400. Zur Vorbereitung der Version 6.1 wurden mehr als 3000 Änderungen von 221 Entwicklern vorgenommen.
Wichtige Verbesserungen, die in QEMU 6.1 hinzugefügt wurden:
- Im QMP (QEMU Machine Protocol) wurde der Befehl „blockdev-reopen“ hinzugefügt, um die Einstellungen eines bereits erstellten Blockgeräts zu ändern.
- Als bevorzugter Kryptotreiber wird gnutls verwendet, der in Bezug auf die Leistung anderen Treibern überlegen ist. Der zuvor standardmäßige Treiber auf Basis von libgcrypt wurde in die Kategorie der Optionen verschoben, während der netzbasierte Treiber als Backup-Option verwendet wird, wenn GnuTLS und Libgcrypt nicht verfügbar sind.
- Im I2C-Emulator wurde die Unterstützung für PMBus und I2C-Multiplexer (pca9546, pca9548) hinzugefügt.
- Standardmäßig ist die Unterstützung für Plugins des klassischen Code-Generators TCG (Tiny Code Generator) aktiviert. Neue Plugins wie execlog (Ausführungsprotokoll) und cache modelling (Simulation des Cache-Verhaltens von L1 in der CPU) wurden hinzugefügt.
- Im ARM-Emulator wurde die Unterstützung für Platinen mit Aspeed-Chips (rainier-bmc, quanta-q7l1), npcm7xx (quanta-gbs-bmc) und Cortex-M3 (stm32vldiscovery) hinzugefügt. Unterstützung für hardwarebasierte Verschlüsselungs- und Hash-Engines, die in Aspeed-Chips bereitgestellt werden, wurde implementiert. Zudem wurde die Unterstützung für die Emulation von SVE2-Anweisungen (einschließlich bfloat16), Matrixmultiplikationsoperatoren und Befehlen zum Zurücksetzen der TLB (Translation Lookaside Buffer) hinzugefügt.
- In dem PowerPC-Architektur-Emulator für die emulierten Maschinen „pseries“ wurde die Unterstützung zur Erkennung von Fehlfunktionen beim Hot-Plugging von Geräten in neuen Gastumgebungen hinzugefügt, das Limit für die Anzahl der CPUs wurde erhöht und die Emulation bestimmter, für POWER10-Prozessoren spezifischer Instruktionen wurde implementiert. Die Unterstützung für Boards auf Basis der Genesi/bPlan Pegasos II-Chips (pegasos2) wurde hinzugefügt.
- Im RISC-V-Emulator wurde die Unterstützung für die OpenTitan-Plattform und die virtuelle GPU virtio-vga (basierend auf virgl) implementiert.
- Im s390-Emulator wurde die Unterstützung für die 16. Generation von CPUs und Vektor-Erweiterungen hinzugefügt.
- Im x86-Emulator wurde die Unterstützung für neue Intel CPU-Modelle (Skylake-Client-v4, Skylake-Server-v5, Cascadelake-Server-v5, Cooperlake-v2, Icelake-Client-v3, Icelake-Server-v5, Denverton-v3, Snowridge-v3, Dhyana-v2) hinzugefügt, die über die Instruktion XSAVES verfügen. Im Q35-Chipsatz-Emulator (ICH9) wurde die Unterstützung für Hot-Plugging von PCI-Geräten implementiert. Die Emulation der Virtualisierungs-Erweiterungen, die in AMD-Prozessoren bereitgestellt werden, wurde verbessert. Eine Option bus-lock-ratelimit wurde hinzugefügt, um die Intensität der Busverriegelung durch das Gastsystem zu begrenzen.
- Die Unterstützung zur Verwendung von NVMM als Beschleuniger für den Hypervisor, der vom NetBSD-Projekt entwickelt wird, wurde hinzugefügt.
- Im GUI wird die Passwortauthentifizierung bei Verwendung des VNC-Protokolls nun nur aktiviert, wenn mit einem externen kryptografischen Backend (gnutls, libgcrypt oder nettle) kompiliert wird.
Quelle: opennet.ru
