rilascio del progetto . Come emulatore, QEMU consente 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à di virtualizzazione, le prestazioni di esecuzione del codice in un ambiente isolato sono vicine a quelle di un sistema nativo grazie all'esecuzione diretta delle istruzioni sulla CPU e all'utilizzo dell'iper-visore Xen o del modulo KVM.
Il progetto è stato originariamente 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, superando i 400 dispositivi hardware emulati. Nella preparazione della versione 4.0 sono state apportate oltre 3100 modifiche da 220 sviluppatori.
Chiave , aggiunti in QEMU 4.0:
- Nell'emulatore dell'architettura ARM è stata aggiunta la supporto per le estensioni di istruzioni ARMv8+: SB, PredInv, HPD, LOR, FHM, AA32HPD,
PAuth, JSConv, CondM, FRINT e BTI. È stata migliorata l'emulazione dell'ARM PMU (Unità di Gestione dell'Energia). È stata aggiunta la con la possibilità di utilizzare oltre 255 GB di RAM e supporto per le immagini u-boot con tipo "noload"; - Nell'emulatore dell'architettura x86 nel motore di accelerazione della virtualizzazione (Intel Hardware Accelerated Execution) è stato aggiunto il supporto per host compatibili POSIX, come Linux e NetBSD (in precedenza supportato solo sulla piattaforma Darwin). Nell'emulatore del chipset Q35 (ICH9) per le porte PCIe principali, ora può essere dichiarata opzionalmente la massima velocità (16GT/s) e il numero di linee di connessione (x32), definiti nella specifica PCIe 4.0 (per garantire la compatibilità, per impostazione predefinita, per vecchi tipi di macchine QEMU è installato 2.5GT/s e x1). È stata inclusa 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 classico generatore di codice TCG (Tiny Code Generator). È stata aggiunta la supporto per l'emulazione della CPU I7200 (nanoMIPS32 ISA) e I6500 (MIPS64R6 ISA), la possibilità di elaborare richieste di tipo CPU utilizzando il protocollo QMP (QEMU Management Protocol), è stata aggiunta la supporto per i registri di configurazione SAARI e SAAR. È stata migliorata l'operatività 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 le serie P è stata aggiunta la possibilità di collegare a caldo i ponti PCI (PHB, PCI host bridge). È stata inclusa per impostazione predefinita la protezione contro gli 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 integrato (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 supporto per il modello CPU z14 GA 2 e la supporto per l'emulazione delle estensioni di istruzioni per i calcoli in virgola mobile e le operazioni vettoriali. Nel vfio-ap è stata aggiunta la possibilità di collegare a caldo i dispositivi;
- Nell'emulatore dei processori della famiglia Tensilica Xtensa è stata migliorata la supporto per SMP per Linux e aggiunta la 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'interfaccia simile a quella di GTK di QEMU;
- Nell'implementazione del server VNC è stata aggiunta la supporto per la gestione degli accessi tramite le opzioni tls-authz/sasl-authz;
- Nel QMP (QEMU Management Protocol) è stata aggiunta la supporto per l'esecuzione centralizzata/esterna (Out-of-band) dei comandi e sono stati implementati comandi aggiuntivi per la gestione dei dispositivi di blocco;
- Nel VFIO è stata implementata l'interfaccia EDID per i mdev supportati (Intel vGPU), che consente di modificare la risoluzione dello schermo utilizzando le opzioni xres e yres;
- Per Xen è stato aggiunto un nuovo dispositivo ‘xen-disk’, che può autonomamente creare un backend disco per Xen PV (senza interagire con xenstore). È stata aumentata la performance del backend disco Xen PV ed è stata aggiunta la possibilità di modificare la dimensione del disco;
- Nei dispositivi di blocco di rete sono state ampliate le capacità di diagnostica e tracciamento, migliorata la compatibilità del client con implementazioni problematiche del server NBD. Nella qemu-nbd sono state aggiunte opzioni “—bitmap”, “—list” e “—tls-authz”;
- Nell'emulatore del dispositivo IDE/via è stata aggiunta la supporto per la modalità PCI IDE;
- È stata aggiunta la supporto per l'uso dell'algoritmo lzfse per la compressione delle immagini dmg. Per il formato qcow2 è stata aggiunta la supporto per il collegamento di file esterni con dati. Le operazioni di decompressione del qcow2 sono state spostate in un thread separato. Nelle immagini vmdk è stata aggiunta la supporto per l'operazione “blockdev-create”;
- Nel dispositivo di blocco virtio-blk è stata aggiunta la supporto per le operazioni DISCARD (informare sul rilascio dei blocchi) e WRITE_ZEROES (azzera l'intervallo di blocchi logici);
- Nel dispositivo pvrdma è stata implementata la supporto per i servizi RDMA Management Datagram (MAD);
- Aggiornato , che violano la retrocompatibilità. Ad esempio, invece dell'opzione «handle» in «-fsdev» e «-virtfs» si devono utilizzare le opzioni «local» o «proxy». Sono state rimosse le opzioni «-virtioconsole» (sostituita da «-device virtconsole»), «-no-frame», «-clock», «-enable-hax» (sostituita da «-accel hax»). È stato rimosso il dispositivo «ivshmem» (si devono utilizzare «ivshmem-doorbell» o «ivshmem-plain»). È stata interrotta la supporto per la costruzione con SDL1.2 (è necessario utilizzare SDL2).
Fonte: opennet.ru
