Byl zveřejněn release projektu QEMU 9.0. Jako emulátor umožňuje QEMU spustit program, který byl sestaven pro jednu hardwarovou platformu, na systému s úplně jinou architekturou, například spustit aplikaci pro ARM na PC kompatibilním s x86. V režimu virtualizace nabízí QEMU výkon kódu v izolovaném prostředí blízký hardwarové platformě díky přímému vykonávání instrukcí na CPU a zapojení hypervizoru Xen nebo modulu KVM v Linuxu, nebo modulu NVMM v NetBSD.
Projekt byl původně vytvořen Fabrice Bellard s cílem umožnit spuštění shromážděných pro platformu x86 spustitelných souborů Linux na architekturách odlišných od x86. Během let vývoje byla přidána podpora plné emulace pro 14 hardwarových architektur a počet emulovaných hardwarových zařízení překročil 400. Při přípravě verze 9.0 bylo implementováno více než 2700 změn od 220 vývojářů.
Klíčová zlepšení přidaná do QEMU 9.0:
- Do ovladače virtio-blk, který poskytuje virtuální blokové zařízení pro virtuálních strojů, byla přidána podpora víceúrovňového systému front (multiqueue), což umožňuje rozdělit fronty pro různá bloková zařízení a zajistit vícetréninkový přístup na vícejádrových systémech (různé fronty jednoho disku mohou být zpracovávány různými vlákny vstupu/výstupu).
- Do blokového zařízení usb-storage byla přidána podpora vlastností ‘backend_defaults’, ‘logical_block_size’, ‘physical_block_size’, ‘min_io_size’, ‘opt_io_size’ a ‘discard_granularity’.
- Do knihovny gdbstub, určené pro vzdálené ladění v GDB s využitím protokolu RSP (Remote Serial Protocol), byla přidána podpora režimu fork-follow, operace siginfo:read a zachycování systémových volání v uživatelském prostoru.
- Backendy pro předběžné přidělování paměti (preallocation) byly přizpůsobeny pro práci v multithreadovém režimu a nyní mohou současně zpracovávat požadavky z více vláken.
- Do nástrojů pro migraci virtuálních strojů byl přidán režim „mapped-ram“, který zvyšuje efektivitu vytváření snapshotů virtuálních strojů. Bylo zlepšeno určení nulové stránky paměti, což značně urychlilo migraci neaktivních virtuálních strojů za přítomnosti podpory multifd v systému. Při migraci na základě VFIO (Virtual Function I/O) byla implementována podpora restartu ze uloženého stavu (checkpoint-restart).
- Byla přepracována implementace zařízení ESP SCSI (am53c974/dc390).
- Byla přidána podpora šifrovacího algoritmu SM4 a byla zajištěna možnost jeho použití v ovladači blokového zařízení ‘luks’.
- Do ovladače ‘luks’ byla přidána podpora pro vytváření a používání souborů se zachovanými hlavičkami LUKS.
- V emulátoru architektury ARM byla zavedena podpora desek L475E-IOT01A IoT, mp3-an536 (MPS3 s firmwarem AN536) a raspi4b (Raspberry Pi 4 Model B). Byla přidána podpora emulace procesorových rozšíření ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) a NV2 (Enhanced Nested Virtualization). Možnosti emulátorů desek Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx a virt byly rozšířeny.
- Do emulátoru architektury RISC-V byla přidána podpora rozšíření architektury instrukční sady Zacas, amocas, RVA22, Zaamo, Zalrsc a Ztso. V virtual machines RISC-V byla zajištěna podpora SMBIOS. Pro SRAT, SLIT, AIA a PLIC byla implementována podpora ACPI. Byla aktualizována podpora tabulek RHCT.
- V emulátoru architektury HPPA do verze 16 byla aktualizována firmware SeaBIOS-hppa. Maximální velikost paměti byla zvýšena z 3 GB na 3840 MB. Byla přidána podpora pro možnost „—nodefaults”.
- V emulátoru architektury LoongArch byla zavedena podpora akcelerace KVM a byla implementována podpora vektorových rozšíření instrukční sady LSX/LASX.
- V emulátoru architektury s390x byla přidána podpora instrukcí CVDG, CVB, CVBY a CVBG. Byla vylepšena emulace LAE (Load Address Extended).
- V emulátoru architektury 68k bylo přidáno zařízení nubus-virtio-mmio, které umožňuje přístup k zařízení virtio z počítačů q800.
- Bylo zajištěno sestavení s přepínačem ‘-fzero-call-used-regs’, který chrání proti úniku informací z funkcí a snižuje počet bloků vhodných pro vytváření ROP gadgetů (Return-Oriented Programming) v exploitech. Bylo také přidáno sestavení s přepínačem ‘-ftrivial-auto-var-init=zero’ pro automatickou inicializaci všech proměnných uložených na zásobníku na nulovou hodnotu.
- Pro spuštění QEMU s KVM je nyní vyžadováno minimálně jádro Linux 4.4. Pro ARM hostitele plánují tuto hranici v budoucnu zvýšit na verzi 4.19. Byla ukončena podpora 32bitových Windows jako hostitelských operačních systémů.
- Byla přidána podpora OpenBSD 7.4.
Zdroj: opennet.ru
