Została zaprezentowana wersja projektu QEMU 10.1.0. Jako emulator QEMU pozwala uruchomić program skompilowany dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, na przykład uruchomić aplikację dla ARM na komputerze zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest bliska systemowi sprzętowemu dzięki bezpośredniemu wykonywaniu instrukcji na CPU oraz wykorzystaniu hipernadzorcy Xen lub modułu KVM w Linuksie, lub modułu NVMM w NetBSD.
Początkowo projekt został stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania skompilowanych dla platformy x86 plików wykonywalnych Linuksa na architekturach innych niż x86. Na przestrzeni lat dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń przekroczyła 400. Przygotowując wersję 11.0, wprowadzono ponad 2700 zmian od 226 deweloperów.
Kluczowe ulepszenia wprowadzone w QEMU 10.1:
- W VFIO (Virtual Function I/O) wprowadzono początkowe wsparcie dla mapowania pamięci w poufnych środowiskach gościnnych, w których stosuje się szyfrowanie pamięci w celu ochrony przed ingerencją i analizą ze strony administratora systemu gospodarza. Zmiana ta pozwala na organizację przekazywania urządzeń do systemów gościnnych, które są zabezpieczone za pomocą mechanizmów Intel TDX (Trusted Domain Extensions) i AMD SEV-SNP (Secure Nested Paging).
- Dodano możliwość korzystania z mechanizmu multifd w celu przyspieszenia migracji na żywo w trybie postcopy, w którym najpierw przenoszone jest i uruchamiane na docelowym hoście, maszyna wirtualna, a następnie stopniowo przenoszone jest niewykorzystywane w pracy zawartość pamięci operacyjnej. Optyzowano tryb migracji na żywo precopy. Dodano wsparcie dla migracji RDMA dla IPv6.
- W QEMU Guest Agent dodano polecenie „guest-get-load” do uzyskiwania informacji o poziomie obciążenia systemu (średnia obciążenia) w maszynach wirtualnych z Windows.
- W virtuio-gpu dodano wsparcie dla podstawiania nazwy w EDID (Extended Display Identification Data).
- W emulatorze architektury x86 zaimplementowano możliwość korzystania z mechanizmu Intel TDX (Trusted Domain Extensions) w celu szyfrowania pamięci operacyjnej systemów gościnnych działających pod zarządzaniem hipernadzorcy KVM. Dodano także wsparcie dla inicjalizacji poufnych maszyn wirtualnych w formacie IGVM (Independent Guest Virtual Machine), do ochrony których wykorzystywane są mechanizmy Intel TDX i AMD SEV-SNP.
- W emulatorze architektury ARM zrealizowano wsparcie dla płyt (Analog Devices ‘max78000fthr’, ‘ast2700fc’, Meta ‘catalina-bmc’, NVIDIA ‘gb200-bmc’ i ‘ast2700a0-evb’. Dodano emulację rozszerzeń CPU FEAT_SME2, FEAT_SME2p1, FEAT_SME_B16B16, FEAT_SME_F16F16, FEAT_SVE_B16B16 i FEAT_SVE2p1. Do typowej wirtualnej platformy ARM ‘virt’ dodano wsparcie dla zagnieżdżonej wirtualizacji przy użyciu KVM, a także wsparcie dla magistrali CXL (Compute Express Link) i hot-plugging urządzeń PCI za pomocą ACPI.
- W emulatorze architektury RISC-V wprowadzono emulację procesora Kunminghu oraz platformy opartej na nim. Dodano wsparcie dla rozszerzenia architektury zestawu instrukcji Ziccif z realizacją atomowej wersji instrukcji fetch.
- W emulatorze architektury LoongArch dodano wsparcie dla emulacji kontrolera przerwań irqchip po stronie jądra.
- Dodano eksperymentalne wsparcie dla kompilacji do postaci WebAssembly (WASM) przy użyciu kompilatora Emscripten.
- W komponentach dla środowisk host-owych zaprzestano wsparcia dla Debian 11.
Źródło: opennet.ru
