lansarea proiectului . Ca emulator, QEMU permite rularea unei aplicații compilate pentru o platformă hardware pe un sistem cu o arhitectură complet diferită, de exemplu, executarea unei aplicații pentru ARM pe un PC compatibil x86. În modul de virtualizare, performanța executării codului într-un mediu izolat este apropiată de cea a unui sistem nativ datorită executării directe a instrucțiunilor pe CPU și folosirii hipervizorului Xen sau a modulului KVM.
Inițial, proiectul a fost creat de Fabrice Bellard cu scopul de a permite rularea fișierelor executabile Linux compilate pentru platforma x86 pe arhitecturi diferite de x86. De-a lungul anilor de dezvoltare, suportul pentru emularea completă a fost extins pentru 14 arhitecturi hardware, numărul dispozitivelor hardware emulate a depășit 400. Pentru versiunea 4.0, au fost aduse mai mult de 3100 de modificări de la 220 de dezvoltatori.
Principalele , adăugate în QEMU 4.0:
- În emulatorul arhitecturii ARM a fost adăugat suport pentru extensiile de instrucțiuni ARMv8+: SB, PredInv, HPD, LOR, FHM, AA32HPD,
PAuth, JSConv, CondM, FRINT și BTI. A fost adăugat suport pentru emularea plăcilor „Musca” și „MPS2”. Emularea ARM PMU (Unitatea de Management al Energiei) a fost îmbunătățită. În platformă a fost adăugată posibilitatea utilizării a peste 255 GB RAM și suportul pentru imagini u-boot de tip „noload”; - În emulatorul arhitecturii x86, în motorul de accelerare a virtualizării (Intel Hardware Accelerated Execution) a fost adăugat suport pentru gazde compatibile cu POSIX, cum ar fi Linux și NetBSD (anterior era suportată doar platforma Darwin). În emulatorul chipset-ului Q35 (ICH9) pentru porturile PCIe principale, acum se poate opțional declara viteza maximă (16GT/s) și numărul de linii de conexiune (x32), definite în specificația PCIe 4.0 (pentru a asigura compatibilitate implicită pentru tipurile mai vechi de mașini, QEMU este setat la 2.5GT/s și x1). A fost asigurată posibilitatea de a încărca imagini Xen PVH cu opțiunea „-kernel”;
- În emulatorul arhitecturii MIPS a fost adăugat suport pentru emularea multithread cu utilizarea generatorului de cod clasic TCG (Tiny Code Generator). De asemenea, a fost adăugat suport pentru emularea CPU I7200 (nanoMIPS32 ISA) și I6500 (MIPS64R6 ISA), capacitatea de a gestiona cererile de tip CPU folosind protocolul QMP (QEMU Management Protocol), a fost adăugată suport pentru registrele de configurare SAARI și SAAR. A fost îmbunătățită funcționarea mașinilor virtuale de tip Fulong 2E. A fost actualizată implementarea Interthread Communication Unit;
- În emulatorul arhitecturii PowerPC a fost adăugat suport pentru emularea controlerului de întrerupere XIVE, extins suportul pentru POWER9, pentru seria P a fost adăugată posibilitatea de conectare la cald a podurilor principale PCI (PHB, PCI host bridge). A fost activată din start protecția împotriva atacurilor Spectre și Meltdown;
- În emulatorul arhitecturii RISC-V a fost adăugat suport pentru emularea PCI și USB. În serverul de depanare încorporat (gdbserver) a fost implementat suportul pentru setarea listelor de registre în fișiere XML. A fost adăugat suport pentru câmpurile mstatus TSR, TW și TVM;
- În emulatorul arhitecturii s390 a fost adăugată suport pentru modelul CPU z14 GA 2, precum și suport pentru simularea extensiilor instrucțiunilor pentru calcule cu virgulă mobilă și operații vectoriale. În vfio-ap a fost adăugată posibilitatea de conectare la cald a dispozitivelor;
- În emulatorul procesoarelor din familia Tensilica Xtensa a fost îmbunătățită suportul SMP pentru Linux și a fost adăugată suport pentru extensia FLIX (Flexibil length instructions extension);
- În interfața grafică a fost adăugată opțiunea ‘-display spice-app’ pentru configurarea și lansarea unei variante a clientului de acces de la distanță Spice cu un aspect similar interfeței GTK a QEMU;
- În implementarea serverului VNC a fost adăugată suport pentru controlul accesului prin opțiunile tls-authz/sasl-authz;
- În QMP (QEMU Management Protocol) a fost adăugată suport pentru executarea centralizată/externă (Out-of-band) a comenzilor și au fost implementate comenzi suplimentare pentru lucrul cu dispozitivele bloc;
- În VFIO a fost adăugat implementarea interfeței EDID pentru mdev suportat (Intel vGPU), permițând schimbarea rezoluției ecranului, folosind opțiunile xres și yres;
- Pentru Xen a fost adăugat un nou dispozitiv ‘xen-disk’, care poate crea autonom un backend de disc pentru Xen PV (fără a apela la xenstore). A fost crescută performanța backend-ului de disc Xen PV și a fost adăugată posibilitatea de redimensionare a discului;
- În dispozitivele bloc de rețea au fost extinse capabilitățile de diagnosticare și trasare, iar compatibilitatea clientului cu implementările problematice ale serverului NBD a fost îmbunătățită. În qemu-nbd au fost adăugate opțiunile ‘—bitmap’, ‘—list’ și ‘—tls-authz’;
- În dispozitivul emulat IDE/via a fost adăugat suport pentru modul PCI IDE;
- A fost adăugat suport pentru utilizarea algoritmului lzfse pentru comprimarea imaginilor dmg. Pentru formatul qcow2 a fost adăugat suport pentru conectarea fișierelor externe cu date. Operațiile de decomprimare qcow2 au fost mutate într-un fir separat. În imaginile vmdk a fost adăugat suport pentru operația ‘blockdev-create’;”
- În dispozitivul bloc virtio-blk a fost adăugat suport pentru operațiile DISCARD (informarea despre eliberarea blocurilor) și WRITE_ZEROES (rescrierea unei game de blocuri logice);
- În dispozitivul pvrdma a fost implementat suport pentru RDMA Management Datagram services (MAD);
- Au fost introduse , care încalcă compatibilitatea anterioară. De exemplu, în locul opțiunii „handle” din „-fsdev” și „-virtfs” ar trebui folosite opțiunile „local” sau „proxy”. Opțiunile „-virtioconsole” (înlocuită cu „-device virtconsole”), „-no-frame”, „-clock”, „-enable-hax” (înlocuită cu „-accel hax”) au fost eliminate. Dispozitivul „ivshmem” a fost eliminat (ar trebui folosit „ivshmem-doorbell” sau „ivshmem-plain”). Suportul pentru construcția cu SDL1.2 a fost întrerupt (trebuie utilizat SDL2).
Sursa: opennet.ro
