La version 9.0 du projet QEMU a été publié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, d'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 d'un hyperviseur Xen ou du module KVM sous Linux, ou du module NVMM sous NetBSD.
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 l'architecture x86 sur des architectures différentes de x86. Au fil des années, le projet a bénéficié de la prise en charge complÚte de 14 architectures matérielles, et le nombre de périphériques matériels émulés a dépassé 400. La version 9.0 a été préparée avec plus de 2700 modifications provenant de 220 développeurs.
Améliorations clés ajoutées dans QEMU 9.0 :
- Dans le pilote virtio-blk, qui fournit un pĂ©riphĂ©rique de bloc virtuel pour machines virtuelles, le support de systĂšme de files d'attente multilevel (multiqueue) a Ă©tĂ© ajoutĂ©, permettant de diviser les files d'attente pour diffĂ©rents pĂ©riphĂ©riques de bloc afin d'assurer un accĂšs multi-thread sur les systĂšmes multi-cĆurs (diffĂ©rentes files d'attente d'un mĂȘme disque peuvent ĂȘtre traitĂ©es par des fils d'entrĂ©e/sortie diffĂ©rents).
- Dans le pĂ©riphĂ©rique de bloc usb-storage, le support pour les propriĂ©tĂ©s âbackend_defaultsâ, âlogical_block_sizeâ, âphysical_block_sizeâ, âmin_io_sizeâ, âopt_io_sizeâ et âdiscard_granularityâ a Ă©tĂ© ajoutĂ©.
- Dans la bibliothÚque gdbstub, destinée au débogage à distance dans GDB avec le protocole RSP (Remote Serial Protocol), le mode fork-follow a été ajouté, ainsi que l'opération siginfo:read et l'interception des appels systÚme dans l'espace utilisateur.
- Les backends de préallocation de mémoire ont été adaptés pour fonctionner en mode multithread et peuvent désormais traiter simultanément des demandes provenant de plusieurs fils.
- Dans les outils de migration des machines virtuelles, un mode « mapped-ram » a été ajouté, améliorant l'efficacité de la création de snapshots des machines virtuelles. La détection de la page mémoire nulle a été améliorée, permettant d'accélérer considérablement la migration des machines virtuelles inactives lorsque le systÚme prend en charge multifd. Lors de la migration basée sur VFIO (Virtual Function I/O), le support pour la reprise à partir d'un état sauvegardé (checkpoint-restart) a été implémenté.
- Réimplémentation du dispositif ESP SCSI (am53c974/dc390).
- Ajout du support de l'algorithme de chiffrement SM4 et possibilitĂ© de l'utiliser dans le pilote de bloc âluksâ.
- Le pilote âluksâ prend en charge la crĂ©ation et l'utilisation de fichiers avec des en-tĂȘtes LUKS enregistrĂ©s.
- L'émulateur d'architecture ARM prend en charge les cartes L475E-IOT01A IoT, mp3-an536 (MPS3 avec le firmware AN536) et raspi4b (Raspberry Pi 4 ModÚle B). Ajout du support de l'émulation des extensions de processeur ECV (Enhanced Counter Virtualization), NV (Nested Virtualization) et NV2 (Enhanced Nested Virtualization). Les capacités des émulateurs de cartes Freescale i.MX6, Allwinner R40, Bananapi, Raspberry Pi, npcm7xx et virt ont été étendues.
- L'émulateur d'architecture RISC-V ajoute le support des extensions d'architecture du jeu d'instructions Zacas, amocas, RVA22, Zaamo, Zalrsc et Ztso. des machines virtuelles RISC-V assure la prise en charge de SMBIOS. Le support ACPI a été implémenté pour SRAT, SLIT, AIA et PLIC. La prise en charge des tables RHCT a été mise à jour.
- Dans l'Ă©mulateur d'architecture HPPA jusqu'Ă la version 16, le firmware SeaBIOS-hppa a Ă©tĂ© mis Ă jour. La taille maximale de la mĂ©moire a Ă©tĂ© augmentĂ©e de 3 Go Ă 3840 Mo. Ajout de la prise en charge de l'option âânodefaultsâ.
- Dans l'émulateur d'architecture LoongArch, le support de l'accélération KVM a été ajouté et le support des extensions vectorielles du jeu d'instructions LSX/LASX a été implémenté.
- Dans l'émulateur d'architecture s390x, le support des instructions CVDG, CVB, CVBY et CVBG a été ajouté. L'émulation LAE (Load Address Extended) a été améliorée.
- Dans l'émulateur d'architecture 68k, un dispositif nubus-virtio-mmio a été ajouté, permettant d'accéder aux dispositifs virtio depuis les machines q800.
- Une compilation avec le drapeau â-fzero-call-used-regsâ a Ă©tĂ© assurĂ©e, permettant de se protĂ©ger contre les fuites d'informations des fonctions et de rĂ©duire le nombre de blocs susceptibles de construire des gadgets ROP (Return-Oriented Programming) dans les exploits. Une compilation avec le drapeau â-ftrivial-auto-var-init=zeroâ a Ă©galement Ă©tĂ© ajoutĂ©e pour une initialisation automatique Ă zĂ©ro de toutes les variables stockĂ©es sur la pile.
- Pour exĂ©cuter QEMU avec KVM, un noyau Linux 4.4 au minimum est dĂ©sormais requis. Pour les hĂŽtes ARM, ce seuil est prĂ©vu pour ĂȘtre Ă©levĂ© Ă la version 4.19 Ă l'avenir. Le support des systĂšmes d'exploitation Windows 32 bits en tant que systĂšme d'exploitation hĂŽte a Ă©tĂ© abandonnĂ©.
- Ajout du support d'OpenBSD 7.4.
Source : opennet.ru
