
Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 7.1. Entre los cambios más notables: un nuevo controlador ntfsplus, la primera fase de la finalizació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 de la subsistema de intercambio, soporte para subprogramadores en sched_ext, entrada/salida en modo zero-copy en el controlador ublk, operación ioctl de shutdown en Btrfs, conmutación dinámica del modo de rendimiento en el controlador amd-pstate, soporte para xattr en sockets Unix.
La nueva versión incorpora 17275 correcciones de 2589 desarrolladores, el tamaño del parche es de 57 MB (los cambios abarcan 13528 archivos, se han añadido 751785 líneas de código, y se han eliminado 405916 líneas). En la versión anterior hubo 15624 correcciones de 2477 desarrolladores, 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 se refieren a la actualización de código específico de arquitecturas de hardware, el 14% está relacionado con la pila de red, el 5% con sistemas de archivos y el 3% con subsistemas internos del núcleo.
Las principales novedades en el núcleo 7.1 (kernelnewbies.org, lwn.net, opennet):
Subsistema de disco, entrada/salida y sistemas de archivos
- Se ha aceptado en el conjunto una nueva implementación del sistema de archivos NTFS — ntfsplus, basado en el código eliminado del núcleo del controlador clásico ntfs. El antiguo controlador fue reescrito, ampliado para permitir la escritura de datos y adaptado para soportar capacidades modernas, como el uso de folios de páginas de memoria en lugar de la estructura buffer_head. El nuevo controlador implementa la asignación diferida de bloques, lo que ha permitido lograr un alto rendimiento en las operaciones de escritura y reducir la fragmentación. Para las operaciones de escritura/lectura con búfer, entrada/salida directa, mapeo de extensiones y operaciones de escritura/lectura por página se ha utilizado la biblioteca iomap. En las pruebas de iozone, el controlador ntfsplus resultó ser un 3-5% más rápido que ntfs3 en escritura en modo de un solo hilo y un 35-110% al usar 4 hilos. La velocidad de lectura de ntfsplus y ntfs3 es aproximadamente la misma. El controlador ntfs3 permanece en el núcleo y se le han realizado correcciones y mejoras menores.
- Se ha agregado soporte para la generación y verificación de datos de verificación de integridad T10 (deepwiki.com) a nivel del sistema de archivos, no del dispositivo de bloque, lo que permite un aumento del rendimiento en las operaciones de lectura.
- En el controlador de dispositivos de bloque ublk, permitiendo trasladar la lógica específica al lado del proceso en el espacio del usuario, se ha añadido soporte para entrada/salida a través de memoria compartida sin copiar datos entre los búferes (modo cero-copia).
- Para dispositivos de bloques autocompatibles con cifrado SED-OPAL agregados ioctl para gestionar el modo Usuario único y se ha implementado el comando STACK_RESET.
- En Btrfs se ha declarado estable el soporte de la operación ioctl de shutdown, que permite llevar el sistema de archivos a un estado en el que se intenta completar las operaciones ya en ejecución, bloqueando todas las nuevas operaciones.
- En exfat se ha implementado la posibilidad de reservar áreas vacías a través de la llamada fallocate().
- En el sistema de archivos CIFS se ha añadido soporte para crear archivos temporales con la bandera O_TMPFILE.
- En la llamada al sistema fsmount() se ha añadido la opción FSMOUNT_NAMESPACE, que crea un nuevo espacio de nombres para puntos de montaje para el sistema de archivos montado. En las llamadas al sistema clone3() y unshare() se han añadido banderas para devolver un nuevo espacio de nombres de puntos de montaje, que contiene solo un sistema de archivos virtual vacío basado en nullfs, el controlador fs-dax con la interfaz de sistema de archivos para dispositivos DAX (Acceso Directo).
- En el servidor NFS se ha añadido protección contra ataques de adivinanza de descriptores de archivos, implementada a través de la firma criptográfica de los descriptores. La protección se activa mediante la opción de montaje sign_fh.
- Se añadió controlador simbólico fs-dax, que proporciona una interfaz para interactuar con dispositivos DAX (kernel.org) (Acceso Directo), que admiten el funcionamiento sin el caché de páginas. La interfaz especificada 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 el modo «BACKUP LOCK», que se puede utilizar durante la copia de seguridad de archivos de la base de datos; recolección de métricas de entrada/salida en relación con las particiones.
Memoria y servicios del sistema
- Aprobado La primera serie de cambios para el descontinuo soporte de los procesadores i486. Se eliminaron del Kconfig las opciones 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 del Makefile las opciones de compilación para sistemas i486 (-march=i486). El código para el soporte real en procesadores i486 permanece en el núcleo, pero la compilación para tales sistemas ahora requerirá aplicar parches a los archivos de compilación. Las razones de la eliminación del soporte para procesadores i486 se deben al deseo de eliminar del núcleo el código complejo que emulaba algunas operaciones de hardware, como CX8 (comparar y cambiar 8 bytes) y TSC (contador de ciclos de CPU, usado 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 configuraciones de rendimiento y el cambio en el comportamiento de la gestión de energía según si funciona con alimentación eléctrica o batería. Al estar conectado a la alimentación, ahora se activa el modo de rendimiento, y al funcionar con batería, el modo balance_performance.
- Se ha activado por defecto el mecanismo Intel FRED (Flexible Return and Event Delivery), que mejora la eficiencia y fiabilidad en la entrega de información sobre eventos de bajo nivel. El aumento del rendimiento y la reducción de la latencia se logran al devolver eventos mediante la instrucción del procesador IRET en lugar de pasar eventos a través de la tabla IDT (Tabla de Descriptores de Interrupción). La fiabilidad se mejora mediante el tratamiento separado de la recepción de eventos en el contexto del núcleo y en el contexto del usuario, protección contra la ejecución anidada de NMI y la conservación en un marco de pila ampliado de todos los registros de CPU relacionados con la excepción.
- En el subsistema perf se ha añadido se ha añadido soporte para unidades de monitoreo de rendimiento de memoria (PMU - Performance Monitoring Unit), utilizadas en SoC NVIDIA Tegra410.
- Se ha acelerado la ejecución de operaciones futex en sistemas ARM, gracias a la utilización de las instrucciones Arm 9.6 LSUI, que permiten al núcleo acceder a la memoria del espacio de usuario sin desactivar primero el modo de protección PAN (arm.com) (Privileged Access Never).
- En los sistemas con procesadores ARM, se ha mejorado el soporte de la extensión de la arquitectura del conjunto de instrucciones MPAM (Partitionamiento y Monitoreo de Recursos del Sistema de Memoria) y se ha agregado la posibilidad de su uso en el espacio de usuario para gestionar recursos a través del mecanismo resctrl. MPAM proporciona la marcación de cada acceso a la memoria con un identificador de partición (PARTID, Partition ID) y un identificador de grupo de monitoreo (PMG, Monitoring Group ID). En relación con el PARTID, se puede limitar el consumo de recursos, como el ancho de banda de memoria o el tamaño de la caché, para que un grupo de tareas no ocupe todos los recursos. En el contexto de monitoreo, 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 posibilidad de usar el modo de tiempo real (PREEMPT_RT) en procesadores ARM de 32 bits. Anteriormente, el soporte para PREEMPT_RT se había proporcionado para arquitecturas x86 y x86-64, ARM64, RISC-V y LoongArch.
- En la llamada al sistema clone3() se han añadido nuevos flags: 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 se ejecute la función wait() por el proceso padre; CLONE_PIDFD_AUTOKILL — finalización del proceso hijo en caso de cierre del descriptor pidfd asociado (por ejemplo, al finalizar el proceso padre).
- Para cada módulo del núcleo en el directorio /sys/module se ha añadido un archivo import_ns que contiene una lista de espacios de nombres de símbolos importados (namespace de símbolo).
- Se ha añadido soporte para el uso de la subsistema BPF en el sistema de entrada/salida asíncrona io_uring para crear controladores. Por ejemplo, se puede reemplazar el ciclo de despacho principal 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 por parte del verificador de muchos programas BPF.
- Con el objetivo de optimizar el rendimiento se ha reescrito la subsistema hrtimer (temporizador de alta resolución). El programador de tareas ahora puede usar temporizadores de alta resolución sin pérdida de rendimiento en lugar de temporizadores menos precisos.
- Continuado la transferencia de cambios desde la rama Rust-for-Linux, relacionada con el uso del lenguaje Rust como segundo lenguaje para el desarrollo de controladores y módulos del núcleo (el soporte para Rust no está habilitado por defecto y no lo convierte en una de las dependencias de construcción obligatorias del núcleo). Hasta la versión 1.85 (disponible en Debian 13) se han incrementado los requisitos de la versión de Rust necesarios para compilar los componentes del núcleo. Se ha añadido una opción experimental en Kconfig CONFIG_RUST_INLINE_HELPERS para incrustar envoltorios de C en el código Rust durante la compilación (la optimización ha acelerado el funcionamiento del controlador de bloque nulo en un 2%). Se ha añadido el macro ‘const_assert!’. Se han ampliado las capacidades de los módulos sizes, clk, ptr, sync, error.
- En el mecanismo SCHED_EXT, que permite utilizar BPF para crear planificadores de CPU, se ha añadido la capacidad inicial de crear planificadores anidados (sub-planificador), mediante los cuales cada cgroup puede tener su propio planificador de tareas.
- Se ha continuado la optimización del subsistema de intercambio (swap). Se ha eliminado la antigua estructura swap_map, sustituida 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 los datos en la memoria RAM (por ejemplo, se puede saber a qué áreas de memoria accedió un proceso y qué áreas de memoria quedaron sin utilizar), se ha añadido el soporte para diferentes algoritmos de ajuste de cuotas.
- En el subsistema de trazado, se ha implementado la concepción de búferes externos circulares, que permite obtener datos de trazado desde máquinas virtuales. Esta capacidad se ha utilizado en hipervisores KVM y nVHE para transmitir datos de trazado desde el sistema huésped al lado del host.
- En el subsistema RV (kernel.org) (Runtime Verification), destinada a verificar la corrección de operación de sistemas de alta fiabilidad, se han añadido componentes de monitoreo “stall” para rastrear tareas cuyo cumplimiento se ha suspendido temporalmente o que están bloqueadas, y “deadline” para analizar el comportamiento del planificador de tareas.
Virtualización y seguridad
- Por defecto, se ha establecido la bandera PROC_MEM_FORCE_PTRACE, que permite eludir los derechos de acceso a la memoria de un proceso a través del archivo /proc/PID/mem solo para procesos que utilizan la llamada al sistema ptrace() para depuración.
- Se añadió un nuevo conjunto de hooks para módulos LSM (Linux Security Module), que simplifican la implementación de políticas para sistemas de archivos apilados, como overlayfs. En LSM también se ha agregado gancho para controlar el acceso a sockets Unix, que es utilizado en el módulo LSM Landlock para asignar políticas de acceso a sockets Unix.
- A la biblioteca criptográfica incorporada lib/crypto, que ofrece funciones más simples y rápidas que la API criptográfica tradicional, se ha añadido soporte para los algoritmos AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH y SM3. Se agregó documentación sobre lib/crypto.
- Se implementó el modo pKVM (KVM Protegido) para un aislamiento estricto de memoria anónima utilizando extensiones de virtualización para la arquitectura AArch64. En este modo, las páginas de memoria del invitado se excluyen de la tabla de direcciones virtuales del sistema host.
- Se agregó soporte en el hipervisor KVM para la quinta versión del controlador de interrupciones virtual ARM (VGICv5 — Controlador de Interrupciones Genérico Virtual ARM v5).
Subsistema de red
- Para los sockets Unix creados con la función socket(), se ha implementado hay soporte para atributos de archivo extendidos (xattr) user.*. Se destaca el uso de etiquetas a través de atributos extendidos en sockets Unix utilizados para IPC Varlink, con el objetivo de diferenciarlos para la inspección y depuración del IPC mediante programas BPF. En systemd-journald, se pretenden utilizar los atributos extendidos para definir el formato del registro en relación con el socket /dev/log.
- Se eliminó el soporte para el protocolo UDP-Lite (RFC 3828), que permite la entrega de paquetes con suma de verificación incorrecta, confiando en que, por ejemplo, los datos de audio y video parcialmente dañados puedan ser recuperados a nivel de códec. El protocolo fue eliminado porque nadie lo utiliza.
- Se eliminó la posibilidad de compilar el stack IPv6 como un módulo del núcleo, que no se utilizaba en la práctica (IPv6 se integra en el núcleo o se desactiva por completo), pero complicaba el mantenimiento, ya que al compilar IPv6 como un módulo del núcleo (CONFIG_IPV6=m), muchas subsistemas se veían obligadas a agregar controladores innecesarios en caso de que se desmontara el módulo IPv6.
Hardware
- En el controlador AMDGPU activado se añadió un nuevo motor de visualización (DC) para APU AMD de la serie HD 7000 (Sea Islands, GCN 1.1).
- En el controlador Nouveau se ha añadido se incluyó soporte inicial para la GPU NVIDIA GA100 basada en la microarquitectura Ampere.
- Se continuó trabajando en el controlador drm (Direct Rendering Manager) Xe para GPUs basadas en la arquitectura Intel Xe, que se utilizan en las tarjetas gráficas Intel de la familia Arc y en gráficos integrados, comenzando desde los procesadores Tiger Lake. Se agregó soporte para el 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ó Controlador DRM corebootdrm para la salida de gráficos a través del framebuffer de firmware basado en CoreBoot.
- Se ha añadido soporte para audio ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP y WM8962. Se ha mejorado 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ó controlador yogafan para rastrear la velocidad de rotación del ventilador en laptops Lenovo Yoga, Legion e IdeaPad.
- Se ha añadido soporte para plataformas ARM, SoC y dispositivos: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 e ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
- Se eliminó soporte para los controladores AHCI SATA y PCIe utilizados en SoC Baikal-T1, así como controladores de temporizadores, memoria, physmap, bus, hwmon, dwc y bt1-rom. Se menciona la falta de mantenimiento y la integración incompleta en el núcleo de los componentes de la plataforma Baikal como la razón de su eliminación, cuya producción en Rusia se detuvo en noviembre de 2025.
- Eliminados 12 controladores para dispositivos Ethernet con interfaces ISA y PCMCIA, lanzados antes de 2002, para los que no se encontraron usuarios utilizando en sistemas operativos. También se excluyó del núcleo el subsistema ISDN, implementaciones de protocolos AX.25, CAIF y Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), controladores yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Radioaficionados), inport y logibm (busmouse). La razón de su eliminación fue la falta de mantenedores activos, dado el aumento en el número de errores detectados por syzbot y herramientas de IA que nadie se encarga de corregir, y toda la carga para solucionar problemas graves recae sobre los que mantienen los subsistemas de red principales del núcleo. En total, se han eliminado más de 140 mil líneas de código.
Fuente: linux.org.ru
