Die Version des Projekts QEMU 9.0 wurde vorgestellt. Als Emulator ermöglicht QEMU das AusfĂŒhren von Programmen, die fĂŒr eine bestimmte Hardwareplattform erstellt wurden, auf einem System mit einer völlig anderen Architektur, beispielsweise das AusfĂŒhren einer Anwendung fĂŒr ARM auf einem x86-kompatiblen PC. Im Virtualisierungsmodus ist die AusfĂŒhrungsgeschwindigkeit des Codes in einer isolierten Umgebung nahe an der einer physischen Hardware aufgrund der direkten AusfĂŒhrung von Befehlen auf der CPU und der Einbeziehung des Hypervisors Xen oder des KVM-Moduls in Linux oder des NVMM-Moduls in NetBSD.
Das Projekt wurde ursprĂŒnglich von Fabrice Bellard ins Leben gerufen, um die AusfĂŒhrung von fĂŒr die x86-Plattform kompilierten Linux-Executables auf Architekturen zu ermöglichen, die sich von x86 unterscheiden. Im Laufe der Jahre wurden ĂŒber 2700 Ănderungen von 220 Entwicklern vorgenommen, und es wurde UnterstĂŒtzung fĂŒr die vollstĂ€ndige Emulation von 14 Hardwarearchitekturen hinzugefĂŒgt, wobei die Anzahl emulierter HardwaregerĂ€te ĂŒber 400 gestiegen ist.
Wesentliche Verbesserungen, die in QEMU 9.0 hinzugefĂŒgt wurden:
- Im virtio-blk-Treiber, der ein virtuelles BlockgerĂ€t bereitstellt fĂŒr virtuelle Maschinen, wurde UnterstĂŒtzung fĂŒr ein mehrstufiges Warteschlangensystem (Multiqueue) hinzugefĂŒgt, das es ermöglicht, Warteschlangen fĂŒr verschiedene BlockgerĂ€te zu trennen, um den Multithread-Zugriff auf Mehrkernsystemen zu verbessern (verschiedene Warteschlangen eines Laufwerks können von verschiedenen E/A-Threads verarbeitet werden).
- Im BlockgerĂ€t usb-storage wurde UnterstĂŒtzung fĂŒr die Eigenschaften 'backend_defaults', 'logical_block_size', 'physical_block_size', 'min_io_size', 'opt_io_size' und 'discard_granularity' hinzugefĂŒgt.
- In die gdbstub-Bibliothek, die fĂŒr das Remote-Debugging in GDB unter Verwendung des RSP (Remote Serial Protocol) entwickelt wurde, wurde UnterstĂŒtzung fĂŒr den fork-follow-Modus, die Operation siginfo:read und das Abfangen von Systemaufrufen im Benutzerspeicher hinzugefĂŒgt.
- Die Backends fĂŒr die vorzeitige Speicherreservierung (Preallocation) wurden fĂŒr den Multithread-Betrieb angepasst und können jetzt gleichzeitig Anfragen aus mehreren Threads bearbeiten.
- Im Migrationstools fĂŒr virtuelle Maschinen wurde der Modus âmapped-ramâ hinzugefĂŒgt, der die Effizienz der Erstellung von Snapshots virtueller Maschinen erhöht. Die Erkennung von Nullseiten im Speicher wurde verbessert, was die Migration inaktiver virtueller Maschinen bei bestehender multifd-UnterstĂŒtzung erheblich beschleunigt hat. Bei der Migration auf VFIO (Virtual Function I/O) wurde die UnterstĂŒtzung fĂŒr den Neustart aus dem gespeicherten Zustand (checkpoint-restart) implementiert.
- Die Implementierung des GerÀts ESP SCSI (am53c974/dc390) wurde neu geschrieben.
- Die UnterstĂŒtzung des VerschlĂŒsselungsalgorithmus SM4 wurde hinzugefĂŒgt, und es ist nun möglich, ihn im Treiber des BlockgerĂ€ts 'luks' zu verwenden.
- Im Treiber 'luks' wurde die UnterstĂŒtzung fĂŒr die Erstellung und Verwendung von Dateien mit gespeicherten LUKS-Headern hinzugefĂŒgt.
- Im Emulator der ARM-Architektur wurde UnterstĂŒtzung fĂŒr die Boards L475E-IOT01A IoT, mp3-an536 (MPS3 mit AN536-Firmware) und raspi4b (Raspberry Pi 4 Model B) implementiert. UnterstĂŒtzung fĂŒr die Emulation der Prozessorerweiterungen ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) und NV2 (Enhanced Nested Virtualization) wurde hinzugefĂŒgt. Die Möglichkeiten der Emulatoren fĂŒr Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx und virt wurden erweitert.
- Im Emulator der RISC-V-Architektur wurde die UnterstĂŒtzung fĂŒr die Anweisungen der Befehlssatzerweiterungen Zacas, amocas, RVA22, Zaamo, Zalrsc und Ztso hinzugefĂŒgt. virtuellen Maschinen RISC-V bietet UnterstĂŒtzung fĂŒr SMBIOS. FĂŒr SRAT, SLIT, AIA und PLIC wurde die UnterstĂŒtzung fĂŒr ACPI implementiert. Die UnterstĂŒtzung fĂŒr RHCT-Tabellen wurde aktualisiert.
- Im Emulator der HPPA-Architektur wurde die Firmware SeaBIOS-hppa bis Version 16 aktualisiert. Die maximale SpeicherkapazitĂ€t wurde von 3 GB auf 3840 MB erhöht. UnterstĂŒtzung fĂŒr die Option âânodefaultsâ wurde hinzugefĂŒgt.
- Im Emulator der LoongArch-Architektur wurde die UnterstĂŒtzung fĂŒr die KVM-Beschleunigung und die Implementierung der vektoriellen Erweiterungen des Befehlssatzes LSX/LASX hinzugefĂŒgt.
- Im Emulator der Architektur s390x wurde die UnterstĂŒtzung fĂŒr die Anweisungen CVDG, CVB, CVBY und CVBG hinzugefĂŒgt. Die Emulation von LAE (Load Address Extended) wurde verbessert.
- Im Emulator der 68k-Architektur wurde das GerĂ€t nubus-virtio-mmio hinzugefĂŒgt, das den Zugriff auf virtio-GerĂ€te aus q800-Maschinen ermöglicht.
- Die Erstellung mit der Option â-fzero-call-used-regsâ ermöglicht den Schutz vor Informationslecks aus Funktionen und reduziert die Anzahl der Blöcke, die fĂŒr den Bau von ROP-Gadgets (Return-Oriented Programming) in Exploits geeignet sind. AuĂerdem wurde die Erstellung mit der Option â-ftrivial-auto-var-init=zeroâ fĂŒr die automatische Initialisierung aller im Stack gespeicherten Variablen mit dem Wert Null hinzugefĂŒgt.
- FĂŒr den Betrieb von QEMU mit KVM ist jetzt mindestens ein Linux-Kernel der Version 4.4 erforderlich. FĂŒr ARM-Hosts soll dieser Wert in Zukunft auf Version 4.19 erhöht werden. Die UnterstĂŒtzung fĂŒr die Verwendung von 32-Bit-Windows als Host-Betriebssystem wurde eingestellt.
- UnterstĂŒtzung fĂŒr OpenBSD 7.4 hinzugefĂŒgt.
Quelle: opennet.ru
