Sortie du noyau Linux 5.19

Après deux mois de développement, Linus Torvalds a présenté la release du noyau Linux 5.19. Parmi les changements les plus notables : le support de l'architecture processeur LoongArch, l'intégration des patchs « BIG TCP », le mode « on-demand » dans fscache, la suppression du code pour le support du format a.out, la possibilité d'appliquer ZSTD pour la compression des firmwares, une interface pour gérer le swapping de la mémoire de l'espace utilisateur, une augmentation de la fiabilité et de la performance du générateur de nombres pseudo-aléatoires, ainsi que le support des extensions Intel IFS (In-Field Scan), AMD SEV-SNP (Secure Nested Paging), Intel TDX (Trusted Domain Extensions) et ARM SME (Scalable Matrix Extension).

Dans l'annonce, Linus a indiqué que le prochain release du noyau portera probablement le numéro 6.0, car il y a suffisamment de releases dans la branche 5.x pour changer le premier chiffre du numéro de version. Ce changement de numérotation est fait pour des raisons esthétiques et constitue une étape formelle qui supprime l'inconfort causé par le grand nombre de releases accumulées dans la série.

Linus a également mentionné qu'il a utilisé un ordinateur portable Apple basé sur l'architecture ARM64 (Apple Silicon) avec un environnement Linux basé sur la distribution Asahi Linux pour former la release. Ce n'est pas sa station de travail principale, mais il a utilisé cette plateforme pour vérifier sa capacité à travailler sur le noyau et être sûr de pouvoir créer des releases de noyau en voyage, avec un ordinateur portable léger à portée de main. Auparavant, il y a de nombreuses années, Linus avait de l'expérience avec le matériel Apple pour le développement - il avait autrefois utilisé un ordinateur basé sur le CPU ppc970 et un Macbook Air.

La nouvelle version intègre 16401 corrections provenant de 2190 développeurs (dernière version incluait 16206 corrections de 2127 développeurs), la taille du patch étant de 90 Mo (les modifications ont touché 13847 fichiers, 1149456 lignes de code ajoutées, 349177 lignes supprimées). Environ 39 % de tous les changements présentés dans 5.19 concernent les pilotes de périphériques, environ 21 % des changements sont liés à la mise à jour du code spécifique aux architectures matérielles, 11 % concernent la pile réseau, 4 % concernent les systèmes de fichiers et 3 % aux sous-systèmes internes du noyau.

Les principales nouveautés du noyau 5.19 :

  • Sous-système de disque, entrée/sortie et systèmes de fichiers
    • Le système de fichiers EROFS (Enhanced Read-Only File System), conçu pour être utilisé sur des partitions en mode lecture seule, a été modifié pour utiliser le sous-système fscache, qui permet la mise en cache des données. Ce changement a considérablement amélioré les performances des systèmes où un grand nombre de conteneurs sont lancés à partir d'une image basée sur EROFS.
    • Le sous-système fscache a intégré un mode de lecture à la demande (« on-demand »), qui est utilisé pour optimiser EROFS. Ce nouveau mode permet d'organiser la mise en cache des lectures à partir d'images de système de fichiers qui se trouvent sur le système local. Contrairement au mode de fonctionnement initial, qui était axé sur la mise en cache dans le système de fichiers local des données transférées via des systèmes de fichiers en réseau, le mode « on-demand » délègue les fonctions d'extraction des données et de leur écriture en cache à un processus en arrière-plan distinct, s'exécutant dans l'espace utilisateur.
    • XFS permet de stocker des milliards d'attributs étendus dans l'i-node. Le nombre maximal d'extents pour un seul fichier a été augmenté de 4 milliards à 247. Un mode d'actualisation atomique de plusieurs attributs étendus du fichier en même temps a été réalisé.
    • Dans le système de fichiers Btrfs, la gestion des verrous a été optimisée, permettant d'augmenter les performances d'environ 7 % pour l'écriture directe en mode nowait. La performance des opérations en mode NOCOW (sans copy-on-write) a été améliorée d'environ 3 %. La charge sur le cache de pages a été réduite lors de l'utilisation de la commande « send ». La taille minimale des sous-pages a été réduite de 64K à 4K (des sous-pages de taille inférieure à celle des pages du noyau peuvent être utilisées). Une transition a été effectuée de l'utilisation de l'arbre de base (radix tree) vers l'algorithme XArrays.
    • Le serveur NFS a ajouté un mode de prolongation de l'état de verrouillage, mis en place par le client, qui a cessé de répondre aux requêtes. Ce nouveau mode permet de retarder la libération du verrou jusqu'à 24 heures, si un autre client ne demande pas un verrou concurrent. En mode normal, le verrou est libéré 90 secondes après que le client a cessé de répondre.
    • Dans le sous-système de suivi des événements dans le système de fichiers fanotify, un drapeau FAN_MARK_EVICTABLE a été mis en œuvre, permettant de désactiver la fixation des i-nodes cibles dans le cache, par exemple pour ignorer des sous-arbres sans en fixer des parties dans le cache.
    • Le pilote du système de fichiers FAT32 a été mis à jour pour inclure la prise en charge de l'obtention d'informations sur la date de création des fichiers via l'appel système statx, offrant une variante plus efficace et fonctionnelle de stat(), retournant des informations étendues sur les fichiers.
    • Des optimisations significatives ont été apportées au pilote exFAT, concernant la possibilité de nettoyage simultané d'un groupe de secteurs en mode ‘dirsync’, au lieu d'un nettoyage séquentiel par secteur. Grâce à la réduction du nombre de requêtes de blocs après ces optimisations, les performances de création d'un grand nombre de répertoires sur une carte SD ont augmenté de plus de 73 à 85 %, selon la taille des clusters.
    • Le premier correctif pour le pilote ntfs3 a été intégré dans le noyau. Depuis l'inclusion de ntfs3 dans le noyau 5.15 en octobre dernier, le pilote n'avait pas été mis à jour et les développeurs avaient perdu contact, mais ils ont maintenant repris la publication des modifications. Les patchs proposés corrigent des bugs entraînant des fuites de mémoire et des plantages, résolvent des problèmes avec les tests xfstests, nettoient le code inutilisé et corrigent des fautes de frappe.
    • Pour OverlayFS, il a été mis en œuvre la possibilité de mapper les identifiants d'utilisateurs des systèmes de fichiers montés, ce qui est utilisé pour faire correspondre les fichiers d'un utilisateur sur une partition montée d'un autre utilisateur dans le système actuel.
  • Mémoire et services système
    • Un support initial pour l'architecture LoongArch a été ajouté, utilisée dans les processeurs Loongson 3 5000 et implémentant un nouvel ISA RISC, similaire à MIPS et RISC-V. L'architecture LoongArch est disponible en trois variantes : 32 bits réduit (LA32R), 32 bits normal (LA32S) et 64 bits (LA64).
    • Le code de support pour le format des fichiers exécutables a été supprimé, celui-ci ayant été déclaré obsolète depuis la version 5.1. Le format a.out n'est plus utilisé sur les systèmes Linux et la génération de fichiers a.out n'est pas prise en charge par les outils modernes dans les configurations par défaut de Linux. Un chargeur pour les fichiers a.out peut être entièrement implémenté en espace utilisateur.
    • Le support des options de démarrage spécifiques à l'architecture x86 a été arrêté : nosep, nosmap, nosmep, noexec et noclflush.
    • Le support de l'architecture CPU obsolète h8300 (Renesas H8/300) a été arrêté, celle-ci n'ayant pas été maintenue depuis longtemps.
    • Les capacités de réaction aux blocages de type «split lock» causés par un accès à des données non alignées en mémoire ont été étendues, en raison de l’interférence lors de l’exécution d’instructions atomiques lorsque les données traversent deux lignes de cache CPU. De tels blocages entraînent une chute significative des performances. Auparavant, le noyau émettait par défaut un avertissement indiquant le processus à l’origine du blocage. Désormais, le processus problématique sera de plus ralenti afin de préserver les performances du reste du système.
    • Ajout du support du mécanisme IFS (In-Field Scan) mis en œuvre dans les processeurs Intel, permettant d'exécuter des tests de diagnostic bas niveau du CPU, capables de détecter des problèmes qui ne sont pas identifiés par les outils standard basés sur des codes de correction d'erreurs (ECC) ou des bits de parité. Les tests effectués sont fournis sous la forme d'un firmware chargeable, similaire aux mises à jour de microcode. Les résultats des tests sont accessibles via sysfs.
    • Ajout de la possibilité d'intégrer un fichier bootconfig dans le noyau, permettant, en plus des options de ligne de commande, de définir les paramètres de fonctionnement du noyau à travers un fichier de configuration. L'intégration s'effectue grâce à l'option de compilation ‘CONFIG_BOOT_CONFIG_EMBED_FILE="/PATH/TO/BOOTCONFIG/FILE"’. Auparavant, bootconfig était défini par un attachement à l'image initrd. L'intégration dans le noyau permet d'utiliser bootconfig dans des configurations sans initrd.
    • Mise en œuvre de la possibilité de charger des firmwares compressés utilisant l'algorithme Zstandard. Un ensemble de fichiers de contrôle a été ajouté à sysfs sous /sys/class/firmware/*, permettant d'initier le chargement des firmwares depuis l'espace utilisateur.
    • Une nouvelle option IORING_RECVSEND_POLL_FIRST a été proposée dans l'interface d'entrées/sorties asynchrone io_uring. Lorsque cette option est activée, l'opération réseau sera d'abord transmise pour traitement par polling, ce qui peut économiser des ressources dans des situations où un certain délai est acceptable pour le traitement de l'opération. io_uring prend également en charge l'appel système socket(), de nouveaux drapeaux ont été introduits pour simplifier la gestion des descripteurs de fichiers, un mode «multi-shot» a été ajouté pour accepter plusieurs connexions en une seule fois avec l'appel accept(), et des opérations pour transmettre des commandes NVMe directement vers le périphérique ont été ajoutées.
    • Pour l'architecture Xtensa, un outil de débogage KCSAN (Kernel Concurrency Sanitizer) a été ajouté pour identifier dynamiquement les conditions de compétition au sein du noyau. Le support du mode veille et des coprocesseurs a également été intégré.
    • Pour l'architecture m68k (Motorola 68000), cela a été réalisé. machine virtuelle (simulateur de plateforme), basé sur l'émulateur Android Goldfish.
    • Pour l'architecture AArch64, le support des extensions Armv9-A SME (Scalable Matrix Extension) a été intégré.
    • Dans le sous-système eBPF, le stockage de pointeurs typés dans des structures map a été autorisé, ainsi que le support de pointeurs dynamiques.
    • Un nouveau mécanisme de préemption de la mémoire, permettant un contrôle depuis l'espace utilisateur via le fichier memory.reclaim, a été proposé. L'écriture d'un nombre dans ce fichier tentera d'expulser le nombre correspondant de bytes d'un ensemble lié à cgroup.
    • La précision du suivi de l'utilisation de la mémoire lors de la compression des données dans la zone d'échange a été améliorée grâce au mécanisme zswap.
    • Pour l'architecture RISC-V, la prise en charge du lancement de fichiers exécutables 32 bits sur des systèmes 64 bits a été ajoutée, ainsi qu'un mode pour lier des attributs de restriction aux pages mémoire (par exemple, pour interdire le caching) et la fonction kexec_file_load() a été mise en œuvre.
    • La prise en charge des systèmes 32 bits Armv4T et Armv5 a été adaptée pour une utilisation dans des compilations noyau multiplateformes universelles, adaptées à différents systèmes ARM.
  • Virtualisation et sécurité
    • Dans le sous-système EFI, la possibilité de transférer des informations secrètes aux systèmes invités de manière confidentielle, sans les divulguer au système hôte, a été mise en œuvre. Les données sont fournies via le répertoire security/coco dans securityfs.
    • Dans le mode de protection Lockdown, qui restreint l'accès de l'utilisateur root au noyau et bloque les voies de contournement du démarrage sécurisé UEFI, une faille permettant de contourner cette protection par des manipulations avec le débogueur du noyau a été éliminée.
    • Des correctifs visant à améliorer la fiabilité et les performances du générateur de nombres pseudo-aléatoires ont été intégrés.
    • La prise en charge du mécanisme de randomisation des structures du noyau a été mise en œuvre lors de la compilation avec Clang 15.
    • Le mécanisme Landlock, qui permet de restreindre l'interaction d'un groupe de processus avec l'environnement externe, a été doté de règles permettant de contrôler l'exécution d'opérations de renommage de fichiers.
    • Le sous-système IMA (Integrity Measurement Architecture), destiné à vérifier l'intégrité des composants du système d'exploitation par des signatures numériques et des hachages, a été mis à jour pour utiliser le module fs-verity pour la vérification des fichiers.
    • La logique d'action lors de la désactivation de l'accès non privilégié au sous-système eBPF a été modifiée — auparavant, toutes les commandes liées à l'appel système bpf() étaient désactivées, tandis qu'à partir de la version 5.19, l'accès aux commandes qui ne créent pas d'objets est maintenu. Avec ce comportement, un processus privilégié est nécessaire pour charger un programme BPF, mais par la suite, des processus non privilégiés peuvent interagir avec ce programme.
    • Ajout du support de l'extension AMD SEV-SNP (Secure Nested Paging), qui assure un fonctionnement sécurisé avec des tables de pages imbriquées et protège contre les attaques « undeSErVed » et « SEVerity » sur les processeurs AMD EPYC, permettant de contourner le mécanisme de protection AMD SEV (Secure Encrypted Virtualization).
    • Ajout du support du mécanisme Intel TDX (Trusted Domain Extensions), qui permet de bloquer les tentatives d'accès non autorisé à la mémoire chiffrée. machines virtuelles.
    • Dans le pilote virtio-blk, utilisé pour l'émulation des dispositifs de bloc, le support de l'entrée/sortie utilisant le polling a été ajouté, ce qui, selon les tests effectués, a permis de réduire la latence d'environ 10%.
  • Sous-système réseau
    • Une série de correctifs BIG TCP a été intégrée, permettant d'augmenter la taille maximale des paquets TCP jusqu'à 4 Go pour optimiser le fonctionnement des réseaux internes haute vitesse des centres de données. Une telle augmentation de la taille des paquets, avec un champ d'en-tête de 16 bits, est réalisée par la mise en œuvre de paquets « jumbo », dont la taille dans l'en-tête IP est fixée à 0, tandis que la taille effective est transmise dans un champ séparé de 32 bits dans un en-tête attaché distinct. Lors des tests de performance, la définition d'une taille de paquet de 185 Ko a permis d'augmenter le débit de 50% et de réduire considérablement la latence de transmission des données.
    • Le travail d'intégration d'outils de suivi des raisons de rejet des paquets (codes reason) a été poursuivi. Le code de raison est transmis lors de la libération de la mémoire associée au paquet et permet de tenir compte de situations telles que le rejet d'un paquet en raison d'erreurs dans les champs de l'en-tête, la détection de spoofing par le filtre rp_filter, une somme de contrôle incorrecte, un manque de mémoire, le déclenchement de règles IPSec XFRM, un numéro de séquence TCP incorrect, etc.
    • Ajout du support pour le retour des connexions MPTCP (MultiPath TCP) à l'utilisation de TCP standard dans les situations où certaines fonctionnalités MPTCP ne peuvent pas être utilisées. MPTCP est une extension du protocole TCP permettant d'établir une connexion TCP avec la livraison de paquets simultanément sur plusieurs chemins via différentes interfaces réseau associées à différentes adresses IP. Une API a été ajoutée pour gérer les flux MPTCP depuis l'espace utilisateur.
  • Matériel
    • Plus de 420 000 lignes de code liées au pilote amdgpu ont été ajoutées, dont environ 400 000 lignes proviennent de fichiers d'en-tête générés automatiquement contenant des données pour les registres ASIC dans le pilote pour GPU AMD, et 22 500 lignes supplémentaires assurent la mise en œuvre initiale du support AMD SoC21. La taille totale du pilote pour GPU AMD a dépassé 4 millions de lignes de code. En plus de SoC21, le pilote AMD inclut le support SMU 13.x (System Management Unit), le support USB-C et GPUVM a été mis à jour, et une préparation pour le support des prochaines générations de plateformes RDNA3 (RX 7000) et CDNA (AMD Instinct) a été effectuée.
    • Dans le pilote i915 (Intel), les fonctionnalités liées à la gestion de la consommation d'énergie ont été étendues. Des identifiants pour les GPU Intel DG2 (Arc Alchemist) utilisés dans les ordinateurs portables ont été ajoutés, un support initial pour la plateforme Intel Raptor Lake-P (RPL-P) a été assuré, des informations sur les cartes graphiques Arctic Sound-M ont été ajoutées, un ABI pour les moteurs de calcul a été mis en œuvre, un support pour le format Tile4 a été ajouté pour les cartes DG2, et un support DisplayPort HDR a été réalisé pour les systèmes basés sur l'architecture Haswell.
    • Le pilote Nouveau a été mis à jour pour utiliser le gestionnaire drm_gem_plane_helper_prepare_fb, et une allocation de mémoire statique a été appliquée à certaines structures et variables. Concernant l'utilisation des sources de modules noyau ouvertes par NVIDIA dans Nouveau, le travail consiste actuellement à identifier et corriger les erreurs. À l'avenir, le firmware publié sera utilisé pour améliorer les performances du pilote.
    • Un pilote pour le contrôleur NVMe utilisé dans les ordinateurs Apple basés sur la puce M1 a été ajouté.

Simultanément, la Fondation pour le logiciel libre d'Amérique latine a créé une version entièrement libre du noyau 5.19 — Linux-libre 5.19-gnu, débarrassée des éléments de firmware et des pilotes contenant des composants non libres ou des morceaux de code dont l'utilisation est restreinte par le fabricant. La nouvelle version a effectué un nettoyage des pilotes pour pureLiFi X/XL/XC et TI AMx3 Wkup-M3 IPC. Le code de nettoyage des blobs dans les pilotes et sous-systèmes Silicon Labs WFX, AMD amdgpu, Qualcomm WCNSS Peripheral Image Loader, Realtek Bluetooth, Mellanox Spectrum, Marvell WiFi-Ex, Intel AVS, IFS, pu3-imgu a été mis à jour. Le traitement des fichiers devicetree Qualcomm AArch64 a été réalisé. La prise en charge d'un nouveau schéma de nommage pour Sound Open Firmware a été ajoutée. Le nettoyage du pilote ATM Ambassador, supprimé du noyau, a été interrompu. La gestion du nettoyage des blobs dans HDCP et Mellanox Core a été transférée dans des balises kconfig séparées.

Source : opennet.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