È stata presentata la release del progetto QEMU 9.2. 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 con x86. In modalità di virtualizzazione, le prestazioni di esecuzione del codice in un ambiente isolato si avvicinano a quelle di un sistema hardware grazie all'esecuzione diretta delle istruzioni sulla CPU e all'uso dell'hipervisor Xen o del modulo KVM in Linux, o del modulo NVMM in NetBSD.
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, è stato aggiunto il supporto per l'emulazione completa di 14 architetture hardware, con il numero di dispositivi hardware emulati che supera i 400. Per la versione 9.2 sono stati apportati oltre 1700 cambiamenti da 209 sviluppatori.
Miglioramenti chiave aggiunti in QEMU 9.2:
- È stato aggiunto il supporto sperimentale per la creazione di modelli di dispositivi scritti in Rust. Quando si compila QEMU con il supporto per Rust, per impostazione predefinita viene utilizzata un'implementazione alternativa del driver PL011 UART, scritta in Rust, ma attualmente non raccomandata per un uso diffuso.
Attualmente, per impostazione predefinita, il supporto per Rust in QEMU è disabilitato e viene attivato durante la compilazione specificando l'opzione «—enable-rust» durante l'esecuzione dello script configure. Per compilare con Rust, sono necessarie almeno le versioni rustc 1.63.0 e bindgen 0.60.0 (ad esempio, in Debian 12 sarà necessario installare separatamente una versione più recente di Rust). In futuro, il compilatore Rust e il generatore di collegamenti bindgen si prevede di includerli tra le dipendenze di compilazione obbligatorie.
Tra i progetti relativi alla promozione di Rust in QEMU, si possono citare il completamento del driver HPET (High Precision Event Timer) e il driver per dispositivi a blocchi scritti in Rust, e il continuo sviluppo di wrapper per l'uso di Rust in vari componenti di QEMU (ad esempio, nei driver di dispositivi a blocchi, timer e GPIO), la riscrittura in Rust di sistemi critici dal punto di vista della sicurezza, come virtio.
- Nel dispositivo VirtIO-GPU, che offre supporto per una GPU virtuale, è stata aggiunta la funzionalità di accelerazione 3D utilizzando l'API grafica Vulkan, implementata tramite il driver Vulkan Venus incluso in Mesa, che consente di fornire un GPU virtuale al sistema guest per il rendering 3D senza aprire un accesso diretto esclusivo alla GPU fisica. È necessaria la libreria virglrenderer sul lato del sistema host e il driver Mesa Venus sul lato del sistema guest. È disponibile un'istruzione per configurare il supporto di Vulkan in QEMU.
- Nell' toolkit di migrazione dei guest è stato aggiunto il supporto per l'accelerazione delle operazioni di compressione dei flussi di dati trasmessi contemporaneamente utilizzando la libreria QATzip, che sfrutta l'acceleratore QAT (QuickAssist Technology) integrato nei processori Intel, fornendo strumenti per accelerare i calcoli legati alla compressione e alla crittografia.
- Nel backend crittografico basato su GLib è stato aggiunto il supporto per l'algoritmo di hashing SHA-384.
- Nell'emulatore dell'architettura ARM è stato aggiunto il supporto per le estensioni del processore FEAT_EBF16 e FEAT_CMOW, così come le estensioni di sicurezza utilizzate sulle schede xilinx-zynq-a9. Con l'uso del componente HVF, che sfrutta l'Hypervisor.framework per accelerare l'esecuzione dei sistemi guest su computer Mac ARM, è stato garantito il supporto per più di 64 GB di memoria. Per i sistemi emulati sbsa-ref e virt è stato aggiunto il supporto per la traduzione degli indirizzi a due fasi nel SMMU (System Memory Management Unit). È stato interrotto il supporto per i tipi obsoleti di hardware emulato akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex e z2.
- Nell'emulatore dell'architettura x86 è stato aggiunto il supporto per un nuovo tipo di configurazione hardware — nitro-enclave, che emula l'ambiente AWS Nitro Enclave e può caricare immagini di sistema nel formato Enclave Image Format.
- Nell'emulatore dell'architettura x86 per l'ipervisore KVM è stata implementata la possibilità di abilitare il supporto per il set di istruzioni AVX10, così come versioni specifiche di AVX10 — avx10-128, avx10-256 e avx10-512.
- Nell'emulatore dell'architettura RISC-V è stato aggiunto il supporto per le estensioni del set di istruzioni Svvptc, Bitmanip (Bit-Manipulation) e CFI (Control Flow Integrity), utilizzate sulle schede OpenTitan. Nel tipo di sistemi emulati "virt" è stato aggiunto il supporto per IOMMU. È stata migliorata la performance delle istruzioni ld e st.
- Nell'emulatore dell'architettura HPPA il firmware SeaBIOS-hppa è stato aggiornato alla versione 17.
- Nel emulatore dell'architettura s390x è stata aggiunta la possibilità di avviare da altri dispositivi, se non è stato possibile avviarlo dal dispositivo specificato.
Fonte: opennet.ru
