La version du noyau Linux 5.2

Après deux mois de développement, Linus Torvalds présenté a annoncé la sortie du noyau Linux 5.2. Parmi les changements les plus notables : le mode de fonctionnement d'Ext4 sans distinction de casse, des appels système distincts pour le montage du système de fichiers, des pilotes pour GPU Mali 4xx / 6xx / 7xx, la possibilité de traiter le changement des valeurs sysctl dans les programmes BPF, le module device-mapper dm-dust, protection contre les attaques MDS, support de Sound Open Firmware pour DSP, optimisation des performances BFQ, et la mise à jour de la sous-système PSI (Pressure Stall Information) pour une utilisation dans Android.

La nouvelle version intègre 15 100 corrections de 1882 développeurs,
la taille du patch est de 62 Mo (les changements concernent 30 889 fichiers, 625 094 lignes de code ajoutées, 531 864 lignes supprimées). Environ 45 % de tous les changements présentés dans 5.2
sont liés aux pilotes de périphériques, environ 21 % des changements concernent
la mise à jour du code spécifique aux architectures matérielles, 12 %
lié à la pile réseau, 3 % — aux systèmes de fichiers et 3 % aux sous-systèmes internes.
des sous-systèmes du noyau. 12,4 % de tous les changements ont été préparés par Intel, 6,3 % par Red Hat, 5,4 % par Google, 4,0 % par AMD, 3,1 % par SUSE, 3 % par IBM, 2,7 % par Huawei, 2,7 % par Linaro, 2,2 % par ARM, 1,6 % par Oracle.

Principales nouveautés:

  • Sous-système de disque, entrée/sortie et systèmes de fichiers
    • Pour Ext4, il a été ajouté la prise en charge la capacité de fonctionner sans distinction de casse dans les noms de fichiers, qui est activée uniquement pour certains répertoires vides à l'aide du nouvel attribut « +F » (EXT4_CASEFOLD_FL). Lors de la définition de cet attribut sur un répertoire, toutes les opérations sur les fichiers et sous-répertoires à l'intérieur seront effectuées sans distinction de casse, l'absence de casse sera également ignorée lors des opérations de recherche et d'ouverture de fichiers (par exemple, les fichiers Test.txt, test.txt et test.TXT dans de tels répertoires seront considérés comme identiques). Par défaut, le système de fichiers reste sensible à la casse, sauf pour les répertoires avec l'attribut « chattr +F » ;
    • Les fonctions de traitement des caractères UTF-8 dans les noms de fichiers ont été unifiées, appliquées lors des opérations de comparaison et de normalisation des chaînes ;
    • Dans XFS, une infrastructure a été ajoutée pour surveiller l'état du système de fichiers et un nouvel ioctl pour demander le statut de fonctionnement. Une fonctionnalité expérimentale pour vérifier à chaud (online scrub) les compteurs du superbloc a été mise en œuvre.
    • Un nouveau module device-mapper «dm-dust», permettant de simuler l'apparition de blocs défectueux sur le support ou des erreurs lors de la lecture depuis le disque. Ce module facilite le débogage et le test d'applications et de divers systèmes de stockage dans des conditions de pannes potentielles ;
    • Une optimisation optimisation significative des performances du planificateur d'entrée/sortie BFQ. En cas de forte charge d'entrée/sortie, les optimisations apportées permettent de réduire de 80 % le temps de ces opérations, comme le lancement d'applications ;
    • Une série d'appels système a été ajoutée pour le montage de systèmes de fichiers : fsopen(), open_tree(), fspick(), fsmount(), fsconfig() et move_mount(). Ces appels système permettent de traiter séparément différentes étapes du montage (traiter le superbloc, obtenir des informations sur le FS, monter, attacher à un point de montage), qui étaient auparavant effectuées à l'aide de l'appel système commun mount(). Les appels séparés permettent de réaliser des scénarios de montage plus complexes et d'exécuter séparément des opérations telles que la reconfiguration du superbloc, l'activation d'options, la modification du point de montage et le déplacement vers un autre espace de noms. De plus, le traitement séparé permet de déterminer avec précision les raisons des codes d'erreur et de définir plusieurs sources pour les systèmes de fichiers en couches, tels que overlayfs ;
    • Une nouvelle opération IORING_OP_SYNC_FILE_RANGE, exécutant des actions équivalentes à l'appel système, a été ajoutée à l'interface pour l'entrée/sortie asynchrone io_uring sync_file_range(), et il est également possible d'enregistrer un eventfd avec io_uring et de recevoir des notifications concernant l'achèvement des opérations ;
    • Pour le système de fichiers CIFS, ioctl FIEMAP a été ajouté, assurant un mappage efficace des étendues, ainsi que le support pour les modes SEEK_DATA et SEEK_HOLE ;
    • Dans le sous-système FUSE a été proposé API pour la gestion du cache des données ;
    • Dans Btrfs, l'implémentation des qgroups a été optimisée et la vitesse d'exécution de fsync pour les fichiers avec plusieurs liens durs a été augmentée. Le code de vérification de l'intégrité des données a été amélioré, tenant maintenant compte des éventuels dommages aux informations en RAM avant que les données ne soient écrites sur le disque ;
    • Dans CEPH, le support pour l'exportation de snapshots via NFS a été ajouté ;
    • L'implémentation du montage NFSv4 en mode « soft » a été améliorée (en cas d'erreur d'accès au serveur en mode « soft », l'appel renvoie immédiatement un code d'erreur, tandis qu'en mode « hard », le contrôle n'est pas restitué jusqu'à la réapparition de la disponibilité du FS ou jusqu'à un délai d'attente). Dans cette nouvelle version, le traitement du délai d'attente a été affiné, la récupération après une défaillance a été accélérée et une nouvelle option de montage « softerr » a été ajoutée, permettant de modifier le code d'erreur (ETIMEDOUT) renvoyé lors de l'expiration du délai d'attente ;
    • L'API nfsdcld, conçu pour suivre l'état des clients NFS, permet le suivi correct de l'état du client par le serveur NFS lors du redémarrage. Ainsi, le démon nfsdcld peut maintenant jouer le rôle de gestionnaire de nfsdcltrack;
    • Pour AFS ajouté émulation des verrous de plages d'octets dans les fichiers (Verrouillage de Plage d'Octets);
  • Virtualisation et sécurité
    • Des efforts ont été réalisés pour éliminer les endroits dans le noyau qui permettent l'exécution de code à partir de zones mémoire accessibles en écriture, bloquant ainsi les éventuelles vulnérabilités qui pourraient être exploitées lors d'une attaque;
    • Un nouveau paramètre de ligne de commande du noyau «mitigations=» a été ajouté, offrant un moyen simplifié de gérer l'activation de diverses techniques de protection contre les vulnérabilités liées à l'exécution spéculative d'instructions dans le CPU. La transmission de «mitigations=off» désactive toutes les méthodes existantes, tandis que le mode par défaut «mitigations=auto» active la protection sans affecter l'utilisation du Hyper Threading. Le mode «mitigations=auto,nosmt» désactive également le Hyper Threading si la méthode de protection l'exige.
    • Ajouté support de la signature numérique électronique selon GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), développée par Vitaly Chikunov de «Bazalt SPO». La prise en charge de AES128-CCM a été ajoutée à l'implémentation intégrée de TLS. Le module crypto_simd prend en charge les algorithmes AEAD;
    • Dans Kconfig ajouté une section distincte «kernel hardening» avec des options pour renforcer la protection du noyau. Actuellement, seules les configurations pour activer les vérifications des plugins GCC sont rassemblées dans cette nouvelle section;
    • Le code du noyau est presque libéré des expressions non terminées dans les switch (sans return ni break après chaque bloc case). Il reste à corriger 32 des 2311 occurrences de cette utilisation de switch, après quoi le mode «-Wimplicit-fallthrough» pourra être appliqué lors de la compilation du noyau;
    • Pour l'architecture PowerPC, la prise en charge des mécanismes matériels pour limiter les chemins d'accès non souhaités du noyau aux données dans l'espace utilisateur a été mise en œuvre;
    • Un code a été ajouté pour bloquer les attaques la classe MDS (Microarchitectural Data Sampling) dans les processeurs Intel. Vous pouvez vérifier la vulnérabilité du système via la variable SysFS «/sys/devices/system/cpu/vulnerabilities/mds». Disponible Deux modes de protection : complet, nécessitant un microcode mis à jour, et un mode contour qui ne garantit pas complètement l'effacement des tampons CPU lors du passage du contrôle à l'espace utilisateur ou au système invité. Pour gérer les modes de protection, le noyau a ajouté le paramètre « mds= », qui peut prendre les valeurs « full », « full,nosmt » (avec désactivation des Hyper-Threads) et « off » ;
    • Dans les systèmes x86-64, pour les IRQ, les mécanismes de débogage et les gestionnaires d'exceptions, une protection « stack guard-page » a été ajoutée, qui consiste en l'insertion d'une page mémoire à la frontière de la pile, dont l'accès entraîne la génération d'une exception (page-fault) ;
    • Ajout d'un paramètre sysctl vm.unprivileged_userfaultfd, contrôlant la possibilité d'utiliser l'appel système userfaultfd() par des processus non privilégiés ;
  • Sous-système réseau
    • Ajouté Support des passerelles IPv6 pour les routes IPv4. Par exemple, il est maintenant possible de spécifier des règles de routage telles que « ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0 » ;
    • Pour ICMPv6, des appels ioctl icmp_echo_ignore_anycast et icmp_echo_ignore_multicast ont été réalisés pour ignorer ICMP ECHO pour anycast et
      adresses multicast. Ajouté Possibilité de limiter l'intensité du traitement des paquets ICMPv6 ;
    • Pour le protocole maillé B.A.T.M.A.N. (« Better Approach To Mobile Adhoc Networking »), permettant de créer des réseaux décentralisés, chaque nœud étant relié à travers des nœuds voisins, ajouté support de la traduction de multicast à unicast, ainsi que possibilité de gestion via sysfs ;
    • Dans ethtool, ajouté un nouveau paramètre Fast Link Down, permettant de réduire le temps de réception d'une information sur un événement de déconnexion de lien pour 1000BaseT (dans des conditions normales, le délai est de jusqu'à 750 ms) ;
    • Une nouvelle fonctionnalité permet d'interdire le détachement d'onglet. La transformation inopinée d'un onglet en une fenêtre distincte a irrité les utilisateurs pendant de nombreuses années (le ticket correspondant a été ouvert il y a 9 ans). Pour désactiver le détachement des onglets, un paramètre browser.tabs.allowTabDetach est prévu. la possibilité liaisons de tunnels Foo-Over-UDP à une adresse, une interface réseau ou un socket spécifiques (auparavant, la liaison se faisait uniquement par une masque général) ;
    • Dans la pile sans fil, la livraison par défaut de la version de Firefox basée sur Wayland est assurée. Des problèmes d'utilisation des pilotes binaires propriétaires NVIDIA avec Wayland ont été résolus. possibilité de mettre en œuvre des gestionnaires
      OWE (Opportunistic Wireless Encryption) dans l'espace utilisateur ;
    • Dans Netfilter, une prise en charge de la famille d'adresses inet a été ajoutée aux chaînes nat (par exemple, il est maintenant possible d'utiliser une seule règle de traduction pour traiter ipv4 et ipv6, sans séparation des règles pour ipv4 et ipv6) ;
    • Dans netlink, ajouté mode strict pour une vérification rigoureuse de la validité de tous les messages et attributs, où il n'est pas permis de dépasser la taille attendue des attributs et où l'ajout de données supplémentaires à la fin des messages est interdit ;
  • Mémoire et services système
    • L'appel système clone() a été ajouté avec le drapeau CLONE_PIDFD, qui, lorsqu'il est spécifié, renvoie au processus parent un descripteur de fichier « pidfd » associé au processus enfant créé. Ce descripteur de fichier peut, par exemple, être utilisé pour envoyer des signaux sans craindre de rencontrer une condition de course (juste après l'envoi d'un signal, le PID cible peut être libéré en raison de la fin du processus et occupé par un autre processus);
    • La deuxième version des cgroups a introduit la fonctionnalité du contrôleur freezer, qui permet d'arrêter le fonctionnement dans un cgroup et de libérer temporairement certaines ressources (CPU, entrée/sortie et potentiellement même mémoire) pour effectuer d'autres tâches. La gestion se fait à travers les fichiers de contrôle cgroup.freeze et cgroup.events dans l'arbre cgroup. L'écriture de 1 dans cgroup.freeze fige les processus dans le cgroup courant et tous les groupes enfants. Comme le gel nécessite un certain temps, un fichier supplémentaire cgroup.events a été proposé pour permettre de connaître la fin de l'opération;
    • Assuré l'exportation des attributs de mémoire attachée à chaque nœud dans sysfs, permettant ainsi de déterminer depuis l'espace utilisateur la manière dont les banques de mémoire sont traitées dans les systèmes à mémoire hétérogène;
    • Le sous-système PSI (Pressure Stall Information) a été amélioré, permettant d'analyser les informations sur le temps d'attente pour obtenir diverses ressources (CPU, mémoire, entrée/sortie) pour des tâches spécifiques ou des ensembles de processus dans un cgroup. Grâce à PSI, les gestionnaires dans l'espace utilisateur peuvent évaluer plus précisément le niveau de charge du système et la nature du ralentissement, par rapport à la moyenne de charge. La nouvelle version prend en charge la configuration des seuils de sensibilité et permet d'utiliser l'appel poll() pour recevoir des notifications lorsque des seuils définis sont atteints sur un intervalle de temps donné. Cette fonctionnalité permet d'organiser sous Android le suivi d'une pénurie de mémoire à un stade précoce, d'identifier les sources de problèmes et de terminer les applications peu importantes, sans créer de problèmes visibles pour l'utilisateur. Lors de tests de stress, les outils de surveillance de la consommation de mémoire basés sur PSI ont montré 10 fois moins de faux positifs par rapport aux statistiques de vmpressure;
    • L'optimisation du code pour la vérification des programmes BPF a été effectuée, permettant une vérification jusqu'à 20 fois plus rapide pour les grands programmes. Cette optimisation a permis d'augmenter la limite de taille des programmes BPF de 4096 à un million d'instructions;
    • Pour les programmes BPF fournie la possibilité d'accéder à des données globales, ce qui permet de définir dans les programmes des variables et des constantes globales;
    • Ajouté API, permettant de contrôler depuis les programmes BPF les modifications des paramètres sysctl;
    • Pour l'architecture MIPS32, un compilateur JIT a été réalisé pour la machine virtuelle eBPF;
    • Pour l'architecture PowerPC 32 bits, un support pour l'outil de débogage KASan (Kernel address sanitizer) a été ajouté, permettant de détecter les erreurs dans la gestion de la mémoire;
    • Sur les systèmes x86-64, la limite de placement des dumps d'état lors d'un crash du noyau (crash-dump) dans des zones de mémoire supérieures à 896 Mo a été levée;
    • Pour l'architecture s390, le support de la randomisation de l'espace d'adressage du noyau (KASLR) et la possibilité de vérification des signatures numériques lors du chargement du noyau via kexec_file_load() ont été mis en place;
    • Pour l'architecture PA-RISC, le support du débogueur du noyau (KGDB), des pointeurs de saut et des kprobes a été ajouté;
  • Matériel
    • amdgpu Lima pour les GPU Mali 400/450, utilisés dans de nombreuses anciennes puces basées sur l'architecture ARM. Pour les GPU Mali plus récents, un pilote Panfrost a été ajouté, prenant en charge les puces basées sur les microarchitectures Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) et Bifrost (Mali G3x, G5x, G7x);
    • Ajout du support des périphériques audio utilisant des firmware ouverts Sound Open Firmware (SOF). Malgré la disponibilité de pilotes ouverts, le code des firmwares pour les puces audio restait fermé et fourni sous forme binaire. Le projet Sound Open Firmware a été développé par Intel pour créer des firmwares ouverts pour les puces DSP liées au traitement audio (par la suite, Google a également rejoint le développement). À l'heure actuelle, des firmwares ouverts pour les puces audio des plateformes Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake et IceLake ont déjà été préparés dans le cadre de ce projet;
    • Dans le pilote DRM Intel (i915), le support pour les puces
      Elkhartlake (Gen11) a été ajouté. Des identifiants PCI ont été ajoutés pour les puces Comet Lake (Gen9). Le support pour les puces Icelake a été stabilisé, pour lesquelles des identifiants PCI supplémentaires pour les appareils ont également été ajoutés.
      Activé
      mode de basculement asynchrone entre deux tampons de mémoire vidéo (async flip) lors de l'exécution d'opérations d'écriture via mmio, ce qui a considérablement augmenté les performances de certaines applications 3D (par exemple, les performances dans le test 3DMark Ice Storm ont augmenté de 300 à 400 %). Prise en charge de la technologie HDCP2.2 High-bandwidth Digital Content Protection pour le cryptage du signal vidéo transmis via HDMI ;
    • Dans le pilote amdgpu pour GPU Vega20 ajouté prise en charge de RAS (Reliability, Availability, Serviceability) et prise en charge expérimentale du sous-système SMU 11, qui a remplacé la technologie Powerplay. Pour GPU Vega12 ajouté prise en charge du mode BACO (Bus Active, Chip Off). Prise en charge initiale de XGMI, un bus haute vitesse (PCIe 4.0) pour la connexion du GPU. Le pilote amdkfd a ajouté les identifiants manquants pour les cartes basées sur GPU Polaris10 ;
    • Dans le pilote Nouveau, prise en charge des cartes basées sur le chipset NVIDIA Turing 117 (TU117, utilisé dans GeForce GTX 1650). Dans
      kconfig ajouté configuration pour désactiver les fonctionnalités obsolètes qui ne sont plus utilisées dans les versions actuelles de libdrm ;
    • Dans l'API DRM et le pilote amdgpu, prise en charge des objets de synchronisation « timeline », permettant de se passer des verrouillages classiques.
    • Le pilote vboxvideo pour GPU virtuel VirtualBox a été transféré de la branche staging à la composition principale ;
    • Ajout du pilote aspeed pour le chip GFX SoC ASPEED ;
    • Ajout de la prise en charge des ARM SoC et des cartes Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic : SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

En même temps, le Fonds latino-américain pour le logiciel libre a formé
une variante noyau libre complet 5.2 — Linux-libre 5.2-gnu, dépouillé des éléments de firmware et de pilotes contenant des composants non libres ou des morceaux de code dont l'utilisation est limitée par le fabricant. Dans cette nouvelle version, le chargement des fichiers
Sound Open Firmware. Le chargement des blobs dans les pilotes
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp et ucsi_ccg a été désactivé. Le code de nettoyage des blobs dans les pilotes et sous-systèmes ixp4xx, imx-sdma, amdgpu, nouveau et goya a été mis à jour, ainsi que dans la documentation du microcode. Le nettoyage des blobs dans le pilote r8822be a été arrêté en raison de sa suppression.

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