Esimese retsepti esitamine projekti QEMU 8.2. Emulaatorina võimaldab QEMU käivitada programmi, mis on koostatud ühele riistvaraplatvormile, täiesti erineva arhitektuuriga süsteemis, näiteks käivitada ARM-i rakendust x86-ühilduval PC-l. Virtueerimise režiimis on QEMU-s koodi täitmise jõudlus isoleeritud keskkonnas lähedane riistvarasüsteemile, kuna instruktsioonide täitmine toimub otse CPU-l ja kasutab Xen hüperviisorit või KVM moodulit.
Alguses lõi projekti Fabrice Bellard eesmärgiga võimaldada x86-le koostatud Linuxi täidetavate failide käivitamist arhitektuuridel, mis erinevad x86-st. Aastate jooksul on täiendatud toetust täielikule emulatsioonile 14 riistvaraarhitektuurile ning emuleeritud riistvaraseadmete arv on ületanud 400. Versiooni 8.2 ettevalmistamisel tehti rohkem kui 3200 muudatust 238 arendaja poolt.
QEMU 8.2-sse lisatud peamised parendused:
- Lisatud on virtio-sound seade, mis võimaldab emuleerida helikaarti heli salvestamiseks ja taasesitamiseks külgsüsteemis, kasutades heli tagalasid (pulseaudio, sdl või coreaudio), mis töötavad host-süsteemi küljes. Linuxi tuumas peab külgsüsteemi heliseadme emuleerimiseks olema lubatud valik CONFIG_SND_VIRTIO.
- Lisatud on virtuaalne graafiline liides (VGI, Virtual Graphics Interface) rutabaga koos virtuaalse GPU (virtio-gpu) rakendusega, mis meenutab varem saadaval olnud VirGL ja võimaldab kasutada külgsüsteemis virtuaalset GPU-d 3D-renderdamiseks ilma füüsilisele GPU-le eksklusiivset otsepääsu andmata. Rutabaga kood on välja töötatud Android/CrosVM projekti raames ja võimaldab kasutada Androidi platvormi emulaatorit koos tavalise QEMU-ga.
- Lisatud hv-balloon seade, mis rakendab dünaamilise mälu haldamise protokolli (Dynamic Memory) Hyper-V jaoks, võimaldades töös tagastada kasutamata mälulehed host-süsteemile ja küsida täiendavalt mäluruumi, kui mälust jääb puudu. Uut seadet võib pidada alternatiiviks virtio-balloonile Windowsi külgsüsteemide jaoks, kasutades host-süsteemi poolel backendit, mis toetab dünaamilise mälu protokolli.
- Pakutud on seadme Universal Flash Storage Flash-mäluseadme emuleerimiseks.
- NBD (Network Block Device) ploki seadme draiverisse on lisatud protokolli laiendamise tugi, mis kasutab jõudluse suurendamiseks 64-bitiseid nihkeid suurte andmemanipulatsioonide puhul.
- Dump-guest-memory käsule on lisatud tugi väljundi andmiseks standardsetes kdump formaatides.
- Lisatud on UFS emuleerimise tugi, kasutades uusi ufs ja ufs-lu seadmeid.
- VFIO (Virtual Function I/O) on lisatud P2P-migreerimise režiimi tugi ja rakendatud MSI-X dünaamilise jaotamise võimalus. On tehtud ettevalmistused üleminekuks uuele IOMMUFD backendile.
- virtio-mem seadist teostab režiimi «dynamic-memslots=on», mis võimaldab dünaamiliselt eraldada mitu mälu slotti ühe suure staatilise asemel. Selle režiimi kasutamine aitab vähendada mälutarbimist suurtes virtio-mem seadmetes, mis pakuvad VM-ile väikest mälu mahtu.
- x86 arhitektuuri emulaatoris, emuleerides Xen hüperviisori keskkonda, KVM on tagatud PV konsoli ja võrguseadmete tugi ning lihtsustatud käsud plokk- ja võrguseadmete jaoks. Klassikalisse TCG koodigeneraatorisse on lisatud SHA käskude tugi.
- ARM arhitektuuri emulaatoris on teostatud Cortex-A710 ja Neoverse-N2 CPU emulatsioon. Lisatud on protsessori laiendite PACQARMA3, EPAC, Pauth2, FPAC, FPACCOMBINE, TIDCP1, MOPS, HBC ja HPMN0 tugi. Xilinx Versal plaadi jaoks on teostatud CFU/CFI ja TRNG seadmete modelleerimine.
- RISC-V arhitektuuri emulaatoris on teostatud vektorite krüptograafiliste käskude komplekt. Lisatud on virtuaalsete IRQ-de ja IRQ filtreerimise tugi. Stabiliseeritud on Zicond laiendite tugi. AIA (Advanced Interrupt Architecture) virtualiseerimise laiendite tugi on lisatud KVM kaudu.
- HPPA arhitektuuri emulaatoris on tagatud 64-bitise PA-RISC 2.0 CPU ja C3700 süsteemi emulatsioon, sealhulgas Astro mälukontroller ja Elroy PCI sillad.
- LoongArch arhitektuuri emulaatoris on rakendatud Loongson LA132 CPU emulatsioon. Lisatud on LASX käskude laienduse tugi ja PRELDX käsk.
- S390x arhitektuuri emulaatoris on lisatud vfio-ap tugi krüptoadapteri edastamiseks kaitstud külalissüsteemidele.
- Tricore emulaatoris on lisatud TC37x protsessorite (ISA 1.6.2) ja käskude CRCN, FTOU, FTOHP, HPTOF tugi.
Allikas: opennet.ru
