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 Linux-BinĂ€rdateien, die fĂŒr die x86-Plattform kompiliert wurden, 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 Hardwarearchitekturen hinzufĂŒgt, und die Anzahl der emulierten HardwaregerĂ€te hat 400 ĂŒberschritten. FĂŒr die Version 4.0 wurden ĂŒber 3100 Ănderungen von 220 Entwicklern vorgenommen.
Hauptmerkmale , die in QEMU 4.0 hinzugefĂŒgt wurden:
- Im Emulator der ARM-Architektur wurde die UnterstĂŒtzung fĂŒr die ARMv8+-Befehlserweiterungen hinzugefĂŒgt: SB, PredInv, HPD, LOR, FHM, AA32HPD,
PAuth, JSConv, CondM, FRINT und BTI. Die Emulation der âMuscaâ- und âMPS2â-Plattformen wurde hinzugefĂŒgt. Die Emulation des ARM PMU (Power Management Unit) wurde verbessert. In die Plattform wurde die Möglichkeit integriert, mehr als 255 GB RAM zu nutzen, sowie die UnterstĂŒtzung von u-boot-Images des Typs ânoloadâ; - Im Emulator der x86-Architektur wurde im Virtualisierungsbeschleunigungs-Engine (Intel Hardware Accelerated Execution) die UnterstĂŒtzung fĂŒr POSIX-kompatible Hosts wie Linux und NetBSD hinzugefĂŒgt (zuvor wurde nur die Darwin-Plattform unterstĂŒtzt). Im Emulator des Q35-Chipsatzes (ICH9) kann jetzt optional fĂŒr die HauptanschlĂŒsse PCIe die maximale Geschwindigkeit (16GT/s) und die Anzahl der Verbindungen (x32), wie in der PCIe 4.0-Spezifikation festgelegt, angegeben werden (zumindest fĂŒr Ă€ltere Maschinentypen wird standardmĂ€Ăig 2.5GT/s und x1 gesetzt). Die Möglichkeit wurde geschaffen, Xen PVH-Images mit der Option â-kernelâ zu booten;
- Im Emulator der MIPS-Architektur wurde die UnterstĂŒtzung fĂŒr die Mehrfach-Emulation unter Verwendung des klassischen Code-Generators TCG (Tiny Code Generator) hinzugefĂŒgt. Zudem wurde die Emulation der CPUs I7200 (nanoMIPS32 ISA) und I6500 (MIPS64R6 ISA) sowie die Verarbeitung von CPU-Anfragen mit dem QMP (QEMU Management Protocol) unterstĂŒtzt, und es wurde UnterstĂŒtzung fĂŒr die Konfigurationsregister SAARI und SAAR hinzugefĂŒgt. Die Verarbeitung von virtuellen Maschinen des Typs Fulong 2E wurde verbessert. Die Implementierung der Interthread Communication Unit wurde aktualisiert;
- Der PowerPC-Architektur-Emulator unterstĂŒtzt jetzt die Emulation des Interrupt-Controllers XIVE, hat die UnterstĂŒtzung fĂŒr POWER9 erweitert und ermöglicht es der P-Serie, Haupt-PPCI-BrĂŒcken (PHB, PCI-Host-BrĂŒcke) im laufenden Betrieb anzuschlieĂen. Der Schutz vor Spectre- und Meltdown-Angriffen ist standardmĂ€Ăig aktiviert.
- Im RISC-V-Architektur-Emulator wurde die UnterstĂŒtzung fĂŒr die Emulation von PCI und USB hinzugefĂŒgt. Der integrierte Debugger (gdbserver) unterstĂŒtzt jetzt das Festlegen von Registerlisten in XML-Dateien. Die UnterstĂŒtzung fĂŒr die mstatus-Felder TSR, TW und TVM wurde hinzugefĂŒgt.
- Im s390-Architektur-Emulator wurde die UnterstĂŒtzung fĂŒr das CPU-Modell z14 GA 2 sowie fĂŒr die Emulation von Befehlserweiterungen fĂŒr Gleitkommaberechnungen und Vektorbetrieb hinzugefĂŒgt. In vfio-ap wurde die Möglichkeit fĂŒr den Hot-Plug von GerĂ€ten hinzugefĂŒgt.
- Im Tensilica Xtensa-Prozessor-Emulator wurde die UnterstĂŒtzung fĂŒr SMP unter Linux verbessert und die UnterstĂŒtzung fĂŒr die FLIX-Erweiterung (Flexible Length Instructions Extension) hinzugefĂŒgt.
- Im grafischen Interface wurde die Option â-display spice-appâ hinzugefĂŒgt, um eine Client-Variante des Remote-Zugriffs Spice mit einem Erscheinungsbild Ă€hnlich dem GTK-Interface von QEMU zu konfigurieren und zu starten.
- In die VNC-Server-Implementierung wurde die UnterstĂŒtzung fĂŒr die Zugriffskontrolle ĂŒber die Optionen tls-authz/sasl-authz hinzugefĂŒgt.
- Im QMP (QEMU Management Protocol) wurde die UnterstĂŒtzung fĂŒr die zentrale/externe (Out-of-band) AusfĂŒhrung von Befehlen hinzugefĂŒgt und zusĂ€tzliche Befehle fĂŒr die Arbeit mit BlockgerĂ€ten implementiert.
- In VFIO wurde die Implementierung des EDID-Interfaces fĂŒr unterstĂŒtzte mdev (Intel vGPU) hinzugefĂŒgt, die es ermöglicht, die Bildschirmauflösung mithilfe der Optionen xres und yres zu Ă€ndern.
- FĂŒr Xen wurde das neue GerĂ€t âxen-diskâ hinzugefĂŒgt, das selbststĂ€ndig einen Disk-Backend fĂŒr Xen PV (ohne Zugriff auf xenstore) erstellen kann. Die Leistung des Xen PV-Disk-Backends wurde verbessert, und es wurde die Möglichkeit zur Ănderung der FestplattengröĂe hinzugefĂŒgt.
- In den Netzwerk-BlockgerĂ€ten wurden die Diagnose- und Nachverfolgungsfunktionen erweitert und die KompatibilitĂ€t des Clients mit fehlerhaften Implementierungen des NBD-Servers verbessert. In qemu-nbd wurden die Optionen ââbitmapâ, ââlistâ und ââtls-authzâ hinzugefĂŒgt.
- In das emulierte GerĂ€t IDE/via wurde die UnterstĂŒtzung fĂŒr den PCI-IDE-Modus hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr die Verwendung des lzfse-Algorithmus zur Kompression von dmg-Abbildern wurde hinzugefĂŒgt. FĂŒr das qcow2-Format wurde die UnterstĂŒtzung fĂŒr das Anbinden externer Datendateien hinzugefĂŒgt. Die VorgĂ€nge zum Entpacken von qcow2 wurden in einen separaten Thread ausgelagert. In den vmdk-Abbildern wurde die UnterstĂŒtzung fĂŒr die Operation âblockdev-createâ hinzugefĂŒgt.
- Im BlockgerĂ€t virtio-blk wurde die UnterstĂŒtzung fĂŒr die Operationen DISCARD (Benachrichtigung ĂŒber die Freigabe von Blöcken) und WRITE_ZEROES (Nullen eines Bereichs logischer Blöcke) hinzugefĂŒgt;
- Im GerĂ€t pvrdma wurde die UnterstĂŒtzung fĂŒr RDMA Management Datagram services (MAD) implementiert;
- Es wurden , die die AbwĂ€rtskompatibilitĂ€t beeintrĂ€chtigen. Statt der Option âhandleâ in â-fsdevâ und â-virtfsâ sollten die Optionen âlocalâ oder âproxyâ verwendet werden. Die Optionen â-virtioconsoleâ (ersetzt durch â-device virtconsoleâ), â-no-frameâ, â-clockâ, â-enable-haxâ (ersetzt durch â-accel haxâ) wurden entfernt. Das GerĂ€t âivshmemâ wurde entfernt (es sollten âivshmem-doorbellâ oder âivshmem-plainâ verwendet werden). Die UnterstĂŒtzung fĂŒr den Build mit SDL1.2 wurde eingestellt (es muss SDL2 verwendet werden).
Quelle: opennet.ru
