rilascio del progetto . Come emulatore, QEMU permette di eseguire un programma compilato per una piattaforma hardware su un sistema con un'architettura completamente diversa, ad esempio, eseguire un'applicazione per ARM su un PC compatibile x86. In modalità virtualizzazione, le prestazioni di esecuzione del codice in un ambiente isolato si avvicinano a quelle di un sistema nativo grazie all'esecuzione diretta delle istruzioni sulla CPU e all'uso dell'ipervisore Xen o del modulo KVM.
Inizialmente, il progetto è stato creato da Fabrice Bellard con l'obiettivo di consentire l'esecuzione di file eseguibili Linux compilati per la piattaforma x86 su architetture diverse da x86. Nel corso degli anni, è stata aggiunta la supporto per l'emulazione completa di 14 architetture hardware e il numero dei dispositivi hardware emulati ha superato 400. Per la preparazione della versione 4.0, sono state introdotte oltre 3100 modifiche da 220 sviluppatori.
Le chiave , aggiunte in QEMU 4.0:
- Nel emulatore dell'architettura ARM è stata aggiunta la supporto per le estensioni delle istruzioni ARMv8+: SB, PredInv, HPD, LOR, FHM, AA32HPD,
PAuth, JSConv, CondM, FRINT e BTI. È stata aggiunta la supporto per l'emulazione delle schede "Musca" e "MPS2". È stata migliorata l'emulazione dell'ARM PMU (Power Management Unit). Nella piattaforma è stata aggiunta la possibilità di utilizzare oltre 255 GB di RAM e il supporto per le immagini u-boot di tipo "noload"; - Nell'emulatore dell'architettura x86 nel motore di accelerazione della virtualizzazione (Intel Hardware Accelerated Execution) è stato aggiunto il supporto per host compatibili con POSIX, come Linux e NetBSD (precedentemente era supportata solo la piattaforma Darwin). Nell'emulatore del chipset Q35 (ICH9), per le porte PCIe principali è ora possibile dichiarare opzionalmente la massima velocità (16GT/s) e il numero di linee di connessione (x32), secondo la specifica PCIe 4.0 (per garantire la compatibilità predefinita per i vecchi tipi di macchine QEMU, viene impostato 2.5GT/s e x1). È stata fornita la possibilità di caricare immagini Xen PVH con l'opzione "-kernel";
- Nell'emulatore dell'architettura MIPS è stata aggiunta la supporto per l'emulazione multi-threading utilizzando il generatore di codice classico TCG (Tiny Code Generator). È stata aggiunta anche la supporto per l'emulazione della CPU I7200 (nanoMIPS32 ISA) e I6500 (MIPS64R6 ISA), la possibilità di gestire richieste di tipo CPU utilizzando il protocollo QMP (QEMU Management Protocol), è stata aggiunta la supporto per i registri di configurazione SAARI e SAAR. È stato migliorato il funzionamento delle macchine virtuali di tipo Fulong 2E. È stata aggiornata l'implementazione dell'Interthread Communication Unit;
- Nell'emulatore dell'architettura PowerPC è stata aggiunta la supporto per l'emulazione del controller delle interruzioni XIVE, è stata ampliata la supporto per POWER9, per la serie P è stata aggiunta la possibilità di connessione a caldo dei ponti host PCI (PHB, PCI host bridge). È stata inclusa per impostazione predefinita la protezione contro attacchi Spectre e Meltdown;
- Nell'emulatore dell'architettura RISC-V è stata aggiunta la supporto per l'emulazione di PCI e USB. Nel server di debug incorporato (gdbserver) è stata implementata la supporto per la definizione di elenchi di registri nei file XML. È stata aggiunta la supporto per i campi mstatus TSR, TW e TVM;
- Nell'emulatore dell'architettura s390 è stata aggiunta la compatibilità con il modello CPU z14 GA 2, insieme al supporto per l'emulazione delle estensioni delle istruzioni per calcoli in virgola mobile e operazioni vettoriali. In vfio-ap è stata introdotta la possibilità di collegare dispositivi in hot-plug;
- Nell'emulatore di processori della famiglia Tensilica Xtensa è migliorato il supporto per SMP su Linux e aggiunto il supporto per l'estensione FLIX (Flexible Length Instructions Extension);
- Nell'interfaccia grafica è stata aggiunta l'opzione '-display spice-app' per configurare e avviare una variante del client di accesso remoto Spice con un layout simile all'interfaccia GTK di QEMU;
- Nell'implementazione del server VNC è stato aggiunto il supporto per la gestione degli accessi mediante le opzioni tls-authz/sasl-authz;
- In QMP (QEMU Management Protocol) è stato introdotto il supporto per l'esecuzione centralizzata/esterna (Out-of-band) di comandi e sono state implementate ulteriori istruzioni per gestire dispositivi a blocchi;
- In VFIO è stata implementata l'interfaccia EDID per mdev supportati (Intel vGPU), consentendo di modificare la risoluzione dello schermo utilizzando le opzioni xres e yres;
- Per Xen è stato aggiunto un nuovo dispositivo 'xen-disk', in grado di creare autonomamente un backend di dischi per Xen PV (senza richiedere l'accesso a xenstore). È stata aumentata la performance del backend del disco Xen PV e aggiunta la possibilità di ridimensionare il disco;
- Negli dispositivi a blocchi di rete sono state ampliate le capacità di diagnostica e tracciamento, migliorata la compatibilità del client con implementazioni problematiche del server NBD. In qemu-nbd sono state aggiunte le opzioni '--bitmap', '--list' e '--tls-authz';
- Nel dispositivo IDE/via emulato è stata aggiunta la compatibilità con la modalità PCI IDE;
- È stato aggiunto il supporto per l'algoritmo lzfse per la compressione delle immagini dmg. Per il formato qcow2 è stata aggiunta la possibilità di collegare file esterni con dati. Le operazioni di estrazione qcow2 sono state spostate in un thread separato. Nelle immagini vmdk è stata aggiunta la supporto all'operazione 'blockdev-create';
- Nel dispositivo a blocchi virtio-blk è stato aggiunto il supporto per le operazioni DISCARD (informare il rilascio dei blocchi) e WRITE_ZEROES (azzeramento di un intervallo di blocchi logici);
- Nel dispositivo pvrdma è stato implementato il supporto per i servizi RDMA Management Datagram (MAD);
- Apportate , che interrompono la compatibilità all'indietro. Ad esempio, anziché l'opzione «handle» in «-fsdev» e «-virtfs», è necessario utilizzare le opzioni «local» o «proxy». Rimosse le opzioni «-virtioconsole» (sostituita da «-device virtconsole»), «-no-frame», «-clock», «-enable-hax» (sostituita da «-accel hax»). Rimosso il dispositivo «ivshmem» (utilizzare «ivshmem-doorbell» o «ivshmem-plain»). Interrotta la supporto per la compilazione con SDL1.2 (utilizzare SDL2).
Fonte: opennet.ru
