Bemutatták a QEMU 9.0 projekt verzióját. A QEMU emulátorként lehetővé teszi, hogy egy, más hardverplatformra összeállított programot egy teljesen eltérő architektúrájú rendszeren futtassunk, például ARM alkalmazást indítsunk egy x86 kompatibilis PC-n. A QEMU virtualizálási módban a kód végrehajtásának teljesítménye elszigetelt környezetben közel áll a hardveres rendszerekhez, a CPU utasításainak közvetlen végrehajtása és a Xen hypervisor vagy a KVM modul alkalmazásával Linuxban, illetve a NVMM modul használatával NetBSD alatt.
A projektet Fabrice Bellard indította el, hogy lehetővé tegye az x86 architektúrára összeállított Linux futtatható fájlok indítását olyan architektúrákon, amelyek eltérnek az x86-tól. A fejlesztés évei alatt 14 hardverarchitektúra teljes emulációs támogatása hozzáadásra került, a támogatott emulált hardvereszközök száma meghaladta a 400-at. A 9.0-ás verzió elkészítése során több mint 2700 változtatás került bevezetésre 220 fejlesztőtől.
A QEMU 9.0-ban hozzáadott főbb fejlesztések:
- A virtio-blk meghajtóhoz, amely virtuális blokkeszközt biztosít, virtuális gépekheztámogatás került a multiqueue rendszer számára, amely lehetővé teszi a különböző blokkeszközök számára történő sorok szétválasztását, hogy több szál egyidejű hozzáférést biztosítson többmagos rendszereken (a ugyanazon lemez különböző sorait különböző I/O szálak dolgozhatják fel).
- Az usb-storage blokkeszközben hozzáadásra került a ‘backend_defaults’, ‘logical_block_size’, ‘physical_block_size’, ‘min_io_size’, ‘opt_io_size’ és ‘discard_granularity’ tulajdonságok támogatása.
- A gdbstub könyvtárhoz, amely távoli hibakereséshez készült GDB-ben RSP (Remote Serial Protocol) használatával, hozzáadva lett a fork-follow üzemmód, a siginfo:read művelet és a felhasználói térben lévő rendszerhívások elfogásának támogatása.
- A memóriapré-előreallokáló backendek ezentúl több szálon is működnek, és egyszerre több szálból érkező kéréseket is képesek kezelni.
- A virtuális gépek migrálására szolgáló eszközökhöz hozzáadva lett a ‘mapped-ram’ üzemmód, amely növeli a virtuális gépek pillanatfelvételeinek készítésének hatékonyságát. Fejlesztették a nulladik memóriaoldal meghatározását, ami jelentősen felgyorsította az inaktív virtuális gépek migrálását multifd támogatás esetén. A VFIO (Virtual Function I/O) alapú migrációnál megvalósították a korábbi állapotból (checkpoint-restart) történő újraindítás támogatását.
- Újra lett írva az ESP SCSI (am53c974/dc390) eszköz megvalósítása.
- Hozzáadtuk az SM4 titkosítási algoritmus támogatását, és lehetővé tettük a block device ‘luks’ illesztőprogramjának használatát.
- A ‘luks’ illesztőprogramhoz hozzáadtuk a LUKS fejléceket tartalmazó fájlok létrehozásának és használatának támogatását.
- ARM architektúra emulátorában megvalósították az L475E-IOT01A IoT, mp3-an536 (MPS3 AN536 firmware-rel) és raspi4b (Raspberry Pi 4 Model B) platformok támogatását. Hozzáadták az ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) és NV2 (Enhanced Nested Virtualization) processzor-kiterjesztések emulálásának támogatását. Kiterjesztették a Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx és virt platformok emulátorainak lehetőségeit.
- A RISC-V architektúra emulátorában hozzáadták a Zacas, amocas, RVA22, Zaamo, Zalrsc és Ztso utasításkészlet-kiterjesztések támogatását. virtuális gépekben RISC-V-ben biztosítva lett a SMBIOS támogatása. Az SRAT, SLIT, AIA és PLIC esetében megvalósították az ACPI támogatását. Frissítették a RHCT táblák támogatását.
- HPPA architektúra emulátorában, a 16-os verzióig frissítették a SeaBIOS-hppa firmware-t. A maximális memória mérete 3 GB-ról 3840 MB-ra növekedett. Hozzáadták a ‘—nodefaults’ opció támogatását.
- LoongArch architektúra emulátorában megjelent a KVM gyorsítás támogatása és megvalósították a LSX/LASX utasításkészlet vektorizált kiterjesztéseinek támogatását.
- A s390x architektúra emulátorában hozzáadták a CVDG, CVB, CVBY és CVBG utasítások támogatását. Javították az LAE (Load Address Extended) emulációt.
- A 68k architektúra emulátorában hozzáadták a nubus-virtio-mmio eszközt, amely lehetővé teszi a virtio eszközök elérését a q800 gépekből.
- A ‘-fzero-call-used-regs’ zászlóval történő összeállítás lehetővé teszi az információszivárgás elkerülését a funkciókból és csökkenti a ROP-gadgetek (Return-Oriented Programming) felépítésére alkalmas blokkok számát az exploittokban. Ezenkívül hozzáadták a ‘-ftrivial-auto-var-init=zero’ zászlóval történő összeállítást, amely automatikusan 0 értékkel inicializálja az összes, a veremben tárolt változót.
- A QEMU KVM-mel való futtatásához mostantól legalább 4.4-es Linux kernel szükséges. ARM gazdák számára a jövőben ezt a határt 4.19-es verzióra tervezik emelni. Megszüntették a 32 bites Windows támogatását, mint gazda operációs rendszert.
- Hozzáadtuk az OpenBSD 7.4 támogatását.
Forrás: opennet.ru
