Lanzamiento del núcleo Linux 7.1

Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 7.1. Entre los cambios más destacados: un nuevo controlador ntfsplus, la primera fase de descontinuación del soporte para CPU i486, eliminación de antiguos adaptadores Ethernet, eliminación de los protocolos ISDN y AX.25, inclusión por defecto del mecanismo Intel FRED, soporte para controladores BPF en io_uring, optimización del subsistema de paginación, soporte para subprogramadores en sched_ext, entrada/salida en modo zero-copy en el controlador ublk, operación ioctl «shutdown» en Btrfs, y cambio dinámico en el modo de rendimiento en el controlador amd-pstate, además del soporte xattr para los sockets de Unix.

En la nueva versión se han aceptado 17275 correcciones de 2589 desarrolladores,
el tamaño del parche es de 57 MB (los cambios han afectado a 13528 archivos, se han agregado 751785 líneas de código y se han eliminado 405916 líneas). En la versión anterior se realizaron 15624 correcciones de 2477 desarrolladores, y el tamaño del parche fue de 56 MB. Aproximadamente el 41% de todos los cambios presentados en 7.1 están relacionados con controladores de dispositivos, alrededor del 12% de los cambios están relacionados con la actualización de código específico de arquitecturas de hardware, el 14% con la pila de red, el 5% con sistemas de archivos y el 3% con subsistemas internos del núcleo.

Novedades principales en el núcleo 7.1 (1, 2, 3):

  • Subsistema de disco, entrada/salida y sistemas de archivos
    • Se ha aceptado una nueva implementación del sistema de archivos NTFS — ntfsplus, basada en el código del controlador clásico ntfs que fue eliminado del núcleo. El antiguo controlador ha sido reescrito y ampliado con la capacidad de escribir datos, adaptándose para soportar características modernas, como el uso de folios de páginas de memoria en lugar de estructuras buffer_head. En el nuevo controlador se implementó la asignación diferida de bloques, lo que ha permitido lograr un alto rendimiento en operaciones de escritura y reducir la fragmentación. Para operaciones de lectura/escritura en búfer, entrada/salida directa, mapeo de extensiones y operaciones de escritura/lectura de páginas, se emplea la biblioteca iomap. En las pruebas de iozone, el controlador ntfsplus resultó ser un 3-5% más rápido que ntfs3 en escritura de un solo hilo y entre 35-110% más rápido al utilizar 4 hilos. La velocidad de lectura de ntfsplus y ntfs3 es aproximadamente equivalente. El controlador ntfs3 sigue formando parte del núcleo e incluye correcciones y pequeñas mejoras.
    • Se ha añadido soporte para la generación y verificación de datos de comprobación de integridad T10 a nivel del sistema de archivos, en lugar de en el dispositivo de bloque, lo que permite mejorar el rendimiento de las operaciones de lectura.
    • Se ha añadido soporte para entrada/salida a través de memoria compartida sin copiar datos entre búferes (modo zero-copy) en el controlador de dispositivos de bloques ublk, que permite trasladar lógica específica al proceso en el espacio de usuario.
    • Para los dispositivos de bloque autosecures SED-OPAL, se han añadido ioctl para gestionar el modo de Usuario Único y se ha implementado el comando STACK_RESET.
    • En Btrfs, se ha declarado estable el soporte para la operación ioctl «shutdown», que permite llevar el sistema de archivos a un estado en el cual se intenta completar las operaciones ya iniciadas, pero se bloquean todas las nuevas operaciones.
    • En exfat, se ha implementado la posibilidad de reservar áreas vacías mediante la llamada fallocate().
    • En el sistema de archivos CIFS se ha añadido soporte para la creación de archivos temporales con la bandera O_TMPFILE.
    • Se ha añadido la opción FSMOUNT_NAMESPACE en la llamada al sistema fsmount(), que crea un nuevo espacio de nombres de puntos de montaje para el sistema de archivos montado. En las llamadas al sistema clone3() y unshare() se han añadido flags para devolver un nuevo espacio de nombres de puntos de montaje que solo contiene un placeholder de sistema de archivos vacío basado en nullfs, el controlador fs-dax con una interfaz de sistema de archivos para dispositivos DAX (Acceso Directo).
    • Se ha añadido protección contra ataques de fuerza bruta respecto a descriptores de archivos en el servidor NFS, implementada a través de la certificación de los descriptores con firma criptográfica. La protección se activa mediante la opción de montaje sign_fh.
    • Se ha añadido un controlador simbólico fs-dax, que proporciona una interfaz para interactuar con dispositivos DAX (Acceso Directo) que soportan operación sin caché de página. Esta interfaz es necesaria para la integración en el núcleo del sistema de archivos famfs, ubicado en la memoria RAM.
    • En el sistema de archivos Ceph se ha implementado la recopilación de métricas de entrada/salida vinculadas a las subdivisiones.
  • Memoria y servicios del sistema
    • Se ha aceptado la primera serie de cambios para finalizar el soporte a los procesadores i486. Se eliminaron las opciones en Kconfig para compilar el núcleo con soporte para los procesadores 486DX, 486SX y AMD ELAN (CONFIG_M486, CONFIG_M486SX y CONFIG_MELAN), y se excluyeron las opciones de compilación para sistemas i486 en el Makefile (-march=i486). El código para el soporte real en procesadores i486 se ha dejado en el núcleo por ahora, pero la compilación para tales sistemas ahora requerirá aplicar parches a los archivos de construcción. Las razones para eliminar el soporte para procesadores i486 están vinculadas al deseo de deshacerse de código complicado en el núcleo que emulaba algunas operaciones de hardware, como CX8 (comparar y cambiar 8 bytes) y TSC (contador de ciclos de CPU utilizado en el planificador de tareas).
    • En el controlador amd-pstate, utilizado para gestionar el consumo de energía en sistemas con procesadores AMD, se ha implementado el cambio dinámico de la configuración de rendimiento y la modificación del comportamiento de gestión de energía dependiendo de si funciona con alimentación de red o batería. Al estar conectado a una toma de corriente, se activa ahora el modo 'performance', mientras que al funcionar con batería, se activa 'balance_performance'.
    • Se ha activado por defecto el mecanismo Intel FRED (Flexible Return and Event Delivery), permitiendo mejorar la eficiencia y fiabilidad en la entrega de información sobre eventos de bajo nivel. El aumento del rendimiento y la reducción de latencias se logra devolviendo eventos con la instrucción de procesador IRET en lugar de transmitir eventos a través de la tabla IDT (Interrupt Descriptor Table). La fiabilidad se mejora mediante el procesamiento separado de la llegada de eventos en el contexto del núcleo y en el contexto del usuario, la protección contra la ejecución anidada de NMI y la conservación en el marco de pila extendido de todos los registros de CPU relacionados con la excepción.
    • Se ha añadido soporte para bloques de monitoreo del rendimiento de la memoria (PMU — Performance Monitoring Unit) en el subsistema perf, utilizados en SoC NVIDIA Tegra410.
    • Se ha acelerado la ejecución de operaciones futex en sistemas ARM, gracias a la utilización de instrucciones Arm 9.6 LSUI, que permiten al núcleo acceder a la memoria del espacio de usuario sin desactivar previamente el modo de protección PAN (Privileged Access Never).
    • En sistemas con procesadores ARM, se ha mejorado el soporte para la extensión de la arquitectura del conjunto de instrucciones MPAM (Memory System Resource Partitioning and Monitoring) y se ha añadido la posibilidad de su uso en espacio de usuario para gestionar recursos a través del mecanismo resctrl. MPAM permite etiquetar cada acceso a la memoria con un identificador de sección (PARTID, Partition ID) y un identificador de grupo de monitoreo (PMG, Monitoring Group ID). En relación con el PARTID, se puede restringir el consumo de recursos como el ancho de banda de la memoria o el tamaño de la caché, para evitar que un grupo de tareas consuma todos los recursos. En el contexto de la monitorización, la combinación de PMG y PARTID se puede utilizar para rastrear el consumo de recursos de memoria bajo ciertos tipos de carga.
    • Se ha añadido la posibilidad de usar el modo de tiempo real (PREEMPT_RT) en procesadores ARM de 32 bits. Anteriormente, el soporte de PREEMPT_RT se había proporcionado para arquitecturas x86 y x86-64, ARM64, RISC-V y LoongArch.
    • Se han añadido nuevos flags al llamada al sistema clone3(): CLONE_NNP — prohibición de obtener nuevos privilegios en el proceso creado; CLONE_AUTOREAP — finalización automática del proceso en lugar de convertirlo en un proceso zombi hasta que el proceso padre ejecute la función wait();
      CLONE_PIDFD_AUTOKILL — finalización del proceso hijo en caso de que se cierre el descriptor asociado pidfd (por ejemplo, al finalizar el proceso padre).
    • Para cada módulo del núcleo, se ha añadido un archivo import_ns en el directorio /sys/module, que contiene una lista de los espacios de nombres de símbolos importados (symbol namespace).
    • En el sistema de entrada/salida asíncrona io_uring se ha añadido soporte para utilizar la subsistema BPF para crear controladores. Por ejemplo, se puede sustituir el bucle principal de despachador por un programa BPF.
    • En la subsistema BPF, se ha modernizado el análisis del uso de la pila, lo que ha acelerado significativamente la verificación de muchos programas BPF por parte del verificador.
    • Con el objetivo de optimizar el rendimiento, se ha reescrito la subsistema hrtimer (high resolution timer). El programador de tareas ahora puede utilizar temporizadores de alta resolución sin perder rendimiento en lugar de temporizadores menos precisos.
    • Se continúa la incorporación de cambios de la rama Rust-for-Linux, relacionados con el uso del lenguaje Rust como segundo idioma para el desarrollo de controladores y módulos del núcleo (el soporte para Rust no se activa por defecto y no incluye a Rust como dependencias de compilación obligatorias para el núcleo). Hasta la versión 1.85 (que se incluye en Debian 13), se han aumentado los requisitos de versión de Rust necesarios para compilar los componentes del núcleo. Se ha agregado una opción experimental de Kconfig, CONFIG_RUST_INLINE_HELPERS, para incrustar capas en C en el código Rust durante la compilación (la optimización ha acelerado el funcionamiento del controlador nulo en un 2%). Se ha añadido el macro ‘const_assert!’. Se han ampliado las funcionalidades de los módulos ‘sizes’, ‘clk’, ‘ptr’, ‘sync’, ‘error’.
    • Al mecanismo SCHED_EXT, que permite usar BPF para crear planificadores de CPU, se le ha añadido una capacidad inicial para crear planificadores anidados (sub-scheduler), mediante los cuales cada cgroup puede utilizar su propio planificador de tareas.
    • Se ha continuado la optimización del subsistema de intercambio (swap). Se ha eliminado la antigua estructura swap_map, reemplazada por el mecanismo ‘Swap Table’. Este cambio ha permitido mejorar el rendimiento y reducir el consumo de memoria en el subsistema de intercambio.
    • En el subsistema DAMON (Data Access MONitor), que permite rastrear el acceso de un proceso a datos en la memoria RAM (por ejemplo, se puede averiguar a qué áreas de memoria accedió el proceso y cuáles áreas de memoria quedaron sin utilizar), se ha añadido soporte para diferentes algoritmos de ajuste automático de cuota.
    • En el subsistema de rastreo se ha implementado la concepción de búferes circulares externos, lo que permite obtener datos de rastreo de máquinas virtuales. Esta capacidad está habilitada en hipervisores KVM y nVHE para transferir datos de rastreo del sistema invitado al lado del host.
    • En el subsistema RV (Runtime Verification), diseñado para verificar la corrección del funcionamiento de sistemas de alta fiabilidad, se han añadido componentes de monitoreo ‘stall’ para rastrear tareas cuya ejecución ha sido temporalmente suspendida o bloqueada, y ‘deadline’ para analizar el comportamiento del planificador de tareas.
  • Virtualización y seguridad
    • Por defecto, se ha establecido el flag PROC_MEM_FORCE_PTRACE, que permite eludir los derechos de acceso a la memoria del proceso a través del archivo /proc/PID/mem solo para los procesos que aplican el sistema de llamada ptrace() para depuración.
    • Se ha añadido un nuevo conjunto de hooks para los módulos LSM (Linux Security Module), que simplifican la implementación de políticas para sistemas de archivos apilados, como overlayfs. También se ha añadido un hook en LSM para el control de acceso a los sockets Unix, utilizado en el módulo LSM Landlock para asignar políticas de acceso a los sockets Unix.
    • Se ha añadido soporte para los algoritmos AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH y SM3 a la biblioteca criptográfica integrada lib/crypto, que proporciona funciones más simples y rápidas que la API criptográfica tradicional. Se ha añadido documentación para lib/crypto.
    • Se ha implementado el modo pKVM (Protected KVM) para el aislamiento estricto de la memoria anónima utilizando extensiones de virtualización para la arquitectura AArch64. En este modo, las páginas de memoria de la máquina huésped se excluyen de la tabla de direcciones virtuales del sistema host.
    • Se ha añadido soporte para la quinta versión del controlador virtual de interrupciones ARM (VGICv5 - ARM Virtual Generic Interrupt Controller v5) en el hipervisor KVM.
  • Subsistema de red
    • Se ha implementado el soporte para atributos extendidos de archivos (xattr) 'user.*' en sockets Unix creados con la función socket(). Se destaca su uso para etiquetar mediante atributos extendidos los sockets Unix utilizados para IPC Varlink, con el fin de diferenciarlos para inspección y depuración de IPC mediante programas BPF. En systemd-journald, se pretende utilizar los atributos extendidos para definir el formato del registro en relación con el socket /dev/log.
    • Se ha eliminado el soporte para el protocolo UDP-Lite (RFC 3828), que permitía la entrega de paquetes con sumas de verificación incorrectas bajo la premisa de que, por ejemplo, los datos de audio y video parcialmente dañados podrían recuperarse a nivel de códec. El protocolo se ha eliminado ya que no lo utiliza nadie.
    • Se ha eliminado la posibilidad de compilar la pila IPv6 como un módulo del kernel, que en la práctica no se utilizaba (IPv6 se integra en el kernel o se desactiva completamente), pero complicaba el mantenimiento, ya que al compilar IPv6 como módulo del kernel (CONFIG_IPV6=m), muchos subsistemas se veían obligados a añadir controladores innecesarios por si el módulo IPv6 se descargaba.
  • Hardware
    • Se ha incluido un nuevo motor de pantalla (DC) en el controlador AMDGPU para los APU AMD de la serie HD 7000 (Sea Islands, GCN 1.1).
    • Se ha añadido soporte inicial para la GPU NVIDIA GA100 basada en la microarquitectura Ampere en el controlador Nouveau.
    • Se ha continuado el trabajo en el controlador drm (Direct Rendering Manager) Xe para GPU basado en la arquitectura Intel Xe, que se utiliza en las tarjetas gráficas Intel de la familia Arc y la gráfica integrada, comenzando con los procesadores Tiger Lake. Se añadió soporte para la subsistema gráfico de los procesadores Intel Nova Lake-P. Se implementaron objetos de búfer purgables (Purgeable Buffer Objects).
    • Se ha continuado con la integración de los componentes del controlador Nova para GPUs NVIDIA, equipadas con firmware GSP, utilizados desde la serie NVIDIA GeForce RTX 2000 basada en la microarquitectura Turing. El controlador está escrito en el lenguaje Rust. Se ha añadido soporte inicial para GPUs basadas en la microarquitectura Turing.
    • Se añadió el controlador DRM corebootdrm para la salida de gráficos a través del framebuffer de las firmware basadas en CoreBoot.
    • Se añadió soporte para los dispositivos de audio ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP y WM8962. Se mejoró el soporte para dispositivos de audio con interfaz USB: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow,
      PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
    • Se añadió el controlador yogafan para rastrear la velocidad de rotación del ventilador en laptops Lenovo Yoga, Legion e IdeaPad.
    • Se añadió soporte para plataformas ARM, SoC y dispositivos: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 y ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
    • Se eliminó el soporte para los controladores SATA AHCI y PCIe utilizados en SoC Baikal-T1, así como los controladores del temporizador, memoria, physmap, bus, hwmon, dwc y bt1-rom. La razón de su eliminación se atribuye a la falta de soporte y a la integración no terminada en el núcleo de los componentes de la plataforma Baikal, cuya producción en Rusia se detuvo en noviembre de 2025.
    • Se eliminaron 12 controladores para dispositivos Ethernet con interfaces ISA y PCMCIA, producidos antes de 2002, para los cuales no se encontraron usuarios que los utilizaran en sistemas operativos. También se excluyeron del núcleo
      sub-sistemas ISDN, implementaciones de los protocolos AX.25, CAIF y Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), los controladores yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Radioaficionado), inport y logibm (busmouse). La razón de su eliminación fue la falta de mantenedores activos ante el aumento de errores detectados mediante syzbot y herramientas de IA, que nadie se encarga de corregir y toda la carga para resolver problemas serios recae sobre los mantenedores de los principales subsistemas de red del núcleo. En total, se eliminaron más de 140 mil líneas de código.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster