Lanzamiento del núcleo de Linux 5.17

Luego de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del kernel Linux 5.17. Entre los cambios más notables: un nuevo sistema de gestión del rendimiento para procesadores AMD, la capacidad de asignar recursivamente ID de usuario en sistemas de archivos, soporte para programas BPF compilados portátiles, una transición del generador de números pseudoaleatorios al algoritmo BLAKE2s, una utilidad RTLA para análisis de ejecución en tiempo real, un nuevo backend fscache para almacenar en caché sistemas de archivos de red, la capacidad de adjuntar nombres a operaciones mmap anónimas.

La nueva versión incluye 14203 correcciones de 1995 desarrolladores, el tamaño del parche es de 37 MB (los cambios afectaron a 11366 archivos, se agregaron 506043 líneas de código y se eliminaron 250954 líneas). Aproximadamente el 44% de todos los cambios introducidos en 5.17 están relacionados con controladores de dispositivos, aproximadamente el 16% de los cambios están relacionados con la actualización de código específico para arquitecturas de hardware, el 15% están relacionados con la pila de red, el 4% están relacionados con sistemas de archivos y el 4% están relacionados con los subsistemas internos del núcleo.

Innovaciones clave en el kernel 5.17:

  • Subsistema de disco, E/S y sistemas de archivos
    • Se implementó la posibilidad de mapeo anidado de ID de usuario de sistemas de archivos montados, utilizado para comparar archivos de un usuario específico en una partición externa montada con otro usuario en el sistema actual. La característica agregada le permite usar recursivamente el mapeo sobre los sistemas de archivos para los cuales el mapeo ya está aplicado.
    • El subsistema fscache, utilizado para organizar el almacenamiento en caché de los datos transferidos a través de sistemas de archivos de red en el sistema de archivos local, se ha reescrito por completo. La nueva implementación se distingue por una simplificación significativa del código y la sustitución de operaciones complejas de planificación y seguimiento de estados de objetos por mecanismos más simples. La compatibilidad con el nuevo fscache se implementa en el sistema de archivos CIFS.
    • El subsistema de seguimiento de eventos en fanotify FS implementa un nuevo tipo de evento, FAN_RENAME, que le permite interceptar inmediatamente la operación de cambio de nombre de archivos o directorios (anteriormente, se usaban dos eventos separados FAN_MOVED_FROM y FAN_MOVED_TO para procesar cambios de nombre).
    • El sistema de archivos Btrfs ha optimizado las operaciones de registro y fsync para directorios grandes, implementadas copiando solo claves de índice y reduciendo la cantidad de metadatos registrados. Se ha proporcionado soporte para indexación y búsqueda por tamaño de registros de espacio libre, lo que ha reducido la latencia en aproximadamente un 30 % y ha reducido el tiempo de búsqueda. Permitido interrumpir las operaciones de desfragmentación. La capacidad de agregar dispositivos cuando el equilibrio entre unidades está deshabilitada, es decir. al montar un sistema de archivos con la opción skip_balance.
    • Se ha propuesto una nueva sintaxis para montar el sistema de archivos Ceph, que resuelve los problemas existentes asociados con la vinculación a direcciones IP. Además de las direcciones IP, ahora puede utilizar el identificador de clúster (FSID) para identificar el servidor: mount -t ceph [email protected]_name=/[subdir] mnt -o mon_addr=monip1[:puerto][/monip2[:puerto]]
    • El sistema de archivos Ext4 se ha trasladado a una nueva API de montaje que separa los pasos de análisis de opciones de montaje y configuración de superbloque. Hemos eliminado el soporte para las opciones de montaje lazytime y nolazytime, que se agregaron como un cambio temporal para facilitar la transición de util-linux para usar el indicador MS_LAZYTIME. Se agregó soporte para configurar y leer etiquetas en FS (ioctl FS_IOC_GETFSLABEL y FS_IOC_SETFSLABEL).
    • NFSv4 agregó soporte para trabajar en sistemas de archivos que no distinguen entre mayúsculas y minúsculas en nombres de archivos y directorios. NFSv4.1+ agrega soporte para definir sesiones agregadas (trunking).
  • Servicios de memoria y sistema.
    • Se agregó un controlador amd-pstate para proporcionar control de frecuencia dinámico para un rendimiento óptimo. El controlador es compatible con CPU y APU AMD a partir de la generación Zen 2, desarrollado conjuntamente con Valve y tiene como objetivo mejorar la eficiencia de la gestión de energía. Para los cambios de frecuencia adaptativos, se utiliza el mecanismo CPPC (Control de rendimiento del procesador colaborativo), que le permite cambiar los indicadores con mayor precisión (no limitado a tres niveles de rendimiento) y responder más rápidamente a los cambios de estado que el estado P basado en ACPI utilizado anteriormente. controladores (CPUFreq).
    • El subsistema eBPF ofrece un controlador bpf_loop(), que proporciona una forma alternativa de organizar bucles en programas eBPF, más rápido y más fácil de verificar por parte de un verificador.
    • A nivel del kernel, se implementa el mecanismo CO-RE (Compilar una vez - Ejecutar en todas partes), que le permite compilar el código de los programas eBPF solo una vez y usar un cargador universal especial que adapta el programa cargado al kernel actual y a los tipos BTF. (Formato de tipo BPF).
    • Es posible asignar nombres a áreas de memoria privada anónima (asignada mediante malloc), lo que puede simplificar la depuración y optimización del consumo de memoria en las aplicaciones. Los nombres se asignan mediante prctl con el indicador PR_SET_VMA_ANON_NAME y se muestran en /proc/pid/maps y /proc/pid/smaps en el formato "[anon: ]".
    • El programador de tareas proporciona seguimiento y muestra en /proc/PID/sched el tiempo invertido por los procesos en estado de inactividad forzada, utilizado, por ejemplo, para reducir la carga cuando el procesador se sobrecalienta.
    • Se agregó el módulo gpio-sim, diseñado para simular chips GPIO para pruebas.
    • Se agregó un subcomando de "latencia" al comando "perf ftrace" para generar histogramas con información de latencia.
    • Se agregó un conjunto de utilidades "RTLA" para analizar el trabajo en tiempo real. Incluye utilidades como osnoise (determina la influencia del sistema operativo en la ejecución de una tarea) y timerlat (cambia los retrasos asociados con el temporizador).
    • Se ha integrado una segunda serie de parches con la implementación del concepto de folios de páginas, que se asemejan a páginas compuestas, pero tienen una semántica mejorada y una organización del trabajo más clara. El uso de tomos le permite acelerar la administración de la memoria en algunos subsistemas del kernel. Los parches propuestos completaron la conversión del caché de páginas al uso de tomos y agregaron soporte inicial para tomos en el sistema de archivos XFS.
    • Se agregó el modo de compilación “make mod2noconfig”, que genera una configuración que recopila todos los subsistemas deshabilitados en forma de módulos del kernel.
    • Se han planteado los requisitos para la versión de LLVM/Clang que se puede utilizar para construir el kernel. La compilación ahora requiere al menos la versión LLVM 11.
  • Virtualización y seguridad
    • Se propone una implementación actualizada del generador de números pseudoaleatorios RDRAND, responsable del funcionamiento de los dispositivos /dev/random y /dev/urandom, que se destaca por la transición al uso de la función hash BLAKE2s en lugar de SHA1 para operaciones de mezcla de entropía. El cambio mejoró la seguridad del generador de números pseudoaleatorios al eliminar el problemático algoritmo SHA1 y eliminar la sobrescritura del vector de inicialización RNG. Dado que el algoritmo BLAKE2s es superior al SHA1 en rendimiento, su uso también tuvo un efecto positivo en el rendimiento.
    • Se agregó protección contra vulnerabilidades en los procesadores causadas por la ejecución especulativa de instrucciones después de operaciones de salto hacia adelante incondicionales. El problema se produce debido al procesamiento preventivo de instrucciones inmediatamente después de la instrucción de bifurcación en la memoria (SLS, Straight Line Speculation). Para habilitar la protección es necesario compilar con la versión de prueba actual de GCC 12.
    • Se agregó un mecanismo para rastrear el recuento de referencias (refcount, reference-count), destinado a reducir la cantidad de errores en el recuento de referencias que conducen al acceso a la memoria después de que se ha liberado. Actualmente, el mecanismo está limitado al subsistema de red, pero en el futuro podrá adaptarse a otras partes del núcleo.
    • Se han implementado comprobaciones ampliadas de nuevas entradas en la tabla de páginas de la memoria de procesos, lo que permite detectar ciertos tipos de daños y detener el sistema, bloqueando ataques en una etapa temprana.
    • Se agregó la capacidad de descomprimir los módulos del kernel directamente por el propio kernel, y no por un controlador en el espacio del usuario, lo que permite usar el módulo LoadPin LSM para garantizar que los módulos del kernel se carguen en la memoria desde un dispositivo de almacenamiento verificado.
    • Se proporciona un ensamblaje con el indicador "-Wcast-function-type", que habilita advertencias sobre la conversión de punteros de función a un tipo incompatible.
    • Se agregó el controlador de host virtual pvUSB para el hipervisor Xen, que brinda acceso a dispositivos USB reenviados a sistemas invitados (permite que los sistemas invitados accedan a dispositivos USB físicos asignados al sistema invitado).
    • Se ha agregado un módulo que le permite interactuar a través de Wi-Fi con el subsistema IME (Intel Management Engine), que viene en la mayoría de las placas base modernas con procesadores Intel y se implementa como un microprocesador separado que funciona independientemente de la CPU.
    • Para la arquitectura ARM64, se ha implementado soporte para la herramienta de depuración KCSAN (Kernel Concurrency Sanitizer), diseñada para detectar dinámicamente condiciones de carrera dentro del kernel.
    • Para sistemas ARM de 32 bits, se agregó la capacidad de utilizar el mecanismo KFENCE para detectar errores al trabajar con memoria.
    • El hipervisor KVM agrega soporte para instrucciones AMX (Advanced Matrix Extensions) implementadas en los próximos procesadores de servidor escalables Intel Xeon.
  • Subsistema de red
    • Se agregó soporte para descargar operaciones relacionadas con la gestión del tráfico al lado de los dispositivos de red.
    • Se agregó la capacidad de usar MCTP (Protocolo de transporte de componentes de administración) en dispositivos serie. MCTP se puede utilizar para comunicarse entre controladores de gestión y sus dispositivos asociados (procesadores host, periféricos, etc.).
    • La pila TCP se ha optimizado, por ejemplo, para mejorar el rendimiento de las llamadas recvmsg y se ha implementado una liberación retrasada de los buffers de socket.
    • En el nivel de autoridad CAP_NET_RAW, se permite configurar los modos SO_PRIORITY y SO_MARK a través de la función setsockopt.
    • Para IPv4, se permite vincular sockets sin formato a direcciones IP no locales mediante las opciones IP_FREEBIND e IP_TRANSPARENT.
    • Se agregó sysctl arp_missed_max para configurar el número umbral de fallas durante la verificación del monitor ARP, después de lo cual la interfaz de red se coloca en un estado deshabilitado.
    • Se proporcionó la capacidad de configurar valores sysctl min_pmtu y mtu_expires separados para espacios de nombres de red.
    • Se agregó la capacidad de configurar y determinar el tamaño de los buffers para paquetes entrantes y salientes a la API de ethtool.
    • Netfilter ha agregado soporte para filtrar el tráfico de tránsito pppoe en un puente de red.
    • El módulo ksmbd, que implementa un servidor de archivos utilizando el protocolo SMB3, agregó soporte para intercambio de claves, habilitó el puerto de red 445 para smbdirect y agregó soporte para el parámetro "smb2 max credit".
  • Equipo
    • Se ha agregado soporte para pantallas para mostrar información confidencial al subsistema drm (Direct Renderering Manager) y al controlador i915; por ejemplo, algunas computadoras portátiles están equipadas con pantallas con un modo de visualización confidencial incorporado, lo que dificulta la visualización desde el exterior. . Los cambios agregados le permiten conectar controladores especializados para dichas pantallas y controlar modos de navegación confidenciales configurando propiedades en controladores KMS normales.
    • El controlador amdgpu incluye soporte para la tecnología de depuración STB (Smart Trace Buffer) para todas las GPU AMD que la admiten. STB facilita el análisis de fallas y la identificación de la fuente de los problemas al almacenar en un búfer especial información sobre las funciones realizadas antes de la última falla.
    • El controlador i915 agrega compatibilidad con los chips Intel Raptor Lake S y habilita de forma predeterminada la compatibilidad con el subsistema de gráficos de los chips Intel Alder Lake P. Es posible controlar la retroiluminación de la pantalla a través de la interfaz VESA DPCD.
    • Se ha devuelto la compatibilidad con la aceleración de desplazamiento por hardware en la consola en los controladores fbcon/fbdev.
    • Integración continua de cambios para admitir chips Apple M1. Se implementó la capacidad de utilizar el controlador simpledrm en sistemas con un chip Apple M1 para la salida a través de un framebuffer proporcionado por el firmware.
    • Se agregó soporte para ARM SoС, dispositivos y placas Snapdragon 7c, 845 y 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 (utilizado en enrutadores 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, Punto de acceso JOZ, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
    • Se agregó soporte para procesadores ARM Cortex-M55 y Cortex-M33.
    • Se agregó soporte para dispositivos basados ​​en CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Se agregó soporte para SoC StarFive JH7100 basado en la arquitectura RISC-V.
    • Se agregó el controlador lenovo-yogabook-wmi para controlar la retroiluminación del teclado y acceder a varios sensores en el Lenovo Yoga Book.
    • Se agregó el controlador asus_wmi_sensors para acceder a los sensores utilizados en las placas base Asus X370, X470, B450, B550 y X399 basadas en procesadores AMD Ryzen.
    • Se agregó el controlador x86-android-tablets para tabletas basadas en x86 enviadas con la plataforma Android.
    • Se agregó soporte para pantallas táctiles TrekStor SurfTab duo W1 y lápiz electrónico para tabletas Chuwi Hi10 Plus y Pro.
    • Los controladores para SoC Tegra 20/30 han agregado soporte para administración de energía y voltaje. Permite el arranque en dispositivos Tegra SoC de 32 bits más antiguos, como ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 y Pad TF300TG.
    • Se agregaron controladores para computadoras industriales Siemens.
    • Se agregó soporte para los paneles LCD Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA y Team Source Display TST043015CMHX.
    • Se agregó soporte para sistemas de sonido y 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. Se han resuelto los problemas con el audio HD Tegra194. Se agregó compatibilidad con HDA para códecs CS35L41. Soporte mejorado para sistemas de sonido para portátiles Lenovo y HP, así como placas base Gigabyte.

Fuente: opennet.ru

Añadir un comentario