Esitletakse QEMU 6.0 projekti väljalaskmist. Emulaatorina võimaldab QEMU käivitada ühel riistvara platvormil loodud programmi täiesti erineva arhitektuuriga süsteemis, näiteks käivitada ARM-i rakendust x86 ühilduval arvutil. Virtualiseerimise režiimis on QEMU-koodi täitmise jõudlus isoleeritud keskkonnas lähedane riistvara süsteemile, kuna protsessori juhiseid täidetakse otse ja kasutatakse Xen hüperviisorit või KVM moodulit.
Projekt loodi algselt Fabrice Bellardi poolt (Fabrice Bellard) eesmärgiga võimaldada x86 platvormile loodud Linuxi käivitatavate failide käitamist arhitektuuridel, mis ei ole x86. Aastate jooksul on arendusse lisatud täieliku emulatsiooni tugi 14 riistvara arhitektuuri jaoks ning emuleeritud riistvaraseadmete arv on ületanud 400. QEMU 6.0 versiooni ettevalmistamisel tehti üle 3300 muudatuse 268 arendaja poolt.
QEMU 6.0-s lisatud peamised täiustused:
- NVMe kontrollerite emulaator on viidud vastavusse NVMe 1.4 spetsifikatsiooniga ning on varustatud katse toe ühendatud nimesalvestusruumide, mitme tee I/O ja andmete krüpteerimise funktsioonidega.
- Lisatud on katsevalikud „-machine x-remote“ ja „-device x-pci-proxy-dev“, et seadmestiku emulatsioon viia välistele protsessidele. Sel režiimil toetatakse praegu ainult SCSI-adapteri lsi53c895 emulatsiooni.
- Lisatud on katse tugi RAM-i sisu snapshotide loomiseks.
- Lisatud on FUSE-modul, mis ekspordib plokkseadmed, võimaldades mountida mis tahes plokkseadmestiku oleku lõike, mida kasutatakse külalisrežiimis. Ekspordi teostab QMP-käsk block-export-add või valik „—export“ qemu-storage-daemon utiliidis.
- ARM-i emulaatorisse on lisatud ARMv8.1-M 'Helium' arhitektuuri ja Cortex-M55 protsessorite tugi, samuti laiendatud ARMv8.4 TTST, SEL2 ja DIT juhised. Lisatud on tugi ARM-plaatidele mps3-an524 ja mps3-an547 ning täiendav seadmete emulatsioon xlnx-zynqmp, xlnx-versal, sbsa-ref, npcm7xx ja sabrelite plaatide jaoks.
- ARM-i süsteemi- ja kasutajakeskkonna emulatsioonirežiimides on lisatud ARMv8.5 MTE (MemTag, Memory Tagging Extension) laienduse tugi, mis võimaldab siduda iga mälu eraldamise operatsiooni siltide ja korraldada mälu juurde pääsemise kontrolli, mis peab olema seotud õige sildiga. Laiendust saab kasutada haavatavuste ärahoidmiseks, mis on põhjustatud juba vabastatud mälubloksidele, mälubufferi ületamisele, enne initsialiseerimist toimuvatele juurde pääsudele ja konteksti väljaspool kasutamisele.
- 68k arhitektuuri emulaatorisse on lisatud uus emuleeritavate masinate tüüp „virt“, mis kasutab seadmete virtio jõudluse optimeerimiseks.
- x86 arhitektuuri emulaatorisse on lisatud võimalus rakendada AMD SEV-ES (Secure Encrypted Virtualization) tehnoloogiat, mis krüpteerib külalisrežiimis kasutatavaid protsessori registreid, muutes registrite sisu host-ümbrusele kättesaamatuks, kui külalisrežiim seda selgelt ei võimalda.
- Klassikalises TCG (Tiny Code Generator) koodigeneraatoris on x86 süsteemide emuleerimisel rakendatud PKS (Protection Keys Supervisor) mehhanismi toetus, mida saab kasutada privileege saavad mälulehtede juurdepääsu kaitsmiseks.
- MIPS arhitektuuri emulaatorisse on lisatud uus emuleeritavate masinate tüüp „virt“, mis toetab Hiina Loongson-3 protsessoreid.
- PowerPC arhitektuuri emulaatorisse, mis on mõeldud emuleeritavatele masinatele „powernv“, on lisatud toetus välistele BMC-kontrolleritele. Emuleeritaval pseries masinal on tagatud teavitamine tõrgetest, kui mälu ja CPU hot-swap on katses.
- Lisatud on Qualcomm Hexagoni DSP protsessorite emulatsiooni tugi.
- Klassikalises TCG (Tiny Code Generator) koodigeneraatoris on rakendatud macOS host-ümbruste toimetus uute Apple M1 ARM-kiipide süsteemide jaoks.
- RISC-V arhitektuuri emulaatoris on Microchip PolarFire plaatide jaoks QSPI NOR flashi tugi.
- Tricore emulaatorisse on tullut uus pall TriBoard, mis emuleerib Infineoni TC27x SoC-d.
- ACPI emulaatoris on lisatud võimalus määrata võrgukaartidele külalisrežiimides nimesid, mis ei sõltu PCI bussile ühendamise korrast.
- virtiofs-sse on lisatud FUSE_KILLPRIV_V2 valiku tugi, et parandada külalisrežiimide jõudlust.
- VNC-sse on lisatud kursori läbipaistvuse ja ekraani resolutsiooni skaleerimise tugi virtio-vga-s, mis sõltub akna suurusest.
- QMP-s (QEMU Masina Protokoll) on lisatud toetus asünkroonsele paralleelsele juurdepääsule varundamise ülesannete täitmisel.
- USB emulaatorisse on lisatud võimalus salvestada USB-seadmetega töötamisel genereeritav liiklus eraldi pcap-faili, et saaks seda hiljem Wiresharkis uurida.
- Lisatud on uued QMP-käsud load-snapshot, save-snapshot ja delete-snapshot qcow2 hetkepiltide haldamiseks.
- Virtiofs-s on kõrvaldatud haavatavused CVE-2020-35517 ja CVE-2021-20263. Esimene probleem võimaldab erakasutajal luua spetsiaalse seadme faili jagatud katalooge, mis võimaldab pääseda juurde host-keskkonnale külgusesüsteemist. Teine probleem on tingitud pikendatud atribuutide töötlemise veast valikus 'xattrmap' ja võib põhjustada kirjutamisõiguste tagasivõtmise eiramise ning privileegide tõusu külgusesüsteemis.
Allikas: opennet.ru
