Lanzamiento del núcleo Linux 6.16

Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 6.16. Entre los cambios más destacados se encuentran: un controlador para acelerar OpenVPN, el mecanismo Kexec HandOver, la inclusión por defecto de tablas de páginas de memoria de cinco niveles para x86, la eliminación del protocolo DCCP, el controlador de bloques zloop, la posibilidad de enviar core dumps a través de un socket UNIX, soporte para escritura atómica en XFS, procesamiento de audio offload para dispositivos USB, optimizaciones en Ext4, un controlador virtual TPM (Trusted Platform Module), la implementación completa de Device Memory TCP, soporte para pipes sin nombre en io_uring, preparación para la integración del controlador DRM de Asahi, el mecanismo de "usermode queue" en el controlador AMDGPU, soporte para Intel TDE (Trusted Domain Extensions) e Intel APE (Advanced Performance Extensions).

En la nueva versión se incorporaron 15,924 correcciones de 2,145 desarrolladores, el tamaño del parche es de 50 MB (los cambios afectaron a 13,793 archivos, se añadieron 655,451 líneas de código y se eliminaron 316,441 líneas). En la versión anterior se reportaron 15,945 correcciones de 2,154 desarrolladores, con un tamaño de parche de 59 MB. Aproximadamente el 45% de todos los cambios presentados en 6.16 están relacionados con controladores de dispositivos, alrededor del 16% se refiere a la actualización de código específico para arquitecturas de hardware, el 13% está relacionado con la pila de red, el 4% con sistemas de archivos y el 3% con subsistemas internos del núcleo.

Las principales novedades del núcleo 6.16:

  • Subsistema de disco, entrada/salida y sistemas de archivos
    • Se añadió el controlador zloop para crear dispositivos de bucle zonificados montados en modo bucle. Este controlador emula el funcionamiento de dispositivos de bloques convencionales utilizando varios archivos de un sistema de archivos existente (uno por cada zona). Esta capacidad puede ser útil para probar sistemas de archivos, controladores device mapper y aplicaciones en relación con el soporte de dispositivos zonificados que aplican la división en zonas de grupos de bloques o sectores, donde solo se permite la adición secuencial de datos con la actualización de todo el grupo de bloques.
    • En el sistema de archivos XFS se implementó el soporte para la escritura atómica de grandes porciones de datos: ahora se pueden escribir varios bloques en modo atómico (ya sea que todos los bloques se escriban con éxito o que ningún bloque se escriba).
    • El sistema de archivos Ext4 ha mejorado el rendimiento del mecanismo de «fast commit». Se ha añadido soporte para grandes folios de páginas de memoria (large folios) para archivos normales, lo que en pruebas realizadas ha incrementado el rendimiento en un 37% durante operaciones de entrada/salida secuencial intensivas. Se ha añadido soporte para operaciones de escritura atómicas que abarcan múltiples bloques.
    • En el controlador para el sistema de archivos ext2, se ha declarado obsoleto el soporte del mecanismo DAX, que proporciona acceso directo al sistema de archivos evitando la caché de páginas. La eliminación de DAX del controlador ext2 está programada para finales de año. Como motivo se menciona que el controlador ext2 se considera una implementación de referencia estable que no debe utilizar características específicas que no han ganado suficiente difusión.
    • Los sistemas de archivos OrangeFS, UFS, BFS y OMFS han sido actualizados para usar la nueva API de montaje de particiones.
    • Se ha añadido a sysctl la configuración vfs_cache_pressure_denom, para gestionar el número de entradas en la caché de «dentry» (representación interna de los elementos de directorios) en situaciones de falta de memoria en el sistema. Cuanto mayor sea el valor establecido, más entradas podrán ser expulsadas de la caché (menos entradas quedarán en la caché) en condiciones de escasez de memoria.
    • En el sistema de archivos Bcachefs, se ha añadido la opción «rebalance_on_ac_only», que prohíbe realizar operaciones de reequilibrio y compresión en segundo plano cuando el sistema está alimentado por batería. Se han acelerado las operaciones de eliminación de instantáneas y dispositivos. Se ha reducido el consumo de memoria al montar en modo solo lectura. Se ha añadido la posibilidad de ejecutar algunas operaciones de recuperación después de fallos en segundo plano sin detener el trabajo con el sistema de archivos.
    • Se ha permitido a la subsistema de gestión de energía realizar de manera autónoma la congelación de sistemas de archivos y variables EFI para los modos de espera y suspensión (si los sistemas de archivos ya están congelados por un controlador en el espacio de usuario, no se realiza una re-congelación).
    • Se ha añadido la capacidad de mejorar el rendimiento de EROFS mediante el acelerador QAT (QuickAssist Technology) integrado en los procesadores Intel, que ofrece herramientas para acelerar los cálculos relacionados con la compresión y el cifrado.
    • En NFS, se ha aumentado el tamaño máximo del paquete de datos para operaciones de lectura y escritura de 1 a 4 MB (el valor predeterminado es 1 MB, ya que no todos los clientes soportan tamaños mayores).
    • A los usuarios no privilegiados que tienen derechos CAP_SYS_ADMIN en un espacio de nombres de identificador de usuario (user namespace), pero que no tienen derechos ampliados en el espacio de nombres raíz, se les ha otorgado la capacidad de utilizar el mecanismo fanotify para supervisar los cambios en los sistemas de archivos.
    • Para los sistemas de archivos que utilizan el subsistema FUSE, se ha proporcionado una funcionalidad para limpiar de una vez todas las entradas en caché de directorios (dentries). Se ha agregado soporte para grandes páginas de memoria en el subsistema FUSE.
    • En el sistema de archivos OverlayFS se ha implementado soporte para crear capas con datos en espacios de nombres no privilegiados, para las cuales se utiliza un control de integridad basado en el módulo dm-verity. Esta capacidad permite combinar capas confiables con metadatos con capas de datos no confiables que se procesan en espacios de nombres no privilegiados.
  • Memoria y servicios del sistema
    • Se ha añadido el mecanismo KHO (Kexec HandOver) para iniciar un nuevo núcleo desde uno antiguo sin perder el estado del sistema. Antes de pasar el control a la nueva versión del núcleo, el estado de los subsistemas clave del núcleo se puede serializar en un área de memoria que no será afectada por operaciones posteriores. El nuevo núcleo, una vez en control, restaura el estado serializado. Sobre la base de KHO, se está desarrollando el subsistema Live Update Orchestrator (LUO), que permite reiniciar el núcleo sin detener el funcionamiento de los dispositivos.
    • Se ha añadido el parámetro de compilación del núcleo CONFIG_X86_NATIVE, que permite utilizar la opción "-march=native" durante la compilación para optimizar según las capacidades del procesador en el sistema actual.
    • Se ha añadido soporte para la extensión de arquitectura del conjunto de instrucciones Intel APX (Advanced Performance Extension), que proporciona 16 registros de propósito general adicionales (además de los 16 existentes), lo que permite utilizar menos operaciones de lectura y escritura en memoria en el código para mejorar el rendimiento y reducir el consumo de energía.
    • Se ha añadido un modo de ajuste automático de la política de distribución de memoria en sistemas NUMA, en el cual todos los pesos de los nodos se reconsideran cuando aparece nueva información sobre el ancho de banda durante la carga o al conectar memoria de manera en caliente.
    • En la implementación de los futex se ha añadido soporte para la tabla hash local de procesos (local futex_hash_bucket), que a diferencia de la tabla hash compartida previamente soportada para todos los procesos, es local para un proceso individual y es compartida por todos los hilos de ese proceso. Las tablas hash locales se aplican únicamente para la operación de futex PROCESS_PRIVATE. Además, en esta nueva versión se añadió soporte para las opciones FUTEX2_NUMA y FUTEX2_MPOL, que permiten influir en la colocación de los futex en memoria, para situarlos más cerca de los procesos que los utilizan.
    • Para sistemas x86_64 se ha activado el soporte permanente para las tablas de páginas de memoria de cinco niveles (se eliminó el parámetro CONFIG_X86_5LEVEL, que controlaba la activación de las tablas de cinco niveles).
    • En el controlador intel_pstate, que gestiona los parámetros de consumo de energía (P-state) en sistemas con procesadores Intel, se ha añadido soporte para que el planificador de tareas tenga en cuenta el consumo de energía (EAS - Energy Aware Scheduling) en procesadores híbridos, que combinan núcleos de CPU de alto rendimiento y de alta eficiencia energética, como los Intel Lunar Lake.
    • Se han añadido interfaces en sysfs: '/sys/devices/system/cpu/cpuN/cpu_capacity' para obtener información sobre las capacidades de diferentes CPUs en procesadores híbridos y '/sys/devices/system/cpu/cpuidle/intel_c1_demotion' para gestionar la posibilidad de mantener la CPU en un estado más rendimiento, incluso si el núcleo intenta llevarla a un estado de menor consumo de energía (por ejemplo, el núcleo puede solicitar un cambio al estado de energía C6, pero el firmware, ante una alta intensidad de activación de la CPU, puede dejarla en el estado C1).
    • Para la arquitectura ARM64 se ha activado el soporte para el modo de desalojamiento perezoso de tareas (PREEMPT_LAZY, lazy preemption), que corresponde al modo de desalojamiento completo ('full preemption') para tareas en tiempo real (RR/FIFO/DEADLINE), pero retrasa el desalojamiento de tareas normales (SCHED_NORMAL) hasta el límite del tick.
    • Para la arquitectura ARM64 se ha añadido soporte para el uso de extensiones SME (Scalable Matrix Extension), habilitadas a través del parámetro CONFIG_ARM64_SME.
    • Se ha continuado la inclusión de cambios de la rama Rust-for-Linux, relacionados con el uso del lenguaje Rust como segundo lenguaje para el desarrollo de controladores y módulos del núcleo (el soporte de Rust no está activado por defecto, y no implica incluir Rust entre las dependencias de compilación obligatorias para el núcleo). Se ha proporcionado la posibilidad de usar configfs para módulos escritos en Rust. Se han añadido las abstracciones necesarias para el desarrollo de controladores gráficos. Se han ampliado las capacidades de los módulos alloc, time, str, list, workqueue y page. Se ha añadido soporte para el macro 'assert!' en pruebas basadas en KUnit. Se ha añadido un conjunto de abstracciones para gestionar la frecuencia de la CPU y el uso de API relacionadas con la gestión del consumo energético. Se ha añadido soporte para la estructura de datos 'xarray'.
    • Para la arquitectura RISC-V, se ha trasladado la implementación de la llamada al sistema getrandom(), optimizada mediante el mecanismo vDSO (virtual dynamic shared object), que permite mover el controlador de la llamada al sistema del núcleo al espacio de usuario y evitar cambios de contexto. En las pruebas realizadas, esta optimización aceleró la obtención de números aleatorios en 17 veces. Para RISC-V, también se ha implementado el soporte para las extensiones vectoriales Zicbop, Zabha y Svinval, utilizadas en los procesadores SiFive.
    • Para la arquitectura LoongArch, se ha incrementado el límite en el número de CPU en el sistema de 256 a 2048. Se ha añadido soporte para el planificador de tareas SCHED_MC (Multi-core).
    • Se ha añadido la posibilidad de usar sockets Unix para la transmisión de descriptores de archivos. Para desactivar esta posibilidad, las aplicaciones pueden utilizar la bandera SO_PASSRIGHTS en setsockopt().
    • Se ha proporcionado la posibilidad de mapear un búfer circular, utilizado para rastrear el funcionamiento del núcleo, en la memoria del espacio de usuario.
    • Los controladores de crash-dump, utilizados para crear informes de problemas tras el fallo del núcleo, ahora pueden utilizar las claves LUKS que la núcleo defectuosa empleó para guardar los crash-dumps en sistemas de archivos cifrados.
    • Se ha añadido la operación IORING_OP_PIPE al sistema de entrada/salida asíncrona io_uring para crear canales no nombrados, que es análoga a la llamada al sistema pipe2, excepto por el soporte de descriptores de archivos fijos.
    • Se ha añadido la opción de línea de comandos del núcleo 'rt_group_sched' para gestionar la inclusión del programador de ejecución de grupos de tareas en tiempo real (SCHED_RR). La opción es análoga a la configuración RT_GROUP_SCHED en Kconfig.
    • Para dispositivos basados en la interfaz CXL (Compute Express Link), utilizada para organizar la interacción de alta velocidad entre la CPU y los dispositivos de memoria, se ha implementado el soporte para extensiones RAS (Reliability, Availability, Serviceability), lo que permite implementar diversos esquemas de detección y corrección de errores. CXL permite conectar nuevas áreas de memoria proporcionadas por dispositivos de memoria externos, utilizándolas como recursos adicionales del espacio de direcciones físicas para expandir la memoria RAM del sistema (DDR) o la memoria permanente (PMEM).
    • La versión mínima necesaria de GCC para compilar el núcleo se ha elevado a la rama GCC 8 para todas las arquitecturas. Ahora también se requiere como mínimo la versión 2.30 del paquete binutils para la construcción.
    • Se ha eliminado la llamada al sistema uselib(), que ha sido declarada obsoleta desde hace tiempo, y en su lugar se utiliza mmap() para el acceso compartido de programas a bibliotecas compartidas.
  • Virtualización y seguridad
    • Se ha añadido soporte inicial para el uso del mecanismo Intel TDX (Trusted Domain Extensions) para proteger sistemas invitados que operan bajo el hipervisor KVM, contra la interferencia y el análisis por parte del administrador del sistema host y ataques físicos al hardware. La protección se garantiza mediante el cifrado de la memoria. máquinas virtuales.
    • Se ha añadido un controlador virtual TPM (Trusted Platform Module) que permite a las máquinas virtuales interactuar con dispositivos TPM, que son emulados por el módulo SVSM (Secure VM Service Module).
    • Se ha reactivado la posibilidad de utilizar el complemento de GCC randstruct, que aleatoriza la disposición de las estructuras de datos en la etapa de compilación para complicar la explotación de vulnerabilidades.
    • Se ha agregado la posibilidad de utilizar la tecnología IMA (Integrity Measurement Architecture) para verificar la integridad al arrancar nuevos núcleos mediante la llamada al sistema kexec.
    • Se han realizado trabajos para reducir el impacto en el rendimiento del uso de SELinux. Para acelerar el funcionamiento, se ha añadido una caché con los resultados de las pruebas de acceso a directorios. En las reglas genfscon se ha añadido la posibilidad de utilizar máscaras.
    • En el código para la interacción con EFI, se ha proporcionado la opción de incrustar una sección SBAT (UEFI Secure Boot Advanced Targeting) con metadatos sobre versiones de componentes de arranque revocados.
    • En los módulos de arranque, se ha cambiado la sección «.static_call_sites» a modo de solo lectura después de completar la inicialización.
    • Para sistemas ARM de 64 bits, el hipervisor KVM ha implementado soporte para la virtualización anidada (desactivado por defecto).
    • En el hipervisor KVM se ha declarado estable el soporte para la arquitectura RISC-V.
  • Subsistema de red
    • Se ha incluido el controlador ovpn, que permite acelerar significativamente el rendimiento de OpenVPN al realizar operaciones de cifrado, procesamiento de paquetes y gestión del canal de comunicación en el lado del núcleo de Linux. Este controlador elimina la sobrecarga asociada con el cambio de contexto, optimiza el funcionamiento mediante el acceso directo a las API internas del núcleo y evita la lenta transferencia de datos entre el núcleo y el espacio de usuario (el cifrado, descifrado y enrutamiento se realizan en el módulo sin enviar tráfico al manejador del espacio de usuario).
    • Se ha añadido soporte en el mecanismo Device Memory TCP para enviar datos desde la memoria del dispositivo (ruta TX). Anteriormente, para simplificar la integración de Device Memory TCP en el núcleo, la funcionalidad estaba limitada solo a la recepción de datos (ruta RX). Device Memory TCP permite utilizar sockets de red para enviar directamente el contenido de la memoria del dispositivo periférico a través de la red (modo zero-copy), así como colocar directamente el contenido de los paquetes de red en la memoria del dispositivo en el lado del receptor. Los datos transmitidos en los paquetes se envían desde la tarjeta de red a la memoria del dispositivo periférico (DMABUF), por ejemplo, a la memoria de video de la GPU, o de la memoria del dispositivo a la tarjeta de red directamente, omitiendo la CPU, mientras que los encabezados de los paquetes se colocan en los búferes normales del núcleo.
    • Se ha habilitado la posibilidad de enviar el contenido de los core dumps a través del socket AF_UNIX, lo que permite crear manejadores de core dumps más seguros en el espacio de usuario, sin depender de llamadas del núcleo a procesos privilegiados.
    • Se ha eliminado el soporte para el protocolo de red DCCP (Datagram Congestion Control Protocol), el cual no ha sido adoptado y ha estado en el núcleo sin mantenimiento durante cinco años. La eliminación de DCCP del núcleo eliminará las barreras que impiden la reestructuración de inet_connection_sock para mejorar la eficiencia del stack TCP. Se ha mantenido el soporte para los módulos de netfilter para la filtración de paquetes DCCP.
    • Para simplificar el manejo de errores al usar sockets, SO_PEERPIDFD ahora permite pasar pidfd para procesos que ya han terminado (pidfd se vincula a procesos específicos y, a diferencia de pid, no se reasigna).
    • Con BPF, ahora es posible crear controladores para la gestión de colas de paquetes en la pila de red (qdiscs) para influir en el orden de procesamiento de los paquetes de red.
    • En el sistema de archivos de red AFS, se ha implementado GSSAPI (Generic Security Services API) para gestionar el cifrado de las conexiones con servidores YFS y OpenAFS.
    • Se han realizado una gran cantidad de optimizaciones. Se ha reestructurado la organización de bloqueos para las tablas de enrutamiento IPv6 (algunas operaciones de rutas ahora se realizan hasta 3 veces más rápido). La computación de sumas de verificación crc32c se ha acelerado. El motor GRO para el tráfico UDP encapsulado se ha acelerado en un 10%. Se ha mejorado la autoajuste del búfer receptor para TCP y se han elevado los límites predeterminados (en pruebas realizadas, el ancho de banda para flujos individuales a través de un canal de 200 Gbs aumentó en un 60%).
    • Se ha añadido la capacidad de usar máscaras en los nombres de dispositivos de red utilizados en netdev y flowtable en Netfilter. La infraestructura nft trace ahora integra información sobre el seguimiento de conexiones (conntrack). Se ha acelerado la extracción de tablas de seguimiento de conexiones (conntrack) a través de procfs.
  • Hardware
    • Se ha agregado soporte para trasladar el procesamiento de flujos de audio a los dispositivos de sonido con interfaz USB (USB audio offload). Este cambio permite reducir significativamente el consumo de energía de los dispositivos portátiles al continuar procesando el flujo de audio mientras el resto del sistema está en modo de suspensión. Anteriormente, en los núcleos para la plataforma Android se proporcionaba una implementación específica del procesamiento de audio offload para dispositivos USB, y ahora en el núcleo principal ha aparecido una implementación universal que puede ser utilizada por cualquier proyecto.
    • Se ha continuado la integración de los componentes del controlador Nova para GPU NVIDIA equipadas con firmware GSP, utilizados desde la serie NVIDIA GeForce RTX 2000 basada en la microarquitectura Turing. El controlador está escrito en Rust. Además del componente nova-core agregado en la entrega anterior, que implementa el nivel base de abstracciones sobre las interfaces de programación del firmware GSP, en la versión 6.16 se incluye una implementación inicial del controlador DRM nova-drm (Direct Rendering Manager) para interactuar con la GPU desde el espacio de usuario.
    • Ha comenzado el proceso de promoción al núcleo del controlador DRM Asahi para GPU Apple AGX, aplicados en los chips Apple Silicon. El controlador está escrito en Rust. En esta etapa, solo se han incluido en el núcleo los archivos de encabezado UAPI del controlador Asahi, necesarios para Mesa, mientras que el código principal del controlador Asahi se integrará más adelante.
    • El controlador Nouveau ha agregado soporte para GPU NVIDIA de la familia Hopper y Blackwell.
    • Se ha continuado el trabajo en el controlador drm (Direct Rendering Manager) Xe para GPU basadas en la arquitectura Intel Xe, utilizada en las tarjetas gráficas Intel de la familia Arc y en la gráfica integrada, comenzando con los procesadores Tiger Lake. Se ha añadido la posibilidad de utilizar diferentes archivos de firmware para diferentes familias de GPU Intel.
    • En el controlador AMDGPU se ha implementado soporte para el mecanismo 'usermode queue', que permite crear colas de trabajo personalizadas en el espacio de usuario y enviarlas directamente a la GPU sin pasar por el programador en el núcleo. El soporte para 'usermode queue' está habilitado para GPU Navi 4X y GFX 12.
    • Se ha añadido soporte para sistemas de audio Intel WCL (Whiskey Lake), AMD ACP 7.x (Audio Co-Processor), Cirrus Logic CS35L63 y CS48L32, Everest Semiconductor ES8375 y ES8389, Pioneer DJM-V10, Longsoon-1 AC’97, NVIDIA Tegra264, Richtek ALC203, RT9123 y Rockchip SAI, así como nuevas plataformas Intel AVS.
    • Se ha agregado soporte para plataformas ARM, SoC y dispositivos: Samsung Exynos7870, Qualcomm Snapdragon X1P42100, Qualcomm MSM8926, RK3562, NXP i.MX94, Renesas RZ/V2N, Amlogic S6/S7/S7D, WonderMedia wm8950, Amlogic s805y, Allwinner A523, Toradex Verdin AM62P, ROCK 5B+, Nitrogen8M Plus, Retronix R-Car V4H Sparrow Hawk, MT8186 Ponyta Chromebook, VIA APC Rock/Paper, Renesas rz/t2h, ASUS Transformer Pad LTE TF300TL, LG Nexus 4, Google Pixel 4a, Raspberry Pi 2.
    • Se ha eliminado el controlador para las placas de captura de video con chips STA2X11.

Simultáneamente, la Fundación de Software Libre de América Latina ha formado una versión completamente libre del núcleo 6.16 — Linux-libre 6.16-gnu, despojado de elementos de firmware y controladores que contienen componentes no libres o partes de código cuya aplicación está limitada por el fabricante. En el lanzamiento 6.16 se ha neutralizado la carga de blobs en los nuevos controladores Intel qat 6xxx crypto, sensor ST vd55g1, ath12k AHB wifi, Aeonsemi AS21xxx y Ethernet de 25 Gb de MediaTek. Se realizó una limpieza de los nombres de blobs en los archivos dts (device tree) para los chips ARM de Qualcomm y MediaTek. Se actualizó el código de limpieza de blobs en los controladores Nova Core, Nouveau, Ethernet Realtek r8169, Qualcomm Iris, Venus, wifi Mediatek mt7996, Qualcomm ath11k y ath12k wifi, Texas Instruments tas2781 y Renesas R-Car gen4 PCIe.

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