Version des QEMU-Emulators 6.0

Die Version 6.0 des QEMU-Projekts wurde veröffentlicht. Als Emulator ermöglicht QEMU das Ausführen von Programmen, die für eine Hardwareplattform erstellt wurden, auf einem System mit völlig anderer Architektur, beispielsweise das Ausführen einer ARM-Anwendung auf einem x86-kompatiblen PC. Im Virtualisierungsmodus erreicht QEMU eine nahezu hardwarenahe Ausführungsgeschwindigkeit, indem es direkte CPU-Anweisungen ausführt und den Hypervisor Xen oder das KVM-Modul verwendet.

Ursprünglich wurde das Projekt von Fabrice Bellard ins Leben gerufen, um die Ausführung von für die x86-Plattform kompilierte Linux-Binärdateien auf anderen Architekturen zu ermöglichen. Im Laufe der Jahre wurde die Unterstützung für die vollständige Emulation von 14 Hardwarearchitekturen hinzugefügt, und die Anzahl der emulierten Hardwaregeräte überschritt 400. Für die Version 6.0 wurden mehr als 3300 Änderungen von 268 Entwicklern vorgenommen.

Wichtige Verbesserungen in QEMU 6.0:

  • Der Emulator für NVMe-Controller wurde an die NVMe 1.4-Spezifikation angepasst und mit experimenteller Unterstützung für zonierte Namespace-Räume, Multipath I/O und vollständige Datentransparenz auf dem Speicher ausgestattet.
  • Es wurden experimentelle Optionen "-machine x-remote" und "-device x-pci-proxy-dev" hinzugefügt, um die Emulation von Geräten in externe Prozesse auszulagern. Derzeit wird in diesem Modus nur die Emulation des SCSI-Adapters lsi53c895 unterstützt.
  • Es wurde experimentelle Unterstützung für die Erstellung von Snapshots des RAM-Inhalts hinzugefügt.
  • Ein FUSE-Modul zur Ausgabe von Blockgeräten wurde hinzugefügt, das es ermöglicht, den Zustand eines beliebigen Blockgeräts, das im Gastbetriebssystem verwendet wird, zu mounten. Der Export erfolgt über den QMP-Befehl block-export-add oder über die Option "—export" in der qemu-storage-daemon-Anwendung.
  • Der ARM-Emulator unterstützt jetzt die Architektur ARMv8.1-M ‘Helium’ und die Prozessoren Cortex-M55 sowie die erweiterten Anweisungen ARMv8.4 TTST, SEL2 und DIT. Die Unterstützung für ARM-Plattformen wie mps3-an524 und mps3-an547 wurde hinzugefügt. Für die Plattformen xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx und sabrelite wurde eine zusätzliche Geräteemulation implementiert.
  • Für ARM in den Emulationsmodi auf System- und Benutzerebene wurde die Unterstützung für die ARMv8.5 MTE-Erweiterung (Memory Tagging Extension) implementiert, die es ermöglicht, Tags an jede Speicherzuweisungsoperation zu binden und bei Zugriffen auf den Speicher eine Überprüfung des Zeigers durchzuführen, der mit dem korrekten Tag verknüpft sein muss. Die Erweiterung kann verwendet werden, um die Ausnutzung von Schwachstellen zu verhindern, die durch den Zugriff auf bereits freigegebene Speicherblöcke, Pufferüberläufe, Zugriffe vor der Initialisierung und die Verwendung außerhalb des aktuellen Kontexts verursacht werden.
  • Im 68k-Emulator wurde die Unterstützung für einen neuen Typ von emulierten Maschinen „virt“ hinzugefügt, die zur Optimierung der Leistung das virtio-Gerät verwenden.
  • Im x86-Emulator wurde die Möglichkeit hinzugefügt, die AMD SEV-ES-Technologie (Secure Encrypted Virtualization) zur Verschlüsselung der in der Gastsystem verwendeten CPU-Register anzuwenden, wodurch der Inhalt dieser Register für die Host-Umgebung unzugänglich wird, sofern das Gastsystem nicht ausdrücklich Zugang gewährt.
  • Im klassischen TCG (Tiny Code Generator) wurde bei der Emulation von x86-Systemen die Unterstützung für den PKS-Mechanismus (Protection Keys Supervisor) implementiert, der zum Schutz des Zugriffs auf privilegierte Speicherseiten verwendet werden kann.
  • Im MIPS-Emulator wurde ein neuer Typ von emulierten Maschinen „virt“ mit Unterstützung für chinesische Loongson-3-Prozessoren hinzugefügt.
  • Im PowerPC-Emulator für die emulierten Maschinen „powernv“ wurde die Unterstützung für externe BMC-Controller hinzugefügt. Für emulierte Maschinen der pseries wurde die Benachrichtigung über Fehler beim Versuch des Hot-Plugging von Speicher und CPU bereitgestellt.
  • Es wurde die Unterstützung für die Emulation von Qualcomm Hexagon-Prozessoren mit DSP hinzugefügt.
  • Im klassischen TCG (Tiny Code Generator) wurde die Unterstützung für macOS-Host-Umgebungen auf Systemen mit dem neuen ARM-Chip Apple M1 implementiert.
  • Im RISC-V-Emulator für Microchip PolarFire-Platinen wurde die Unterstützung für QSPI NOR-Flash implementiert.
  • Im Tricore-Emulator wurde die Unterstützung für ein neues Modell der TriBoard-Platten, das SoC Infineon TC27x emuliert, hinzugefügt.
  • Im ACPI-Emulator wurde die Möglichkeit hinzugefügt, Netzwerkadaptern in Gastsystemen Namen zuzuweisen, die unabhängig von der Reihenfolge der Verbindung zum PCI-Bus sind.
  • In virtiofs wurde die Unterstützung für die Option FUSE_KILLPRIV_V2 zur Leistungssteigerung von Gastsystemen hinzugefügt.
  • VNC unterstützt jetzt die Transparenz des Cursors sowie die Skalierung der Bildschirmauflösung in virtio-vga, basierend auf der Fenstergröße.
  • QMP (QEMU Machine Protocol) unterstützt jetzt den asynchronen parallelen Zugriff bei der Durchführung von Backup-Aufgaben.
  • Im USB-Emulator wurde die Möglichkeit hinzugefügt, den Datenverkehr, der beim Arbeiten mit USB-Geräten entsteht, in eine separate pcap-Datei zu speichern, um ihn später in Wireshark zu analysieren.
  • Neue QMP-Befehle load-snapshot, save-snapshot und delete-snapshot wurden hinzugefügt, um die Verwaltung von qcow2-Snapshots zu ermöglichen.
  • In virtiofs wurden die Sicherheitsanfälligkeiten CVE-2020-35517 und CVE-2021-20263 behoben. Das erste Problem ermöglicht den Zugriff auf die Host-Umgebung aus dem Gastsystem durch das Erstellen einer speziellen Gerätedatei im Verzeichnis, das mit der Host-Umgebung gemeinsam genutzt wird, durch einen privilegierten Benutzer im Gastsystem. Das zweite Problem ergibt sich aus einem Fehler bei der Verarbeitung erweiterter Attribute in der Option ‘xattrmap’ und kann dazu führen, dass das Zurücksetzen der Schreibrechte ignoriert wird und es zu einer Erhöhung der Privilegien im Gastsystem kommt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4