A fost lansată versiunea 9.0 a proiectului QEMU. Ca emulator, QEMU permite rularea unui program compilat 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 execuției codului în medii izolate se apropie de cea a sistemului hardware grație executării directe a instrucțiunilor pe CPU și implicării hipervizorului Xen sau modulului KVM în Linux sau modulului NVMM în NetBSD.
Proiectul a fost inițial creat de Fabrice Bellard cu scopul de a permite rularea fișierelor executabile Linux compilate pentru platforma x86 pe arhitecturi diferite de x86. Pe parcursul anilor de dezvoltare, a fost adăugată suportul pentru emularea completă a 14 arhitecturi hardware, numărul dispozitivelor hardware emulate depășind 400. Pentru versiunea 9.0 au fost realizate peste 2700 de modificări de către 220 de dezvoltatori.
Îmbunătățirile cheie adăugate în QEMU 9.0 includ:
- În driverul virtio-blk, care oferă un dispozitiv de bloc virtual pentru mașini virtuale, a fost adăugat suportul pentru un sistem de cozi multi-nivel (multiqueue), care permite separarea cozilor pentru diferite dispozitive de bloc pentru a oferi acces multipros pe sisteme multicore (diferite cozi ale unei unități de disc pot fi procesate de diverse fire de execuție de intrare/ieșire).
- În dispozitivul de bloc usb-storage, a fost adăugată suportul pentru proprietățile ‘backend_defaults’, ‘logical_block_size’, ‘physical_block_size’, ‘min_io_size’, ‘opt_io_size’ și ‘discard_granularity’.
- În biblioteca gdbstub, destinată depanării de la distanță în GDB folosind protocolul RSP (Remote Serial Protocol), a fost adăugat suportul pentru modul fork-follow, operația siginfo:read și interceptarea apelurilor de sistem în spațiul utilizatorului.
- Backend-urile pentru prealocarea memoriei (preallocation) au fost adaptate pentru a funcționa în mod multi-threaded și acum pot gestiona simultan cereri din mai multe fire.
- În instrumentele pentru migrarea mașinilor virtuale a fost adăugat modul ‘mapped-ram’, care îmbunătățește eficiența creării snapshot-urilor mașinilor virtuale. A fost îmbunătățită identificarea paginii de memorie zero, ceea ce a permis accelerarea semnificativă a migrației mașinilor virtuale inactive în condițiile în care sistemul suportă multifd. În migrarea bazată pe VFIO (Virtual Function I/O) a fost implementat suportul pentru reluarea dintr-o stare salvată (checkpoint-restart).
- Implementarea dispozitivului ESP SCSI (am53c974/dc390) a fost rescrisă.
- Suport pentru algoritmul de criptare SM4 a fost adăugat, permițând utilizarea acestuia în driverul de bloc ‘luks’.
- Driverul ‘luks’ a adăugat suport pentru crearea și utilizarea fișierelor cu anteturi LUKS salvate.
- Simulatorul arhitecturii ARM a implementat suport pentru plăcile L475E-IOT01A IoT, mp3-an536 (MPS3 cu firmware AN536) și raspi4b (Raspberry Pi 4 Model B). A fost adăugat suport pentru simularea extensiilor procesorului ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) și NV2 (Enhanced Nested Virtualization). Capacitățile simulatorurilor pentru plăcile Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx și virt au fost extinse.
- Simulatorul arhitecturii RISC-V a adăugat suport pentru extensiile arhitecturii setului de instrucțiuni Zacas, amocas, RVA22, Zaamo, Zalrsc și Ztso. În RISC-V, suportul SMBIOS a fost asigurat. Suport pentru SRAT, SLIT, AIA și PLIC a fost implementat pentru ACPI. Suportul pentru tabelele RHCT a fost actualizat. virtuálne mašini În simulatorul arhitecturii HPPA până la versiunea 16, firmware-ul SeaBIOS-hppa a fost actualizat. Dimensiunea maximă a memoriei a fost crescută de la 3 GB la 3840 MB. Suportul pentru opțiunea ‘—nodefaults’ a fost adăugat.
- Simulatorul arhitecturii LoongArch a adăugat suport pentru accelerarea KVM și a implementat suport pentru extensii vectoriale LSX/LASX.
- În simulatorul arhitecturii s390x a fost adăugat suport pentru instrucțiunile CVDG, CVB, CVBY și CVBG. Simularea LAE (Load Address Extended) a fost îmbunătățită.
- În simulatorul arhitecturii 68k a fost adăugat dispozitivul nubus-virtio-mmio, care permite accesul la dispozitivele virtio din mașinile q800.
- S-a asigurat construirea cu flag-ul ‘-fzero-call-used-regs’, care permite protejarea împotriva scurgerilor de informații din funcții și reduce numărul de blocuri utile pentru construirea gadget-urilor ROP (Return-Oriented Programming) în exploate. De asemenea, a fost adăugată construcția cu flag-ul ‘-ftrivial-auto-var-init=zero’ pentru inițializarea automată la zero a tuturor variabilelor stocate în stivă.
- Pentru a rula QEMU cu KVM, acum este nevoie de cel puțin kernel Linux 4.4. Pentru gazdele ARM, se planifică creșterea acestei limite la versiunea 4.19 în viitor. Suportul pentru utilizarea Windows pe 32 de biți ca sistem de operare gazdă a fost suspendat.
- A fost adăugat suport pentru OpenBSD 7.4.
- A fost lansată versiunea 9.0 a proiectului QEMU.
Sursa: opennet.ro
