La version 8.2 du projet QEMU a été présentée. En tant qu'émulateur, QEMU permet d'exécuter un programme compilé pour une plateforme matérielle sur un système ayant une architecture complètement différente, par exemple, d'exécuter une application pour ARM sur un PC compatible x86. En mode de virtualisation, la performance du code exécuté 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.
À l'origine, le projet a été créé par Fabrice Bellard dans le but de permettre l'exécution d'exécutables Linux compilés pour la plateforme x86 sur des architectures autres que x86. Au fil des ans, le développement a ajouté le support complet pour 14 architectures matérielles, et le nombre de dispositifs matériels émulés a dépassé 400. Plus de 3200 modifications ont été apportées par 238 développeurs lors de la préparation de la version 8.2.
Principales améliorations ajoutées dans QEMU 8.2 :
- Un dispositif virtio-sound a été ajouté, permettant d'émuler une carte son pour l'enregistrement et la reproduction audio dans le système invité à l'aide d'un backend audio (pulseaudio, sdl ou coreaudio) fonctionnant du côté du système hôte. Pour l'émulation d'un dispositif sonore dans le noyau Linux pour le système invité, l'option CONFIG_SND_VIRTIO doit être activée.
- Une interface graphique virtuelle (VGI, Virtual Graphics Interface) rutabaga a été ajoutée, avec la mise en œuvre d'un GPU virtuel (virtio-gpu), ressemblant à l'ancien VirGL et permettant également d'utiliser un GPU virtuel dans le système invité pour le rendu 3D, sans ouvrir l'accès exclusif direct au GPU physique. Le code rutabaga a été développé dans le cadre du projet Android/CrosVM et permet d'utiliser un émulateur de la plateforme Android avec un QEMU classique.
- Un dispositif hv-balloon a été ajouté avec la mise en œuvre du protocole de gestion dynamique de la mémoire (Dynamic Memory) pour Hyper-V, permettant de renvoyer des pages de mémoire non utilisées au système hôte en cours d'exécution et de demander des ressources supplémentaires en cas de manque de mémoire. Ce nouveau dispositif peut être considéré comme une alternative au virtio-balloon pour les systèmes invités Windows, utilisant un backend du côté du système hôte prenant en charge le protocole Dynamic Memory.
- Un dispositif Universal Flash Storage a été proposé pour l'émulation d'une clé USB Flash.
- Le pilote de périphériques de blocs NBD (Network Block Device) a été ajouté avec le support de l'extension du protocole utilisant des décalages de 64 bits pour améliorer les performances lors de la manipulation de grandes données.
- La commande dump-guest-memory a été mise à jour pour prendre en charge la sortie au format standard kdump.
- Ajout du support pour l'émulation UFS, utilisant les nouveaux périphériques ufs et ufs-lu.
- Dans VFIO (Virtual Function I/O), le support du mode de migration P2P a été ajouté et la possibilité de distribution dynamique de MSI-X a été mise en œuvre. Une préparation a été effectuée pour la transition vers le nouveau backend IOMMUFD.
- Dans l'appareil virtio-mem, le mode « dynamic-memslots=on » a été mis en œuvre pour l'allocation dynamique de plusieurs emplacements de mémoire au lieu d'une allocation statique d'un grand emplacement. L'utilisation de ce mode permet de réduire la consommation de mémoire sur de grands appareils virtio-mem, en fournissant une petite quantité de mémoire à la VM.
- Dans l'émulateur d'architecture x86 lors de l'émulation de l'environnement hyperviseur Xen basé sur KVM le support de la console PV et des périphériques réseau a été assuré, et les commandes pour les périphériques de blocs et de réseau ont été simplifiées. Dans le générateur de code TCG classique, le support des instructions SHA a été ajouté.
- Dans l'émulateur d'architecture ARM, l'émulation du CPU Cortex-A710 et Neoverse-N2 a été mise en œuvre. Ajout du support pour les extensions processeur PACQARMA3, EPAC, Pauth2, FPAC, FPACCOMBINE, TIDCP1, MOPS, HBC et HPMN0. Pour la carte Xilinx Versal, la modélisation des appareils CFU/CFI et TRNG a été réalisée.
- Dans l'émulateur d'architecture RISC-V, un ensemble d'instructions cryptographiques vectorielles a été mis en œuvre. Ajout du support des IRQ virtuelles et du filtrage des IRQ. Le support des extensions Zicond a été stabilisé. Ajout du support des extensions pour la virtualisation AIA (Advanced Interrupt Architecture) via KVM.
- Dans l'émulateur d'architecture HPPA, l'émulation du CPU 64 bits PA-RISC 2.0 et du système C3700, y compris le contrôleur de mémoire Astro et les ponts PCI Elroy, a été réalisée.
- Dans l'émulateur d'architecture LoongArch, l'émulation du CPU Loongson LA132 a été réalisée. Ajout du support de l'extension du jeu d'instructions LASX et de l'instruction PRELDX.
- Dans l'émulateur d'architecture s390x, le support de vfio-ap a été ajouté pour le passage de l'adaptateur crypto pour les systèmes invités sécurisés.
- Dans l'émulateur Tricore, le support des processeurs TC37x (ISA 1.6.2) et des instructions CRCN, FTOU, FTOHP, HPTOF a été ajouté.
Source : opennet.ru
