Projektveröffentlichung . Als Emulator ermöglicht QEMU das Ausführen von Programmen, die für eine Hardwareplattform kompiliert wurden, auf einem System mit völlig anderer Architektur, beispielsweise das Ausführen einer Anwendung für ARM auf einem x86-kompatiblen PC. Im Virtualisierungsmodus erreicht QEMU in einer isolierten Umgebung eine nahezu native Codeausführungsleistung durch direkte Befehlsausführung auf der CPU und die Nutzung des Hypervisors Xen oder des KVM-Moduls.
Ursprünglich wurde das Projekt von Fabrice Bellard ins Leben gerufen, um die Ausführung von unter der x86-Plattform kompilierten Linux-Executables auf anderen Architekturen als x86 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 hat 400 überschritten. Bei der Vorbereitung der Version 4.1 wurden über 2000 Änderungen von 276 Entwicklern vorgenommen.
Hauptmerkmale , hinzugefügt zu QEMU 4.1:
- Im x86-Emulator wurde die Unterstützung für die CPU-Modelle Hygon Dhyana und Intel SnowRidge hinzugefügt. Es wurde die Emulation der RDRAND-Erweiterung (Hardware-Pseudorandom Number Generator) hinzugefügt. Die Flags
md-clear und mds-no zur Steuerung des Schutzes vor Angriffe (Microarchitectural Data Sampling) auf Intel-Prozessoren hinzugefügt. Es wurde die Möglichkeit zur Bestimmung von Chip-Topologien über das Flag „-smp …,dies=“ implementiert. Die Versionierung wurde für alle x86-CPU-Modelle realisiert; - Der Blocktreiber SSH wurde von der Verwendung von auf ;
- Im virtio-gpu-Treiber (virtueller GPU, der im Rahmen des Projekts ) wurde die Unterstützung für das Auslagern von 2D/3D-Zeichnungsoperationen in einen externen vhost-user-Prozess (z. B. vhost-user-gpu) hinzugefügt;
- Im ARM-Emulator wurde die Unterstützung für die ARMv8.5-RNG-Erweiterung zur Generierung von Pseudorandomzahlen hinzugefügt. Die Emulation von FPU für Cortex-M-Chips wurde implementiert, und Probleme mit der FPU-Emulation für Cortex-R5F wurden behoben. Ein neues System zur Anpassung von Build-Optionen im Kconfig-Stil wurde vorgeschlagen. Für den SoC Exynos4210 wurde die Unterstützung für die DMA-Controller PL330 hinzugefügt;
- Im MIPS-Emulator wurde die Unterstützung für MSA ASE-Befehle bei Verwendung von Big-Endian-Bitfolge verbessert und die Behandlung von Divisionen durch Null wurde an die Referenzhardware angepasst. Die Leistung der Emulation von MSA-Befehlen für ganzzahlige Berechnungen und Permutationsoperationen wurde erhöht;
- Im PowerPC-Emulator wurde die Unterstützung für das Durchreichen an die NVIDIA V100-/NVLink2-GPU mit Hilfe von VFIO hinzugefügt. Für pseries wurde eine Beschleunigung der Emulation des Interrupt-Controllers XIVE implementiert und die Unterstützung für das heiße Anschließen von PCI-Brücken hinzugefügt. Optimierungen wurden in die Emulation von Vektorbefehlen (Altivec/VSX) integriert;
- Im RISC-V Architektur-Emulator wurde ein neues Hardwaremodell – „spike“ – hinzugefügt. Unterstützung für ISA 1.11.0 hinzugefügt. Der 32-Bit ABI für Systemaufrufe wurde verbessert, die Verarbeitung ungültiger Instruktionen wurde erweitert und der integrierte Debugger wurde optimiert. Unterstützung für CPU-Topologien im Device Tree hinzugefügt;
- Im s390 Architektur-Emulator wurde die Unterstützung für die Emulation aller vektorisierten Instruktionen der Gruppe „Vector Facility“ hinzugefügt und zusätzliche Elemente zur Unterstützung von Gen15-Systemen hinzugefügt (einschließlich Unterstützung für die AP Queue Interruption Facility für vfio-ap). BIOS-Unterstützung für das Booten von ECKD DASD, das mit dem Gast-System über vfio-ccw verbunden ist, wurde implementiert;
- Im SPARC-Emulator für sun4m-Systeme wurden Probleme mit der Verwendung des Flags „-vga none“ für OpenBIOS behoben;
- Im Emulator für die Tensilica Xtensa-Prozessorfamilie wurden Optionen für die MPU (Memory Protection Unit) und exklusiven Zugriff implementiert;
- Dem Befehl „qemu-img convert“ wurde die Option „—salvage“ hinzugefügt, um die Fehlermeldungen beim Starten des Konvertierungsprozesses im Falle von Ein-/Ausgabefehlern abzuschalten (z. B. kann sie zur Wiederherstellung teilweise beschädigter qcow2-Dateien verwendet werden). Im Befehl
„qemu-img rebase“ wurde die Funktionalität gewährleistet, wenn für die Eingabedatei noch keine Basiseinheit (Backing-File) vorhanden ist; - Die Möglichkeit, Ausgaben umzuleiten, die mit der Technologie „Semihosting“ organisiert wurden (erlaubt dem emulierten Gerät, stdout, stderr und stdin zu verwenden, um Dateien auf der Host-Seite zu erstellen), wurde dem Chardev-Backend hinzugefügt („-semihosting-config enable=on,target=native,chardev=[ID]“);
- Im VMDK-Blocktreiber wurde die Unterstützung für das Subformat seSparse im Nur-Lese-Modus hinzugefügt;
- Im GPIO-Emulationstreiber wurde die Unterstützung für den GPIO-Controller SiFive hinzugefügt.
Quelle: opennet.ru
