La sortie du noyau Linux 6.3

AprÚs deux mois de développement, Linus Torvalds a présenté la version du noyau Linux 6.3. Parmi les changements les plus notables figurent : le nettoyage des anciennes plateformes ARM et des pilotes graphiques, la poursuite de l'intégration de la prise en charge du langage Rust, l'outil hwnoise, le support des structures arborescentes red-black dans BPF, le mode BIG TCP pour IPv4, un test de performance intégré Dhrystone, la possibilité d'interdire l'exécution dans memfd, le soutien à la création de pilotes HID en utilisant BPF, et des modifications acceptées dans Btrfs pour réduire la fragmentation des groupes de blocs.

La nouvelle version a accepté 15 637 corrections de la part de 2 055 développeurs ; la taille du patch est de 76 Mo (les modifications ont concerné 14 296 fichiers, 1 023 183 lignes de code ont été ajoutées, et 883 103 lignes supprimées). Pour comparaison, la version précédente avait proposé 16 843 corrections de 2 178 développeurs ; la taille du patch était de 62 Mo. Environ 39 % de tous les changements présentés dans le noyau 6.3 sont liés aux pilotes de périphériques, environ 15 % des modifications concernent la mise à jour du code spécifique aux architectures matérielles, 10 % sont liées à la pile réseau, 5 % aux systÚmes de fichiers et 3 % aux sous-systÚmes internes du noyau.

Les principales nouveautés du noyau 6.3 :

  • MĂ©moire et services systĂšme
    • Un nettoyage significatif du code liĂ© aux anciennes plateformes ARM non utilisĂ©es a Ă©tĂ© effectuĂ©, permettant de rĂ©duire la taille des textes sources du noyau de 150 000 lignes. Plus de 40 anciennes plateformes ARM ont Ă©tĂ© supprimĂ©es.
    • Il est dĂ©sormais possible de crĂ©er des pilotes pour des dispositifs d'entrĂ©e avec une interface HID (Human Interface Device), implĂ©mentĂ©s sous forme de programmes BPF.
    • Le transfert de la branche Rust-for-Linux se poursuit avec des fonctionnalitĂ©s supplĂ©mentaires liĂ©es Ă  l'utilisation du langage Rust comme deuxiĂšme langage 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 n'ajoute pas Rust en tant que dĂ©pendance de construction obligatoire pour le noyau. Les fonctionnalitĂ©s proposĂ©es dans les versions prĂ©cĂ©dentes sont Ă©tendues par le soutien des types Arc (implĂ©mentation de pointeurs avec compteur de rĂ©fĂ©rences), ScopeGuard (effectue un nettoyage lors de la sortie de la portĂ©e) et ForeignOwnable (permet de dĂ©placer des pointeurs entre le code C et Rust). Le module 'borrow' du paquet ‘alloc’ a Ă©tĂ© supprimĂ© (type 'Cow' et caractĂšre 'ToOwned'). Il est signalĂ© que l'Ă©tat de la prise en charge de Rust dans le noyau est dĂ©sormais proche de la phase d'acceptation des premiers modules Ă©crits en Rust.
    • Dans User-mode Linux (exĂ©cution du noyau en tant que processus utilisateur) sur les systĂšmes x86-64, le support pour le code Ă©crit en Rust a Ă©tĂ© implĂ©mentĂ©. Le support pour la construction de User-mode Linux Ă  l'aide de clang avec optimisations au moment de l'Ă©dition des liens (LTO) a Ă©tĂ© ajoutĂ©.
    • Un utilitaire hwnoise a Ă©tĂ© ajoutĂ© pour surveiller les retards causĂ©s par les particularitĂ©s du matĂ©riel. Les Ă©carts de temps d'exĂ©cution des opĂ©rations (jitter) sont mesurĂ©s lorsqu'on dĂ©sactive le traitement des interruptions, dĂ©passant une microseconde sur 10 minutes de calculs.
    • Un module du noyau implĂ©mentant le test de performance Dhrystone a Ă©tĂ© ajoutĂ©, permettant d'Ă©valuer la performance du CPU dans des configurations sans composants en espace utilisateur (par exemple, lors de la portabilitĂ© pour des SoC nouveaux, oĂč seule l'amorçage du noyau est implĂ©mentĂ©e).
    • Un paramĂštre de ligne de commande du noyau «cgroup.memory=nobpf» a Ă©tĂ© ajoutĂ©, dĂ©sactivant la prise en compte de la consommation de mĂ©moire pour les programmes BPF, ce qui peut ĂȘtre utile pour les systĂšmes avec des conteneurs isolĂ©s.
    • Pour les programmes BPF, une implĂ©mentation de la structure de donnĂ©es arbre rouge-noir a Ă©tĂ© proposĂ©e, utilisant kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) au lieu d'ajouter un nouveau type de mapping.
    • Le mĂ©canisme de sĂ©quences redĂ©marrables (rseq) a ajoutĂ© la possibilitĂ© de transmettre aux processus des identifiants de concurrence en mĂ©moire (memory-map concurrency ID) identifiĂ©s par le numĂ©ro de CPU. Rseq fournit des moyens pour l'exĂ©cution atomique rapide des opĂ©rations, qui, en cas d'interruption par un autre thread, sont nettoyĂ©es et une nouvelle tentative d'exĂ©cution est effectuĂ©e.
    • Le support des instructions SME 2 (Scalable Matrix Extension) a Ă©tĂ© assurĂ© sur les processeurs ARM.
    • Pour les architectures s390x et RISC-V RV64, le mĂ©canisme «BPF trampoline» a Ă©tĂ© mis en Ɠuvre, permettant de minimiser les frais gĂ©nĂ©raux lors du passage des appels entre le noyau et les programmes BPF.
    • Sur les systĂšmes avec des processeurs basĂ©s sur l'architecture RISC-V, l'utilisation des instructions «ZBB» a Ă©tĂ© rĂ©alisĂ©e pour accĂ©lĂ©rer les opĂ©rations sur les chaĂźnes.
    • Pour les systĂšmes basĂ©s sur l'architecture d'ensemble d'instructions LoongArch (utilisĂ©e dans les processeurs Loongson 3 5000 et implĂ©mentant un nouvel ISA RISC, semblable Ă  MIPS et RISC-V), le support de la randomisation de l'espace d'adressage du noyau (KASLR), du changement de placement du noyau en mĂ©moire (relocation), des points d'arrĂȘt matĂ©riels et du mĂ©canisme kprobe a Ă©tĂ© rĂ©alisĂ©.
    • Dans le mĂ©canisme DAMOS (Data Access Monitoring-based Operation Schemes), qui permet de libĂ©rer de la mĂ©moire en fonction de la frĂ©quence d'accĂšs Ă  celle-ci, un support pour les filtres a Ă©tĂ© implĂ©mentĂ© afin d'exclure certaines zones de mĂ©moire de l'analyse dans DAMOS.
    • La bibliothĂšque C standard minimale Nolibc prend dĂ©sormais en charge l'architecture s390 et l'ensemble d'instructions Arm Thumb1 (en plus d'un support pour ARM, AArch64, i386, x86_64, RISC-V et MIPS).
    • L'optimisation d'objtool a Ă©tĂ© effectuĂ©e pour accĂ©lĂ©rer la compilation du noyau et rĂ©duire la consommation de mĂ©moire lors de la compilation (en mode « allyesconfig », il n'y a plus de problĂšmes de terminaison forcĂ©e des processus sur des systĂšmes avec 32 Go de RAM).
    • Le support de la compilation du noyau avec le compilateur Intel ICC a Ă©tĂ© abandonnĂ©, car il ne fonctionnait plus depuis un certain temps et personne n'a souhaitĂ© corriger ce problĂšme.
  • Sous-systĂšme de disque, entrĂ©e/sortie et systĂšmes de fichiers
    • Dans tmpfs, la prise en charge du mappage des identifiants d'utilisateurs pour les systĂšmes de fichiers montĂ©s a Ă©tĂ© implĂ©mentĂ©e, permettant de faire correspondre les fichiers d'un utilisateur sur une partition montĂ©e appartenant Ă  un autre utilisateur dans le systĂšme actuel.
    • Dans Btrfs, pour rĂ©duire la fragmentation des groupes de blocs, une sĂ©paration des extents par taille a Ă©tĂ© mise en place lors de l'allocation des blocs, c'est-Ă -dire que tout groupe de blocs est maintenant limitĂ© aux petits (jusqu'Ă  128 Ko), moyens (jusqu'Ă  8 Mo) et grands extents. Le refactoring de l'implĂ©mentation de raid56 a Ă©tĂ© effectuĂ©. Le code de vĂ©rification des sommes de contrĂŽle a Ă©tĂ© retravaillĂ©. Des optimisations de performance ont permis d'accĂ©lĂ©rer l'opĂ©ration send jusqu'Ă  10 fois grĂące Ă  la mise en cache de utime pour les rĂ©pertoires et Ă  l'exĂ©cution des commandes uniquement si nĂ©cessaire. L'exĂ©cution des opĂ©rations fiemap a Ă©tĂ© triplĂ©e en sautant les vĂ©rifications de rĂ©fĂ©rences croisĂ©es pour les donnĂ©es partagĂ©es (instantanĂ©s). Les opĂ©rations sur les mĂ©tadonnĂ©es ont Ă©tĂ© accĂ©lĂ©rĂ©es de 10 % grĂące Ă  l'optimisation de la recherche de clĂ©s dans les structures b-arbre.
    • La performance du systĂšme de fichiers ext4 a Ă©tĂ© amĂ©liorĂ©e grĂące Ă  la possibilitĂ© pour plusieurs processus d'exĂ©cuter simultanĂ©ment des opĂ©rations d'entrĂ©e/sortie directe sur des blocs prĂ©allouĂ©s, en utilisant des verrouillages partagĂ©s d'inode au lieu de verrouillages exclusifs.
    • Des travaux ont Ă©tĂ© rĂ©alisĂ©s dans f2fs pour amĂ©liorer la lisibilitĂ© du code. Des problĂšmes importants liĂ©s Ă  l'Ă©criture atomique et au nouveau cache d'extents ont Ă©tĂ© rĂ©solus.
    • Dans le systĂšme de fichiers EROFS (Enhanced Read-Only File System), conçu pour ĂȘtre utilisĂ© dans des partitions accessibles en mode lecture seule, il est possible de lier le traitement du dĂ©ballage du contenu compressĂ© des fichiers au CPU afin de rĂ©duire les dĂ©lais d'accĂšs aux donnĂ©es.
    • Le planificateur d'entrĂ©e/sortie BFQ a Ă©tĂ© mis Ă  jour pour prendre en charge les dispositifs avancĂ©s Ă  disques rotatifs, tels que ceux qui utilisent plusieurs tĂȘtes de lecture/Ă©criture indĂ©pendamment contrĂŽlĂ©es (Multi Actuator).
    • La prise en charge de l'encryption des donnĂ©es Ă  l'aide de l'algorithme AES-SHA2 a Ă©tĂ© ajoutĂ©e Ă  l'implĂ©mentation du client et de serveurs NFS.
    • Le sous-systĂšme FUSE (Filesystems In User Space) a ajoutĂ© la prise en charge d'un mĂ©canisme d'extension des requĂȘtes, permettant d'ajouter des informations supplĂ©mentaires Ă  la demande. Sur la base de cette fonctionnalitĂ©, il est possible d'ajouter des identifiants de groupes Ă  la requĂȘte FS, nĂ©cessaires pour gĂ©rer les droits d'accĂšs lors de la crĂ©ation d'objets dans le FS (create, mkdir, symlink, mknod).
  • Virtualisation et sĂ©curitĂ©
    • Dans l'hyperviseur KVM pour systĂšmes x86, la prise en charge des appels hypervisĂ©s Hyper-V a Ă©tĂ© ajoutĂ©e, et leur passage vers le gestionnaire fonctionnant dans l'environnement hĂŽte en espace utilisateur a Ă©tĂ© assurĂ©. Ce changement a permis d'implĂ©menter la prise en charge du lancement imbriquĂ© de l'hyperviseur Hyper-V.
    • Dans KVM, la restriction d'accĂšs pour le systĂšme invitĂ© aux Ă©vĂ©nements PMU (Performance Monitor Unit) liĂ©s Ă  la mesure des performances a Ă©tĂ© simplifiĂ©e.
    • Le mĂ©canisme memfd, permettant d'identifier une zone de mĂ©moire par le descripteur de fichier transmis entre les processus, a Ă©tĂ© mis Ă  jour pour permettre la crĂ©ation de zones oĂč l'exĂ©cution de code est interdite (non-executable memfd) et oĂč il est impossible de futures permissions d'exĂ©cution.
    • Une nouvelle opĂ©ration prctl PR_SET_MDWE a Ă©tĂ© ajoutĂ©e, bloquant les tentatives d'activation des droits d'accĂšs Ă  la mĂ©moire qui autorisent simultanĂ©ment l'Ă©criture et l'exĂ©cution.
    • Une protection contre les attaques de type Spectre a Ă©tĂ© ajoutĂ©e et activĂ©e par dĂ©faut, mise en Ɠuvre sur la base du mode automatique IBRS (Enhanced Indirect Branch Restricted Speculation) proposĂ© dans les processeurs AMD Zen 4, permettant d'autoriser et d'interdire de maniĂšre adaptive l'exĂ©cution spĂ©culative des instructions lors du traitement des interruptions, des appels systĂšme et des changements de contexte. Cette protection proposĂ©e entraĂźne des frais gĂ©nĂ©raux moindres par rapport Ă  la protection Retpoline.
    • Une vulnĂ©rabilitĂ© permettant de contourner la protection contre les attaques Spectre v2 lors de l'utilisation de la technologie de multithreading simultanĂ© (SMT ou Hyper-Threading) a Ă©tĂ© corrigĂ©e, dĂ» Ă  la dĂ©sactivation du mĂ©canisme STIBP (Single Thread Indirect Branch Predictors) lors du choix du mode de protection IBRS.
    • Pour les systĂšmes basĂ©s sur l'architecture ARM64, un nouvel objectif de construction « virtconfig » a Ă©tĂ© ajoutĂ©, qui active uniquement le minimum de composants du noyau nĂ©cessaires au dĂ©marrage dans les systĂšmes de virtualisation.
    • Pour l'architecture m68k, le support du filtrage des appels systĂšme via le mĂ©canisme seccomp a Ă©tĂ© ajoutĂ©.
    • Le support des dispositifs CRB TPM2 (Command Response Buffer), intĂ©grĂ©s dans les processeurs AMD Ryzen et basĂ©s sur la technologie Microsoft Pluton, a Ă©tĂ© ajoutĂ©.
  • Sous-systĂšme rĂ©seau
    • Une interface netlink a Ă©tĂ© ajoutĂ©e pour configurer le sous-niveau de prĂ©vention des collisions PLCA (Physical Layer Collision Avoidance), dĂ©fini dans la spĂ©cification IEEE 802.3cg-2019 et utilisĂ© dans les rĂ©seaux Ethernet 802.3cg (10Base-T1S), optimisĂ©s pour la connexion d'appareils Internet des objets et de systĂšmes industriels. L'utilisation de PLCA permet d'amĂ©liorer les performances dans les rĂ©seaux Ethernet Ă  milieu partagĂ©.
    • La prise en charge de l'API « wireless extensions » pour gĂ©rer les interfaces sans fil WiFi 7 (802.11be) a Ă©tĂ© interrompue car cette API ne couvre pas tous les rĂ©glages nĂ©cessaires. Lors de l'utilisation de l'API « wireless extensions », qui continue d'ĂȘtre pris en charge comme couche Ă©mulĂ©e, un avertissement sera dĂ©sormais affichĂ© pour la plupart des appareils rĂ©cents.
    • Une documentation dĂ©taillĂ©e sur l'API netlink (pour les dĂ©veloppeurs de noyaux et les dĂ©veloppeurs d'applications dans l'espace utilisateur) a Ă©tĂ© prĂ©parĂ©e. Un utilitaire ynl-gen-c a Ă©tĂ© implĂ©mentĂ© pour gĂ©nĂ©rer du code C Ă  partir des spĂ©cifications YAML du protocole Netlink.
    • Le support de l'option IP_LOCAL_PORT_RANGE a Ă©tĂ© ajoutĂ© aux sockets rĂ©seau pour simplifier la configuration des connexions sortantes via des traducteurs d'adresses sans utiliser de SNAT. Lors de l'utilisation d'un adresses IP sur plusieurs hĂŽtes, IP_LOCAL_PORT_RANGE permet d'utiliser une plage de ports rĂ©seau sortants diffĂ©rente sur chaque hĂŽte, tandis qu'au niveau de la passerelle, les paquets peuvent ĂȘtre redirigĂ©s en fonction des numĂ©ros de ports.
    • Pour MPTCP (MultiPath TCP), une possibilitĂ© de gestion des flux mixtes utilisant les protocoles IPv4 et IPv6 a Ă©tĂ© mise en Ɠuvre. MPTCP est une extension du protocole TCP qui permet d'Ă©tablir une connexion TCP avec la livraison de paquets simultanĂ©ment par plusieurs chemins via diffĂ©rentes interfaces rĂ©seau, associĂ©es Ă  diffĂ©rentes adresses IP.
    • Pour IPv4, la possibilitĂ© d'utiliser l'extension BIG TCP a Ă©tĂ© mise en Ɠuvre, permettant d'augmenter la taille maximale d'un paquet TCP Ă  4 Go pour optimiser le fonctionnement des rĂ©seaux internes Ă  haut dĂ©bit des centres de donnĂ©es. Cette augmentation de la taille du paquet avec une taille de champ d'en-tĂȘte de 16 bits est rĂ©alisĂ©e par l'implĂ©mentation de « jumbo »-paquets, dont la taille dans l'en-tĂȘte IP est fixĂ©e Ă  0, tandis que la taille rĂ©elle est transmise dans un champ 32 bits distinct dans un en-tĂȘte attachĂ© sĂ©parĂ©.
    • Un nouveau paramĂštre sysctl, default_rps_mask, a Ă©tĂ© ajoutĂ©, permettant de dĂ©finir la configuration RPS (Receive Packet Steering) par dĂ©faut, chargĂ©e de rĂ©partir le traitement du trafic entrant entre les cƓurs du CPU au niveau des gestionnaires d'interruptions.
    • Le support des disciplines de traitement des files d'attente pour la limitation de trafic CBQ (class-based queuing), ATM (circuits virtuels ATM), dsmark (marqueur de service diffĂ©renciĂ©), tcindex (index de contrĂŽle de trafic) et RSVP (protocole de rĂ©servation de ressources) a Ă©tĂ© abandonnĂ©. Ces disciplines ont longtemps Ă©tĂ© laissĂ©es Ă  l'abandon et aucune volontĂ© de continuer leur prise en charge n'a Ă©tĂ© exprimĂ©e.
  • MatĂ©riel
    • Tous les pilotes graphiques basĂ©s sur DRI1 ont Ă©tĂ© supprimĂ©s : i810 (anciens graphiques intĂ©grĂ©s Intel 8xx), mga (GPU Matrox), r128 (GPU ATI Rage 128, y compris les cartes Rage Fury, XPERT 99 et XPERT 128), savage (GPU S3 Savage), sis (GPU SiS Crusty), tdfx (3dfx Voodoo) et via (VIA IGP), qui ont Ă©tĂ© dĂ©clarĂ©s obsolĂštes en 2016 et ne sont plus supportĂ©s dans Mesa depuis 2012.
    • Les pilotes de framebuffer obsolĂštes (fbdev) omap1, s3c2410, tmiofb et w100fb ont Ă©tĂ© supprimĂ©s.
    • Un pilote DRM pour les unitĂ©s VPU (Versatile Processing Unit) intĂ©grĂ©es au CPU Intel Meteor Lake (14Ăšme gĂ©nĂ©ration) a Ă©tĂ© ajoutĂ©, conçu pour accĂ©lĂ©rer les opĂ©rations liĂ©es Ă  la vision par ordinateur et Ă  l'apprentissage automatique. Le pilote a Ă©tĂ© rĂ©alisĂ© en utilisant la sous-systĂšme « accel », visant Ă  assurer le support des accĂ©lĂ©rateurs de calcul qui peuvent ĂȘtre fournis sous forme d'ASIC sĂ©parĂ©s ou de blocs IP dans SoC et GPU.
    • Dans le pilote i915 (Intel), le support des cartes graphiques dĂ©diĂ©es Intel Arc (DG2/Alchemist) a Ă©tĂ© Ă©largi, avec une prise en charge prĂ©liminaire du GPU Meteor Lake et le support du GPU Intel Xe HP 4tile.
    • Le pilote amdgpu a ajoutĂ© la prise en charge de la technologie AdaptiveSync et la possibilitĂ© d'utiliser plusieurs Ă©crans en mode de protection des donnĂ©es affichĂ©es (Secure Display). La prise en charge de DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x et DP 2.1 a Ă©tĂ© mise Ă  jour.
    • Le pilote msm (GPU Qualcomm Adreno) prend dĂ©sormais en charge les plates-formes SM8350, SM8450, SM8550, SDM845 et SC8280XP.
    • Le pilote Nouveau a cessĂ© de prendre en charge les anciennes appels ioctl.
    • Le pilote etnaviv a ajoutĂ© un support expĂ©rimental pour le NPU VerSilicon (VeriSilicon Neural Network Processor).
    • Le pilote pata_parport a Ă©tĂ© mis en Ɠuvre pour les disques IDE connectĂ©s via le port parallĂšle. Ce pilote ajoutĂ© a permis de supprimer l'ancien pilote PARIDE du noyau et de moderniser le sous-systĂšme ATA. La limitation du nouveau pilote est l'impossibilitĂ© de connecter simultanĂ©ment une imprimante et un disque via le port parallĂšle.
    • Le pilote ath12k a Ă©tĂ© ajoutĂ© pour les cartes sans fil basĂ©es sur des chipsets Qualcomm avec prise en charge de Wi-Fi 7. Prise en charge des cartes sans fil basĂ©es sur des chipsets RealTek RTL8188EU ajoutĂ©e.
    • La prise en charge de 46 cartes avec des processeurs basĂ©s sur l'architecture ARM64 a Ă©tĂ© ajoutĂ©e, parmi lesquelles le Samsung Galaxy Tab A (2015), le Samsung Galaxy S5, le BananaPi R3, le Debix Model A, l'EmbedFire LubanCat 1/2, le Facebook Greatlakes, l'Orange Pi R1 Plus, le Tesla FSD, ainsi que des dispositifs basĂ©s sur SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 et SDM632, la box TV Rockchips RK3128, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 et RK3328, TI K3 (AM642/AM654/AM68/AM69).

SimultanĂ©ment, la Fondation du logiciel libre d'AmĂ©rique latine a formĂ© une version entiĂšrement libre du noyau 6.3 — Linux-libre 6.3-gnu, purgĂ©e des Ă©lĂ©ments de firmware et de pilotes contenant des composants non libres ou des segments de code restreints par le fabricant. Dans la version 6.3, le nettoyage des blobs a Ă©tĂ© effectuĂ© dans les nouveaux pilotes ath12k, aw88395 et peb2466, ainsi que dans les nouveaux fichiers devicetree pour les appareils qcom basĂ©s sur l'architecture AArch64. Le code de nettoyage des blobs dans les pilotes et sous-systĂšmes amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, ainsi que les pilotes pour cartes DVB avec dĂ©codeurs logiciels et dans les fichiers BPF prĂ©compilĂ©s a Ă©tĂ© mis Ă  jour. Le nettoyage des pilotes mga, r128, tm6000, cpia2 et r8188eu a Ă©tĂ© arrĂȘtĂ© car ils ont Ă©tĂ© supprimĂ©s du noyau. L'Ă©limination des blobs dans le pilote i915 a Ă©tĂ© amĂ©liorĂ©e.

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