version du projet . 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, d'exécuter une application pour ARM sur un PC compatible x86. En mode de virtualisation, la performance d'exécution du code dans un environnement isolé est proche de celle d'un système natif 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 été initialement 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 autres que x86. Au fil des années, le support complet pour 14 architectures matérielles a été ajouté, et le nombre de dispositifs matériels émules a dépassé 400. Pour la version 5.0, plus de 2800 modifications ont été apportées par 232 développeurs.
Améliorations clés , ajoutées dans QEMU 5.0 :
- La possibilité de transférer une partie du système de fichiers de l'environnement hôte vers le système invité à l'aide de . Le système invité peut monter un répertoire marqué pour exportation sur le système hôte, ce qui simplifie considérablement l'organisation de l'accès partagé aux répertoires dans les systèmes de virtualisation. Contrairement à l'utilisation de systèmes de fichiers réseau tels que NFS et virtio-9P, virtiofs permet d'atteindre des performances proches de celles d'un système de fichiers local ;
- migration à chaud des données de processus externes utilisant le bus QEMU D-Bus ;
- La possibilité d'utiliser pour assurer le fonctionnement de la mémoire vive principale du système invité. L'arrière-plan est défini à l'aide de l'option « -machine memory-backend » ;
- Un nouveau filtre « compress », qui peut être utilisé pour créer des sauvegardes compressées d'images ;
- La commande « qemu-img measure » peut désormais fonctionner avec des images LUKS, et à la commande « qemu-img convert », une option « —target-is-zero » a été ajoutée pour ignorer la mise à zéro de l'image cible ;
- Ajout de la prise en charge expérimentale du processus qemu-storage-daemon, fournissant un accès au niveau bloc de QEMU et aux commandes QMP, y compris le traitement des dispositifs de bloc et un serveur NBD intégré, sans avoir à lancer une machine virtuelle complète ;
- L'émulateur d'architecture ARM a ajouté la possibilité d'émuler le CPU Cortex-M7 et prend en charge les cartes tacoma-bmc, Netduino Plus 2 et Orangepi PC. Le support des appareils vTPM et virtio-iommu a été ajouté aux machines émulates 'virt'. La possibilité d'utiliser des systèmes hôtes AArch32 pour exécuter des environnements invités KVM a été déclarée obsolète. Le support pour l'émulation des fonctionnalités suivantes des architectures a été implémenté :
- ARMv8.1: VHE, VMID16, PAN, PMU
- ARMv8.2: UAO, DCPoP, ATS1E1, TTCNP
- ARMv8.3: RCPC, CCIDX
- ARMv8.4: PMU, RCPC
- L'émulateur d'architecture HPPA a ajouté le support d'une console graphique utilisant le dispositif graphique HP Artist ;
- L'émulateur d'architecture MIPS a ajouté le support de l'instruction GINVT (Global Invalidation TLB) ;
- Dans l'émulateur d'architecture PowerPC pour les machines 'powernv', l'émulation des moyens d'accélération matérielle KVM pour exécuter des systèmes invités a été ajoutée.
KVM avec générateur de code classique TCG (Tiny Code Generator). Pour l'émulation de la mémoire persistante, le support des NVDIMM reflétés dans un fichier a été ajouté. Pour les machines 'pseries', la nécessité de redémarrer pour synchroniser le fonctionnement des contrôleurs d'interruption XIVE/XICS en mode 'ic-mode=dual' a été supprimée ; - Dans l'émulateur d'architecture RISC-V pour les cartes 'virt' et 'sifive_u', le support des pilotes syscon standards dans Linux pour la gestion de l'alimentation et du redémarrage a été réalisé. Pour la carte 'virt', le support de Goldfish RTC a été ajouté. Une implémentation expérimentale des extensions de l'hyperviseur a été ajoutée ;
- Dans l'émulateur d'architecture s390, le support de l'AIS (Adapter Interrupt Suppression) lors de l'exécution en mode KVM a été ajouté.
Source : opennet.ru
