Linux 7.1

Après deux mois de développement, Linus Torvalds présenté a annoncé la sortie du noyau Linux 7.1. Parmi les changements les plus notables : un nouveau pilote ntfsplus, la première phase de la fin du support des CPU i486, la suppression des anciens adaptateurs Ethernet, la suppression des protocoles ISDN et AX.25, l'activation par défaut du mécanisme Intel FRED, le support des traitements BPF dans io_uring, l'optimisation de la sous-système de pagination, le support des sous-planificateurs dans sched_ext, l'entrée/sortie en mode zero-copy dans le pilote ublk, l'opération ioctl de shutdown dans Btrfs, le changement dynamique de mode de performance dans le pilote amd-pstate, le support xattr pour les sockets Unix.

La nouvelle version a incorporé 17275 corrections de 2589 développeurs, la taille du patch est de 57 Mo (les modifications ont touché 13528 fichiers, ajoutant 751785 lignes de code et supprimant 405916 lignes). Dans la version précédente, il y avait 15624 corrections de 2477 développeurs, la taille du patch était de 56 Mo. Environ 41 % de tous les changements présentés dans 7.1 sont liés aux pilotes de périphériques, environ 12 % concernent la mise à jour du code spécifique aux architectures matérielles, 14 % sont liés à la pile réseau, 5 % aux systèmes de fichiers et 3 % aux sous-systèmes internes du noyau.

Les principales innovations dans le noyau 7.1 (kernelnewbies.org, lwn.net, opennet):

Sous-système de disque, entrée/sortie et systèmes de fichiers
  • Ont été acceptés dans le noyau une nouvelle implémentation du système de fichiers NTFS — ntfsplus, basée sur le code du pilote classique ntfs supprimé du noyau. L'ancien pilote a été retravaillé, enrichi de la possibilité d'écrire des données et adapté pour prendre en charge des fonctionnalités modernes, telles que l'utilisation folios de pages mémoire (folios) au lieu de la structure buffer_head. Le nouveau pilote a mis en œuvre une allocation différée des blocs, permettant d'atteindre une haute performance des opérations d'écriture et de réduire la fragmentation. Pour les opérations d'écriture/lecture tamponnées, l'entrée/sortie directe, le mappage des étendues et les opérations d'écriture/lecture de pages, une bibliothèque a été mobilisée. iomap. Dans les tests iozone, le pilote ntfsplus a été de 3 à 5 % plus rapide que ntfs3 lors de l'écriture en mode monothread et de 35 à 110 % lors de l'utilisation de 4 threads. La vitesse de lecture de ntfsplus et ntfs3 est à peu près au même niveau. Le pilote ntfs3 reste inclus dans le noyau et il reçoit ajoutés des corrections et de petites améliorations.
  • Le support de la génération et de la vérification des données d'intégrité T10 (deepwiki.com) au niveau du système de fichiers, et non du périphérique de bloc, permettant d'améliorer les performances des opérations de lecture.
  • Dans le pilote des périphériques de bloc ublk, permettant de déplacer la logique spécifique du processus vers l’espace utilisateur. ajouté prise en charge des entrées/sorties via la mémoire partagée sans copie des données entre les tampons (mode zero-copy).
  • Pour les dispositifs de bloc auto-chiffrants SED-OPAL ajoutées ioctl pour gérer le mode Utilisateur unique et la commande STACK_RESET a été implémentée.
  • Dans Btrfs, le soutien à l’opération ioctl shutdown a été déclaré stable, permettant de mettre le système de fichiers dans un état où l’on tente de terminer les opérations déjà en cours, mais toutes les nouvelles opérations sont bloquées.
  • Dans exfat, il est maintenant possible de réserver des zones vides via l’appel fallocate().
  • Dans le système de fichiers CIFS, la prise en charge de la création de fichiers temporaires avec le drapeau O_TMPFILE a été ajoutée.
  • Dans l'appel système fsmount() une option FSMOUNT_NAMESPACE a été ajoutée, créant un nouvel espace de noms pour les points de montage pour le système de fichiers monté. Des drapeaux ont été ajoutés aux appels système clone3() et unshare() pour renvoyer un nouvel espace de noms de points de montage contenant uniquement un vide système de fichiers stub monté basé sur nullfs, le pilote fs-dax avec une interface de système de fichiers vers les dispositifs DAX (Direct Access).
  • Dans le serveur NFS ajouté protection contre les attaques d'énumération de descripteurs de fichiers, mise en œuvre via la signature cryptographique des descripteurs. La protection est activée via l'option de montage sign_fh.
  • Ajouté le pilote de caractères fs-dax, fournissant une interface pour interagir avec les dispositifs DAX (kernel.org) (Direct Access), prenant en charge le fonctionnement en contournant le cache de pages. L’interface spécifiée est nécessaire pour l'intégration dans le noyau du système de fichiers famfs, hébergé en mémoire vive.
  • Dans le système de fichiers Ceph mis en œuvre collecte des métriques d'entrée/sortie en lien avec les sous-partitions.
Mémoire et services système
  • Accepté la première série de modifications pour mettre fin à la prise en charge des processeurs i486. Les options de Kconfig pour la compilation du noyau avec soutien des processeurs 486DX, 486SX et AMD ELAN (CONFIG_M486, CONFIG_M486SX et CONFIG_MELAN) ont été supprimées, et les options de compilation pour les systèmes i486 (-march=i486) ont été exclues du Makefile. Le code pour la prise en charge effective des processeurs i486 reste pour l’instant dans le noyau, mais la compilation pour de tels systèmes nécessitera maintenant l’application de correctifs aux fichiers de construction. Les raisons de la suppression du soutien aux processeurs i486 sont basées sur le désir de simplifier le code du noyau en éliminant le code compliqué qui émule certaines opérations matérielles, telles que CX8 (comparer et échanger 8 octets) et TSC (compteur de cycles CPU, utilisé dans l’ordonnanceur de tâches).
  • Dans le pilote amd-pstate, utilisé pour gérer la consommation d'énergie sur les systèmes équipés de processeurs AMD, a été mise en œuvre le changement dynamique des paramètres de performance et l'adaptation du comportement de gestion de l'énergie dépendent de l'alimentation secteur ou de la batterie. Lorsqu'il est branché sur secteur, le mode performance est maintenant activé, tandis qu'en fonctionnement sur batterie, c'est le mode balance_performance qui est utilisé.
  • Le mécanisme est activé par défaut Intel FRED (Flexible Return and Event Delivery), permettant d'améliorer l'efficacité et la fiabilité de la transmission d'informations sur les événements de bas niveau. L'augmentation de la performance et la réduction des latences sont assurées par le retour d'événements à l'aide de l'instruction processeur IRET plutôt que par le passage d'événements via la table IDT (Interrupt Descriptor Table). La fiabilité est accrue grâce à un traitement séparé de l'arrivée des événements dans le contexte noyau et le contexte utilisateur, avec des protections contre l'exécution imbriquée des NMI et la sauvegarde, dans le cadre de pile étendu, de tous les registres CPU liés à l'exception.
  • Dans le sous-système perf, ajouté le support des unités de surveillance des performances de mémoire (PMU - Performance Monitoring Unit), utilisées dans les SoC NVIDIA Tegra410.
  • L'exécution des opérations futex sur les systèmes ARM a été accélérée grâce à l'utilisation des instructions Arm 9.6 LSUI, permettant au noyau d'accéder à la mémoire de l'espace utilisateur sans désactiver préalablement le mode de protection. PAN (arm.com) (Privileged Access Never).
  • Sur les systèmes avec processeurs ARM, le support de l'extension de l'architecture de l'ensemble d'instructions MPAM (Memory System Resource Partitioning and Monitoring) a été amélioré et sa possibilité d'utilisation dans l'espace utilisateur pour la gestion des ressources a été ajoutée via le mécanisme resctrl.MPAM permet de marquer chaque accès à la mémoire avec un identifiant de section (PARTID, Partition ID) et un identifiant de groupe de surveillance (PMG, Monitoring Group ID). En lien avec PARTID, il est possible de limiter la consommation de ressources telles que la bande passante mémoire ou la taille du cache, de sorte qu'un groupe de tâches ne puisse pas monopoliser toutes les ressources. Dans le contexte de la surveillance, la combinaison de PMG et PARTID peut être utilisée pour suivre la consommation des ressources mémoire sous certaines charges.
  • Ajouté la possibilité d'utiliser le mode temps réel (PREEMPT_RT) sur les processeurs ARM 32 bits. Auparavant, le support de PREEMPT_RT était assuré pour les architectures x86 et x86-64, ARM64, RISC-V et LoongArch.
  • Dans l'appel système clone3() des nouveaux indicateurs ajoutés : CLONE_NNP — interdiction d'obtenir de nouveaux privilèges dans le processus créé ; CLONE_AUTOREAP — terminaison automatique du processus au lieu de le transformer en processus zombie jusqu'à ce que la fonction wait() soit exécutée par le processus parent ; CLONE_PIDFD_AUTOKILL — terminaison du processus enfant lors de la fermeture du descripteur pidfd qui lui est associé (par exemple, lors de la fermeture du processus parent).
  • Pour chaque module du noyau, un fichier import_ns a été ajouté dans le répertoire /sys/module, contenant la liste des espaces de noms de symboles importés (espace de noms de symboles).
  • Le système d'entrée/sortie asynchrone io_uring a ajouté la prise en charge de l'utilisation du sous-système BPF pour créer des gestionnaires. Par exemple, il est possible de remplacer la boucle principale de répartition par un programme BPF.
  • Dans le sous-système BPF modernisé l'analyse de l'utilisation de la pile, ce qui a considérablement accéléré la vérification par le vérificateur de nombreux programmes BPF.
  • Dans le but d'optimiser les performances a été réécrite le sous-système hrtimer (timer à haute résolution). Le planificateur de tâches peut désormais utiliser des timers haute résolution sans perte de performances au lieu de timers moins précis.
  • La migration transfert des modifications de la branche Rust-for-Linux, liées à l'utilisation du langage Rust comme deuxième langue pour le développement de pilotes et de modules du noyau (la prise en charge de Rust n'est pas activée par défaut et ne conduit pas à l'inclusion de Rust parmi les dépendances de construction obligatoires du noyau). Jusqu'à la version 1.85 (disponible dans Debian 13), les exigences de version de Rust nécessaires pour la construction des composants du noyau ont été augmentées. Une option Kconfig expérimentale CONFIG_RUST_INLINE_HELPERS a été ajoutée pour intégrer les wrappers C dans le code Rust au moment de la compilation (l'optimisation a accéléré le fonctionnement du pilote nul de 2 %). Le macro 'const_assert!' a été ajouté. Les capacités des modules sizes, clk, ptr, sync, error ont été élargies.
  • Dans le mécanisme SCHED_EXT, permettant d'utiliser BPF pour créer des planificateurs CPU, ajouté la possibilité initiale de créer des planificateurs imbriqués (sub-scheduler), par lesquels chaque cgroup peut impliquer son propre planificateur de tâches.
  • L'optimisation du sous-système de pagination (swap) a continué. L'ancienne structure swap_map a été remplacée par le mécanisme «Table de Swap». Ce changement a permis d'améliorer les performances et de réduire la consommation de mémoire dans le sous-système de pagination.
  • Dans le sous-système DAMON (Data Access MONitor), permettant de suivre l'accès d'un processus aux données dans la mémoire vive (par exemple, on peut savoir quelles zones de mémoire un processus a accédées et quelles zones de mémoire sont restées inutilisées), ajouté prise en charge de différents algorithmes automatiques de tuning de quotas.
  • Dans le sous-système de traçage réalisée la conception de tampons circulaires externes, permettant d'obtenir des données de traçage à partir de machines virtuelles. Cette possibilité est intégrée dans les hyperviseurs KVM et nVHE pour le transfert des données de traçage de la machine invitée vers l'hôte.
  • Dans le sous-système RV (kernel.org) (Runtime Verification), destiné à vérifier le bon fonctionnement des systèmes à haute fiabilité, a ajouté des composants de surveillance «stall» pour le suivi des tâches dont l'exécution a été temporairement suspendue ou bloquée, et «deadline» pour analyser le comportement du planificateur de tâches.
Virtualisation et sécurité
  • Par défaut, le drapeau PROC_MEM_FORCE_PTRACE est défini, permettant de contourner les droits d'accès à la mémoire du processus via le fichier /proc/PID/mem uniquement pour les processus utilisant l'appel système ptrace() pour le débogage.
  • Ajouté un nouvel ensemble de hook pour les modules LSM (Linux Security Module), facilitant la mise en œuvre des politiques pour les systèmes de fichiers superposés, tels que overlayfs. Dans LSM, il y a aussi ajouté un hook pour gérer l'accès aux sockets Unix, qui est activé dans le module LSM Landlock pour l'attribution des politiques d'accès aux sockets Unix.
  • Dans la bibliothèque cryptographique intégrée lib/crypto, fournissant des fonctions plus simples et plus rapides que celles de l'API crypto traditionnelle, ajouté prise en charge des algorithmes AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH et SM3. Ajouté documentation par lib/crypto.
  • Le mode pKVM (Protected KVM) pour une isolation stricte de la mémoire anonyme en utilisant des extensions de virtualisation pour l'architecture AArch64. Dans ce mode, les pages de mémoire de la machine invitée sont exclues de la table des adresses virtuelles du système hôte.
  • Le support de la cinquième version du contrôleur d'interruptions virtuel ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5) a été ajouté à l'hyperviseur KVM.
Sous-système réseau
  • Pour les sockets Unix créés par la fonction socket(), réalisée prise en charge des attributs étendus de fichiers (xattr) user.*. Parmi les applications notables, on mentionne l'attribution d'étiquettes via des attributs étendus aux sockets Unix utilisés pour IPC Varlink, afin de les distinguer pour l'inspection et le débogage du fonctionnement IPC à l'aide de programmes BPF. Dans systemd-journald, les attributs étendus sont destinés à être utilisés pour déterminer le format du journal en fonction du socket /dev/log.
  • Retirée prise en charge du protocole UDP-Lite (RFC 3828), permettant la livraison de paquets avec un contrôle de somme incorrect dans l'espoir que, par exemple, des données audio et vidéo partiellement endommagées puissent être restaurées au niveau du codec. Le protocole a été supprimé car personne ne l'utilise.
  • Retiré la possibilité de compiler la pile IPv6 sous forme de module noyau, ce qui n'était pas utilisé en pratique (IPv6 est soit intégré au noyau, soit complètement désactivé), mais compliquait la maintenance car lors de la compilation de l'IPv6 en tant que module noyau (CONFIG_IPV6=m), de nombreux sous-systèmes étaient contraints d'ajouter des gestionnaires inutiles au cas où le module IPv6 serait déchargé.
Matériel
  • Dans le pilote AMDGPU est inclus nouveau moteur d'affichage (DC) pour APU AMD série HD 7000 (Sea Islands, GCN 1.1).
  • Dans le pilote Nouveau ajouté prise en charge initiale du GPU NVIDIA GA100 basé sur l'architecture Ampere.
  • Le travail sur le pilote drm (Direct Rendering Manager) Xe pour GPU basé sur l'architecture Intel Xe, utilisé dans les cartes graphiques Intel de la famille Arc et la vidéo intégrée à partir des processeurs Tiger Lake, a été poursuivi. La prise en charge du sous-système graphique des processeurs Intel Nova Lake-P a été ajoutée. Les objets de tampon purgables (Purgeable Buffer Objects) ont été mis en œuvre.
  • L'intégration des composants du pilote Nova pour les GPU NVIDIA équipés de firmwares GSP, utilisés à partir de la série NVIDIA GeForce RTX 2000 basée sur l'architecture Turing, a été poursuivie. Le pilote est écrit en Rust. Un support initial pour les GPU basés sur l'architecture Turing a été ajouté.
  • Ajouté Pilote DRM corebootdrm pour l'affichage graphique via le framebuffer des firmwares basés sur CoreBoot.
  • Ajouté prise en charge des audio ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP et WM8962. Amélioration de la prise en charge des appareils audio avec interface USB : Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow, PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
  • Ajouté pilote yogafan pour suivre la vitesse de rotation du ventilateur sur les ordinateurs portables Lenovo Yoga, Legion et IdeaPad.
  • Ajouté prise en charge des plateformes ARM, SoC et appareils : Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 et ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
  • Retirée prise en charge des contrôleurs AHCI SATA et PCIe utilisés dans les SoC Baikal-T1, ainsi que des pilotes pour les chronomètres, la mémoire, physmap, bus, hwmon, dwc et bt1-rom. La raison invoquée pour la suppression est l'absence de maintenance et l'intégration inachevée des composants de la plateforme Baikal dans le noyau, dont la production a été arrêtée en Russie en novembre 2025.
  • la méthode non standard 12 pilotes pour des dispositifs Ethernet avec interfaces ISA et PCMCIA, produits jusqu'en 2002, pour lesquels aucun utilisateur n'a été trouvé pour les utiliser dans des systèmes de travail. Le sous-système a également été exclu ISDN, mise en œuvre des protocoles AX.25, CAIF et Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), pilotes yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (radio amateur), inport et logibm (busmouse). La raison de la suppression était l'absence d'accompagnateurs actifs face à l'augmentation du nombre d'erreurs détectées par syzbot et les outils AI, que personne ne se propose de corriger, et toute la charge pour résoudre les problèmes sérieux repose sur les accompagnateurs des principales sous-systèmes réseau du noyau. Plus de 140 000 lignes de code ont été supprimées.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster