Veröffentlichung des QEMU 6.0-Emulators

Die Veröffentlichung des QEMU 6.0-Projekts wird vorgestellt. Als Emulator ermöglicht Ihnen QEMU, ein für eine Hardwareplattform erstelltes Programm auf einem System mit einer völlig anderen Architektur auszuführen, beispielsweise eine ARM-Anwendung auf einem x86-kompatiblen PC auszuführen. Im Virtualisierungsmodus in QEMU kommt die Leistung der Codeausführung in einer isolierten Umgebung aufgrund der direkten Ausführung von Anweisungen auf der CPU und der Verwendung des Xen-Hypervisors oder KVM-Moduls der eines Hardwaresystems nahe.

Das Projekt wurde ursprünglich von Fabrice Bellard ins Leben gerufen, um die Ausführung von für die x86-Plattform erstellten ausführbaren Linux-Dateien auf Nicht-x86-Architekturen zu ermöglichen. Im Laufe der Jahre der Entwicklung wurde die vollständige Emulationsunterstützung für 14 Hardwarearchitekturen hinzugefügt, die Anzahl der emulierten Hardwaregeräte hat 400 überschritten. In Vorbereitung auf Version 6.0 wurden mehr als 3300 Änderungen von 268 Entwicklern vorgenommen.

Wichtige Verbesserungen, die in QEMU 6.0 hinzugefügt wurden:

  • Der NVMe-Controller-Emulator entspricht der NVMe 1.4-Spezifikation und verfügt über experimentelle Unterstützung für Zonen-Namespaces, Multipath-I/O und End-to-End-Datenverschlüsselung auf dem Laufwerk.
  • Experimentelle Optionen „-machine x-remote“ und „-device x-pci-proxy-dev“ hinzugefügt, um die Geräteemulation auf externe Prozesse zu verschieben. In diesem Modus wird derzeit nur die Emulation des SCSI-Adapters lsi53c895 unterstützt.
  • Experimentelle Unterstützung für die Erstellung von Snapshots von RAM-Inhalten hinzugefügt.
  • Es wurde ein FUSE-Modul zum Exportieren von Blockgeräten hinzugefügt, mit dem Sie einen Teil des Status aller im Gastsystem verwendeten Blockgeräte bereitstellen können. Der Export erfolgt über den QMP-Befehl block-export-add oder über die Option „--export“ im Dienstprogramm qemu-storage-daemon.
  • Der ARM-Emulator bietet Unterstützung für die ARMv8.1-M „Helium“-Architektur und Cortex-M55-Prozessoren sowie die erweiterten ARMv8.4 TTST-, SEL2- und DIT-Anweisungen. Unterstützung für die ARM-Boards mps3-an524 und mps3-an547 hinzugefügt. Für die Boards xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx und sabrelite wurde eine zusätzliche Geräteemulation implementiert.
  • Für ARM wurde in Emulationsmodi auf System- und Benutzerumgebungsebene Unterstützung für die ARMv8.5 MTE-Erweiterung (MemTag, Memory Tagging Extension) implementiert, die es Ihnen ermöglicht, Tags an jeden Speicherzuweisungsvorgang zu binden und wann eine Zeigerprüfung zu organisieren Zugriff auf den Speicher, der mit dem richtigen Tag verknüpft sein muss. Die Erweiterung kann verwendet werden, um die Ausnutzung von Schwachstellen zu blockieren, 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.
  • Der 68k-Architektur-Emulator hat Unterstützung für einen neuen Typ emulierter Maschine „virt“ hinzugefügt, der Virtio-Geräte zur Optimierung der Leistung verwendet.
  • Der x86-Emulator bietet zusätzlich die Möglichkeit, mithilfe der AMD SEV-ES-Technologie (Secure Encrypted Virtualization) die im Gastsystem verwendeten Prozessorregister zu verschlüsseln, wodurch der Inhalt der Register für die Hostumgebung nicht zugänglich ist, es sei denn, das Gastsystem gewährt ausdrücklich Zugriff darauf.
  • Der klassische Codegenerator TCG (Tiny Code Generator) implementiert bei der Emulation von x86-Systemen die Unterstützung des PKS-Mechanismus (Protection Keys Supervisor), mit dem der Zugriff auf privilegierte Speicherseiten geschützt werden kann.
  • Dem MIPS-Architektur-Emulator wurde ein neuer Typ emulierter Maschinen „virt“ hinzugefügt, der chinesische Loongson-3-Prozessoren unterstützt.
  • Im PowerPC-Architektur-Emulator für emulierte Maschinen „powernv“ wurde Unterstützung für externe BMC-Controller hinzugefügt. Für emulierte pseries-Maschinen wird eine Benachrichtigung über Fehler bereitgestellt, wenn versucht wird, Speicher und CPU im laufenden Betrieb zu entfernen.
  • Unterstützung für die Emulation von Qualcomm Hexagon-Prozessoren mit DSP hinzugefügt.
  • Der klassische Codegenerator TCG (Tiny Code Generator) unterstützt macOS-Hostumgebungen auf Systemen mit dem neuen Apple M1 ARM-Chip.
  • Der RISC-V-Architektur-Emulator für Microchip PolarFire-Boards unterstützt QSPI NOR-Flash.
  • Der Tricore-Emulator unterstützt jetzt das neue TriBoard-Board-Modell, das den Infineon TC27x SoC emuliert.
  • Der ACPI-Emulator bietet die Möglichkeit, Netzwerkadaptern in Gastsystemen Namen zuzuweisen, die unabhängig von der Reihenfolge sind, in der sie an den PCI-Bus angeschlossen sind.
  • virtiofs hat Unterstützung für die Option FUSE_KILLPRIV_V2 hinzugefügt, um die Gastleistung zu verbessern.
  • VNC hat Unterstützung für Cursortransparenz und Unterstützung für die Skalierung der Bildschirmauflösung in virtio-vga basierend auf der Fenstergröße hinzugefügt.
  • QMP (QEMU Machine Protocol) hat Unterstützung für asynchronen parallelen Zugriff bei der Durchführung von Sicherungsaufgaben hinzugefügt.
  • Der USB-Emulator bietet nun die Möglichkeit, den beim Arbeiten mit USB-Geräten erzeugten Datenverkehr in einer separaten PCAP-Datei zur späteren Überprüfung in Wireshark zu speichern.
  • Neue QMP-Befehle „load-snapshot“, „save-snapshot“ und „delete-snapshot“ hinzugefügt, um qcow2-Snapshots zu verwalten.
  • Die Sicherheitslücken CVE-2020-35517 und CVE-2021-20263 wurden in Virtiofs behoben. Das erste Problem ermöglicht den Zugriff auf die Host-Umgebung vom Gastsystem aus, indem ein privilegierter Benutzer im Gastsystem eine spezielle Gerätedatei in einem mit der Host-Umgebung freigegebenen Verzeichnis erstellt. Das zweite Problem wird durch einen Fehler bei der Behandlung erweiterter Attribute in der Option „xattrmap“ verursacht und kann dazu führen, dass Schreibberechtigungen ignoriert werden und es zu einer Rechteausweitung innerhalb des Gastsystems kommt.

Source: opennet.ru

Kommentar hinzufügen