Lanzamiento del núcleo de Linux 5.2

Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 5.2. Entre los cambios más destacados se encuentran: el modo de operación de Ext4 sin distinción de mayúsculas y minúsculas, llamadas al sistema separadas para montar el FS, controladores para GPU Mali 4xx/6xx/7xx, la posibilidad de manejar cambios en los valores de sysctl en programas BPF, el módulo de device-mapper dm-dust, protección contra ataques MDS, soporte para Sound Open Firmware para DSP, optimización del rendimiento BFQ, y la mejora de la subsistema PSI (Pressure Stall Information) para su uso en Android.

En esta nueva versión se han realizado 15,100 correcciones por parte de 1,882 desarrolladores,
el tamaño del parche es de 62 MB (los cambios afectaron a 30,889 archivos, con 625,094 líneas de código añadidas y 531,864 líneas eliminadas). Aproximadamente el 45% de todas las modificaciones presentadas en 5.2
están relacionadas con controladores de dispositivos, alrededor del 21% de los cambios tienen
relación con la actualización de código específico para arquitecturas de hardware, el 12%
está vinculado a la pila de red, el 3% a sistemas de archivos y el 3% a subsistemas internos
del núcleo. El 12.4% de todos los cambios fueron preparados por Intel, el 6.3% por Red Hat, el 5.4% por Google, el 4.0% por AMD, el 3.1% por SUSE, el 3% por IBM, el 2.7% por Huawei, el 2.7% por Linaro, el 2.2% por ARM y el 1.6% por Oracle.

Principales novedades:

  • Subsistema de disco, entrada/salida y sistemas de archivos
    • Para Ext4 se ha añadido soporte la capacidad para operar sin distinción de mayúsculas y minúsculas en los nombres de archivo, que se activa únicamente en la vinculación a directorios vacíos mediante un nuevo atributo “+F” (EXT4_CASEFOLD_FL). Al establecer este atributo en un directorio, todas las operaciones con archivos y subdirectorios dentro se realizarán sin considerar mayúsculas y minúsculas, incluyendo que se ignorará la distinción al buscar y abrir archivos (por ejemplo, los archivos Test.txt, test.txt y test.TXT en tales directorios se considerarán idénticos). Por defecto, el FS sigue siendo sensible a mayúsculas y minúsculas, excepto para los directorios con el atributo “chattr +F”;
    • Se unificaron las funciones de manejo de caracteres UTF-8 en los nombres de archivos, que se aplican al realizar operaciones de comparación y normalización de cadenas;
    • En XFS se ha añadido infraestructura para rastrear el estado del sistema de archivos y un nuevo ioctl para consultar el estado de funcionamiento. Se ha implementado una capacidad experimental para realizar verificaciones en línea (online scrub) de los contadores de superblock.
    • Se ha añadido un nuevo módulo de device-mapper “dm-dust”, que permite simular la aparición de sectores defectuosos en el medio o errores al leer desde el disco. Este módulo facilita la depuración y pruebas de aplicaciones y diversos sistemas de almacenamiento en condiciones de posibles fallos;
    • Se ha realizado optimización significativa del rendimiento del planificador de E/S BFQ. En condiciones de alta carga de entrada/salida, se han implementado optimizaciones. verificar el funcionamiento del dispositivo: prueban procesos de transición, pila de llamadas, reducir hasta un 80% el tiempo de operaciones como el lanzamiento de aplicaciones;
    • Se ha añadido una serie de llamadas del sistema para montar sistemas de archivos: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() y move_mount(). Estas llamadas del sistema permiten procesar por separado diferentes etapas del montaje (procesar el superbloque, obtener información del sistema de archivos, montar, adjuntar a un punto de montaje), que anteriormente se realizaban mediante una llamada del sistema común mount(). Las llamadas separadas permiten ejecutar escenarios de montaje más complejos y realizar operaciones como reconfigurar el superbloque, habilitar opciones, cambiar el punto de montaje y trasladar a otro espacio de nombres. Además, el procesamiento separado permite identificar con precisión las causas de los códigos de error y establecer múltiples orígenes para sistemas de archivos en capas, como overlayfs;
    • Se ha añadido una nueva operación IORING_OP_SYNC_FILE_RANGE a la interfaz de entrada/salida asíncrona io_uring, que realiza acciones equivalentes a la llamada del sistema sync_file_range(), así como la posibilidad de registrar eventfd con io_uring y recibir notificaciones sobre la finalización de operaciones;
    • Para el sistema de archivos CIFS se ha añadido el ioctl FIEMAP, que proporciona un mapeo eficiente de extensiones, así como soporte para los modos SEEK_DATA y SEEK_HOLE;
    • En el subsistema FUSE se propone API para gestionar la memoria caché de datos;
    • Se ha optimizado la implementación de qgroups en Btrfs y aumentado la velocidad de ejecución de fsync para archivos con múltiples enlaces duros. Se ha mejorado el código de verificación de la integridad de los datos, que ahora tiene en cuenta posibles daños en la información en la RAM antes de volcar los datos al disco;
    • Se ha añadido soporte para la exportación de instantáneas a través de NFS en CEPH;
    • Se ha mejorado la implementación del montaje NFSv4 en modo 'soft' (en caso de un error de acceso al servidor en modo 'soft', la llamada devuelve inmediatamente un código de error, mientras que en modo 'hard' el control no se devuelve hasta que se restablece la disponibilidad del sistema de archivos o se agota el tiempo). La nueva versión proporciona un manejo más preciso de los tiempos de espera, acelera la recuperación de fallos y añade una nueva opción de montaje 'softerr' que permite cambiar el código de error (ETIMEDOUT) devuelto cuando ocurre un tiempo de espera;
    • En la API nfsdcld, destinada a rastrear el estado de los clientes de NFS, se ha habilitado la capacidad de monitorear correctamente el estado del cliente por parte del servidor NFS al reiniciar. De esta manera, el demonio nfsdcld ahora puede actuar como un controlador de nfsdcltrack;
    • Para AFS se ha añadido emulación de bloqueos de rangos de bytes en archivos (Bloqueo de Rangos de Bytes);
  • Virtualización y seguridad
    • Se ha trabajado en la eliminación de lugares en el núcleo que permitían la ejecución de código desde áreas de memoria reflejadas de escritura, bloqueando así posibles brechas que podrían ser explotadas en un ataque;
    • Se ha añadido un nuevo parámetro de línea de comandos del núcleo "mitigations=", que proporciona una forma simplificada de gestionar la activación de ciertas técnicas de protección contra vulnerabilidades relacionadas con la ejecución especulativa de instrucciones en la CPU. Pasar "mitigations=off" desactiva todos los métodos existentes, mientras que el modo predeterminado "mitigations=auto" activa la protección pero no afecta el uso de Hyper Threading. El modo "mitigations=auto,nosmt" desactiva adicionalmente Hyper Threading si lo requiere el método de protección.
    • Se ha añadido apoyo a la firma digital electrónica según GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), desarrollada por Vitaliy Chikunov de "Bazalt SPO". Se añadió soporte para AES128-CCM en la implementación integrada de TLS. El módulo crypto_simd ha añadido soporte para algoritmos AEAD;
    • En Kconfig se ha añadido se ha creado una sección separada "endurecimiento del núcleo" con opciones para aumentar la protección del núcleo. Actualmente, en la nueva sección solo se han recopilado configuraciones para activar los verificadores de plugins de GCC;
    • El código del núcleo está casi libre de expresiones case continuas en switch (sin return o break después de cada bloque case). Quedan por corregir 32 de 2311 casos de este tipo de uso de switch, después de lo cual se podrá aplicar el modo "-Wimplicit-fallthrough" al compilar el núcleo;
    • Se ha implementado soporte para mecanismos de hardware que limitan rutas de acceso no deseadas del núcleo a datos en el espacio del usuario para la arquitectura PowerPC;
    • Se ha añadido código para el bloqueo ataques? de la clase MDS (Microarchitectural Data Sampling) en procesadores Intel. Se puede verificar si el sistema es vulnerable a esta amenaza a través de la variable SysFS "\/sys\/devices\/system\/cpu\/vulnerabilities\/mds". Disponible dos modos de protección: uno completo, que requiere microcódigo actualizado, y uno alternativo, que no garantiza completamente la limpieza de los buffers de CPU al transferir el control al espacio de usuario o sistema huésped. Para gestionar los modos de protección, se ha añadido el parámetro «mds=» al núcleo, que puede aceptar los valores «full», «full,nosmt» (desactivando Hyper-Threads) y «off»;
    • En sistemas x86-64, se ha añadido la protección «stack guard-page» para IRQ, mecanismos de depuración y controladores de excepciones, cuya esencia es sustituir en el límite con el stack páginas de memoria, el acceso a las cuales genera una excepción (page-fault);
    • Se ha añadido la configuración sysctl vm.unprivileged_userfaultfd, que controla la posibilidad de utilizar la llamada al sistema userfaultfd() por procesos no privilegiados;
  • Subsistema de red
    • Se ha añadido soporte para gateways IPv6 para rutas IPv4. Por ejemplo, ahora se pueden especificar reglas de enrutamiento como «ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0»;
    • Para ICMPv6 se han implementado llamadas ioctl icmp_echo_ignore_anycast e icmp_echo_ignore_multicast para ignorar ICMP ECHO para anycast y
      direcciones multicast. Se ha añadido posibilidad de limitar la intensidad del procesamiento de paquetes ICMPv6;
    • Para el protocolo de malla B.A.T.M.A.N. («Better Approach To Mobile Adhoc Networking»), que permite crear redes descentralizadas, cada nodo está conectado a través de nodos vecinos, se ha añadido soporte para la traducción de multicast a unicast, así como la posibilidad de gestión a través de sysfs;
    • En ethtool se ha agregado se ha añadido el nuevo parámetro Fast Link Down, que permite reducir el tiempo de recepción de información sobre el evento de desconexión del enlace para 1000BaseT (en condiciones normales, la latencia puede ser de hasta 750 ms);
    • Ahora hay la posibilidad vinculación de túneles Foo-Over-UDP a una dirección específica, interfaz de red o socket (anteriormente la vinculación solo se realizaba por una máscara general);
    • En el stack inalámbrico se ha asegurado la capacidad de implementar controladores
      OWE (Opportunistic Wireless Encryption) en el espacio de usuario;
    • En Netfilter, se ha añadido soporte para la familia de direcciones inet en las cadenas nat (por ejemplo, ahora se puede usar una sola regla de traducción para manejar ipv4 e ipv6, sin dividir las reglas para ipv4 e ipv6);
    • En netlink se ha agregado modo estricto para una verificación rigurosa de la corrección de todos los mensajes y atributos, en el que no se permite exceder el tamaño esperado de los atributos y se prohíbe añadir datos adicionales al final de los mensajes;
  • Memoria y servicios del sistema
    • Se ha añadido la bandera CLONE_PIDFD a la llamada al sistema clone(), que permite que el proceso padre reciba un descriptor de archivo 'pidfd' que se asocia con el proceso hijo creado. Este descriptor de archivo, por ejemplo, se puede usar para enviar señales sin temor a enfrentar condiciones de carrera (inmediatamente después de enviar la señal, el PID objetivo puede ser liberado debido a la finalización del proceso y ocupado por otro proceso);
    • Para la segunda versión de cgroups se ha añadido la funcionalidad del controlador freezer, que permite detener la operación en un cgroup y liberar temporalmente algunos recursos (CPU, entrada/salida y potencialmente incluso memoria) para realizar otras tareas. La gestión se realiza a través de los archivos de control cgroup.freeze y cgroup.events en el árbol cgroup. Escribir 1 en cgroup.freeze congela los procesos en el cgroup actual y en todos los grupos secundarios. Dado que la congelación requiere cierto tiempo, se ha propuesto adicionalmente el archivo cgroup.events a través del cual se puede conocer la finalización de la operación;
    • Asegurado la exportación de atributos de memoria asociados a cada nodo en sysfs, lo que permite determinar desde el espacio de usuario la naturaleza del manejo de bancos de memoria en sistemas con memoria heterogénea;
    • Se ha mejorado el subsistema PSI (Pressure Stall Information), que permite analizar información sobre el tiempo de espera para obtener diversos recursos (CPU, memoria, entrada/salida) para ciertas tareas o conjuntos de procesos en un cgroup. Con PSI, los manejadores en el espacio de usuario pueden evaluar más precisamente el nivel de carga del sistema y la naturaleza de la desaceleración en comparación con Load Average. En la nueva versión se ha añadido soporte para la configuración de umbrales de sensibilidad y la posibilidad de usar la llamada poll() para recibir notificaciones sobre la activación de los umbrales establecidos durante un cierto período de tiempo. Esta capacidad permite organizar en Android el monitoreo de la falta de memoria en una etapa temprana, identificar la fuente de problemas y finalizar aplicaciones no importantes, evitando así que surjan problemas perceptibles para el usuario. En las pruebas de estrés, las herramientas de monitoreo del consumo de memoria basadas en PSI han demostrado tener 10 veces menos falsas alarmas en comparación con las estadísticas de vmpressure;
    • Se ha optimizado el código para la verificación de programas BPF, lo que permite que para programas grandes la verificación se realice hasta 20 veces más rápido. La optimización permitió aumentar el límite del tamaño de los programas BPF de 4096 a un millón de instrucciones;
    • Para programas BPF proporcionada la posibilidad de acceso a datos globales, lo que permite definir variables y constantes globales dentro de los programas;
    • Se añadió API, permitiendo controlar desde programas BPF los cambios en los parámetros sysctl;
    • Se ha implementado un compilador JIT para la máquina virtual eBPF para la arquitectura MIPS32;
    • Para la arquitectura PowerPC de 32 bits, se ha añadido soporte para la herramienta de depuración KASan (Kernel address sanitizer), que permite detectar errores en el manejo de la memoria;
    • En sistemas x86-64 se ha eliminado la restricción sobre la ubicación de los volcado de estado en caso de fallo del núcleo (crash-dump) en áreas de memoria superiores a 896MB;
    • Para la arquitectura s390 se ha implementado el soporte para la aleatorización del espacio de direcciones del núcleo (KASLR) y la posibilidad de verificar firmas digitales al cargar el núcleo a través de kexec_file_load();
    • Para la arquitectura PA-RISC se ha añadido soporte para el depurador del núcleo (KGDB), puntos de interrupción y kprobes;
  • Hardware
    • Se incluye el controlador Lima para GPU Mali 400/450, utilizado en muchos chips antiguos basados en la arquitectura ARM. Para GPUs Mali más recientes, se ha añadido el controlador Panfrost, que soporta chips basados en las microarquitecturas Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) y Bifrost (Mali G3x, G5x, G7x);
    • Se ha añadido soporte para dispositivos de sonido que utilizan firmware abierto Sound Open Firmware (SOF). A pesar de la disponibilidad de controladores abiertos, el código de los firmwares para los chips de sonido seguía siendo cerrado y se proporcionaba en formato binario. El proyecto Sound Open Firmware fue desarrollado por Intel para crear firmwares abiertos para chips DSP relacionados con el procesamiento de sonido (posteriormente Google también se unió al desarrollo). En la actualidad, el proyecto ya ha preparado firmware abierto para chips de sonido en plataformas Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake e IceLake;
    • En el controlador DRM de Intel (i915) se ha añadido soporte para chips
      Elkhartlake (Gen11). Se han añadido identificadores PCI para chips Comet Lake (Gen9). Se ha estabilizado el soporte para chips Icelake, para los cuales también se han añadido identificadores PCI adicionales.
      Incorporado
      modo de conmutación asíncrona entre dos búferes en la memoria de video (async flip) durante las operaciones de escritura a través de mmio, lo que permitió aumentar significativamente el rendimiento de algunas aplicaciones 3D (por ejemplo, el rendimiento en la prueba 3DMark Ice Storm aumentó entre un 300% y un 400%). Se añadió soporte para la tecnología HDCP2.2 (Protección de Contenido Digital de Alto Ancho de Banda) para cifrar la señal de video transmitida a través de HDMI;
    • En el controlador amdgpu para GPU Vega20 se ha añadido soporte para RAS (Fiabilidad, Disponibilidad, Mantenibilidad) y apoyo experimental para el subsistema SMU 11, que reemplaza la tecnología Powerplay. Para GPU Vega12 se ha añadido soporte para el modo BACO (Bus Activo, Chip Apagado). Se agregó soporte inicial para XGMI, un bus de alta velocidad (PCIe 4.0) para la conexión de GPU. Se añadieron identificadores faltantes para tarjetas basadas en GPU Polaris10 en el controlador amdkfd;
    • En el controlador Nouveau se añadió soporte para placas basadas en el chipset NVIDIA Turing 117 (TU117, utilizado en GeForce GTX 1650). En
      kconfig se ha añadido configuración para desactivar funciones obsoletas que ya no se utilizan en las versiones actuales de libdrm;
    • En la API DRM y el controlador amdgpu se añadió soporte para objetos de sincronización 'timeline', lo que permite prescindir de bloqueos clásicos.
    • Del branch staging se ha incorporado el controlador vboxvideo para la GPU virtual VirtualBox;
    • Se añadió el controlador aspeed para el chip GFX de SoC ASPEED;
    • Se añadió soporte para ARM SoC y placas Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Al mismo tiempo, la Fundación Latinoamericana de Software Libre formó
una variante núcleo completamente libre 5.2 — Linux-libre 5.2-gnu, limpio de elementos de firmware y controladores que contienen componentes no libres o segmentos de código, cuya área de aplicación está limitada por el fabricante. En esta nueva versión se incluye la carga de archivos
Sound Open Firmware. Se desactivó la carga de blobs en los controladores
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp y ucsi_ccg. Se actualizó el código de limpieza de blobs en los controladores y subsistemas ixp4xx, imx-sdma, amdgpu, nouveau y goya, así como en la documentación del microcódigo. Se detuvo la limpieza de blobs en el controlador r8822be debido a su eliminación.

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