prosjektutgivelse . Som emulator lar QEMU deg å kjøre et program som er bygget for én maskinvareplattform på et system med helt annen arkitektur, for eksempel å kjøre en applikasjon for ARM på en x86-kompatibel PC. I virtualiseringsmodus er ytelsen til å kjøre kode i et isolert miljø nær den native systemytelsen takket være direkte eksekvering av instruksjoner på CPU og bruk av hypervisor Xen eller KVM-modulen.
Prosjektet ble opprinnelig laget av Fabrice Bellard med mål om å gjøre det mulig å kjøre kompilte Linux-programmer for x86-plattformen på arkitekturer forskjellige fra x86. I løpet av utviklingen har støtten for fullstendig emulering blitt lagt til for 14 maskinvarearkitekturer, og antallet emulerte maskinvareenheter har nådd over 400. I forberedelsene til versjon 4.0 ble det gjort mer enn 3100 endringer av 220 utviklere.
Nøkkelfunksjoner , lagt til i QEMU 4.0:
- Emulatoren for ARM-arkitekturen har fått støtte for ARMv8+-instruksjonsutvidelser: SB, PredInv, HPD, LOR, FHM, AA32HPD,
PAuth, JSConv, CondM, FRINT og BTI. Det er lagt til støtte for emulering av "Musca"- og "MPS2"-plater. Emuleringen av ARM PMU (Power Management Unit) er forbedret. Til plattformen er det lagt til støtte for mer enn 255 GB RAM og støtte for u-boot bilder av typen "noload"; - I emulatoren for x86-arkitekturen har virtualiseringsakselerasjonsmotoren (Intel Hardware Accelerated Execution) fått støtte for POSIX-kompatible verter som Linux og NetBSD (tidligere ble kun Darwin-plattformen støttet). I emulatoren for Q35-brikkesett (ICH9) kan nå maksimal hastighet (16 GT/s) og antall tilkoblingslinjer (x32) spesifiseres for de primære PCIe-portene, som fastsatt i PCIe 4.0-spesifikasjonen (for å sikre kompatibilitet er standardinnstillingen for eldre maskintyper 2.5 GT/s og x1). Støtte for å laste opp Xen PVH-bilder med alternativet "-kernel" er gjort tilgjengelig;
- I emulatoren for MIPS-arkitekturen er det lagt til støtte for multitrådet emulering ved bruk av den klassiske kodegeneratoren TCG (Tiny Code Generator). Støtte for emulering av CPU I7200 (nanoMIPS32 ISA) og I6500 (MIPS64R6 ISA) er også lagt til, muligheten for behandling av CPU-forespørsel ved hjelp av QMP-protokollen (QEMU Management Protocol), samt støtte for SAARI- og SAAR-konfigurasjonsregistre. Ytelsen til virtuelle maskiner av typen Fulong 2E er forbedret. Implementeringen av Interthread Communication Unit er oppdatert;
- I emulatoren for PowerPC-arkitekturen er det lagt til støtte for emulering av XIVE-interruptkontroller, og støtten for POWER9 er utvidet. For P-serien er det lagt til mulighet for hot-plugging av hoved PCI-broer (PHB, PCI host bridge). Beskyttelse mot Spectre- og Meltdown-angrep er aktivert som standard;
- I emulatoren for RISC-V-arkitekturen er støtte for emulering av PCI og USB lagt til. I den innebygde debuggeren (gdbserver) er støtte for å spesifisere registrer lister i XML-filer implementert. Støtte for mstatus-feltene TSR, TW og TVM er lagt til;
- Emulatoren for s390-arkitektur har fått støtte for CPU-modellen z14 GA 2, samt støtte for emulering av instruksjonsutvidelser for flyttallsberegninger og vektoroperasjoner. I vfio-ap er det lagt til mulighet for hotplug av enheter;
- I emulatoren for Tensilica Xtensa-prosessorer er SMP-støtten for Linux forbedret, og FLIX (Flexible Length Instructions Extension) er blitt lagt til;
- Det er lagt til en ‘-display spice-app’-opsjon i det grafiske grensesnittet for å konfigurere og starte en versjon av Spice fjerntilgangsklienten med et utseende likt GTK-grensesnittet til QEMU;
- Implementeringen av VNC-serveren har fått støtte for tilgangskontroll ved hjelp av tls-authz/sasl-authz-alternativer;
- QMP (QEMU Management Protocol) har fått støtte for sentralisert/utside (Out-of-band) utførelse av kommandoer, og det er implementert flere kommandoer for arbeid med blokk enheter;
- I VFIO er det lagt til en implementering av EDID-grensesnittet for støttede mdev (Intel vGPU), som gjør det mulig å endre skjermoppløsning ved å bruke xres- og yres-alternativer;
- For Xen er det lagt til en ny enhet ‘xen-disk’, som selv kan opprette en disk backend for Xen PV (uten å gå gjennom xenstore). Ytelsen til disk backend for Xen PV er forbedret, og det er lagt til mulighet for å endre størrelsen på disken;
- I nettverksblokkerte enheter er diagnostikk- og sporingsevner utvidet, og klientkompatibiliteten med problematiske implementeringer av NBD-serveren er forbedret. Det er lagt til alternativene ‘—bitmap’, ‘—list’ og ‘—tls-authz’ i qemu-nbd;
- Det er lagt til støtte for PCI IDE-modus i det emulerte IDE/via-enheten;
- Støtte for lzfse-algoritmen for komprimering av dmg-bilder er lagt til. For qcow2-formatet er det lagt til støtte for tilkobling av eksterne filer med data. Utpakking av qcow2-operasjoner er flyttet til en egen trå; i vmdk-bilder er støtte for ‘blockdev-create’-operasjonen lagt til;
- I virtio-blk-blokkenheten er det lagt til støtte for DISCARD (informasjon om frigjøring av blokker) og WRITE_ZEROES (nullstilling av området med logiske blokker);
- I pvrdma-enheten er støtte for RDMA Management Datagram-tjenester (MAD) implementert;
- Det er gjort endringer , som bryter bakoverkompatibilitet. For eksempel, i stedet for alternativet «handle» i «-fsdev» og «-virtfs» bør alternativene «local» eller «proxy» brukes. Alternativene «-virtioconsole» (erstattet med «-device virtconsole»), «-no-frame», «-clock» og «-enable-hax» (erstattet med «-accel hax») er fjernet. Enheten «ivshmem» er fjernet (bruk «ivshmem-doorbell» eller «ivshmem-plain»). Støtte for bygging med SDL1.2 er avsluttet (bruk SDL2).
Kilde: opennet.ru
