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.
Projekt został pierwotnie stworzony przez Fabrice'a Bellarda w celu umożliwienia uruchamiania plików wykonywalnych Linux skompilowanych dla platformy x86 na architekturach innych niż x86. W ciągu lat rozwoju dodano wsparcie dla pełnej emulacji 14 architektur sprzętowych, a liczba emulowanych urządzeń sprzętowych przekroczyła 400. W przygotowaniu wersji 5.0 wprowadzono ponad 2800 zmian od 232 deweloperów.
Kluczowe , dodanych w QEMU 5.0:
- Możliwość przekazywania części systemu plików z środowiska hosta do systemu gościa za pomocą . System gościa może zamontować katalog oznaczony do eksportu po stronie systemu hosta, co znacznie upraszcza organizację współdzielenia katalogów w systemach wirtualizacji. W przeciwieństwie do korzystania z sieciowych systemów plików, takich jak NFS i virtio-9P, virtiofs pozwala osiągnąć wydajność zbliżoną do lokalnego systemu plików;
- live-migracji danych z zewnętrznych procesów korzystających z magistrali QEMU D-Bus;
- Możliwość korzystania z dla zapewnienia działania głównej pamięci operacyjnej systemu gościa. Backend określa się za pomocą opcji «-machine memory-backend»;
- Nowy filtr «compress», który można wykorzystać do tworzenia skompresowanych kopii zapasowych obrazów;
- Polecenie «qemu-img measure» może teraz działać z obrazami LUKS, a do polecenia «qemu-img convert» dodano opcję «—target-is-zero» umożliwiającą pominięcie zerowania docelowego obrazu;
- Dodano eksperymentalne wsparcie dla procesu qemu-storage-daemon, który udostępnia dostęp do poziomu blokowego QEMU i polecenia QMP, w tym wykonywanie operacji z urządzeniami blokowymi i wbudowany serwer NBD, bez potrzeby uruchamiania pełnej maszyny wirtualnej;
- W emulatorze architektury ARM dodano możliwość emulacji CPU Cortex-M7 oraz zapewniono wsparcie dla płyt tacoma-bmc, Netduino Plus 2 i Orangepi PC. Do emulowanych maszyn ‘virt’ dodano wsparcie dla urządzeń vTPM i virtio-iommu. Ogłoszono przestarzałą możliwość korzystania z systemów hosta AArch32 do uruchamiania środowisk gościa KVM. Wdrożono wsparcie dla emulacji następujących możliwości architektur:
- ARMv8.1: VHE, VMID16, PAN, PMU
- ARMv8.2: UAO, DCPoP, ATS1E1, TTCNP
- ARMv8.3: RCPC, CCIDX
- ARMv8.4: PMU, RCPC
- W emulatorze architektury HPPA dodano wsparcie dla graficznego interfejsu konsoli z wykorzystaniem graficznego urządzenia HP Artist;
- W emulatorze architektury MIPS dodano wsparcie dla instrukcji GINVT (Global Invalidation TLB);
- W emulatorze architektury PowerPC dla maszyn 'powernv' dodano emulację sprzętowych środków przyspieszania KVM do uruchamiania systemów gościnnych.
KVM z klasycznym generatorem kodu TCG (Tiny Code Generator). Dla emulacji pamięci trwałej dodano wsparcie dla odzwierciedlonych w pliku NVDIMM. Dla maszyn 'pseries' usunięto konieczność ponownego uruchomienia dla synchronizacji pracy kontrolerów przerwań XIVE/XICS w trybie 'ic-mode=dual'; - W emulatorze architektury RISC-V dla płyt 'virt' i 'sifive_u' zaimplementowano wsparcie dla typowych sterowników syscon w Linux do zarządzania zasilaniem i ponownym uruchamianiem. Dla płyty 'virt' dodano wsparcie dla Goldfish RTC. Dodano eksperymentalną implementację rozszerzeń hipernadzorcy;
- W emulatorze architektury s390 dodano wsparcie AIS (Adapter Interrupt Suppression) podczas pracy w trybie KVM.
Źródło: opennet.ru
