Lanzamiento del núcleo Linux 5.12

Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 5.12. Entre los cambios más destacados se encuentran: soporte para dispositivos de bloque zonificados en Btrfs, posibilidad de mapeo de identificadores de usuarios para sistemas de archivos, limpieza de arquitecturas ARM obsoletas, modo de escritura "impaciente" en NFS, mecanismo LOOKUP_CACHED para determinar rutas de archivos desde la caché, soporte para instrucciones atómicas en BPF, sistema de depuración KFENCE para la detección de errores en la gestión de memoria, un modo de sondeo NAPI en la pila de red que funciona en un hilo de núcleo separado, hipervisor ACRN, posibilidad de cambiar en tiempo real el modelo de preempt en el planificador de tareas y soporte para optimizaciones LTO al compilar en Clang.

En la nueva versión se han incorporado 14170 (en la versión anterior 15480) correcciones de 1946 (1991) desarrolladores, el tamaño del parche es de 38 MB (los cambios afectaron a 12102 (12090) archivos, se añadieron 538599 (868025) líneas de código y se eliminaron 333377 (261456) líneas). Aproximadamente el 43% de todos los cambios presentados en 5.12 están relacionados con controladores de dispositivos, alrededor del 17% de los cambios se refieren a la actualización de código específico de arquitecturas de hardware, el 12% está relacionado con la pila de red, el 5% con sistemas de archivos y el 4% con subsistemas internos del núcleo.

Novedades principales:

  • Subsistema de disco, entrada/salida y sistemas de archivos
    • Se ha implementado la posibilidad de mapeo de identificadores de usuarios para sistemas de archivos montados (se pueden asignar archivos de un usuario en una partición montada de otro usuario en el sistema actual). El mapeo es compatible con los sistemas de archivos FAT, ext4 y XFS. La funcionalidad propuesta facilita el intercambio de archivos entre diferentes usuarios y en diferentes computadoras, incluyendo que el mapeo se aplicará en el mecanismo de directorios personales portátiles systemd-homed, permitiendo a los usuarios mover sus directorios personales a dispositivos externos y usarlos en diferentes computadoras, cuyas asignaciones de identificadores de usuarios no coinciden. Otra aplicación útil es la organización del acceso compartido a archivos desde un host externo, sin modificar realmente los datos sobre los propietarios de los archivos en el sistema de archivos.
    • Se han integrado parches LOOKUP_CACHED en el núcleo, lo que permite realizar operaciones de resolución de rutas de archivos desde el espacio de usuario sin bloqueo, únicamente basándose en los datos disponibles en la caché. El modo LOOKUP_CACHED se activa en la llamada openat2() mediante el envío de la bandera RESOLVE_CACHED, en la que los datos se proporcionan únicamente desde la caché, y si la resolución de la ruta requiere acceder al almacenamiento, se devuelve el error EAGAIN.
    • El sistema de archivos Btrfs ha añadido soporte inicial para dispositivos de bloques zonificados (dispositivos en discos duros mecánicos o SSD NVMe, cuyo espacio de almacenamiento está dividido en zonas que forman grupos de bloques o sectores, donde solo se permite la adición secuencial de datos con actualización de todo el grupo de bloques). Se ha implementado soporte para bloques con metadatos y datos de tamaño inferior a la página (subpage) en modo solo lectura.
    • En el sistema de archivos F2FS se ha añadido la capacidad de elegir el algoritmo y el nivel de compresión. Se ha añadido soporte para un alto nivel de compresión para el algoritmo LZ4. Se ha implementado la opción de montaje checkpoint_merge.
    • Se ha implementado un nuevo comando ioctl FS_IOC_READ_VERITY_METADATA para lectura de metadatos desde archivos protegidos mediante fs-verity.
    • En el cliente NFS se ha implementado el modo de escritura 'apresurada' (writes=eager), en el que las operaciones de escritura en archivos se envían inmediatamente al servidor, omitiendo la caché de páginas. Este modo permite reducir el consumo de memoria, proporciona información instantánea sobre la finalización del espacio libre en el sistema de archivos y, en algunas situaciones, puede lograr un aumento del rendimiento.
    • En CIFS (SMB) se han añadido nuevas opciones de montaje: acregmax para gestionar la caché de archivos y acdirmax para gestionar la caché de metadatos de directorios.
    • En XFS se ha habilitado el modo de verificación de cuotas multihilo, se ha acelerado la ejecución de fsync y se ha realizado una preparación del código growfs para implementar la función de reducción del tamaño del sistema de archivos.
  • Memoria y servicios del sistema
    • Se ha añadido el subsistema DTMP (Dynamic Thermal Power Management), que permite regular dinámicamente el consumo energético de diferentes dispositivos en función de los límites generales de temperatura establecidos.
    • Se ha implementado la posibilidad de compilar el núcleo con el compilador Clang incorporando optimizaciones a nivel de enlace (LTO, Link Time Optimization). Las optimizaciones LTO integran el estado de todos los archivos en el proceso de compilación, mientras que los modos tradicionales de optimización optimizan cada archivo de manera individual y no consideran las condiciones de llamada de funciones definidas en otros archivos. Por ejemplo, con LTO, para funciones de otros archivos, es posible la expansión inline, el código no utilizado no se incluye en el archivo ejecutable, se lleva a cabo la verificación de tipos y la optimización general a nivel de proyecto. El soporte para LTO actualmente está limitado a las arquitecturas x86 y ARM64.
    • Se ha proporcionado la opción de elegir modos de preempción (PREEMPT) en el programador de tareas durante el arranque (preempt=none/voluntary/full) o durante la operación a través de debugfs (/debug/sched_debug), si se especifica la configuración PREEMPT_DYNAMIC durante la compilación del núcleo. Anteriormente, el modo de preempción solo se podía establecer a nivel de parámetros de compilación. Este cambio permite a las distribuciones proporcionar núcleos con el modo PREEMPT activado, lo que garantiza mínimas latencias para entornos de escritorio a costa de una ligera disminución del rendimiento, y, si es necesario, revertir a los modos PREEMPT_VOLUNTARY (modo intermedio para escritorios) o PREEMPT_NONE (que garantiza el máximo rendimiento). servidores).
    • Se ha añadido soporte para operaciones atómicas BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG y BPF_CMPXCHG en la subcapacidad BPF.
    • A las aplicaciones BPF se les ha dado acceso a los datos en la pila mediante punteros con desplazamiento variable. Por ejemplo, anteriormente solo se podía utilizar un índice constante para acceder a un array en la pila, pero ahora se puede usar uno variable. El control del acceso se realiza dentro de los límites existentes por el verificador BPF. Esta posibilidad está disponible solo para aplicaciones privilegiadas debido a preocupaciones sobre la explotación de vulnerabilidades relacionadas con la ejecución especulativa de código.
    • Se ha añadido la posibilidad de adjuntar programas BPF a 'bare tracepoints', que no están relacionados con eventos de rastreo visibles en el espacio de usuario (para estos puntos de rastreo no se garantiza la conservación del ABI).
    • Se ha implementado el soporte del bus CXL 2.0 (Compute Express Link), que se utiliza para crear una interacción de alta velocidad entre la CPU y los dispositivos de memoria (permite utilizar dispositivos de memoria externos como parte de la RAM o de la memoria persistente, como si dicha memoria estuviera conectada a través del controlador de memoria estándar en la CPU).
    • Se ha añadido un controlador nvmem para obtener datos de áreas de memoria reservadas por el firmware, que son accesibles directamente solo para Linux (por ejemplo, memoria EEPROM, físicamente accesible solo para el firmware, o datos accesibles solo en la etapa inicial de arranque).
    • Se ha eliminado el soporte del sistema de profilado 'oprofile', que no tuvo una difusión adecuada y ha sido reemplazado por el mecanismo más moderno perf.
    • En la interfaz de entrada/salida asincrónica io_uring se ha asegurado la integración con cgroup, que controla el uso de la memoria.
    • Para la arquitectura RISC-V se ha implementado el soporte para sistemas NUMA, así como los mecanismos kprobes y uprobes.
    • Se ha añadido la posibilidad de utilizar la llamada al sistema kcmp() independientemente de la funcionalidad de los puntos de control de estado de procesos (checkpoint/restore).
    • Se han eliminado los macros EXPORT_UNUSED_SYMBOL() y EXPORT_SYMBOL_GPL_FUTURE(), que no se han utilizado en la práctica durante muchos años.
  • Virtualización y seguridad
    • Se ha añadido un mecanismo de protección KFence (Kernel Electric Fence), que detecta errores al trabajar con memoria, tales como desbordamientos de búfer y accesos después de liberar memoria. A diferencia del mecanismo de depuración KASAN, el subsistema KFence se caracteriza por su alta velocidad de operación y bajos costos generales, lo que permite detectar errores de memoria que solo se manifiestan en sistemas operativos o tras un largo tiempo de funcionamiento.
    • Se ha añadido soporte para el hipervisor ACRN, diseñado con la preparación para realizar tareas en tiempo real y su idoneidad para su uso en sistemas críticos. ACRN garantiza bajos costos generales, asegura bajas latencias y una adecuada capacidad de respuesta en la interacción con el hardware. Soporta la virtualización de recursos de CPU, entrada/salida, subsistemas de red, así como operaciones gráficas y de audio. ACRN puede utilizarse para ejecutar múltiples entornos aislados. máquinas virtuales en bloques de control electrónico, paneles de instrumentos, sistemas de información automotriz, dispositivos IoT de consumo y otra tecnología embebida. ACRN soporta dos tipos de sistemas invitados: Service VM privilegiadas, que se utilizan para gestionar los recursos del sistema (CPU, memoria, entrada/salida, etc.), y User VM personalizadas, en las que pueden ejecutarse distribuciones de Linux, Android y Windows.
    • En el subsistema IMA (Arquitectura de Medición de Integridad), que mantiene una base de hashes para verificar la integridad de archivos y los metadatos asociados, se ha agregado la posibilidad de comprobar la integridad de los datos del núcleo mismo, por ejemplo, para rastrear cambios en las reglas de SELinux.
    • El hipervisor KVM ha añadido la capacidad de interceptar llamadas de hipertexto de Xen y redirigirlas al emulador que funciona en el espacio de usuario.
    • Se ha añadido la posibilidad de usar Linux como entorno raíz para el hipervisor Hyper-V. El entorno raíz tiene acceso directo al hardware y se utiliza para ejecutar sistemas invitados (análogo a Dom0 en Xen). Hasta ahora, Hyper-V (Microsoft Hypervisor) solo había soportado Linux en entornos invitados, pero el hipervisor mismo se gestionaba desde un entorno basado en Windows.
    • Se ha añadido soporte para el cifrado inline en las tarjetas eMMC, permitiendo utilizar los mecanismos de cifrado integrados en el controlador del dispositivo, que realizan el cifrado y descifrado transparente de la entrada/salida.
    • Del subsistema de criptografía se ha eliminado el soporte para los hashes RIPE-MD 128/256/320 y Tiger 128/160/192 no utilizados en el núcleo, así como el cifrador de flujo Salsa20, que ha sido reemplazado por el algoritmo ChaCha20. El algoritmo blake2 se ha actualizado a la implementación blake2s.
  • Subsistema de red
    • Se ha agregado la capacidad de mover el controlador de sondeo NAPI para dispositivos de red a un hilo separado del núcleo, lo que permite mejorar el rendimiento para ciertos tipos de carga. Hasta ahora, el sondeo se realizaba en el contexto de softirq y no era cubierto por el programador de tareas, lo que complicaba la optimización precisa para alcanzar el máximo rendimiento. La ejecución en un hilo separado del núcleo permite observar el controlador de sondeo desde el espacio del usuario, asignarlo a núcleos CPU individuales y tenerlo en cuenta al planificar el cambio de tareas. Para habilitar el nuevo modo, se ha propuesto un parámetro en sysfs /sys/class/net//threaded.
    • Continúa la integración en el núcleo MPTCP (MultiPath TCP), una extensión del protocolo TCP para establecer conexiones TCP que envían paquetes simultáneamente a través de múltiples rutas a través de diferentes interfaces de red, cada una vinculada a distintas direcciones IP. En esta nueva versión se ha añadido la posibilidad de asignar prioridad a ciertos flujos, lo que permite, por ejemplo, configurar flujos de respaldo que solo se activan en caso de problemas con el flujo principal.
    • En IGMPv3 se ha añadido soporte para el mecanismo EHT (Explicit Host Tracking).
    • En el mecanismo de filtrado de paquetes netfilter se ha implementado la capacidad de poseer ciertas tablas para obtener control exclusivo (por ejemplo, un proceso de fondo del cortafuegos puede bloquear ciertas tablas, impidiendo que otros interfieran en ellas).
  • Hardware
    • Se ha realizado una limpieza de plataformas ARM obsoletas y sin soporte. Se ha eliminado el código de las plataformas efm32, picoxcell, prima2, tango, u300, zx y c6x, así como los controladores relacionados.
    • En el controlador amdgpu se ha implementado la posibilidad de overclocking (OverDrive) para tarjetas basadas en la GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). Se ha añadido soporte para el formato de píxeles FP16 para el DCE (display controller engine) de la 8ª a la 11ª generación. Para la GPU Navy Flounder (Navi 21) y APU Van Gogh se ha implementado la posibilidad de reiniciar la GPU.
    • En el controlador i915 para las tarjetas gráficas Intel se ha implementado el parámetro i915.mitigations para desactivar mecanismos de aislamiento y protección en favor de un aumento en el rendimiento. Para los chips a partir de Tiger Lake se ha habilitado el soporte para el mecanismo VRR (Variable Rate Refresh), que permite cambiar de forma adaptativa la frecuencia de actualización del monitor para asegurar suavidad y evitar tirones durante los juegos. Se ha habilitado el soporte para la tecnología Intel Clear Color para mejorar la precisión de la reproducción del color. Se ha añadido soporte para DP-HDMI 2.1. Se ha implementado la capacidad de controlar la retroiluminación de los paneles eDP. Para la GPU Gen9 con soporte LSPCON (Level Shifter and Protocol Converter) se ha habilitado el soporte para HDR.
    • En el controlador nouveau se ha añadido soporte inicial para las GPU NVIDIA basadas en la arquitectura GA100 (Ampere).
    • En el controlador msm se ha añadido soporte para las GPU Adreno 508, 509 y 512, que se utilizan en los chips SDM (Snapdragon) 630, 636 y 660.
    • Se ha añadido soporte para las tarjetas de sonido Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s y Pioneer DJM-750. Se ha añadido soporte para el subsistema de sonido Intel Alder Lake PCH-P. Se ha implementado soporte para la simulación de conexión y desconexión de un conector de audio para depurar controladores en el espacio de usuario.
    • Se añadió soporte para las consolas de juegos Nintendo 64, lanzadas entre 1996 y 2003 (intentos anteriores de portar Linux para Nintendo 64 no se completaron y tenían el estatus de Vaporware). La motivación para crear un nuevo puerto para esta plataforma obsoleta, que no se produce desde hace casi veinte años, es el deseo de estimular el desarrollo de emuladores y facilitar la portabilidad de juegos.
    • Se añadió un controlador para el controlador de juegos Sony PlayStation 5 DualSense.
    • Se añadió soporte para plataformas, dispositivos y sistemas ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Se añadió soporte para smartphones Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
    • Se añadió el controlador bcm-vk para tarjetas aceleradoras Broadcom VK (por ejemplo, tarjetas PCIe Valkyrie y Viper), que se pueden usar para trasladar a un dispositivo separado las operaciones de procesamiento de audio, video e imágenes, así como las acciones relacionadas con el cifrado.
    • Se añadió soporte para la plataforma Lenovo IdeaPad con la capacidad de gestionar la carga continua y la retroiluminación del teclado. También se proporcionó soporte para el perfil ACPI de la plataforma ThinkPad con la capacidad de gestionar los modos de consumo de energía. Se añadió un controlador para el subsistema HID de Lenovo ThinkPad X1 Tablet Gen 2.
    • Se añadió el controlador ov5647 con soporte para el módulo de cámara para Raspberry Pi.
    • Se añadió soporte para RISC-V SoC FU740 y placas HiFive Unleashed. También se añadió un nuevo controlador para el chip Kendryte K210.

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