premiera projektu . 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 z procesorem zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest bliska natywnej dzięki bezpośredniemu wykonywaniu instrukcji na CPU i wykorzystaniu hypervisora Xen lub modułu KVM.
Pierwotnie projekt został stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania plików wykonywalnych Linuxa, skompilowanych dla platformy x86, na architekturach innych niż x86. W trakcie rozwoju dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń sprzętowych przekroczyła 400. Przygotowując wersję 5.1, wprowadzono ponad 2500 zmian od 235 programistów.
Kluczowe , dodane w QEMU 5.1:
- Dodano wsparcie dla emulacji CPU opartej na architekturze . Wprowadzono wsparcie dla płyty Arduino Duemilanove (ATmega168), Arduino Mega 2560 (ATmega2560),
Arduino Mega (ATmega1280) i Arduino UNO (ATmega328P). - W emulatorze architektury ARM dodano możliwość gorącego odłączania pamięci (hot-unplug), a także gorącego podłączania pamięci NVDIMM dla systemów gości z ACPI. Zrealizowano wsparcie dla rozszerzeń ARMv8.2 i . Zapewniono wsparcie dla płyty sonorapass-bmc.
- W emulatorze architektury MIPS dodano wsparcie dla CPU Loongson 3A (R1 i R4). Zwiększono wydajność emulacji instrukcji FPU i MSA.
- W emulatorze architektury RISC-V dodano wsparcie dla CPU SiFive E34 i Ibex. Zrealizowano wsparcie dla płyt HiFive1 revB i OpenTitan. Dla maszyn Spike zapewniono wsparcie dla więcej niż jednego CPU.
- W emulatorze architektury PowerPC wprowadzono wsparcie dla odzyskiwania błędów w systemach gości za pomocą FWNMI.
- Dla architektury s390 dodano wsparcie KVM dla zabezpieczonej wirtualizacji (tryb bezpiecznego wykonania).
- W emulatorze architektury x86 ograniczono obciążenia związane z wirtualizacją nieprzystosowanych systemów gości z Windows, poprzez udostępnienie tabeli emulowanych urządzeń ACPI WAET (Windows ACPI Emulated Device Table). Udoskonalono wsparcie dla akceleracji dla macOS.
- W sterowniku urządzeń blokowych dodano wsparcie dla wirtualnych urządzeń pamięci o logicznych i fizycznych blokach o rozmiarze 2MB.
- Dodano możliwość przesyłania w QEMU haseł i kluczy do szyfrowania przez keyring jądra Linuxa za pomocą obiektów nowego typu „secret-keyring”.
- Dla formatu qcow2 wprowadzono wsparcie dla algorytmu kompresji zstd.
- W narzędziu qemu-img dodano nowe polecenie ‘bitmap’ do manipulacji stałymi bitmapami w plikach qcow2. W qemu-img wprowadzono również zarządzanie kluczami LUKS (keyslot) oraz dodano dodatkowe funkcje dla poleceń „map” (—start-offset, —max-length) i „convert” (—bitmaps), a w poleceniu „measure” dodano możliwość wyświetlania informacji o rozmiarze stałych bitmap w plikach qcow2.
- W sterowniku NVMe dodano obsługę stałych obszarów pamięci (Persistent Memory Region), które pojawiły się w specyfikacji NVMe 1.4.
- W virtio dla systemów gościnnych z klasycznym generatorem kodu TCG (Tiny Code Generator) wprowadzono możliwość korzystania z procesów , w tym virtiofsd. W vhost-user dodano rozszerzenie VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS, które umożliwia rejestrowanie więcej niż 8 slotów RAM.
Źródło: opennet.ru
