Lanzamiento del núcleo de Linux 5.2

Después de dos meses de desarrollo Linus Torvalds presentado lanzamiento del núcleo Linux 5.2. Entre los cambios más notables: el modo operativo Ext4 no distingue entre mayúsculas y minúsculas, llamadas al sistema separadas para montar el sistema de archivos, controladores para GPU Mali 4xx/ 6xx/7xx, la capacidad de manejar cambios en los valores sysctl en programas BPF, mapeador de dispositivos módulo dm-dust, protección contra ataques MDS, soporte para Sound Open Firmware para DSP, optimización del rendimiento de BFQ, acercando el subsistema PSI (Pressure Stall Information) a la posibilidad de uso en Android.

La nueva versión aceptó 15100 correcciones de 1882 desarrolladores,
tamaño del parche: 62 MB (los cambios afectaron a 30889 archivos, se agregaron 625094 líneas de código y se eliminaron 531864 líneas). Alrededor del 45% de todos presentados en 5.2
Los cambios están asociados con los controladores de dispositivos, aproximadamente el 21% de los cambios tienen
Actitud hacia la actualización de código específico para arquitecturas de hardware, 12%.
relacionados con la pila de red, 3% con sistemas de archivos y 3% con sistemas internos
subsistemas 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. , 1.6 % - Oráculo.

El principal innovaciones:

  • Subsistema de disco, E/S y sistemas de archivos
    • Agregado para Ext4 apoyar funciona sin distinguir entre mayúsculas y minúsculas en los nombres de archivos, que se activa solo en relación con directorios vacíos individuales usando el nuevo atributo “+F” (EXT4_CASEFOLD_FL). Cuando este atributo se establece en un directorio, todas las operaciones con archivos y subdirectorios dentro se llevarán a cabo sin tener en cuenta el caso de los caracteres, incluido el caso se ignorará al buscar y abrir archivos (por ejemplo, los archivos Test.txt, test.txt y test.TXT en dichos directorios se considerarán iguales). De forma predeterminada, el sistema de archivos sigue distinguiendo entre mayúsculas y minúsculas, con la excepción de los directorios con el atributo “chattr +F”;
    • Se han unificado las funciones para procesar caracteres UTF-8 en nombres de archivos, que se utilizan al realizar operaciones de normalización y comparación de cadenas;
    • XFS agrega infraestructura para monitorear el estado de salud del sistema de archivos y un nuevo ioctl para consultar el estado de salud. Se ha implementado una función experimental para comprobar los contadores de superbloques en línea.
    • Se agregó un nuevo módulo mapeador de dispositivos "polvo-dm“, que le permite simular la aparición de bloques defectuosos en el medio o errores al leer desde el disco. El módulo permite simplificar la depuración y prueba de aplicaciones y diversos sistemas de almacenamiento ante posibles fallas;
    • Realizado Importantes optimizaciones de rendimiento para el programador de E/S BFQ. En condiciones de alta carga de E/S, se realizan optimizaciones позволяют Reduzca el tiempo de operaciones como el lanzamiento de aplicaciones hasta en un 80%.
    • Se agregó una serie de llamadas al sistema para montar sistemas de archivos: fsopen(), árbol_abierto(), fspick(), fsmont(), fsconfig() и mover_montaje(). Estas llamadas al sistema le permiten procesar por separado diferentes etapas de montaje (procesar el superbloque, obtener información sobre el sistema de archivos, montar, adjuntar al punto de montaje), que anteriormente se realizaban utilizando la llamada al sistema general mount(). Las llamadas separadas brindan la capacidad de realizar escenarios de montaje más complejos y realizar operaciones separadas, como reconfigurar el superbloque, habilitar opciones, cambiar el punto de montaje y pasar a un espacio de nombres diferente. Además, el procesamiento por separado le permite determinar con precisión los motivos de la aparición de códigos de error y establecer múltiples fuentes para sistemas de archivos multicapa, como overlayfs;
    • Se ha agregado una nueva operación IORING_OP_SYNC_FILE_RANGE a la interfaz para E/S asíncronas io_uring, que realiza acciones equivalentes a una llamada al sistema. sincronizar_archivo_rango(), y también implementó la capacidad de registrar eventfd con io_uring y recibir notificaciones sobre la finalización de las operaciones;
    • Para el sistema de archivos CIFS, se agregó FIEMAP ioctl, que proporciona un mapeo de extensión eficiente, así como soporte para los modos SEEK_DATA y SEEK_HOLE;
    • En el subsistema FUSE sugirió API para gestionar el almacenamiento en caché de datos;
    • Btrfs ha optimizado la implementación de qgroups y ha mejorado la velocidad de ejecución de fsync para archivos con múltiples enlaces físicos. Se ha mejorado el código de verificación de integridad de los datos, que ahora tiene en cuenta posibles daños a la información en la RAM antes de descargar los datos al disco;
    • CEPH agregó soporte para exportar instantáneas a través de NFS;
    • Se ha mejorado la implementación del montaje de NFSv4 en modo "suave" (si ocurre un error al acceder al servidor en modo "suave", una llamada a devuelve inmediatamente un código de error, y en modo "duro" el control no se da hasta que el FS se restablece la disponibilidad o el tiempo de espera). La nueva versión proporciona un manejo más preciso del tiempo de espera, una recuperación de fallas más rápida y una nueva opción de montaje "más suave" que le permite cambiar el código de error (ETIMEDOUT) que se devuelve cuando ocurre un tiempo de espera;
    • La API nfsdcld, diseñada para rastrear el estado de los clientes NFS, permite que el servidor NFS rastree correctamente el estado del cliente al reiniciar. Por lo tanto, el demonio nfsdcld ahora puede actuar como un controlador nfsdcltrack;
    • Para AFS agregado emulación de bloqueos de rango de bytes en archivos (Bloqueo de rango de bytes);
  • Virtualización y seguridad
    • Se ha trabajado para eliminar lugares en el kernel que permiten la ejecución de código desde áreas de memoria reflejada grabables, lo que permite bloquear potenciales agujeros que podrían ser explotados durante un ataque;
    • Se ha agregado un nuevo parámetro de línea de comando del kernel "mitigations=", que proporciona una forma simplificada de controlar la habilitación de ciertas técnicas para proteger contra vulnerabilidades asociadas con la ejecución especulativa de instrucciones en la CPU. Pasar "mitigations=off" deshabilita todos los métodos existentes y el modo predeterminado "mitigations=auto" habilita la protección pero no afecta el uso de Hyper Threading. El modo “mitigations=auto,nosmt” además desactiva Hyper Threading si así lo requiere el método de protección.
    • Añadido por soporte para firma digital electrónica según GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), desarrollado por Vitaly Chikunov de Basalt SPO. Se agregó soporte para AES128-CCM a la implementación nativa de TLS. Se agregó soporte para algoritmos AEAD al módulo crypto_simd;
    • En Kconfig agregado una sección separada de "endurecimiento del kernel" con opciones para mejorar la protección del kernel. Actualmente, la nueva sección solo contiene configuraciones para habilitar complementos de mejora de verificación de GCC;
    • El código del kernel es casi entregado de declaraciones de casos sin interrupción en switch (sin retorno o interrupción después de cada bloque de casos). Queda por solucionar 32 de 2311 casos de dicho uso del interruptor, después de lo cual será posible utilizar el modo "-Wimplicit-fallthrough" al construir el kernel;
    • Para la arquitectura PowerPC, se ha implementado soporte para mecanismos de hardware para limitar rutas de acceso no deseadas al kernel a datos en el espacio del usuario;
    • Código de bloqueo agregado ataques Clase MDS (Microarchitectural Data Sampling) en procesadores Intel. Puede comprobar si un sistema es vulnerable a vulnerabilidades a través de la variable SysFS “/sys/devices/system/cpu/vulnerabilities/mds”. Disponible dos modos de protección: completa, que requiere un microcódigo actualizado, y bypass, que no garantiza completamente la limpieza de los buffers de la CPU cuando el control se transfiere al espacio del usuario o al sistema invitado. Para controlar los modos de protección, se ha agregado al kernel el parámetro “mds=", que puede tomar los valores "full", "full,nosmt" (+ desactivar Hyper-Threads) y "off";
    • En los sistemas x86-64, se ha agregado protección de "página de protección de pila" para IRQ, mecanismos de depuración y controladores de excepciones, cuya esencia es la sustitución de páginas de memoria en el borde con la pila, cuyo acceso conduce a la generación de una excepción (fallo de página);
    • Se agregó la configuración sysctl vm.unprivileged_userfaultfd, que controla la capacidad de los procesos sin privilegios para usar la llamada al sistema userfaultfd();
  • Subsistema de red
    • Añadido por Soporte de puerta de enlace IPv6 para rutas IPv4. Por ejemplo, ahora puede especificar reglas de enrutamiento como “ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0”;
    • Para ICMPv6, las llamadas ioctl icmp_echo_ignore_anycast e icmp_echo_ignore_multicast se implementan para ignorar ICMP ECHO para anycast y
      direcciones de multidifusión. Añadido por la capacidad de limitar la intensidad del procesamiento de paquetes ICMPv6;

    • Para el protocolo mesh BATMAN (Better Approach To Mobile Adhoc Networking), que permite la creación de redes descentralizadas en las que cada nodo está conectado a través de nodos vecinos, agregado soporte para transmisión de multidifusión a unidifusión, así como la capacidad de control a través de sysfs;
    • en ettool adicional un nuevo parámetro Fast Link Down, que le permite reducir el tiempo que lleva recibir información sobre un evento de enlace caído para 1000BaseT (en condiciones normales, el retraso es de hasta 750 ms);
    • Aparecido oportunidad vincular túneles Foo-Over-UDP a una dirección, interfaz de red o socket específico (anteriormente, la vinculación se realizaba solo mediante una máscara común);
    • En la pila inalámbrica proporcionado posibilidad de implementar controladores
      OWE (Cifrado inalámbrico oportunista) en el espacio del usuario;

    • En Netfilter, se agregó soporte para la familia de direcciones inet a las cadenas nat (por ejemplo, ahora puede usar una regla de traducción para procesar ipv4 e ipv6, sin separar las reglas para ipv4 e ipv6);
    • en enlace de red adicional régimen estricto para una verificación estricta de la exactitud de todos los mensajes y atributos, en la que no se permite exceder el tamaño esperado de los atributos y se prohíbe agregar datos adicionales al final de los mensajes;
  • Servicios de memoria y sistema.
    • El indicador CLONE_PIDFD se ha agregado a la llamada al sistema clone(); cuando se especifica, el descriptor de archivo "pidfd" identificado con el proceso hijo creado se devuelve al proceso padre. Este descriptor de archivo, por ejemplo, se puede utilizar para enviar señales sin temor a entrar en una condición de carrera (inmediatamente después de enviar la señal, el PID objetivo puede liberarse debido a la terminación del proceso y ocuparse por otro proceso);
    • Para la segunda versión de cgroups, se agregó la funcionalidad del controlador del congelador, con la que puede detener el trabajo en un cgroup y liberar temporalmente algunos recursos (CPU, E/S y potencialmente incluso memoria) para realizar otras tareas. La administración se realiza a través de los archivos de control cgroup.freeze y cgroup.events en el árbol de cgroup. La entrada 1 en cgroup.freeze congela los procesos en el cgroup actual y en todos los grupos secundarios. Dado que la congelación lleva algún tiempo, se proporciona un archivo cgroup.events adicional a través del cual puede obtener información sobre la finalización de la operación;
    • asegurado exportación de atributos de memoria adjuntos a cada nodo en sysfs, lo que le permite determinar desde el espacio del usuario la naturaleza del procesamiento de bancos de memoria en sistemas con memoria heterogénea;
    • Se ha mejorado el subsistema PSI (Información de parada de presión), que le permite analizar información sobre el tiempo de espera para recibir varios recursos (CPU, memoria, E/S) para determinadas tareas o conjuntos de procesos en un cgroup. Al utilizar PSI, los manejadores de espacio de usuario pueden estimar con mayor precisión el nivel de carga del sistema y los patrones de desaceleración en comparación con el promedio de carga. La nueva versión brinda soporte para establecer umbrales de sensibilidad y la capacidad de usar la llamada poll() para recibir una notificación de que los umbrales establecidos se han activado durante un cierto período de tiempo. Esta característica permite a Android monitorear la escasez de memoria en una etapa temprana, identificar la fuente de los problemas y finalizar aplicaciones sin importancia sin causar problemas que sean perceptibles para el usuario. En las pruebas de estrés, las herramientas de monitoreo del consumo de memoria basadas en PSI demostraron 10 veces menos falsos positivos en comparación con las estadísticas de presión de vm;
    • Se ha optimizado el código para verificar programas BPF, lo que permite verificar hasta 20 veces más rápido para programas grandes. La optimización hizo posible aumentar el límite de tamaño de los programas BPF de 4096 a un millón de instrucciones;
    • Para programas BPF proporcionado por la capacidad de acceder a datos globales, lo que le permite definir variables y constantes globales en los programas;
    • Добавлен API, que le permite controlar los cambios en los parámetros sysctl de los programas BPF;
    • Para la arquitectura MIPS32 se ha implementado un compilador JIT para la máquina virtual eBPF;
    • Para la arquitectura PowerPC 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;
    • En sistemas x86-64, se eliminó la restricción de colocar volcados de estado durante una falla del kernel (volcado de memoria) en áreas de memoria superiores a 896 MB;
    • Para la arquitectura s390, se implementa soporte para la aleatorización del espacio de direcciones del kernel (KASLR) y la capacidad de verificar firmas digitales al cargar el kernel a través de kexec_file_load();
    • Para la arquitectura PA-RISC, se agregó soporte para el depurador del kernel (KGDB), marcas de salto y kprobes;
  • Equipo
    • Conductor incluido Lima para la GPU Mali 400/450, utilizada en muchos chips antiguos basados ​​en la arquitectura ARM. Para las GPU Mali más nuevas, se agregó el controlador Panfrost, que admite chips basados ​​en microarquitecturas Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) y Bifrost (Mali G3x, G5x, G7x);
    • Se agregó soporte para dispositivos de audio que usan firmware abierto. Firmware abierto de sonido (SOF). A pesar de la disponibilidad de controladores abiertos, el código de firmware para los chips de sonido seguía estando cerrado y se suministraba en formato binario. El proyecto Sound Open Firmware fue desarrollado por Intel para crear firmware abierto para chips DSP relacionados con el procesamiento de audio (posteriormente Google también se unió al desarrollo). Actualmente, el proyecto ya tiene preparado el descubrimiento de firmware para chips de sonido de las plataformas Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake e IceLake;
    • El controlador Intel DRM (i915) agrega soporte para chips
      Elkhartlake (Gen11). Se agregaron ID de PCI para chips Comet Lake (Gen9). Se ha estabilizado la compatibilidad con los chips Icelake, para los cuales también se han agregado identificadores de dispositivos PCI adicionales.
      Encendido
      modo de conmutación asíncrona entre dos buffers en la memoria de video (async flip) al realizar operaciones de escritura a través de mmio, lo que aumentó significativamente el rendimiento de algunas aplicaciones 3D (por ejemplo, el rendimiento en la prueba 3DMark Ice Storm aumentó en un 300-400%). Soporte tecnológico añadido HDCP2.2 (Protección de contenido digital de alto ancho de banda) para cifrar señales de vídeo transmitidas a través de HDMI;

    • El controlador amdgpu para la GPU Vega20 agregado soporte para RAS (Confiabilidad, Disponibilidad, Capacidad de Servicio) y soporte experimental para el subsistema SMU 11, que reemplazó la tecnología Powerplay. Para GPUVega12 agregado 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 interconexión de GPU. Se agregaron identificadores faltantes para tarjetas basadas en GPU Polaris10 al controlador amdkfd;
    • El controlador Nouveau ha agregado soporte para placas basadas en el chipset NVIDIA Turing 117 (TU117, utilizado en la GeForce GTX 1650). EN
      kconfig agregado configuración para deshabilitar funciones obsoletas que ya no se utilizan en las versiones actuales de libdrm;

    • Se agregó soporte para objetos de sincronización de "línea de tiempo" a la API DRM y al controlador amdgpu, lo que le permite prescindir del bloqueo clásico.
    • El controlador vboxvideo para la GPU virtual VirtualBox se ha movido de la rama provisional a la estructura principal;
    • Se agregó un controlador de velocidad para el chip GFX SoC ASPEED;
    • Se agregó soporte para ARM SoC e Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi ) placas 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).

Simultáneamente, Fundación Software Libre América Latina formado
вариант kernel 5.2 completamente gratis - linux-libre 5.2-gnu, libre de elementos de firmware y controladores que contengan componentes o secciones de código no libres, cuyo alcance está limitado por el fabricante. La nueva versión incluye la carga de archivos.
Firmware abierto de sonido. La carga de blobs en los controladores está deshabilitada.
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

Añadir un comentario