Versión do núcleo de Linux 5.17

Despois de dous meses de desenvolvemento, Linus Torvalds presentou o lanzamento do kernel Linux 5.17. Entre os cambios máis salientables: un novo sistema de xestión de rendemento para procesadores AMD, a capacidade de mapear de forma recursiva ID de usuario en sistemas de ficheiros, soporte para programas BPF compilados portátiles, unha transición do xerador de números pseudoaleatorios ao algoritmo BLAKE2s, unha utilidade RTLA. para a análise de execución en tempo real, un novo backend fscache para almacenar en caché os sistemas de ficheiros de rede, a capacidade de anexar nomes a operacións mmap anónimas.

A nova versión inclúe 14203 correccións de 1995 desenvolvedores, o tamaño do parche é de 37 MB (os cambios afectaron a 11366 ficheiros, engadíronse 506043 liñas de código, elimináronse 250954 liñas). Aproximadamente o 44% de todos os cambios introducidos na versión 5.17 están relacionados con controladores de dispositivos, aproximadamente o 16% dos cambios están relacionados coa actualización de código específico de arquitecturas de hardware, o 15% están relacionados coa pila de rede, o 4% están relacionados con sistemas de ficheiros e o 4% están relacionados cos subsistemas do núcleo interno.

Principais novidades no núcleo 5.17:

  • Subsistema de disco, E/S e sistemas de ficheiros
    • Implementouse a posibilidade de mapeo anidado de ID de usuario dos sistemas de ficheiros montados, usado para comparar ficheiros dun usuario específico nunha partición externa montada con outro usuario do sistema actual. A función engadida permítelle utilizar de forma recursiva a cartografía enriba dos sistemas de ficheiros para os que xa se aplica a cartografía.
    • O subsistema fscache, usado para organizar a caché no sistema de ficheiros local dos datos transferidos a través dos sistemas de ficheiros de rede, foi completamente reescrito. A nova implementación distínguese por unha simplificación significativa do código e a substitución de operacións complexas de planificación e seguimento de estados de obxectos por mecanismos máis sinxelos. O soporte para o novo fscache está implementado no sistema de ficheiros CIFS.
    • O subsistema de seguimento de eventos no fanotify FS implementa un novo tipo de evento, FAN_RENAME, que che permite interceptar inmediatamente a operación de renomear ficheiros ou directorios (anteriormente utilizábanse dous eventos separados FAN_MOVED_FROM e FAN_MOVED_TO para procesar os nomeamentos).
    • O sistema de ficheiros Btrfs optimizou as operacións de rexistro e fsync para directorios grandes, implementado copiando só claves de índice e reducindo a cantidade de metadatos rexistrados. Prestouse soporte para indexar e buscar por tamaño de rexistros de espazo libre, o que reduciu a latencia en aproximadamente un 30 % e reduciu o tempo de busca. Permítese interromper as operacións de desfragmentación. A capacidade de engadir dispositivos ao equilibrar entre unidades está desactivada, é dicir. ao montar un sistema de ficheiros coa opción skip_balance.
    • Propúxose unha nova sintaxe para montar o sistema de ficheiros Ceph, resolvendo os problemas existentes asociados á vinculación a enderezos IP. Ademais dos enderezos IP, agora pode usar o identificador de clúster (FSID) para identificar o servidor: mount -t ceph [protexido por correo electrónico]_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]]
    • O sistema de ficheiros Ext4 pasou a unha nova API de montaxe que separa os pasos de análise de opcións de montaxe e de configuración de superbloque. Eliminamos o soporte para as opcións de montaxe lazytime e nolazytime, que se engadiron como un cambio temporal para facilitar a transición de util-linux para usar a marca MS_LAZYTIME. Engadiuse compatibilidade para configurar e ler etiquetas no FS (ioctl FS_IOC_GETFSLABEL e FS_IOC_SETFSLABEL).
    • NFSv4 engadiu compatibilidade para traballar en sistemas de ficheiros que non distinguen entre maiúsculas e minúsculas nos nomes de ficheiros e directorios. NFSv4.1+ engade soporte para definir sesións agregadas (trunking).
  • Servizos de memoria e sistema
    • Engadido controlador amd-pstate para proporcionar control de frecuencia dinámico para un rendemento óptimo. O controlador admite CPU e APU de AMD a partir da xeración Zen 2, desenvolvido conxuntamente con Valve e que ten como obxectivo mellorar a eficiencia da xestión enerxética. Para os cambios de frecuencia de adaptación, utilízase o mecanismo CPPC (Collaborative Processor Performance Control), que permite cambiar os indicadores con máis precisión (non limitado a tres niveis de rendemento) e responder máis rapidamente aos cambios de estado que o estado P baseado en ACPI usado anteriormente. controladores (CPUFreq).
    • O subsistema eBPF ofrece un manejador bpf_loop(), que proporciona unha forma alternativa de organizar os bucles nos programas eBPF, máis rápido e sinxelo para a verificación por parte dun verificador.
    • A nivel do núcleo, está implementado o mecanismo CO-RE (Compile Once - Run Everywhere), que permite compilar o código dos programas eBPF só unha vez e usar un cargador universal especial que adapta o programa cargado aos tipos de núcleo e BTF actuais. (Formato tipo BPF).
    • É posible asignar nomes a áreas de memoria privada anónima (asignada mediante malloc), o que pode simplificar a depuración e optimización do consumo de memoria nas aplicacións. Os nomes asígnanse mediante prctl coa marca PR_SET_VMA_ANON_NAME e móstranse en /proc/pid/maps e /proc/pid/smaps no formulario "[anon: ]".
    • O programador de tarefas proporciona un seguimento e visualización en /proc/PID/sched do tempo que pasan os procesos no estado de inactividade forzada, usado, por exemplo, para reducir a carga cando se sobrequenta o procesador.
    • Engadiuse un módulo gpio-sim, deseñado para simular chips GPIO para probar.
    • Engadiuse un subcomando "latency" ao comando "perf ftrace" para xerar histogramas con información de latencia.
    • Engadiuse un conxunto de utilidades "RTLA" para analizar o traballo en tempo real. Inclúe utilidades como osnoise (determina a influencia do sistema operativo na execución dunha tarefa) e timerlat (cambia os atrasos asociados ao temporizador).
    • Unha segunda serie de parches integrouse coa implementación do concepto de folios de páxinas, que se asemellan ás páxinas compostas, pero teñen unha semántica mellorada e unha organización máis clara do traballo. Usar tomes permítelle acelerar a xestión da memoria nalgúns subsistemas do núcleo. Os parches propostos completaron a conversión da caché da páxina ao uso de tomos e engadiron soporte inicial para tomos no sistema de ficheiros XFS.
    • Engadiuse o modo de compilación "make mod2noconfig", que xera unha configuración que recolle todos os subsistemas desactivados en forma de módulos do núcleo.
    • Expuxéronse os requisitos para a versión de LLVM/Clang que se pode usar para construír o núcleo. A compilación agora require polo menos a versión LLVM 11.
  • Virtualización e seguridade
    • Proponse unha implementación actualizada do xerador de números pseudoaleatorios RDRAND, responsable do funcionamento dos dispositivos /dev/random e /dev/urandom, destacando pola transición ao uso da función hash BLAKE2s en lugar de SHA1 para operacións de mestura de entropía. O cambio mellorou a seguridade do xerador de números pseudoaleatorios eliminando o algoritmo SHA1 problemático e eliminando a sobreescritura do vector de inicialización RNG. Dado que o algoritmo BLAKE2s é superior ao SHA1 en rendemento, o seu uso tamén tivo un efecto positivo no rendemento.
    • Engadida protección contra as vulnerabilidades dos procesadores causadas pola execución especulativa de instrucións despois de operacións de salto adiante incondicionais. O problema prodúcese debido ao procesamento preventivo das instrucións inmediatamente despois da instrución da rama na memoria (SLS, Straight Line Speculation). Para habilitar a protección, é necesario construír coa versión de proba de GCC 12 actualmente.
    • Engadiuse un mecanismo de seguimento do reconto de referencias (refcount, reference-count), destinado a reducir o número de erros no reconto de referencias que levan ao acceso á memoria despois de que se liberase. O mecanismo está actualmente limitado ao subsistema de rede, pero no futuro pódese adaptar a outras partes do núcleo.
    • Implementáronse comprobacións ampliadas de novas entradas na táboa de páxinas da memoria do proceso, que permiten detectar certos tipos de danos e deter o sistema, bloqueando os ataques nunha fase inicial.
    • Engadiuse a posibilidade de desempaquetar módulos do núcleo directamente polo propio núcleo, e non por un controlador no espazo do usuario, o que permite usar o módulo LoadPin LSM para garantir que os módulos do núcleo se carguen na memoria desde un dispositivo de almacenamento verificado.
    • Proporcionou un conxunto coa marca "-Wcast-function-type", que permite avisos sobre a conversión de punteiros de función a un tipo incompatible.
    • Engadiuse o controlador de host virtual pvUSB para o hipervisor Xen, que proporciona acceso aos dispositivos USB reenviados aos sistemas invitados (permite que os sistemas invitados accedan aos dispositivos USB físicos asignados ao sistema invitado).
    • Engadiuse un módulo que permite interactuar mediante Wi-Fi co subsistema IME (Intel Management Engine), que vén na maioría das placas base modernas con procesadores Intel e que se implementa como un microprocesador separado que funciona independentemente da CPU.
    • Para a arquitectura ARM64, implementouse soporte para a ferramenta de depuración KCSAN (Kernel Concurrency Sanitizer), deseñada para detectar de forma dinámica as condicións de carreira dentro do núcleo.
    • Para os sistemas ARM de 32 bits, engadiuse a posibilidade de utilizar o mecanismo KFENCE para detectar erros ao traballar coa memoria.
    • O hipervisor KVM engade soporte para instrucións AMX (Advanced Matrix Extensions) implementadas nos próximos procesadores de servidor Intel Xeon Scalable.
  • Subsistema de rede
    • Engadido soporte para as operacións de descarga relacionadas coa xestión do tráfico ao lado dos dispositivos de rede.
    • Engadida a posibilidade de usar MCTP (Management Component Transport Protocol) sobre dispositivos en serie. MCTP pódese utilizar para comunicarse entre controladores de xestión e os seus dispositivos asociados (procesadores host, periféricos, etc.).
    • A pila TCP foi optimizada, por exemplo, para mellorar o rendemento das chamadas recvmsg, implementouse a liberación atrasada dos búfers de socket.
    • No nivel de autoridade CAP_NET_RAW, permítese establecer os modos SO_PRIORITY e SO_MARK mediante a función setsockopt.
    • Para IPv4, os sockets en bruto poden vincularse a enderezos IP non locais mediante as opcións IP_FREEBIND e IP_TRANSPARENT.
    • Engadiuse sysctl arp_missed_max para configurar o número limiar de fallos durante a comprobación do monitor ARP, despois de que a interface de rede colócase nun estado desactivado.
    • Proporcionou a posibilidade de configurar valores sysctl min_pmtu e mtu_expires separados para espazos de nomes de rede.
    • Engadiuse a capacidade de establecer e determinar o tamaño dos búfers para os paquetes entrantes e saíntes á API ethtool.
    • Netfilter engadiu compatibilidade para filtrar o tráfico pppoe de tránsito nunha ponte de rede.
    • O módulo ksmbd, que implementa un servidor de ficheiros mediante o protocolo SMB3, engadiu soporte para o intercambio de claves, activou o porto de rede 445 para smbdirect e engadiu compatibilidade co parámetro "smb2 max credit".
  • Оборудование
    • Engadiuse soporte para pantallas para mostrar información confidencial ao subsistema drm (Direct Rendering Manager) e ao controlador i915, por exemplo, algúns portátiles están equipados con pantallas cun modo de visualización confidencial incorporado, o que dificulta a súa visualización desde o exterior. . Os cambios engadidos permítenche conectar controladores especializados para tales pantallas e controlar os modos de navegación confidenciais configurando propiedades nos controladores KMS habituais.
    • O controlador amdgpu inclúe compatibilidade coa tecnoloxía de depuración STB (Smart Trace Buffer) para todas as GPU AMD que o admitan. STB facilita a análise de fallos e a identificación da orixe dos problemas almacenando nun búfer especial información sobre as funcións realizadas antes do último fallo.
    • O controlador i915 engade compatibilidade con chips Intel Raptor Lake S e permite o soporte predeterminado para o subsistema gráfico dos chips Intel Alder Lake P. É posible controlar a retroiluminación da pantalla a través da interface VESA DPCD.
    • O soporte para a aceleración de desprazamento de hardware na consola devolveuse nos controladores fbcon/fbdev.
    • Integración continuada de cambios para admitir chips Apple M1. Implementouse a posibilidade de usar o controlador simpledrm en sistemas cun chip Apple M1 para a saída a través dun framebuffer proporcionado polo firmware.
    • Engadido soporte para ARM SoС, dispositivos e placas Snapdragon 7c, 845 e 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 (usado en routers Wi-Fi), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXLP8 i.MX , Aspeed AST8/AST2500, Engicam i.Core STM2600MP32, Allwinner Tanix TX1, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6/t6000 MacBook Pro 6001/14.
    • Engadido soporte para procesadores ARM Cortex-M55 e Cortex-M33.
    • Engadido soporte para dispositivos baseados en CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Engadido soporte para StarFive JH7100 SoC baseado na arquitectura RISC-V.
    • Engadiuse o controlador lenovo-yogabook-wmi para controlar a retroiluminación do teclado e acceder a varios sensores do Lenovo Yoga Book.
    • Engadiuse o controlador asus_wmi_sensors para acceder aos sensores utilizados nas placas base Asus X370, X470, B450, B550 e X399 baseadas en procesadores AMD Ryzen.
    • Engadiuse o controlador de tabletas x86-android para tabletas baseadas en x86 enviadas coa plataforma Android.
    • Engadido soporte para as pantallas táctiles TrekStor SurfTab duo W1 e bolígrafo electrónico para as tabletas Chuwi Hi10 Plus e Pro.
    • Os controladores para SoC Tegra 20/30 engadiron soporte para a xestión de enerxía e tensión. Permite o arranque en dispositivos SoC Tegra de 32 bits máis antigos, como ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 e Pad TF300TG.
    • Engadidos controladores para ordenadores industriais Siemens.
    • Engadido soporte para Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA e Team Source Display LCD TST043015CMH.
    • Engadido soporte para sistemas de son e códecs AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, sistemas Intel que usan NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Resolvéronse os problemas con Tegra194 HD-audio. Engadido soporte HDA para códecs CS35L41. Compatibilidade mellorada para sistemas de son para portátiles Lenovo e HP, así como para placas base Gigabyte.

Fonte: opennet.ru

Engadir un comentario