La version 6.2 du projet QEMU a été publiée. En tant qu'émulateur, QEMU permet d'exécuter un programme compilé pour une plateforme matérielle sur un système avec une architecture complètement différente, par exemple, exécuter 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.
Le projet a initialement été créé par Fabrice Bellard dans le but de permettre l'exécution de fichiers exécutables Linux compilés pour la plateforme x86 sur des architectures différentes de x86. Au fil des années, le support d'une émulation complète pour 14 architectures matérielles a été ajouté, et le nombre de périphériques matériels émulés a dépassé 400. Pour la version 6.2, plus de 2300 changements ont été réalisés par 189 développeurs.
Améliorations clés ajoutées dans QEMU 6.2 :
- Dans le mécanisme virtio-mem, permettant le branchement et le débranchement à chaud de la mémoire pour aux machines virtuelles, le support complet des dumps de mémoire des systèmes invités, des opérations de copie avant et après la migration de l'environnement (pré-copie / post-copie) et la création de snapshots du système invité en arrière-plan a été ajouté.
- Dans le QMP (QEMU Machine Protocol), le traitement des erreurs DEVICE_UNPLUG_GUEST_ERROR a été mis en œuvre, survenant du côté du système invité en cas d'échecs lors des opérations de branchement à chaud du matériel.
- La syntaxe des arguments de démarrage traitée dans les plugins du générateur de code classique TCG (Tiny Code Generator) a été étendue. Le plugin « cache » a ajouté le support des systèmes multi-cœurs.
- Dans l'émulateur d'architecture x86, le support du modèle de CPU Intel Snowridge-v4 a été réalisé. Le support d'accès aux enclaves Intel SGX (Software Guard eXtensions) depuis les systèmes invités a été ajouté, en utilisant le dispositif /dev/sgx_vepc du côté du système hôte et l'arrière-plan « memory-backend-epc » dans QEMU. Pour les systèmes invités protégés par la technologie AMD SEV (Secure Encrypted Virtualization), la possibilité d'un démarrage direct vérifiable (sans utiliser de chargeur) du noyau a été ajoutée (activée en définissant le paramètre 'kernel-hashes=on' dans 'sev-guest').
- Dans l'émulateur ARM sur des systèmes hôtes avec des puces Apple Silicon, la prise en charge du mécanisme d'accélération matérielle « hvf » a été implémentée lors du démarrage de systèmes invités basés sur l'architecture AArch64. La prise en charge de l'émulation du modèle de processeurs Fujitsu A64FX a été ajoutée. Un nouveau type de machines émulées « kudo-mbc » a été réalisé. Pour les machines ‘virt’, la prise en charge de l'émulation du ITS (Interrupt Translation Service) a été ajoutée, ainsi que la possibilité d'utiliser plus de 123 CPU en mode d'émulation. Pour les machines émulées « xlnx-zcu102 » et « xlnx-versal-virt », la prise en charge des dispositifs BBRAM et eFUSE a été ajoutée. Pour les systèmes basés sur la puce Cortex-M55, la prise en charge du profil mobile des extensions de processeurs MVE est fournie.
- L'émulateur de l'architecture PowerPC a été mis à jour avec un support initial pour le modèle de CPU POWER10 DD2.0. Pour les machines émulées « powernv », la prise en charge de l'architecture POWER10 a été améliorée, et pour les machines ‘pseries’, des descriptions FORM2 PAPR NUMA ont été ajoutées.
- Dans l'émulateur de l'architecture RISC-V, la prise en charge des extensions du jeu d'instructions Zb[abcs] a été ajoutée. Pour toutes les machines émulées, l'utilisation des options « host-user » et « numa mem » est désormais autorisée. La prise en charge de SiFive PWM (modulateur de largeur d'impulsion) a été ajoutée.
- Dans l'émulateur de l'architecture 68k, la prise en charge du bus NuBus proposé par Apple a été améliorée, y compris la possibilité de charger des images ROM et le support des fentes d'interruption.
- Dans le dispositif bloc qemu-nbd, le mode de mise en cache des opérations d'écriture (« writeback » au lieu de « writethrough ») est activé par défaut pour correspondre au comportement de qemu-img. L'option « —selinux-label » a été ajoutée pour attribuer des étiquettes SELinux aux sockets Unix.
Source : opennet.ru
