Lanzamiento del núcleo de Linux 5.11

Luego de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del kernel Linux 5.11. Entre los cambios más notables: soporte para enclaves Intel SGX, un nuevo mecanismo para interceptar llamadas al sistema, un bus auxiliar virtual, prohibición de ensamblar módulos sin MODULE_LICENSE(), un modo de filtrado rápido para llamadas al sistema en seccomp, terminación del soporte para Arquitectura ia64, transferencia de tecnología WiMAX a la rama "staging", capacidad de encapsular SCTP en UDP.

La nueva versión incluye 15480 correcciones de 1991 desarrolladores, el tamaño del parche es de 72 MB (los cambios afectaron a 12090 archivos, se agregaron 868025 líneas de código y se eliminaron 261456 líneas). Aproximadamente el 46% de todos los cambios introducidos en 5.11 están relacionados con controladores de dispositivos, aproximadamente el 16% de los cambios están relacionados con la actualización de código específico para arquitecturas de hardware, el 13% están relacionados con la pila de red, el 3% están relacionados con sistemas de archivos y el 4% están relacionados con los subsistemas internos del kernel.

Principales novedades:

  • Subsistema de disco, E/S y sistemas de archivos
    • Se han agregado varias opciones de montaje a Btrfs para usar al restaurar datos de un sistema de archivos dañado: "rescue=ignorebadroots" para montar, a pesar del daño a algunos árboles raíz (extensión, uuid, reubicación de datos, dispositivo, csum, espacio libre), " Rescue=ignoredacsums” para deshabilitar la verificación de suma de comprobación de datos y "rescue=all" para habilitar simultáneamente los modos 'ignorebadroots', 'ignoredacsums' y 'nologreplay'. La opción de montaje "inode_cache", que anteriormente estaba obsoleta, ha sido descontinuada. El código ha sido preparado para implementar soporte para bloques con metadatos y datos más pequeños que el tamaño de una página (PAGE_SIZE), así como soporte para el modo de asignación de espacio por zonas. Las solicitudes sin búfer (IO directa) se han trasladado a la infraestructura de iomap. Se ha optimizado el rendimiento de una serie de operaciones; en algunos casos, la aceleración puede alcanzar decenas de por ciento.
    • XFS implementa el indicador "necesita reparación", que indica la necesidad de reparación. Cuando se establece este indicador, el sistema de archivos no se puede montar hasta que la utilidad xfs_repair restablezca el indicador.
    • Ext4 sólo ofrece correcciones de errores y optimizaciones, así como limpieza de código.
    • Se permite la reexportación de sistemas de archivos montados a través de NFS (es decir, una partición montada a través de NFS ahora se puede exportar a través de NFS y usarse como caché intermedia).
    • La llamada al sistema close_range(), que permite a un proceso cerrar un rango completo de descriptores de archivos abiertos a la vez, ha agregado una opción CLOSE_RANGE_CLOEXEC para cerrar descriptores en modo de cierre al ejecutar.
    • El sistema de archivos F2FS agrega nuevas llamadas ioctl() para permitir el control del espacio del usuario sobre qué archivos se almacenan en forma comprimida. Se agregó la opción de montaje "compress_mode=" para elegir si colocar el controlador de compresión en el lado del kernel o en el espacio del usuario.
    • Se proporcionó la capacidad de montar Overlayfs mediante procesos sin privilegios utilizando un espacio de nombres de usuario separado. Para verificar el cumplimiento de la implementación del modelo de seguridad se realizó una auditoría completa del código. Overlayfs también agrega la capacidad de ejecutar copias de imágenes del sistema de archivos al desactivar opcionalmente la verificación de UUID.
    • El sistema de archivos Ceph ha agregado soporte para el protocolo msgr2.1, que permite el uso del algoritmo AES-GCM al transmitir datos en forma cifrada.
    • El módulo dm-multipath implementa la capacidad de tener en cuenta la afinidad de la CPU (“afinidad IO”) al elegir la ruta para las solicitudes de E/S.
  • Servicios de memoria y sistema.
    • Se ha agregado un nuevo mecanismo de interceptación de llamadas al sistema, basado en prctl(), que permite generar excepciones desde el espacio del usuario al acceder a una llamada al sistema específica y emular su ejecución. Esta funcionalidad es necesaria en Wine y Proton para emular las llamadas al sistema de Windows, lo cual es necesario para garantizar la compatibilidad con juegos y programas que realizan directamente llamadas al sistema sin pasar por la API de Windows (por ejemplo, para proteger contra el uso no autorizado).
    • La llamada al sistema userfaultfd(), diseñada para manejar fallas de página (acceso a páginas de memoria no asignadas) en el espacio del usuario, ahora tiene la capacidad de deshabilitar el manejo de excepciones que ocurre a nivel del kernel para hacer más difícil explotar ciertas vulnerabilidades.
    • El subsistema BPF ha agregado soporte para el almacenamiento local de tareas, que proporciona enlace de datos a un controlador BPF específico.
    • La contabilidad del consumo de memoria por parte de los programas BPF se ha rediseñado por completo: se ha propuesto un controlador cgroup en lugar de memlock rlimit para gestionar el uso de memoria en objetos BPF.
    • El mecanismo BTF (BPF Type Format), que proporciona información de verificación de tipos en pseudocódigo BPF, brinda soporte para módulos del kernel.
    • Se agregó soporte para llamadas al sistema Shutdown(), renameat2() y unlinkat() a la interfaz de E/S asíncrona io_uring. Al llamar a io_uring_enter(), se agregó la capacidad de especificar un tiempo de espera (puede verificar la compatibilidad con el argumento para especificar un tiempo de espera usando el indicador IORING_FEAT_EXT_ARG).
    • La arquitectura ia64 utilizada en los procesadores Intel Itanium se ha trasladado a la categoría de huérfanos, lo que significa que las pruebas han cesado. Hewlett Packard Enterprise dejó de aceptar pedidos de nuevos equipos Itanium e Intel lo hizo el año pasado.
    • Se ha descontinuado el soporte para sistemas basados ​​en la arquitectura MicroBlaze que no incluyen una unidad de administración de memoria (MMU). Estos sistemas no se ven en la vida cotidiana desde hace mucho tiempo.
    • Para la arquitectura MIPS, se agregó soporte para pruebas de cobertura de código mediante la utilidad gcov.
    • Se agregó soporte para el bus auxiliar virtual para interactuar con dispositivos multifunción que combinan funcionalidades que requieren diferentes controladores (por ejemplo, tarjetas de red con soporte Ethernet y RDMA). El bus se puede utilizar para asignar un controlador primario y secundario a un dispositivo, en situaciones donde el uso del subsistema MFD (Dispositivos multifunción) es problemático.
    • Para la arquitectura RISC-V, se ha agregado soporte para el sistema de asignación de memoria CMA (Contiguous Memory Allocator), que está optimizado para asignar grandes áreas de memoria contigua utilizando técnicas de movimiento de páginas de memoria. Para RISC-V, también se implementan herramientas para limitar el acceso a /dev/mem y tener en cuenta el tiempo de procesamiento de interrupciones.
    • Para los sistemas ARM de 32 bits, se agregó soporte para la herramienta de depuración KASan (Kernel Address Sanitizer), que ayuda a identificar errores al trabajar con la memoria. Para ARM de 64 bits, la implementación de KASan se ha convertido para utilizar etiquetas MTE (MemTag).
    • Se agregó la llamada al sistema epoll_pwait2() para permitir tiempos de espera con precisión de nanosegundos (la llamada epoll_wait manipula milisegundos).
    • El sistema de compilación ahora muestra un error al intentar compilar módulos del kernel cargables en los que la licencia del código no está definida usando la macro MODULE_LICENSE(). De ahora en adelante, el uso de la macro EXPORT_SYMBOL() para funciones estáticas también provocará un error de compilación.
    • Se agregó soporte para mapear objetos GEM desde la memoria utilizada para E/S, lo que hizo posible acelerar el trabajo con el framebuffer en algunas arquitecturas.
    • Kconfig ha dejado de admitir Qt4 (aunque mantiene el soporte para Qt5, GTK y Ncurses).
  • Virtualización y seguridad
    • Se agregó soporte para un modo de respuesta rápida a la llamada al sistema seccomp(), lo que le permite determinar muy rápidamente si una determinada llamada al sistema está permitida o prohibida en función del mapa de bits de acción constante adjunto al proceso, que no requiere ejecución. un controlador BPF.
    • 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 a las aplicaciones ejecutar código en áreas aisladas y cifradas de la memoria, a las que el resto del sistema tiene acceso limitado.
    • Como parte de una iniciativa para limitar el acceso desde el espacio del usuario al MSR (registro específico del modelo), se escribe en el registro MSR_IA32_ENERGY_PERF_BIAS, que permite cambiar el modo de eficiencia energética del procesador (“normal”, “rendimiento”, “ahorro de energía”) , esta prohibido.
    • La capacidad de deshabilitar la migración de tareas de alta prioridad entre CPU se ha movido de la rama kernel-rt para sistemas en tiempo real.
    • Para los sistemas ARM64, se ha agregado la capacidad de usar etiquetas MTE (MemTag, Memory Tagging Extension) para las direcciones de memoria del controlador de señales. El uso de MTE se habilita especificando la opción SA_EXPOSE_TAGBITS en sigaction() y permite verificar el uso correcto de punteros para bloquear la explotación de vulnerabilidades causadas por el acceso a bloques de memoria ya liberados, desbordamientos de buffer, accesos antes de la inicialización y uso fuera del contexto actual.
    • Se agregó el parámetro "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", que permite al subsistema dm-verity verificar las firmas hash de los certificados colocados en el llavero secundario. En la práctica, la configuración le permite verificar no solo los certificados integrados en el kernel, sino también los certificados cargados durante la operación, lo que hace posible actualizar los certificados sin actualizar todo el kernel.
    • Linux en modo de usuario ha agregado soporte para el modo de suspensión a inactivo, que le permite congelar el entorno y usar la señal SIGUSR1 para despertarse del modo de suspensión.
    • El mecanismo virtio-mem, que le permite conectar y desconectar memoria en caliente a máquinas virtuales, ha agregado soporte para el modo Big Block (BBM), que permite transferir o tomar memoria en bloques más grandes que el tamaño de la memoria del kernel. bloque, que es necesario para optimizar VFIO en QEMU.
    • Se agregó soporte para el cifrado CHACHA20-POLY1305 a la implementación del kernel de TLS.
  • Subsistema de red
    • Para 802.1Q (VLAN) se ha implementado un mecanismo de gestión de fallas de conexión (CFM, Connectivity Fault Management), que permite identificar, verificar y aislar fallas en redes con puentes virtuales (Virtual Bridged Networks). Por ejemplo, CFM se puede utilizar para aislar problemas en redes que abarcan múltiples organizaciones independientes cuyos empleados solo tienen acceso a su propio equipo.
    • Se agregó soporte para encapsular paquetes del protocolo SCTP en paquetes UDP (RFC 6951), lo que le permite usar SCTP en redes con traductores de direcciones más antiguos que no admiten SCTP directamente, así como implementar SCTP en sistemas que no brindan acceso directo a la IP. capa.
    • La implementación de la tecnología WiMAX se ha movido a etapa de prueba y está prevista su eliminación en el futuro si no hay usuarios que requieran WiMAX. WiMAX ya no se utiliza en redes públicas y en el kernel el único controlador con el que se puede utilizar WiMAX es el controlador Intel 2400m obsoleto. La compatibilidad con WiMAX se suspendió en el configurador de red NetworkManager en 2015. Actualmente, WiMax está siendo reemplazado casi por completo por tecnologías como LTE, HSPA+ y Wi-Fi 802.11n.
    • Se ha trabajado para optimizar el rendimiento del procesamiento del tráfico TCP entrante en modo copia cero, es decir. sin necesidad de realizar copias adicionales a nuevos buffers. Para tráfico de tamaño mediano, que cubre decenas o varios cientos de kilobytes de datos, usar zerocopy en lugar de recvmsg() es notablemente más efectivo. Por ejemplo, los cambios implementados hicieron posible aumentar en un 32-60% la eficiencia del procesamiento del tráfico estilo RPC con mensajes de 70 KB cuando se utiliza zerocopy.
    • Se agregaron nuevas llamadas ioctl() para crear puentes de red que abarcan múltiples enlaces PPP. La capacidad propuesta permite que las tramas se muevan de un canal a otro, por ejemplo de una sesión PPPoE a una sesión PPPoL2TP.
    • Integración en el núcleo de MPTCP (MultiPath TCP), una extensión del protocolo TCP para organizar el funcionamiento de una conexión TCP con la entrega de paquetes simultáneamente a lo largo de varias rutas a través de diferentes interfaces de red asociadas con diferentes direcciones IP. La nueva versión presenta soporte para la opción ADD_ADDR para anunciar direcciones IP disponibles a las que se puede conectar al agregar nuevos flujos a una conexión MPTCP existente.
    • Se agregó la capacidad de configurar acciones cuando se excede el presupuesto de sondeo de conexión (encuesta de ocupado). El modo SO_BUSY_POLL disponible anteriormente significaba cambiar a softirq cuando se agotaba el presupuesto. Para las aplicaciones que necesitan seguir utilizando el sondeo, se propone una nueva opción SO_PREFER_BUSY_POLL.
    • IPv6 implementa soporte para los modos SRv6 End.DT4 y End.DT6, utilizados para crear VPN IPv4 L3 multiusuario y dispositivos VRF (enrutamiento y reenvío virtual).
    • Netfilter unificó la implementación de expresiones de conjuntos, lo que hizo posible especificar múltiples expresiones para cada elemento de las listas de conjuntos.
    • Se han agregado API a la pila inalámbrica 802.11 para configurar los límites de potencia de SAR, así como los parámetros AE PWE y HE MCS. El controlador Intel iwlwifi ha agregado soporte para el rango de 6 GHz (banda ultra alta). El controlador Qualcomm Ath11k ha agregado soporte para la tecnología FILS (Configuración rápida de enlace inicial, estandarizada como IEEE 802.11ai), que le permite deshacerse de los retrasos por roaming durante la migración de un punto de acceso a otro.
  • Equipo
    • El controlador amdgpu brinda soporte para la APU AMD "Green Sardine" (Ryzen 5000) y la GPU "Dimgrey Cavefish" (Navi 2), así como soporte inicial para la APU AMD Van Gogh con núcleo Zen 2 y GPU RDNA 2 (Navi 2). Se agregó soporte para nuevos identificadores de APU Renoir (basados ​​en CPU Zen 2 y GPU Vega).
    • El controlador i915 para tarjetas de video Intel admite la tecnología IS (escalado entero) con la implementación de un filtro para aumentar la escala teniendo en cuenta el estado de los píxeles vecinos (interpolación del vecino más cercano) para determinar el color de los píxeles faltantes. Se ha ampliado la compatibilidad con tarjetas Intel DG1 discretas. Se implementó el soporte para la tecnología "Big Joiner", que está presente desde los chips Ice Lake / Gen11 y permite usar un transcodificador para procesar dos transmisiones, por ejemplo, para enviarlas a una pantalla de 8K a través de un DisplayPort. Se agregó un modo para cambiar de forma asincrónica entre dos buffers en la memoria de video (inversión asíncrona).
    • El nuevo controlador ha agregado soporte inicial para las GPU NVIDIA basadas en la microarquitectura Ampere (GA100, GeForce RTX 30xx), hasta ahora limitado a herramientas para controlar modos de video.
    • Se agregó soporte para el protocolo 3WIRE utilizado en paneles LCD. Se agregó soporte para paneles novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 y ABT Y030XX067A 3.0. Por otra parte, podemos destacar el soporte para el panel de los teléfonos inteligentes OnePlus 6 y 6T, que permitió organizar la carga de un kernel no modificado en los dispositivos.
    • Se agregó soporte para el primer controlador de host USB4 discreto de Intel, Maple Ridge.
    • Se agregó soporte para los códecs de audio Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI y XCVR, Realtek RT715 y Qualcomm SM8250.
    • Se agregó soporte para placas, dispositivos y plataformas ARM: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, ​​​​Mikrotik basado en Marvell Prestera 98DX3236, servidores con Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, Chromebook “Trogdor”, Kobol Helios64, Engicam PX30.Core.
    • Soporte integrado para la consola de juegos Ouya basada en NVIDIA Tegra 3.

Al mismo tiempo, la Fundación Latinoamericana de Software Libre creó una versión del kernel 5.11 completamente libre, Linux-libre 5.11-gnu, libre de elementos de firmware y controladores que contienen componentes o secciones de código no libres, cuyo alcance es limitado. por el fabricante. La nueva versión limpia los controladores para qat_4xxx (crypto), lt9611uxcm (puente dsi/hdmi), ccs/smia++ (sensor), ath11k_pci, transceptor de audio nxp y controlador mhi pci. Código de limpieza de blobs actualizado en controladores y subsistemas amdgpu, btqca, btrtl, btusb, i915 csr. Se deshabilitaron nuevos blobs en m3 rproc, reloj ptp idt82p33 y qualcomm arm64.

Fuente: opennet.ru

Añadir un comentario