Después de dos meses de desarrollo, Linus Torvalds dio a conocer hace pocos dias el lanzamiento de la nueva versión del kernel de Linux 5.11 y en este nuevo lanzamiento de los cambios más destacables, podemos mencionar al soporte para enclaves Intel SGX, nuevo mecanismo para interceptar llamadas al sistema, bus auxiliar virtual, filtrado rápido de llamadas al sistema en seccomp, descontinuación del mantenimiento de la arquitectura ia64, la capacidad de encapsular SCTP en UDP.
La nueva versión recibió 15480 correcciones de los desarrolladores de 1991, el tamaño del parche es de 72 MB (los cambios afectaron a 12090 archivos, se agregaron 868,025 líneas de código, se eliminaron 261,456 líneas). Aproximadamente el 46% de todos los cambios introducidos en 5.11 están relacionados 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, el 13% están relacionados con la pila de red, el 3% están relacionados con los sistemas de archivos y el 4% están relacionados con los subsistemas internos del kernel.
Principales novedades de Linux 5.11
En esta nueva versión del Kernel de Linux 5.11, podremos encontrar que se añadió a Btrfs varias opciones de montaje para usar al recuperar datos de sistemas de archivos dañados, además de que se eliminó el soporte para la opción de montaje «inode_cache», que anteriormente estaba en desuso, se preparó el código para admitir bloques con metadatos y datos más pequeños que una página (PAGE_SIZE), así como compatibilidad con la asignación de espacio por zonas.
Además de que se ha agregado un nuevo mecanismo para interceptar llamadas al sistema, basado en prctl() y que permite lanzar excepciones desde el espacio del usuario al acceder a una llamada específica del sistema y emular su ejecución. Esta funcionalidad es solicitada en Wine y Proton para emular las llamadas al sistema de Windows, que es necesaria para garantizar la compatibilidad con juegos y programas que ejecutan directamente llamadas al sistema sin pasar por la API de Windows (por ejemplo, para proteger contra el uso no autorizado).
Para la arquitectura RISC-V, se ha agregado soporte para el sistema de asignación de memoria Contiguous Memory Allocator (CMA), que está optimizado para asignar grandes áreas de memoria contiguas utilizando la técnica de movimiento de página. Para RISC-V, también hay herramientas implementadas para limitar el acceso a /dev/mem y contabilizar el tiempo de procesamiento de interrupciones.
Para los sistemas ARM de 32 bits, se ha agregado compatibilidad con la herramienta de depuración KASan (desinfectante de direcciones del núcleo), que proporciona detección de errores cuando se trabaja con memoria. Para ARM de 64 bits, la implementación de KASan se ha movido para usar etiquetas MTE (MemTag).
En cuanto a la Virtualización y seguridad se destaca la llamada al sistema seccomp() que ha agregado soporte para el modo de respuesta rápida, que le permite determinar muy rápidamente si una llamada al sistema específica está permitida o denegada en función de un mapa de bits de acción constante adjunto al proceso, que no requiere iniciar un BPF manipulador.
También, podremos encontrar algunos componentes del kernel integrados para la creación y gestión de enclaves basados en la tecnología Intel SGX (Software Guard eXtensions), que permite que las aplicaciones ejecuten código en áreas de memoria aisladas y cifradas, cuyo acceso al resto del sistema está restringido.
Para los sistemas ARM64, se agregó la capacidad de usar etiquetas MTE (MemTag, Memory Tagging Extension) para las direcciones de memoria del manejador de señales. El uso de MTE se habilita especificando la opción SA_EXPOSE_TAGBITS en sigaction() y le permite verificar la exactitud del uso de punteros para bloquear la explotación de vulnerabilidades.
Finalmente por la parte de los controladores, se destaca el soporte para el primer controlador de host USB4 discreto de Intel Maple Ridge, asi como también el soporte APU AMD «Green Sardine» (Ryzen 5000) y GPU «Dimgrey Cavefish» (Navi 2), así como soporte inicial para APU AMD Van Gogh con el núcleo Zen 2 y GPU RDNA 2 (Navi 2). Se agregó soporte para los nuevos ID de APU de Renoir (basados en CPU Zen 2 CPU y GPU Vega).
El controlador nouveau agrega soporte inicial para las GPU NVIDIA basadas en la microarquitectura » Ampere » (GA100, GeForce RTX 30xx), actualmente limitada a los controles de modo de video.
He visto que hicieron un commit de San Valentín en el kernel y yo me quedé con cara de, ¿Qué?