Después de dos meses de desarrollo, Linus Torvalds dio a conocer el lanzamiento del Kernel de Linux 6.2, en el cual los cambios más notables incluyen el código con licencia Copyleft-Next, se mejoró la implementación de RAID5/6 en Btrfs, se siguió integrando la compatibilidad con el lenguaje Rust, se redujo la sobrecarga de protección Retbleed, se agregó la limitación de memoria de reescritura y un se ha agregado el mecanismo TCP Se ha agregado el equilibrio PLB (Protective Load Balancing).
La nueva versión recibió 16843 correcciones de 2178 desarrolladores, el tamaño del parche es de 62 MB (los cambios afectaron a 14108 archivos, se agregaron 730195 líneas de código, se eliminaron 409485 líneas). Alrededor del 42 % de todos los cambios introducidos en 6.2 están asociados con los controladores de dispositivos, aproximadamente el 16 % de los cambios están relacionados con la actualización del código específico de las arquitecturas de hardware.
-Principales novedades de Linux 6.2
En esta nueva versión que se presenta se permite incluir el código y cambios proporcionados bajo la licencia Copyleft-Next 0.3.1. La licencia Copyleft-Next fue creada por uno de los colaboradores de GPLv3 y es totalmente compatible con la licencia GPLv2, según lo verificado por los abogados de SUSE y Red Hat. En comparación con GPLv2, la licencia Copyleft-Next es mucho más compacta y fácil de entender (se eliminó la parte introductoria y la mención de compromisos obsoletos), determina el tiempo y el procedimiento para eliminar violaciones, elimina automáticamente los requisitos de copyleft para el cuándo obsoleto, que es más de 15 años.
Otro de los cambios que se destaca, es que se incluye la utilidad “rv”, que proporciona una interfaz para interactuar desde el espacio del usuario con los manejadores del subsistema RV (Runtime Verification). La validación se realiza en tiempo de ejecución al adjuntar controladores a puntos de seguimiento que verifican el progreso real de la ejecución contra un modelo de autómata determinista de referencia predeterminado que define el comportamiento esperado del sistema.
Se agregó la API ‘iommufd’ para la administración del espacio de usuario de la Unidad de administración de memoria de E/S (Unidad de administración de memoria de E/S). La nueva API permite administrar tablas de páginas de memoria de E/S mediante descriptores de archivos.
Para el mecanismo de bloqueo de RCU (lectura-copia-actualización), se implementa un mecanismo opcional de devolución de llamada en el que un temporizador procesa varias llamadas de devolución a la vez en modo por lotes. La aplicación de la optimización propuesta permite reducir el consumo de energía en dispositivos Android y ChromeOS entre un 5 y un 10 % al posponer las solicitudes de RCU durante la carga del sistema inactiva o baja.
Se agregó una nueva opción de línea de comandos del kernel ‘trace_trigger’ para activar un activador de seguimiento que se utiliza para vincular comandos condicionales que se llaman cuando se activa un seguimiento de pila (por ejemplo, trace_trigger=»sched_switch.stacktrace if prev_state == 2″).
Otro de los cambios que se destaca es que se ha comenzado un port de funcionalidad adicional desde la rama de Rust-for-Linux relacionado con el uso de Rust como segundo lenguaje para desarrollar controladores y módulos de kernel. El soporte de Rust está deshabilitado de forma predeterminada y no hace que Rust se incluya como una dependencia de compilación del kernel requerida. La funcionalidad básica ofrecida en la última versión se amplía con características para admitir código de bajo nivel, como el tipo Vec y las macros pr_debug!(), pr_cont!() y pr_alert!(), así como las macros ‘#[vtable ]’, macro procedimental, que simplifica el trabajo con tablas de punteros sobre funciones. Se espera que en versiones futuras se agreguen envoltorios de Rust de alto nivel sobre los subsistemas del kernel, que le permitirán crear controladores completos en Rust.
Ademas de ello, tambien se destaca que se implementó un nuevo método para protegerse contra la vulnerabilidad Retbleed en las CPU Intel y AMD mediante el seguimiento de profundidad de llamadas, que no es tan lento como la protección Retbleed presente anteriormente. Para habilitar el nuevo modo, se propone el parámetro de línea de comandos del núcleo ‘retbleed=stuff’.
En la plataforma ARM64, en la etapa de arranque, es posible habilitar y deshabilitar la implementación del software del mecanismo Shadow Stack, que se usa para proteger contra la sobrescritura de la dirección de retorno de una función en caso de desbordamiento del búfer en la pila (la esencia de protección es guardar la dirección de retorno en una pila separada después de transferir el control a la función y recuperar la dirección dada antes de salir de la función).
De los demás cambios que se destacan:
- Para IPv6, se agregó soporte para PLB (Protective Load Balancing), al cambiar la etiqueta de flujo de IPv6, el PLB cambia aleatoriamente las rutas de los paquetes para equilibrar la carga en los puertos del switch.
- Se agregó soporte para enlaces de 800 gigabits.
- Se agregó la capacidad de cambiar el nombre de las interfaces de red sobre la marcha, sin detener el trabajo.
- Se agregó una mención de la dirección IP a la que llegó el paquete a los mensajes de inundación SYN escritos en el registro.
- Para UDP, se implementa la capacidad de usar tablas hash separadas para diferentes espacios de nombres de red.
- Los puentes de red admiten el método de autenticación MAB (Omisión de autenticación MAC).
- El controlador i915 (Intel) estabilizó la compatibilidad con las tarjetas gráficas discretas Intel Arc (DG2/Alchemist) y mejoró la compatibilidad con las GPU Meteor Lake.
- El controlador Nouveau es compatible con la GPU NVIDIA GA102 (RTX 30) basada en la arquitectura Ampere. Para las tarjetas nva3 (GT215), se ha agregado la capacidad de controlar la luz de fondo.