Byl představen vydání projektu QEMU 6.0. Jako emulátor umožňuje QEMU spustit program 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 je výkon kódu spuštěného v izolovaném prostředí blízký skutečnému hardwarovému systému díky přímému vykonávání instrukcí na CPU a využití hypervizoru Xen nebo modulu KVM.
Projekt byl původně vytvořen Fabrice Bellard s cílem umožnit spouštění spustitelných souborů Linuxu sestavených pro platformu x86 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 6.0 bylo provedeno více než 3300 změn od 268 vývojářů.
Klíčová vylepšení přidaná v QEMU 6.0:
- Emulátor řadičů NVMe byl přizpůsoben specifikaci NVMe 1.4 a vybaven experimentální podporou zónovaných jmenných prostorů, multipath I/O a end-to-end šifrování dat na úložném médiu.
- Byly přidány experimentální možnosti „-machine x-remote“ a „-device x-pci-proxy-dev“ pro vyčlenění emulace zařízení do externích procesů. V tomto režimu zatím podporujeme pouze emulaci SCSI adaptér lsi53c895.
- Byla přidána experimentální podpora pro vytváření snapshotů obsahu RAM.
- Byl přidán FUSE modul pro export blokových zařízení, který umožňuje namontovat snímek stavu jakéhokoli blokového zařízení použitým v hostitelském systému. Export se provádí prostřednictvím QMP příkazu block-export-add nebo prostřednictvím volby „—export“ v utilitě qemu-storage-daemon.
- Do emulátoru ARM byla přidána podpora architektury ARMv8.1-M ‘Helium’ a procesorů Cortex-M55, jakož i rozšířených instrukcí ARMv8.4 TTST, SEL2 a DIT. Byla přidána podpora ARM platforem mps3-an524 a mps3-an547. Pro platformy xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx a sabrelite byla realizována dodatečná emulace zařízení.
- Pro ARM ve režimech emulace na úrovni systému a uživatelského prostředí byla implementována podpora rozšíření ARMv8.5 MTE (MemTag, Memory Tagging Extension), které umožňuje přidělovat tagy k každé operaci alokace paměti a organizovat ověřování ukazatelů při přístupu k paměti, které musí být spojeno se správným tagem. Toto rozšíření může být použito k blokování vykořisťování zranitelností způsobených přístupem k již uvolněným blokům paměti, přetečeními bufferů, přístupy před inicializací a používáním mimo aktuální kontext.
- Do emulátoru architektury 68k byla přidána podpora nového typu emulovaných strojů „virt“, které využívají pro optimalizaci výkonu zařízení virtio.
- Do emulátoru architektury x86 byla přidána možnost aplikace technologie AMD SEV-ES (Secure Encrypted Virtualization) pro šifrování registrů procesoru používaných v hostované systému, což činí obsah registrů nedostupným pro hostitelské prostředí, pokud hostovaná systém výslovně neposkytne přístup k nim.
- V klasickém generátoru kódu TCG (Tiny Code Generator) při emulaci systém x86 byla implementována podpora mechanismu PKS (Protection Keys Supervisor), který lze použít k ochraně přístupu k privilegovaným stránkám paměti.
- Do emulátoru architektury MIPS byl přidán nový typ emulovaných strojů „virt“ s podporou čínských procesorů Loongson-3.
- Do emulátoru architektury PowerPC pro emulované stroje „powernv“ byla přidána podpora externích BMC řadičů. Pro emulované stroje pseries je zajištěno informování o chybách při pokusu o horké vyjmutí paměti a CPU.
- Byla přidána podpora emulace procesorů Qualcomm Hexagon s DSP.
- V klasickém generátoru kódu TCG (Tiny Code Generator) byla implementována podpora hostitelských prostředí macOS na systémech s novým ARM čipem Apple M1.
- Do emulátoru architektury RISC-V pro desky Microchip PolarFire byla přidána podpora QSPI NOR flash.
- Do emulátoru Tricore přidala podpora nového modelu desek TriBoard, emulující SoC Infineon TC27x.
- V emulátoru ACPI byla poskytnuta možnost přiřazení síťovým adaptérům v hostovaných systémech názvů, nezávislých na pořadí připojení k sběrnici PCI.
- V virtiofs byla přidána podpora možnosti FUSE_KILLPRIV_V2 pro zvýšení výkonu hostovaných systémů.
- V NC byla přidána podpora průhlednosti kurzoru a podpora škálování rozlišení obrazovky ve virtio-vga, vycházející z velikosti okna.
- V QMP (QEMU Machine Protocol) byla přidána podpora asynchronního paralelního přístupu při provádění úloh zálohování.
- V USB emulátoru byla přidána možnost ukládat provoz generovaný při práci s USB zařízeními do samostatného pcap souboru pro následné inspekce ve Wireshark.
- Byly přidány nové QMP příkazy load-snapshot, save-snapshot a delete-snapshot pro správu snapshotů qcow2.
- Ve virtiofs byly odstraněny zranitelnosti CVE-2020-35517 a CVE-2021-20263. První problém umožňuje přístup k hostitelskému prostředí z hostované systémy prostřednictvím vytvoření speciálního zařízení privilegovaným uživatelem v hostované systémy v adresáři sdíleném s hostitelským prostředím. Druhý problém je způsoben chybou při zpracování rozšířených atributů v možnosti 'xattrmap' a může vést k ignorování resetování práv pro zápis a zvýšení oprávnění uvnitř hostované systémy.
Zdroj: opennet.ru
