La version 9.2 du projet QEMU a été lancée. En tant qu'émulateur, QEMU permet d'exécuter des programmes compilés pour une plateforme matérielle sur un système avec une architecture complètement différente, par exemple, faire tourner une application pour ARM sur un PC compatible x86. En mode virtualisation, la performance d'exécution du code dans un environnement isolé est proche de celle d'un système matériel grâce à l'exécution directe des instructions sur le CPU et à l'utilisation de l'hyperviseur Xen ou du module KVM sous Linux, ou du module NVMM dans NetBSD.
À l'origine, le projet a été créé par Fabrice Bellard dans le but de permettre l'exécution de fichiers exécutables Linux compilés pour des architectures x86 sur d'autres architectures. Au fil des années, le support a été étendu à 14 architectures matérielles, et le nombre de dispositifs matériels émulés a dépassé 400. Lors de la préparation de la version 9.2, plus de 1700 modifications ont été apportées par 209 développeurs.
Améliorations clés ajoutées dans QEMU 9.2 :
- Ajout d'un support expérimental pour la création de modèles de dispositifs écrits en Rust. Lors de la compilation de QEMU avec le support de Rust, une implémentation alternative du pilote PL011 UART, écrite en Rust, est utilisée par défaut, mais elle n'est pas encore recommandée pour un usage général.
Actuellement, le support de Rust dans QEMU est désactivé par défaut et doit être activé lors de la compilation en spécifiant l'option « —enable-rust » lors de l'exécution du script configure. Pour compiler avec Rust, les versions minimales requises sont rustc 1.63.0 et bindgen 0.60.0 (par exemple, sur Debian 12, une version plus récente de Rust devra être installée séparément). À l'avenir, le compilateur Rust et le générateur de liaisons bindgen devraient devenir des dépendances de compilation obligatoires.
Parmi les projets liés à l'avancement de Rust dans QEMU, on peut citer la mise au point du pilote HPET (High Precision Event Timer) et d'un pilote pour les dispositifs de bloc écrits en Rust, ainsi que la poursuite du développement de liaisons pour utiliser Rust dans divers composants de QEMU (par exemple, dans les pilotes de dispositifs de bloc, les temporisateurs et les GPIO), et la réécriture en Rust de systèmes critiques sur le plan de la sécurité, tels que virtio.
- Dans l'appareil VirtIO-GPU, qui permet le fonctionnement d'un GPU virtuel, le support de l'accélération 3D a été ajouté grâce à l'API graphique Vulkan, mise en œuvre via le pilote Vulkan Venus inclus dans Mesa, qui permet de fournir au système invité un GPU virtuel pour le rendu 3D sans ouvrir un accès direct exclusif au GPU physique. Il est nécessaire d'avoir la bibliothèque virglrenderer du côté de l'hôte et le pilote Mesa Venus du côté du système invité. Un guide pour configurer le support de Vulkan dans QEMU est disponible.
- L'outil de migration des systèmes invités a ajouté le support de l'accélération des opérations de compression des flux de données transmis simultanément à l'aide de la bibliothèque QATzip, qui utilise l'accélérateur QAT (QuickAssist Technology) intégré dans les processeurs Intel, offrant des moyens d'accélérer les calculs liés à la compression et au chiffrement.
- Le backend cryptographique basé sur GLib a ajouté le support de l'algorithme de hachage SHA-384.
- L'émulateur d'architecture ARM a ajouté le support des extensions de processeur FEAT_EBF16 et FEAT_CMOW, ainsi que des extensions de sécurité utilisées dans les cartes xilinx-zynq-a9. Avec le composant HVF, qui utilise les outils de Hypervisor.framework pour accélérer l'exécution des systèmes invités sur les ordinateurs ARM Mac, un support de plus de 64 Go de mémoire est assuré. Pour les systèmes émulés sbsa-ref et virt, le support de la traduction d'adresses en deux étapes dans le SMMU (System Memory Management Unit) a été ajouté. La prise en charge des anciens types de matériel émulé akita, borzoi, cheetah, connex, mainstone, n800, n810, spitz, terrier, tosa, verdex et z2 a été abandonnée.
- L'émulateur d'architecture x86 a ajouté le support d'un nouveau type de configuration matérielle - nitro-enclave, émulant l'environnement AWS Nitro Enclave et capable de charger des images système au format Enclave Image Format.
- Dans l'émulateur d'architecture x86 pour l'hyperviseur KVM la prise en charge du jeu d'instructions AVX10, ainsi que des versions spécifiques AVX10 - avx10-128, avx10-256 et avx10-512, a été mise en œuvre.
- L'émulateur d'architecture RISC-V a ajouté le support des extensions du jeu d'instructions Svvptc, Bitmanip (Bit-Manipulation) et CFI (Control Flow Integrity), utilisées sur les cartes OpenTitan. Dans le type de systèmes émulés « virt », le support de l'IOMMU a été ajouté. La performance des instructions ld et st a été améliorée.
- Dans l'émulateur d'architecture HPPA, le firmware SeaBIOS-hppa a été mis à jour vers la version 17.
- L'émulateur d'architecture s390x a ajouté la possibilité de démarrer à partir d'autres appareils si le démarrage à partir de l'appareil spécifié échoue.
Source : opennet.ru
