wydanie projektu . Jako emulator QEMU pozwala na uruchomienie programu skompilowanego dla jednej platformy sprzętowej na systemie o zupełnie innej architekturze, np. uruchomienie aplikacji ARM na komputerze PC zgodnym z x86. W trybie wirtualizacji w QEMU wydajność wykonywania kodu w izolowanym środowisku jest zbliżona do systemu natywnego dzięki bezpośredniemu wykonywaniu instrukcji na procesorze oraz zastosowaniu hypervisora Xen lub modułu KVM.
Projekt został pierwotnie stworzony przez Fabrice'a Bellarda, aby umożliwić uruchamianie plików wykonywalnych Linuksa zbudowanych dla platformy x86 na architekturach innych niż x86. Przez lata rozwoju dodano pełną obsługę emulacji dla 14 architektur sprzętowych, liczba emulowanych urządzeń sprzętowych przekroczyła 400. W ramach przygotowań do wersji 5.1 dokonano ponad 2500 zmian od 235 programistów.
Klucz dodano w QEMU 5.1:
- Dodano obsługę emulacji procesora na podstawie architektury . Wprowadzono obsługę płyt Arduino Duemilanove (ATmega168), Arduino Mega 2560 (ATmega2560),
Arduino Mega (ATmega1280) i Arduino UNO (ATmega328P). - Emulator architektury ARM obsługuje teraz pamięci nvdimm hot-unplug i hot-plug dla systemów gościnnych z ACPI. Zaimplementowano obsługę rozszerzeń ARMv8.2. и . Zapewniono wsparcie dla płyty sonorapass-bmc.
- Emulator architektury MIPS obsługuje teraz procesory Loongson 3A (R1 i R4). Wydajność emulacji instrukcji FPU i MSA została poprawiona.
- Emulator architektury RISC-V został zaktualizowany, aby obsługiwać procesory SiFive E34 i Ibex. Wprowadzono obsługę płyt HiFive1 revB i OpenTitan. Zapewniono obsługę więcej niż jednego procesora dla maszyn Spike.
- Emulator architektury PowerPC obsługuje teraz odzyskiwanie błędów w systemach gościa za pomocą FWNMI.
- W architekturze s390 dodano obsługę KVM w celu zapewnienia bezpiecznej wirtualizacji (bezpieczny tryb wykonywania).
- Emulator x86 zmniejsza obciążenie wirtualizacji nieprzystosowanych gości Windows, zapewniając tabelę emulowanych urządzeń ACPI (WAET). Ulepszona obsługa przyspieszenia dla systemu macOS.
- Sterownik urządzenia blokowego obsługuje teraz wirtualne urządzenia pamięci masowej z blokami logicznymi i fizycznymi o rozmiarze 2 MB.
- Dodano możliwość przekazywania haseł i kluczy szyfrujących do QEMU poprzez pęk kluczy jądra Linux, korzystając z obiektów nowego typu „secret-keyring”.
- W formacie qcow2 zaimplementowano obsługę algorytmu kompresji zstd.
- Narzędzie qemu-img ma nowe polecenie „bitmap” służące do manipulowania trwałymi mapami bitowymi w plikach qcow2. qemu-img implementuje również zarządzanie kluczami LUKS (keyslot) i oferuje dodatkowe możliwości dla poleceń „map” (--start-offset, --max-length) i „convert” (--bitmaps), a polecenie „measure” teraz wyświetla informacje o rozmiarze trwałych map bitowych w plikach qcow2.
- Sterownik NVMe obsługuje teraz trwałe obszary pamięci, wprowadzone w specyfikacji NVMe 1.4.
- W virtio dla systemów gościnnych z klasycznym generatorem kodu TCG (Tiny Code Generator) zaimplementowano możliwość korzystania z procesów , w tym virtiofsd. Rozszerzenie VHOST_USER_PROTOCOL_F_CONFIGURE_MEM_SLOTS zostało dodane do vhost-user, umożliwiając zarejestrowanie więcej niż 8 gniazd RAM.
Źródło: opennet.ru
