Je představeno vydání projektu QEMU 6.0. Jako emulátor vám QEMU umožňuje spouštět program vytvořený pro jednu hardwarovou platformu na systému se zcela odlišnou architekturou, například spouštět aplikaci ARM na počítači kompatibilním s x86. V režimu virtualizace v QEMU se výkon provádění kódu v izolovaném prostředí blíží hardwarovému systému díky přímému provádění instrukcí na CPU a použití hypervizoru Xen nebo KVM modulu.
Projekt původně vytvořil Fabrice Bellard, aby umožnil spustitelné soubory Linuxu vytvořené pro platformu x86 na architekturách jiných než x86. V průběhu let vývoje byla přidána plná podpora emulace pro 14 hardwarových architektur, počet emulovaných hardwarových zařízení přesáhl 400. V rámci přípravy na verzi 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če NVMe je uveden do souladu se specifikací NVMe 1.4 a je vybaven experimentální podporou zónovaných jmenných prostorů, vícecestných I/O a end-to-end šifrování dat na disku.
- Přidány experimentální možnosti „-machine x-remote“ a „-device x-pci-proxy-dev“ pro přesun emulace zařízení na externí procesy. V tomto režimu je aktuálně podporována pouze emulace adaptéru lsi53c895 SCSI.
- Přidána experimentální podpora pro vytváření snímků obsahu paměti RAM.
- Přidán modul FUSE pro export blokových zařízení, který vám umožňuje připojit část stavu libovolného blokového zařízení používaného v hostujícím systému. Export se provádí pomocí příkazu QMP block-export-add nebo pomocí volby „--export“ v obslužném programu qemu-storage-daemon.
- Emulátor ARM přidává podporu pro architekturu ARMv8.1-M 'Helium' a procesory Cortex-M55, stejně jako rozšířené instrukce ARMv8.4 TTST, SEL2 a DIT. Přidána podpora pro ARM desky mps3-an524 a mps3-an547. Další emulace zařízení byla implementována pro desky xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx a sabrelite.
- Pro ARM byla v emulačních režimech na úrovni systému a uživatelského prostředí implementována podpora pro rozšíření ARMv8.5 MTE (MemTag, Memory Tagging Extension), které vám umožňuje vázat tagy na každou operaci alokace paměti a organizovat kontrolu ukazatele, když přístup k paměti, která musí být spojena se správnou značkou . Rozšíření lze použít k blokování zneužití zranitelností způsobených přístupem k již uvolněným blokům paměti, přetečením vyrovnávací paměti, přístupy před inicializací a použitím mimo aktuální kontext.
- Emulátor architektury 68k přidal podporu pro nový typ emulovaného stroje „virt“, který využívá zařízení virtio k optimalizaci výkonu.
- Emulátor x86 přidává možnost využívat technologii AMD SEV-ES (Secure Encrypted Virtualization) k šifrování registrů procesorů používaných v hostujícím systému, čímž se obsah registrů stává nepřístupným hostitelskému prostředí, pokud k nim hostující systém výslovně neudělí přístup.
- Klasický generátor kódu TCG (Tiny Code Generator) při emulaci x86 systémů implementuje podporu 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.
- V emulátoru architektury PowerPC pro emulované stroje „powernv“ byla přidána podpora pro externí řadiče BMC. U emulovaných počítačů pseries je k dispozici upozornění na selhání při pokusu o odebrání paměti a CPU za provozu.
- Přidána podpora pro emulaci procesorů Qualcomm Hexagon s DSP.
- Klasický generátor kódu TCG (Tiny Code Generator) podporuje hostitelská prostředí macOS na systémech s novým čipem Apple M1 ARM.
- Emulátor architektury RISC-V pro desky Microchip PolarFire podporuje flash QSPI NOR.
- Emulátor Tricore nyní podporuje nový model desky TriBoard, který emuluje SoC Infineon TC27x.
- Emulátor ACPI poskytuje možnost přiřazovat jména síťovým adaptérům v hostovaných systémech, která jsou nezávislá na pořadí, ve kterém jsou připojeny ke sběrnici PCI.
- virtiofs přidal podporu pro možnost FUSE_KILLPRIV_V2 pro zlepšení výkonu hostů.
- VNC přidalo podporu pro průhlednost kurzoru a podporu pro změnu rozlišení obrazovky ve virtio-vga na základě velikosti okna.
- QMP (QEMU Machine Protocol) přidal podporu pro asynchronní paralelní přístup při provádění úloh zálohování.
- Emulátor USB přidal možnost uložit provoz generovaný při práci se zařízeními USB do samostatného souboru pcap pro následnou kontrolu ve Wiresharku.
- Přidány nové příkazy QMP load-snapshot, save-snapshot a delete-snapshot pro správu snímků qcow2.
- Chyby zabezpečení CVE-2020-35517 a CVE-2021-20263 byly opraveny ve virtiofech. První problém umožňuje přístup do hostitelského prostředí z hostujícího systému vytvořením speciálního souboru zařízení v hostujícím systému privilegovaným uživatelem v adresáři sdíleném s hostitelským prostředím. Druhý problém je způsoben chybou ve zpracování rozšířených atributů ve volbě 'xattrmap' a může způsobit ignorování oprávnění k zápisu a eskalaci oprávnění v rámci hostujícího systému.
Zdroj: opennet.ru