Wydanie emulatora QEMU 9.0.0

Wydano QEMU 9.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 kompatybilnym z x86 komputerze PC. W trybie wirtualizacji wydajność wykonania kodu w izolowanym środowisku jest zbliżona do systemu sprzętowego dzięki bezpośredniemu wykonywaniu instrukcji na CPU oraz wykorzystaniu hipernadzorcy Xen lub modułu KVM w Linuxie, lub modułu NVMM w NetBSD.

Projekt został pierwotnie stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania plików wykonywalnych Linux skompilowanych dla platformy x86 na architekturach różniących się od x86. W miarę rozwoju dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń sprzętowych przekroczyła 400. W przygotowaniach do wersji 9.0 wprowadzono ponad 2700 zmian od 220 deweloperów.

Kluczowe ulepszenia wprowadzone w QEMU 9.0:

  • Do sterownika virtio-blk, który zapewnia wirtualne urządzenie blokowe dla maszyn wirtualnych, dodano wsparcie dla wielopoziomowego systemu kolejek (multiqueue), co pozwala na podział kolejek dla różnych urządzeń blokowych w celu zapewnienia wielowątkowego dostępu w systemach wielordzeniowych (różne kolejki jednego dysku mogą być obsługiwane przez różne wątki wejścia/wyjścia).
  • W urządzeniu blokowym usb-storage dodano wsparcie dla właściwości ‘backend_defaults’, ‘logical_block_size’, ‘physical_block_size’, ‘min_io_size’, ‘opt_io_size’ oraz ‘discard_granularity’.
  • W bibliotece gdbstub, przeznaczonej do zdalnego debugowania w GDB z użyciem protokołu RSP (Remote Serial Protocol), dodano wsparcie dla trybu fork-follow, operacji siginfo:read oraz przechwytywania wywołań systemowych w przestrzeni użytkownika.
  • Backendy wstępnego przydziału pamięci (preallocation) dostosowano do pracy w trybie wielowątkowym i teraz mogą jednocześnie obsługiwać żądania z różnych wątków.
  • Do narzędzi do migracji maszyn wirtualnych dodano tryb «mapped-ram», który zwiększa efektywność tworzenia zrzutów maszyn wirtualnych. Udoskonalone określanie strony pamięci o zerowej wartości znacznie przyspieszyło migrację nieaktywnych maszyn wirtualnych przy wsparciu systemu multifd. W migracji opartej na VFIO (Virtual Function I/O) wdrożono wsparcie dla ponownego uruchamiania z zapisanego stanu (checkpoint-restart).
  • Przepisana implementacja urządzenia ESP SCSI (am53c974/dc390).
  • Dodano wsparcie dla algorytmu szyfrowania SM4 oraz umożliwiono jego użycie w sterowniku urządzenia blokowego ‘luks’.
  • W sterowniku ‘luks’ dodano wsparcie dla tworzenia i używania plików z zapisanymi nagłówkami LUKS.
  • W emulatorze architektury ARM wprowadzono wsparcie dla płyt L475E-IOT01A IoT, mp3-an536 (MPS3 z oprogramowaniem AN536) oraz raspi4b (Raspberry Pi 4 Model B). Dodano wsparcie dla emulacji rozszerzeń procesora ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) oraz NV2 (Enhanced Nested Virtualization). Rozszerzono możliwości emulatorów płyt Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx oraz virt.
  • W emulatorze architektury RISC-V dodano wsparcie dla rozszerzeń architektury zestawu rozkazów Zacas, amocas, RVA22, Zaamo, Zalrsc oraz Ztso. maszynach wirtualnych W RISC-V dodano wsparcie dla SMBIOS. Wprowadzono wsparcie ACPI dla SRAT, SLIT, AIA i PLIC. Zaktualizowano wsparcie dla tabel RHCT.
  • W emulatorze architektury HPPA do wersji 16 zaktualizowano oprogramowanie SeaBIOS-hppa. Maksymalny rozmiar pamięci zwiększono z 3 GB do 3840 MB. Dodano wsparcie dla opcji ‘—nodefaults’.
  • W emulatorze architektury LoongArch wprowadzono wsparcie dla przyspieszenia KVM oraz implementację wektorowych rozszerzeń zestawu rozkazów LSX/LASX.
  • W emulatorze architektury s390x dodano wsparcie dla instrukcji CVDG, CVB, CVBY oraz CVBG. Ulepszono emulację LAE (Load Address Extended).
  • W emulatorze architektury 68k dodano urządzenie nubus-virtio-mmio, umożliwiające dostęp do urządzeń virtio z maszyn q800.
  • Zrealizowano kompilację z flagiem ‘-fzero-call-used-regs’, które chroni przed ujawnieniem informacji z funkcji i zmniejsza liczbę bloków, które mogą być wykorzystane do konstruowania gadżetów ROP (Return-Oriented Programming) w exploitach. Dodano również kompilację z flagiem ‘-ftrivial-auto-var-init=zero’ dla automatycznej inicjalizacji zerową wszystkich zmiennych przechowywanych na stosie.
  • Aby uruchomić QEMU z KVM, teraz wymagana jest co najmniej wersja jądra Linux 4.4. Dla hostów ARM planowane jest podniesienie tego wymogu do wersji 4.19 w przyszłości. Wsparcie dla 32-bitowych systemów Windows jako systemów operacyjnych hosta zostało zakończone.
  • Dodano wsparcie dla OpenBSD 7.4.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster