Version du noyau Linux 5.2

Après deux mois de développement Linus Torvalds представил version du noyau Linux 5.2. Parmi les changements les plus notables : le mode de fonctionnement Ext4 n'est pas sensible à la casse, les appels système séparés pour le montage du système de fichiers, les pilotes pour GPU Mali 4xx/ 6xx/7xx, la possibilité de gérer les modifications des valeurs sysctl dans les programmes BPF, le mappeur de périphériques. module dm-dust, protection contre les attaques MDS, prise en charge de Sound Open Firmware pour DSP, optimisation des performances BFQ, amenant le sous-système PSI (Pressure Stall Information) à la possibilité d'utilisation sous Android.

La nouvelle version a accepté 15100 1882 correctifs provenant de XNUMX XNUMX développeurs,
taille du correctif - 62 Mo (les modifications ont affecté 30889 625094 fichiers, 531864 45 lignes de code ont été ajoutées, 5.2 XNUMX lignes ont été supprimées). Environ XNUMX % de tous ceux présentés en XNUMX
les modifications sont associées aux pilotes de périphérique, environ 21 % des modifications ont
attitude envers la mise à jour du code spécifique aux architectures matérielles, 12%
liés à la pile réseau, 3 % aux systèmes de fichiers et 3 % aux systèmes internes
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 % -Oracle.

principal les innovations:

  • Sous-système de disque, E/S et systèmes de fichiers
    • Ajouté pour Ext4 soutenir fonctionne sans distinguer la casse des caractères dans les noms de fichiers, qui est activé uniquement par rapport aux répertoires vides individuels à l'aide du nouvel attribut «+F» (EXT4_CASEFOLD_FL). Lorsque cet attribut est défini sur un répertoire, toutes les opérations avec les fichiers et sous-répertoires à l'intérieur seront effectuées sans tenir compte de la casse des caractères, dont la casse sera ignorée lors de la recherche et de l'ouverture des fichiers (par exemple, les fichiers Test.txt, test.txt et test.TXT dans ces répertoires seront considérés comme identiques). Par défaut, le système de fichiers continue d'être sensible à la casse, à l'exception des répertoires avec l'attribut « chattr +F » ;
    • Les fonctions de traitement des caractères UTF-8 dans les noms de fichiers, qui sont utilisés lors des opérations de comparaison et de normalisation de chaînes, ont été unifiées ;
    • XFS ajoute une infrastructure pour la surveillance de l'état du système de fichiers et un nouvel ioctl pour interroger l'état de santé. Une fonctionnalité expérimentale a été implémentée pour vérifier les compteurs de superblocs en ligne.
    • Ajout d'un nouveau module mappeur de périphériques "dm-poussière», qui permet de simuler l’apparition de blocs défectueux sur le support ou d’erreurs lors de la lecture depuis le disque. Le module vous permet de simplifier le débogage et les tests des applications et des divers systèmes de stockage face à d'éventuelles pannes ;
    • Réalisé Optimisations significatives des performances pour le planificateur d'E/S BFQ. Dans des conditions de charge E/S élevée, optimisations apportées permettre Réduisez le temps des opérations telles que le lancement d’applications jusqu’à 80 %.
    • Ajout d'une série d'appels système pour le montage de systèmes de fichiers : fsopen(), ouvert_arbre(), fspick(), fsmount(), fsconfig() и move_mount(). Ces appels système vous permettent de traiter séparément différentes étapes de montage (traiter le superbloc, obtenir des informations sur le système de fichiers, monter, attacher au point de montage), qui étaient auparavant effectuées à l'aide de l'appel système commun mount(). Des appels séparés offrent la possibilité d'effectuer des scénarios de montage plus complexes et d'effectuer des opérations distinctes 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, un traitement séparé vous permet de déterminer avec précision les raisons de l'apparition de codes d'erreur et de définir plusieurs sources pour les systèmes de fichiers multicouches, tels que les overlayfs ;
    • Une nouvelle opération IORING_OP_SYNC_FILE_RANGE a été ajoutée à l'interface pour les E/S asynchrones io_uring, qui effectue des actions équivalentes à un appel système sync_file_range(), et a également implémenté la possibilité d'enregistrer eventfd avec io_uring et de recevoir des notifications sur l'achèvement des opérations ;
    • Pour le système de fichiers CIFS, l'ioctl FIEMAP a été ajouté, fournissant un mappage d'étendue efficace, ainsi que la prise en charge des modes SEEK_DATA et SEEK_HOLE ;
    • Dans le sous-système FUSE suggéré API de gestion de la mise en cache des données ;
    • Btrfs a optimisé l'implémentation de qgroups et amélioré la vitesse d'exécution de fsync pour les fichiers comportant plusieurs liens physiques. Le code de contrôle de l'intégrité des données a été amélioré, qui prend désormais en compte les dommages possibles aux informations dans la RAM avant de vider les données sur le disque ;
    • CEPH a ajouté la prise en charge de l'exportation d'instantanés via NFS ;
    • L'implémentation du montage NFSv4 en mode « soft » a été améliorée (si une erreur survient lors de l'accès au serveur en mode « soft », un appel à renvoie immédiatement un code d'erreur, et en mode « hard » le contrôle n'est donné que lorsque le FS la disponibilité ou le délai d'attente est rétabli). La nouvelle version offre une gestion plus précise des délais d'attente, une récupération plus rapide en cas de crash et une nouvelle option de montage « softerr » qui vous permet de modifier le code d'erreur (ETIMEDOUT) renvoyé lorsqu'un délai d'attente se produit ;
    • L'API nfsdcld, conçue pour suivre l'état des clients NFS, permet au serveur NFS de suivre correctement l'état du client au redémarrage. Ainsi, le démon nfsdcld peut désormais agir comme un gestionnaire nfsdcltrack ;
    • Pour l'AFS ajoutée émulation des verrous de plage d'octets dans les fichiers (Verrouillage de la plage d'octets);
  • Virtualisation et sécurité
    • Des travaux ont été effectués pour éliminer les endroits du noyau qui permettent l'exécution de code à partir des zones de mémoire réfléchies inscriptibles, ce qui permet de bloquer des failles potentielles 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 contrôler l'activation de certaines techniques de protection contre les vulnérabilités associées à l'exécution spéculative d'instructions sur le processeur. Passer "mitigations=off" désactive toutes les méthodes existantes, et le mode par défaut "mitigations=auto" active la protection mais n'affecte pas l'utilisation d'Hyper Threading. Le mode « mitigations=auto,nosmt » désactive en outre Hyper Threading si la méthode de protection l'exige.
    • Ajouté par prise en charge de la signature numérique électronique selon GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), développé par Vitaly Chikunov de Basalt SPO. Ajout de la prise en charge d'AES128-CCM à l'implémentation native de TLS. Ajout de la prise en charge des algorithmes AEAD au module crypto_simd ;
    • Dans Kconfig ajoutée une section distincte de « renforcement du noyau » avec des options pour améliorer la protection du noyau. Actuellement, la nouvelle section contient uniquement les paramètres permettant d'activer les plugins d'amélioration de la vérification GCC ;
    • Le code du noyau est presque livré à partir d'instructions case insécables dans switch (sans retour ni pause après chaque bloc case). Il reste à corriger 32 cas sur 2311 d'une telle utilisation du switch, après quoi il sera possible d'utiliser le mode « -Wimplicit-fallthrough » lors de la construction du noyau ;
    • Pour l'architecture PowerPC, la prise en charge de mécanismes matériels permettant de limiter les chemins d'accès indésirables du noyau aux données dans l'espace utilisateur a été implémentée ;
    • Code de blocage ajouté attaques Classe MDS (Microarchitectural Data Sampling) dans les processeurs Intel. Vous pouvez vérifier si un système est vulnérable aux vulnérabilités via la variable SysFS « /sys/devices/system/cpu/vulnerabilities/mds ». Disponible deux modes de protection : complète, qui nécessite un microcode mis à jour, et contournement, qui ne garantit pas complètement l'effacement des tampons du processeur lorsque le contrôle est transféré vers l'espace utilisateur ou le système invité. Pour contrôler les modes de protection, le paramètre « mds= » a été ajouté au noyau, qui peut prendre les valeurs « full », « full,nosmt » (+ désactiver les Hyper-Threads) et « off » ;
    • Sur les systèmes x86-64, une protection « stack guard-page » a été ajoutée pour les IRQ, les mécanismes de débogage et les gestionnaires d'exceptions, dont l'essence est la substitution des pages mémoire à la frontière avec la pile, dont l'accès conduit à la génération d'un exception (défaut de page) ;
    • Ajout du paramètre sysctl vm.unprivileged_userfaultfd, qui contrôle la capacité des processus non privilégiés à utiliser l'appel système userfaultfd() ;
  • Sous-système réseau
    • Ajouté par Prise en charge de la passerelle IPv6 pour les routes IPv4. Par exemple, vous pouvez désormais 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, les appels ioctl icmp_echo_ignore_anycast et icmp_echo_ignore_multicast sont implémentés pour ignorer ICMP ECHO pour anycast et
      adresses de multidiffusion. Ajouté par la possibilité de limiter l'intensité du traitement des paquets ICMPv6 ;

    • Pour le protocole maillé BATMAN (Better Approach To Mobile Adhoc Networking), qui permet la création de réseaux décentralisés dans lesquels chaque nœud est connecté via des nœuds voisins, ajoutée prise en charge de la diffusion de la multidiffusion à la monodiffusion, ainsi que la possibilité de contrôler via sysfs ;
    • Dans ethtool ajoutée un nouveau paramètre Fast Link Down, qui vous permet de réduire le temps nécessaire pour recevoir des informations sur un événement de liaison vers le bas pour 1000BaseT (dans des conditions normales, le délai peut aller jusqu'à 750 ms) ;
    • Apparu occasion lier les tunnels Foo-Over-UDP à une adresse, une interface réseau ou un socket spécifique (auparavant, la liaison était effectuée uniquement par un masque commun) ;
    • Dans la pile sans fil à condition possibilité d'implémenter des handlers
      OWE (Opportunistic Wireless Encryption) dans l’espace utilisateur ;

    • Dans Netfilter, la prise en charge de la famille d'adresses inet a été ajoutée aux chaînes nat (par exemple, vous pouvez désormais utiliser une règle de traduction pour traiter ipv4 et ipv6, sans séparer les règles pour ipv4 et ipv6) ;
    • En lien net ajoutée régime strict pour une vérification stricte de l'exactitude de tous les messages et attributs, dans laquelle la taille attendue des attributs ne doit pas être dépassée et l'ajout de données supplémentaires à la fin des messages est interdit ;
  • Services mémoire et système
    • L'indicateur CLONE_PIDFD a été ajouté à l'appel système clone(), lorsqu'il est spécifié, le descripteur de fichier « pidfd » identifié avec le processus enfant créé est renvoyé au processus parent. Ce descripteur de fichier, par exemple, peut être utilisé pour envoyer des signaux sans craindre de se retrouver dans une situation de concurrence critique (immédiatement après l'envoi du signal, le PID cible peut être libéré en raison de l'arrêt du processus et occupé par un autre processus) ;
    • Pour la deuxième version des groupes de contrôle, la fonctionnalité du contrôleur de congélation a été ajoutée, avec laquelle vous pouvez arrêter de travailler dans un groupe de contrôle et libérer temporairement certaines ressources (CPU, E/S et potentiellement même mémoire) pour effectuer d'autres tâches. La gestion se fait via les fichiers de contrôle cgroup.freeze et cgroup.events dans l'arborescence cgroup. L'entrée 1 dans cgroup.freeze gèle les processus dans le groupe de contrôle actuel et tous les groupes enfants. Étant donné que le gel prend un certain temps, un fichier cgroup.events supplémentaire est fourni grâce auquel vous pouvez vous renseigner sur l'achèvement de l'opération ;
    • Sécurisé export des attributs de mémoire attachés à chaque nœud dans sysfs, qui permet de déterminer depuis l'espace utilisateur la nature du traitement des banques de mémoire dans les systèmes à mémoire hétérogène ;
    • Le sous-système PSI (Pressure Stall Information) a été amélioré, ce qui permet d'analyser les informations sur le temps d'attente pour recevoir diverses ressources (CPU, mémoire, E/S) pour certaines tâches ou ensembles de processus dans un groupe de contrôle. Grâce à PSI, les gestionnaires de l'espace utilisateur peuvent estimer plus précisément le niveau de charge du système et les modèles de ralentissement par rapport à la charge moyenne. La nouvelle version prend en charge la définition de seuils de sensibilité et la possibilité d'utiliser l'appel poll() pour recevoir une notification indiquant que les seuils définis ont été déclenchés pendant une certaine période de temps. Cette fonctionnalité permet à Android de surveiller les pénuries de mémoire à un stade précoce, d'identifier la source des problèmes et de mettre fin aux applications sans importance sans causer de problèmes perceptibles par l'utilisateur. Lors des tests de stress, les outils de surveillance de la consommation de mémoire basés sur PSI ont démontré 10 fois moins de faux positifs par rapport aux statistiques vmpression ;
    • Le code de vérification des programmes BPF a été optimisé, ce qui permet une vérification jusqu'à 20 fois plus rapide pour les gros programmes. L'optimisation a permis de relever la limite de taille des programmes BPF de 4096 à un million d'instructions ;
    • Pour les programmes BPF fourni par la possibilité d'accéder aux données globales, qui vous permet de définir des variables et des constantes globales dans les programmes ;
    • Добавлен API, qui vous permet de contrôler les modifications des paramètres sysctl à partir des programmes BPF ;
    • Pour l'architecture MIPS32, un compilateur JIT pour la machine virtuelle eBPF a été implémenté ;
    • Pour l'architecture PowerPC 32 bits, la prise en charge de l'outil de débogage KASan (Kernel Address Sanitizer) a été ajoutée, ce qui permet d'identifier les erreurs lors du travail avec la mémoire ;
    • Sur les systèmes x86-64, la restriction concernant le placement de vidages d'état lors d'un crash du noyau (crash-dump) dans les zones de mémoire supérieures à 896 Mo a été supprimée ;
    • Pour l'architecture s390, la prise en charge de la randomisation de l'espace d'adressage du noyau (KASLR) et la possibilité de vérifier les signatures numériques lors du chargement du noyau via kexec_file_load() sont implémentées ;
    • Pour l'architecture PA-RISC, ajout de la prise en charge du débogueur du noyau (KGDB), des marques de saut et des kprobes ;
  • équipement
    • Pilote inclus Lima pour le GPU Mali 400/450, utilisé dans de nombreuses puces plus anciennes basées sur l'architecture ARM. Pour les GPU Mali les plus récents, le 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 de la prise en charge des appareils audio utilisant un firmware ouvert Micrologiciel ouvert (SOF). Malgré la disponibilité de pilotes ouverts, le code du firmware des puces sonores restait fermé et était fourni sous forme binaire. Le projet Sound Open Firmware a été développé par Intel pour créer un firmware ouvert pour les puces DSP liées au traitement audio (Google a également rejoint le développement plus tard). Actuellement, le projet a déjà préparé la découverte de firmware pour les puces sonores des plateformes Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake et IceLake ;
    • Le pilote Intel DRM (i915) ajoute la prise en charge des puces
      Elkhartlake (Gen11). Ajout d'identifiants PCI pour les puces Comet Lake (Gen9). La prise en charge des puces Icelake a été stabilisée, pour laquelle des identifiants de périphériques PCI supplémentaires ont également été ajoutés.
      Inclus
      mode de commutation asynchrone entre deux tampons de la 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 technologique ajoutée HDCP2.2 (High-bandwidth Digital Content Protection) pour le cryptage des signaux vidéo transmis via HDMI ;

    • Le pilote amdgpu pour le GPU Vega20 ajoutée 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ée prise en charge du mode BACO (Bus Actif, Chip Off). Ajout de la prise en charge initiale de XGMI, un bus haut débit (PCIe 4.0) pour l'interconnexion GPU. Ajout d'identifiants manquants pour les cartes basées sur le GPU Polaris10 au pilote amdkfd ;
    • Le pilote Nouveau a ajouté la prise en charge des cartes basées sur le chipset NVIDIA Turing 117 (TU117, utilisé dans la GeForce GTX 1650). DANS
      kconfig ajoutée paramètre pour désactiver les fonctions obsolètes qui ne sont plus utilisées dans les versions actuelles de libdrm ;

    • La prise en charge des objets de synchronisation « timeline » a été ajoutée à l'API DRM et au pilote amdgpu, permettant de se passer du blocage classique.
    • Le pilote vboxvideo pour le GPU virtuel VirtualBox a été déplacé de la branche intermédiaire vers la structure principale ;
    • Ajout d'un pilote aspeed pour la puce GFX SoC ASPEED ;
    • Ajout de la prise en charge de ARM SoC et Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi ) cartes 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).

Simultanément, la Free Software Foundation Amérique Latine formé
вариант noyau entièrement gratuit 5.2 - Linux libre 5.2-gnu, débarrassé des éléments de micrologiciel et de pilote contenant des composants propriétaires ou des sections de code dont la portée est limitée par le fabricant. La nouvelle version inclut le téléchargement de fichiers
Micrologiciel ouvert sonore. Le chargement des blobs dans les pilotes est désactivé
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp et ucsi_ccg. Le code de nettoyage des blob dans les pilotes et sous-systèmes ixp4xx, imx-sdma, amdgpu, nouveau et goya, ainsi que dans la documentation du microcode, a été mis à jour. Arrêt du nettoyage des blobs dans le pilote r8822be en raison de sa suppression.

Source: opennet.ru

Ajouter un commentaire