Version du noyau Linux 5.17

Après deux mois de développement, Linus Torvalds a présenté la sortie du noyau Linux 5.17. Parmi les changements les plus notables : un nouveau système de gestion des performances pour les processeurs AMD, la possibilité de mapper de manière récursive les identifiants des utilisateurs dans les systèmes de fichiers, la prise en charge des programmes BPF compilés portables, une transition du générateur de nombres pseudo-aléatoires vers l'algorithme BLAKE2s, un utilitaire RTLA. pour l'analyse de l'exécution en temps réel, un nouveau backend fscache pour la mise en cache des systèmes de fichiers réseau, la possibilité d'attacher des noms à des opérations mmap anonymes.

La nouvelle version comprend 14203 1995 correctifs provenant de 37 11366 développeurs, la taille du correctif est de 506043 Mo (les modifications ont affecté 250954 44 fichiers, 5.17 16 lignes de code ont été ajoutées, 15 4 lignes ont été supprimées). Environ 4 % de toutes les modifications introduites dans la version XNUMX sont liées aux pilotes de périphériques, environ XNUMX % des modifications sont liées à la mise à jour du code spécifique aux architectures matérielles, XNUMX % sont liées à la pile réseau, XNUMX % sont liées aux systèmes de fichiers et XNUMX % sont liés aux sous-systèmes internes du noyau.

Innovations clés dans le noyau 5.17 :

  • Sous-système de disque, E/S et systèmes de fichiers
    • Implémentation de la possibilité de mappage imbriqué des ID utilisateur des systèmes de fichiers montés, utilisé pour comparer les fichiers d'un utilisateur spécifique sur une partition étrangère montée avec un autre utilisateur sur le système actuel. La fonctionnalité ajoutée vous permet d'utiliser de manière récursive le mappage au-dessus des systèmes de fichiers pour lesquels le mappage est déjà appliqué.
    • Le sous-système fscache, utilisé pour organiser la mise en cache dans le système de fichiers local des données transférées via les systèmes de fichiers réseau, a été entièrement réécrit. La nouvelle implémentation se distingue par une simplification significative du code et le remplacement des opérations complexes de planification et de suivi des états des objets par des mécanismes plus simples. La prise en charge du nouveau fscache est implémentée dans le système de fichiers CIFS.
    • Le sous-système de suivi des événements de fanotify FS implémente un nouveau type d'événement, FAN_RENAME, qui vous permet d'intercepter immédiatement l'opération de renommage de fichiers ou de répertoires (auparavant, deux événements distincts FAN_MOVED_FROM et FAN_MOVED_TO étaient utilisés pour traiter les renommages).
    • Le système de fichiers Btrfs a optimisé les opérations de journalisation et fsync pour les grands répertoires, implémentées en copiant uniquement les clés d'index et en réduisant la quantité de métadonnées enregistrées. La prise en charge de l'indexation et de la recherche par taille d'enregistrement d'espace libre a été fournie, ce qui a réduit la latence d'environ 30 % et le temps de recherche. Autorisé à interrompre les opérations de défragmentation. La possibilité d'ajouter des périphériques lors de l'équilibrage entre les lecteurs est désactivée, c'est-à-dire lors du montage d'un système de fichiers avec l'option skip_balance.
    • Une nouvelle syntaxe pour monter le système de fichiers Ceph a été proposée, résolvant les problèmes existants associés à la liaison aux adresses IP. En plus des adresses IP, vous pouvez désormais utiliser l'identifiant de cluster (FSID) pour identifier le serveur : mount -t ceph [email protected]_name=/[sous-répertoire] mnt -o mon_addr=monip1[:port][/monip2[:port]]
    • Le système de fichiers Ext4 a été déplacé vers une nouvelle API de montage qui sépare les étapes d'analyse des options de montage et de configuration du superbloc. Nous avons abandonné la prise en charge des options de montage lazytime et nolazytime, qui ont été ajoutées en tant que modification temporaire pour faciliter la transition d'util-linux vers l'utilisation de l'indicateur MS_LAZYTIME. Ajout de la prise en charge de la définition et de la lecture des étiquettes dans FS (ioctl FS_IOC_GETFSLABEL et FS_IOC_SETFSLABEL).
    • NFSv4 a ajouté la prise en charge du travail dans des systèmes de fichiers insensibles à la casse dans les noms de fichiers et de répertoires. NFSv4.1+ ajoute la prise en charge de la définition de sessions agrégées (trunking).
  • Services mémoire et système
    • Ajout du pilote amd-pstate pour fournir un contrôle de fréquence dynamique pour des performances optimales. Le pilote prend en charge les processeurs et APU AMD à partir de la génération Zen 2, développés conjointement avec Valve et vise à améliorer l'efficacité de la gestion de l'énergie. Pour les changements de fréquence adaptatifs, le mécanisme CPPC (Collaborative Processor Performance Control) est utilisé, ce qui vous permet de modifier les indicateurs avec plus de précision (sans se limiter à trois niveaux de performances) et de répondre plus rapidement aux changements d'état que l'état P basé sur ACPI précédemment utilisé. pilotes (CPUFreq).
    • Le sous-système eBPF propose un gestionnaire bpf_loop(), qui fournit un moyen alternatif d'organiser les boucles dans les programmes eBPF, plus rapide et plus facile à vérifier par un vérificateur.
    • Au niveau du noyau, le mécanisme CO-RE (Compile Once - Run Everywhere) est implémenté, qui permet de compiler le code des programmes eBPF une seule fois et d'utiliser un chargeur universel spécial qui adapte le programme chargé au noyau actuel et aux types BTF (Format de type BPF).
    • Il est possible d'attribuer des noms à des zones de mémoire privée anonyme (allouée via malloc), ce qui peut simplifier le débogage et l'optimisation de la consommation de mémoire dans les applications. Les noms sont attribués via prctl avec l'indicateur PR_SET_VMA_ANON_NAME et sont affichés dans /proc/pid/maps et /proc/pid/smaps sous la forme "[anon : ]".
    • Le planificateur de tâches permet de suivre et d'afficher dans /proc/PID/sched le temps passé par les processus en état d'inactivité forcée, utilisé, par exemple, pour réduire la charge lorsque le processeur surchauffe.
    • Ajout du module gpio-sim, conçu pour simuler les puces GPIO à des fins de test.
    • Ajout d'une sous-commande "latency" à la commande "perf ftrace" pour générer des histogrammes avec des informations de latence.
    • Ajout d'un ensemble d'utilitaires « RTLA » pour analyser le travail en temps réel. Il comprend des utilitaires tels que osnoise (détermine l'influence du système d'exploitation sur l'exécution d'une tâche) et timerlat (modifie les délais associés au timer).
    • Une deuxième série de correctifs a été intégrée avec la mise en œuvre du concept de folios de pages, qui ressemblent à des pages composées, mais présentent une sémantique améliorée et une organisation du travail plus claire. L'utilisation de tomes vous permet d'accélérer la gestion de la mémoire dans certains sous-systèmes du noyau. Les correctifs proposés ont complété la conversion du cache de pages vers l'utilisation de tomes et ajouté la prise en charge initiale des tomes dans le système de fichiers XFS.
    • Ajout du mode de construction « make mod2noconfig », qui génère une configuration qui collecte tous les sous-systèmes désactivés sous la forme de modules de noyau.
    • Les exigences relatives à la version de LLVM/Clang pouvant être utilisée pour construire le noyau ont été augmentées. La build nécessite désormais au moins la version LLVM 11.
  • Virtualisation et sécurité
    • Une implémentation mise à jour du générateur de nombres pseudo-aléatoires RDRAND, responsable du fonctionnement des dispositifs /dev/random et /dev/urandom, est proposée, remarquable par la transition vers l'utilisation de la fonction de hachage BLAKE2s au lieu de SHA1 pour les opérations de mélange d'entropie. Le changement a amélioré la sécurité du générateur de nombres pseudo-aléatoires en éliminant l'algorithme SHA1 problématique et en éliminant l'écrasement du vecteur d'initialisation RNG. Étant donné que l'algorithme BLAKE2s est supérieur à SHA1 en termes de performances, son utilisation a également eu un effet positif sur les performances.
    • Ajout d'une protection contre les vulnérabilités des processeurs causées par l'exécution spéculative d'instructions après des opérations de saut vers l'avant inconditionnelles. Le problème se produit en raison du traitement préemptif des instructions qui suivent immédiatement l'instruction de branchement en mémoire (SLS, Straight Line Speculation). L’activation de la protection nécessite une construction avec la version actuellement testée de GCC 12.
    • Ajout d'un mécanisme de suivi du comptage de références (refcount, reference-count), visant à réduire le nombre d'erreurs de comptage de références qui conduisent à l'accès à la mémoire après sa libération. Le mécanisme est actuellement limité au sous-système réseau, mais à l'avenir, il pourra être adapté à d'autres parties du noyau.
    • Des contrôles étendus des nouvelles entrées dans la table des pages de mémoire du processus ont été mis en œuvre, permettant de détecter certains types de dommages et d'arrêter le système, bloquant ainsi les attaques à un stade précoce.
    • Ajout de la possibilité de décompresser les modules du noyau directement par le noyau lui-même, et non par un gestionnaire dans l'espace utilisateur, ce qui permet d'utiliser le module LoadPin LSM pour garantir que les modules du noyau sont chargés en mémoire à partir d'un périphérique de stockage vérifié.
    • Assemblage fourni avec l'indicateur "-Wcast-function-type", qui active les avertissements concernant la conversion de pointeurs de fonction vers un type incompatible.
    • Ajout du pilote d'hôte virtuel pvUSB pour l'hyperviseur Xen, donnant accès aux périphériques USB transférés aux systèmes invités (permet aux systèmes invités d'accéder aux périphériques USB physiques attribués au système invité).
    • Un module a été ajouté qui vous permet d'interagir via Wi-Fi avec le sous-système IME (Intel Management Engine), présent dans la plupart des cartes mères modernes équipées de processeurs Intel et est implémenté comme un microprocesseur distinct qui fonctionne indépendamment du processeur.
    • Pour l'architecture ARM64, la prise en charge a été implémentée pour l'outil de débogage KCSAN (Kernel Concurrency Sanitizer), conçu pour détecter dynamiquement les conditions de concurrence au sein du noyau.
    • Pour les systèmes ARM 32 bits, la possibilité d'utiliser le mécanisme KFENCE pour détecter les erreurs lors de l'utilisation de la mémoire a été ajoutée.
    • L'hyperviseur KVM ajoute la prise en charge des instructions AMX (Advanced Matrix Extensions) implémentées dans les prochains processeurs de serveur Intel Xeon Scalable.
  • Sous-système réseau
    • Ajout de la prise en charge des opérations de déchargement liées à la gestion du trafic du côté des périphériques réseau.
    • Ajout de la possibilité d'utiliser MCTP (Management Component Transport Protocol) sur des périphériques série. MCTP peut être utilisé pour communiquer entre les contrôleurs de gestion et leurs périphériques associés (processeurs hôtes, périphériques, etc.).
    • La pile TCP a été optimisée, par exemple, pour améliorer les performances des appels recvmsg, la libération retardée des tampons de socket a été implémentée.
    • Au niveau d'autorité CAP_NET_RAW, la définition des modes SO_PRIORITY et SO_MARK via la fonction setsockopt est autorisée.
    • Pour IPv4, les sockets bruts peuvent être liés à des adresses IP non locales à l'aide des options IP_FREEBIND et IP_TRANSPARENT.
    • Ajout de sysctl arp_missed_max pour configurer le nombre seuil d'échecs lors de la vérification du moniteur ARP, après quoi l'interface réseau est placée dans un état désactivé.
    • Fourni la possibilité de configurer des valeurs sysctl min_pmtu et mtu_expires distinctes pour les espaces de noms réseau.
    • Ajout de la possibilité de définir et de déterminer la taille des tampons pour les paquets entrants et sortants à l'API ethtool.
    • Netfilter a ajouté la prise en charge du filtrage du trafic pppoe de transit dans un pont réseau.
    • Le module ksmbd, qui implémente un serveur de fichiers utilisant le protocole SMB3, a ajouté la prise en charge de l'échange de clés, activé le port réseau 445 pour smbdirect et ajouté la prise en charge du paramètre « smb2 max credit ».
  • équipement
    • La prise en charge des écrans d'affichage d'informations confidentielles a été ajoutée au sous-système drm (Direct Renderering Manager) et au pilote i915, par exemple, certains ordinateurs portables sont équipés d'écrans avec un mode d'affichage confidentiel intégré, ce qui rend difficile la visualisation de l'extérieur . Les modifications ajoutées vous permettent de connecter des pilotes spécialisés pour de tels écrans et de contrôler les modes de navigation confidentiels en définissant les propriétés dans les pilotes KMS standards.
    • Le pilote amdgpu inclut la prise en charge de la technologie de débogage STB (Smart Trace Buffer) pour tous les GPU AMD qui la prennent en charge. STB facilite l'analyse des pannes et l'identification de la source des problèmes en stockant dans un tampon spécial des informations sur les fonctions exécutées avant la dernière panne.
    • Le pilote i915 ajoute la prise en charge des puces Intel Raptor Lake S et active par défaut la prise en charge du sous-système graphique des puces Intel Alder Lake P. Il est possible de contrôler le rétroéclairage de l'écran via l'interface VESA DPCD.
    • La prise en charge de l'accélération matérielle du défilement dans la console a été rétablie dans les pilotes fbcon/fbdev.
    • Poursuite de l'intégration des modifications pour prendre en charge les puces Apple M1. Implémentation de la possibilité d'utiliser le pilote simpledrm sur les systèmes dotés d'une puce Apple M1 pour la sortie via un framebuffer fourni par le firmware.
    • Ajout de la prise en charge d'ARM SoС, des appareils et des cartes Snapdragon 7c, 845 et 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 ( Acer Chromebook 314), Mediatek MT7986a/b (utilisé dans les routeurs Wi-Fi), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8 , Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, point d'accès JOZ, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
    • Ajout de la prise en charge des processeurs ARM Cortex-M55 et Cortex-M33.
    • Ajout de la prise en charge des appareils basés sur CPU MIPS : Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Ajout de la prise en charge du SoC StarFive JH7100 basé sur l'architecture RISC-V.
    • Ajout du pilote lenovo-yogabook-wmi pour contrôler le rétroéclairage du clavier et accéder à divers capteurs dans le Lenovo Yoga Book.
    • Ajout du pilote asus_wmi_sensors pour accéder aux capteurs utilisés sur les cartes mères Asus X370, X470, B450, B550 et X399 basées sur les processeurs AMD Ryzen.
    • Ajout du pilote x86-android-tablets pour les tablettes PC x86 livrées avec la plate-forme Android.
    • Ajout de la prise en charge des écrans tactiles TrekStor SurfTab duo W1 et du stylet électronique pour les tablettes Chuwi Hi10 Plus et Pro.
    • Les pilotes pour SoC Tegra 20/30 ont ajouté la prise en charge de la gestion de l'alimentation et de la tension. Permet de démarrer sur les anciens appareils Tegra SoC 32 bits tels que ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 et Pad TF300TG.
    • Ajout de pilotes pour les ordinateurs industriels Siemens.
    • Ajout de la prise en charge des panneaux LCD Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA et Team Source Display TST043015CMHX.
    • Ajout de la prise en charge des systèmes audio et des codecs AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, systèmes Intel utilisant NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Les problèmes avec l'audio HD Tegra194 ont été résolus. Ajout de la prise en charge HDA pour les codecs CS35L41. Prise en charge améliorée des systèmes audio pour les ordinateurs portables Lenovo et HP, ainsi que les cartes mères Gigabyte.

Source: opennet.ru

Ajouter un commentaire