Zaprezentowano wydanie projektu QEMU 8.2. Jako emulator QEMU umożliwia uruchomienie programu skompilowanego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, na przykład uruchomienie aplikacji dla ARM na komputerze kompatybilnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest zbliżona do systemu sprzętowego dzięki bezpośredniemu wykonaniu instrukcji na CPU i wykorzystaniu hipernadzoru Xen lub modułu KVM.
Początkowo projekt został stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania skompilowanych dla platformy x86 plików wykonywalnych Linux na architekturach innych niż x86. W ciągu lat rozwoju dodano wsparcie dla pełnej emulacji dla 14 architektur sprzętowych, a liczba emulowanych urządzeń sprzętowych przekroczyła 400. Przy przygotowywaniu wersji 8.2 wprowadzono ponad 3200 zmian od 238 deweloperów.
Kluczowe ulepszenia dodane w QEMU 8.2:
- Dodano urządzenie virtio-sound, umożliwiające emulację karty dźwiękowej do nagrywania i odtwarzania dźwięku w systemie gościa za pomocą backendu dźwiękowego (pulseaudio, sdl lub coreaudio), działającego po stronie hosta. Aby emulować urządzenie dźwiękowe w jądrze Linux dla systemu gościa, opcja CONFIG_SND_VIRTIO musi być włączona.
- Dodano wirtualny interfejs graficzny (VGI, Virtual Graphics Interface) rutabaga z realizacją wirtualnego GPU (virtio-gpu), przypominającego wcześniej dostępny VirGL i także dającego możliwość użycia w gościach wirtualnego GPU do renderowania 3D, bez otwierania ekskluzywnego bezpośredniego dostępu do fizycznego GPU. Kod rutabaga został opracowany w ramach projektu Android/CrosVM i umożliwia użycie emulatora platformy Android z zwykłym QEMU.
- Dodano urządzenie hv-balloon z realizacją protokołu dynamicznego zarządzania pamięcią (Dynamic Memory) dla Hyper-V, umożliwiającego podczas pracy zwracanie nieużywanych stron pamięci do systemu hosta i żądanie dodatkowych w przypadku braku pamięci. Nowe urządzenie można traktować jako alternatywę dla virtio-balloon dla systemów gościowych z Windows, wykorzystującą po stronie systemu hosta backend wspierający protokół Dynamic Memory.
- Zapewniono urządzenie Universal Flash Storage do emulacji pamięci Flash.
- W sterowniku urządzeń blokowych NBD (Network Block Device) dodano wsparcie dla rozszerzenia protokołu, które wykorzystuje 64-bitowe przesunięcia dla zwiększenia wydajności podczas manipulacji danymi o dużych rozmiarach.
- Do polecenia dump-guest-memory dodano wsparcie dla wyjścia w standardowym formacie kdump.
- Dodano wsparcie dla emulacji UFS, wykorzystując nowe urządzenia ufs i ufs-lu.
- W VFIO (Virtual Function I/O) dodano wsparcie dla trybu migracji P2P oraz wdrożono możliwość dynamicznego przydzielania MSI-X. Przygotowano się do przejścia na nowy backend IOMMUFD.
- W urządzeniu virtio-mem wprowadzono tryb „dynamic-memslots=on” dla dynamicznego przydzielania wielu slotów pamięci zamiast statycznego przydzielania jednej dużej puli. Użycie trybu pozwala na zmniejszenie zużycia pamięci w dużych urządzeniach virtio-mem, które przydzielają maszynie wirtualnej małą ilość pamięci.
- W emulatorze architektury x86 podczas emulacji środowiska hipernadzorcy Xen KVM zapewniono wsparcie dla konsoli PV i urządzeń sieciowych, a także uproszczono polecenia dla urządzeń blokowych i sieciowych. W klasycznym generatorze kodu TCG dodano wsparcie dla instrukcji SHA.
- W emulatorze architektury ARM zrealizowano emulację CPU Cortex-A710 i Neoverse-N2. Dodano wsparcie dla rozszerzeń procesora PACQARMA3, EPAC, Pauth2, FPAC, FPACCOMBINE, TIDCP1, MOPS, HBC i HPMN0. Zrealizowano modelowanie urządzeń CFU/CFI i TRNG dla płyty Xilinx Versal.
- W emulatorze architektury RISC-V wprowadzono zestaw wektorowych instrukcji kryptograficznych. Dodano wsparcie dla wirtualnych IRQ i filtrowania IRQ. Stabilizowane jest wsparcie dla rozszerzeń Zicond. Dodano wsparcie dla rozszerzeń do wirtualizacji AIA (Advanced Interrupt Architecture) przez KVM.
- W emulatorze architektury HPPA zapewniono emulację 64-bitowego CPU PA-RISC 2.0 oraz emulację systemu C3700, w tym kontrolera pamięci Astro oraz mostków PCI Elroy.
- W emulatorze architektury LoongArch zrealizowano emulację CPU Loongson LA132. Dodano wsparcie dla rozszerzenia zestawu instrukcji LASX oraz instrukcji PRELDX.
- W emulatorze architektury s390x dodano wsparcie vfio-ap dla przekazywania adaptera kryptograficznego do zabezpieczonych systemów gościnnych.
- W emulatorze Tricore dodano wsparcie dla procesorów TC37x (ISA 1.6.2) i instrukcji CRCN, FTOU, FTOHP, HPTOF.
Źródło: opennet.ru
