Wydano wydanie projektu QEMU 6.2. 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 kompatybilnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest bliska sprzętowej dzięki bezpośredniemu wykonywaniu instrukcji na CPU i wykorzystaniu hypervizora Xen lub modułu KVM.
Projekt został pierwotnie stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania skompilowanych plików wykonywalnych Linux na architekturach innych niż x86. Przez lata rozwoju dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń przekroczyła 400. Przygotowując wersję 6.2, wprowadzono ponad 2300 zmian od 189 deweloperów.
Kluczowe ulepszenia dodane w QEMU 6.2:
- Do mechanizmu virtio-mem, który umożliwia dynamiczne podłączenie i odłączenie pamięci, maszyn wirtualnych, dodano pełne wsparcie dla zrzutów pamięci gościnnych systemów, operacji kopiowania przed i po migracji środowiska (pre-copy/post-copy) oraz tworzenia migawki gościnnego systemu w tle.
- W QMP (QEMU Machine Protocol) wprowadzono obsługę błędów DEVICE_UNPLUG_GUEST_ERROR, występujących po stronie gościnnej w przypadku awarii podczas wykonywania operacji dynamicznego podłączenia sprzętu.
- Rozszerzono składnię argumentów rozruchowych przetwarzanych w pluginach do klasycznego generatora kodu TCG (Tiny Code Generator). Wtyczka «cache» zdobyła wsparcie dla systemów wielordzeniowych.
- W emulatorze architektury x86 wprowadzono wsparcie dla modelu CPU Intel Snowridge-v4. Dodano wsparcie dla dostępu do enklaw Intel SGX (Software Guard eXtensions) z systemów gościnnych za pomocą urządzenia /dev/sgx_vepc po stronie systemu gospodarza i backendu «memory-backend-epc» w QEMU. Dla systemów gościnnych chronionych technologią AMD SEV (Secure Encrypted Virtualization) dodano możliwość weryfikowalnego bezpośredniego uruchomienia jądra (bez użycia bootloadera) poprzez ustawienie parametru ‘kernel-hashes=on’ w ‘sev-guest’.
- W emulatorze ARM na systemach gospodarza z chipem Apple Silicon wprowadzono wsparcie dla mechanizmu sprzętowego przyspieszenia „hvf” podczas uruchamiania gościnnych systemów opartych na architekturze AArch64. Dodano wsparcie dla emulacji procesorów Fujitsu A64FX. Wprowadzono nowy typ emulowanych maszyn „kudo-mbc”. Dla maszyn ‘virt’ dodano wsparcie dla emulacji ITS (Interrupt Translation Service) oraz możliwość używania ponad 123 procesorów w trybie emulacji. Dla emulowanych maszyn „xlnx-zcu102” i „xlnx-versal-virt” dodano wsparcie dla urządzeń BBRAM i eFUSE. Dla systemów opartych na chipie Cortex-M55 wprowadzono wsparcie dla mobilnego profilu rozszerzeń procesorowych MVE.
- W emulatorze architektury PowerPC dodano wstępne wsparcie dla modelu CPU POWER10 DD2.0. Dla emulowanych maszyn „powernv” poprawiono wsparcie dla architektury POWER10, a dla maszyn ‘pseries’ dodano opisy FORM2 PAPR NUMA.
- W emulatorze architektury RISC-V dodano wsparcie dla rozszerzeń zestawu instrukcji Zb[abcs]. Dla wszystkich emulowanych maszyn zezwolono na użycie opcji „host-user” i „numa mem”. Dodano wsparcie dla SiFive PWM (modulator szerokości impulsu).
- W emulatorze architektury 68k poprawiono wsparcie dla magistrali NuBus zaproponowanej przez firmę Apple, w tym możliwość ładowania obrazów pamięci ROM oraz wsparcie dla slotów przerwań.
- W blokowym urządzeniu qemu-nbd domyślnie włączono tryb buforowania operacji zapisu („writeback” zamiast „writethrough”) w celu dostosowania do zachowania qemu-img. Dodano opcję „—selinux-label” do przypisywania etykiet SELinux do gniazd Unix.
Źródło: opennet.ru
