Wydanie emulatora QEMU 4.0

uformowany wydanie projektu QEMU 4.0. 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 4.0 dokonano ponad 3100 zmian od 220 programistów.

Klucz ulepszeniadodano w QEMU 4.0:

  • Do emulatora architektury ARM dodano obsługę rozszerzeń instrukcji ARMv8+: SB, PredInv, HPD, LOR, FHM, AA32HPD,
    PAuth, JSConv, CondM, FRINT i BTI. Dodano obsługę emulacji płyt Musca i MPS2. Ulepszona emulacja ARM PMU (jednostki zarządzania energią). Na platformę wirtualna dodano możliwość wykorzystania ponad 255 GB RAM-u oraz obsługę obrazów u-boot typu „noload”;

  • W emulatorze architektury x86 w silniku akceleracji wirtualizacji HAX (Intel Hardware Accelerated Execution) dodał obsługę hostów zgodnych z POSIX, takich jak Linux i NetBSD (poprzednio obsługiwana była tylko platforma Darwin). W emulatorze chipsetu Q35 (ICH9) dla głównych portów PCIe można teraz opcjonalnie zadeklarować maksymalną prędkość (16GT/s) i liczbę linii połączeniowych (x32) zdefiniowaną w specyfikacji PCIe 4.0 (aby zapewnić kompatybilność, 2.5GT jest instalowany domyślnie dla starszych typów maszyn QEMU /s i x1). Możliwe jest ładowanie obrazów Xen PVH z opcją „-kernel”;
  • Emulator architektury MIPS dodał obsługę emulacji wielowątkowej przy użyciu klasycznego generatora kodu TCG (Tiny Code Generator). Dodano także obsługę emulacji CPU I7200 (nanoMIPS32 ISA) i I6500 (MIPS64R6 ISA), możliwość przetwarzania żądań typu procesora przy użyciu protokołu QMP (QEMU Management Protocol), dodano obsługę rejestrów konfiguracyjnych SAARI i SAAR. Poprawiona wydajność maszyn wirtualnych typu Fulong 2E. Zaktualizowana implementacja modułu komunikacji międzywątkowej;
  • W emulatorze architektury PowerPC dodano obsługę emulacji kontrolera przerwań XIVE, rozszerzono obsługę POWER9, a dla serii P dodano możliwość hot plug mostków hosta PCI (PHB, most hosta PCI). Domyślnie włączona jest ochrona przed atakami Spectre i Meltdown;
  • Do emulatora architektury RISC-V dodano obsługę emulacji PCI i USB. Wbudowany serwer debugowania (gdbserver) obsługuje teraz określanie list rejestrów w plikach XML. Dodano obsługę pól mstatus TSR, TW i TVM;
  • Emulator architektury s390 dodał obsługę modelu procesora z14 GA 2, a także obsługę emulacji rozszerzeń instrukcji dla operacji zmiennoprzecinkowych i wektorowych. Do vfio-ap dodano możliwość podłączania urządzeń podczas pracy;
  • Emulator procesora z rodziny Tensilica Xtensa ma ulepszoną obsługę SMP dla systemu Linux i dodał obsługę FLIX (rozszerzenie instrukcji o elastycznej długości);
  • Do interfejsu graficznego dodano opcję „-display spice-app”, aby skonfigurować i uruchomić wersję klienta zdalnego dostępu Spice o wyglądzie podobnym do interfejsu QEMU GTK;
  • Dodano obsługę kontroli dostępu przy użyciu opcji tls-authz/sasl-authz do implementacji serwera VNC;
  • QMP (QEMU Management Protocol) dodał obsługę scentralizowanego/zewnętrznego (poza pasmem) wykonywania poleceń i zaimplementował dodatkowe polecenia do pracy z urządzeniami blokowymi;
  • Do VFIO dodano implementację interfejsu EDID dla obsługiwanych mdevów (Intel vGPU), umożliwiającą zmianę rozdzielczości ekranu za pomocą opcji xres i yres;
  • Do Xen dodano nowe urządzenie „xen-disk”, które może samodzielnie utworzyć backend dyskowy dla Xen PV (bez dostępu do xenstore). Zwiększono wydajność backendu dysku Xen PV i dodano możliwość zmiany rozmiaru dysku;
  • Rozszerzono możliwości diagnostyki i śledzenia w urządzeniach blokowych sieci oraz poprawiono zgodność klienta z problematycznymi implementacjami serwerów NBD. Dodano opcje „--bitmap”, „--list” i „--tls-authz” do qemu-nbd;
  • Dodano obsługę trybu PCI IDE do emulowanego urządzenia IDE/przez;
  • Dodano obsługę algorytmu lzfse do kompresji obrazów dmg. Dla formatu qcow2 dodano obsługę podłączania zewnętrznych plików danych. Operacje rozpakowywania qcow2 zostały przeniesione do osobnego wątku. Dodano obsługę operacji „blockdev-create” w obrazach vmdk;
  • Urządzenie blokowe virtio-blk dodało obsługę operacji DISCARD (informowanie o zwolnieniu bloków) oraz WRITE_ZEROES (zerowanie zakresu bloków logicznych);
  • Urządzenie pvrdma obsługuje usługi datagramów zarządzania RDMA (MAD);
  • Przyczynił się zmiany, naruszając wsteczną kompatybilność. Na przykład zamiast opcji „handle” w „-fsdev” i „-virtfs” powinieneś użyć opcji „local” lub „proxy”. Opcje „-virtioconsole” (zastąpione przez „-device virtconsole”), „-no-frame”, „-clock”, „-enable-hax” (zastąpione przez „-accel hax”) zostały usunięte. Usunięto urządzenie „ivshmem” (należy używać „ivshmem-doorbell” i „ivshmem-plain”). Zaprzestano obsługi budowania za pomocą SDL1.2 (musisz użyć SDL2).

Źródło: opennet.ru

Dodaj komentarz