Lanzamiento del núcleo de Linux 5.6

Después de dos meses de desarrollo Linus Torvalds presentado lanzamiento del núcleo Linux 5.6. Entre los cambios más notables: integración de la interfaz WireGuard VPN, soporte para USB4, espacios de nombres para el tiempo, la capacidad de crear controladores de congestión TCP usando BPF, soporte inicial para MultiPath TCP, eliminación del problema 2038 del kernel, el mecanismo "bootconfig" , ZonaFS.

La nueva versión aceptó 13702 correcciones de 1810 desarrolladores,
tamaño del parche: 40 MB (los cambios afectaron a 11577 archivos, se agregaron 610012 líneas de código,
294828 líneas eliminadas). Alrededor del 45% de todos presentados en 5.6
Los cambios están asociados con los controladores de dispositivos, aproximadamente el 15% de los cambios tienen
Actitud hacia la actualización de código específico para arquitecturas de hardware, 12%.
asociado con la pila de red, 4% con sistemas de archivos y 3% con sistemas internos
subsistemas del núcleo.

El principal innovaciones:

  • Subsistema de red
    • Añadido por implementación de una interfaz VPN WireGuard, que se implementa basándose en métodos de cifrado modernos (ChaCha20, Poly1305, Curve25519, BLAKE2s), es fácil de usar, no presenta complicaciones, ha demostrado su eficacia en varias implementaciones importantes y proporciona un rendimiento muy alto (3,9 veces más rápido que OpenVPN en términos de rendimiento). WireGuard utiliza el concepto de enrutamiento de claves de cifrado, que implica adjuntar una clave privada a cada interfaz de red y utilizarla para vincular las claves públicas. Las claves públicas se intercambian para establecer una conexión de forma similar a SSH. Primitivas criptográficas necesarias para que WireGuard funcione eran transferido de la biblioteca Zinc como parte de la Crypto API estándar y incluido en el núcleo 5.5.
    • Iniciado integración de componentes necesarios para soportar 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. Para aplicaciones de red, una conexión agregada de este tipo parece una conexión TCP normal y toda la lógica de separación de flujo la realiza MPTCP. TCP multiruta se puede utilizar para aumentar el rendimiento y la confiabilidad. Por ejemplo, MPTCP se puede utilizar para organizar la transmisión de datos en un teléfono inteligente usando enlaces WiFi y 4G simultáneamente, o para reducir costos conectando un servidor usando varios enlaces baratos en lugar de uno costoso.
    • Añadido por soporte para la disciplina de procesamiento de colas de red sch_ets (Selección de transmisión mejorada, IEEE 802.1Qaz), que proporciona la capacidad de distribuir ancho de banda entre diferentes clases de tráfico. Si la carga de una clase de tráfico particular está por debajo del ancho de banda asignado, entonces el ETS permite que otras clases de tráfico utilicen el ancho de banda disponible (no utilizado). Qdisc sch_ets está configurado como una disciplina PRIO y utiliza clases de tráfico para definir límites de ancho de banda estrictos y compartidos. ETS funciona como una combinación de disciplinas. PRIÑO и RRD — si hay clases de tráfico estrictamente limitadas, se utiliza PRIO, pero si no hay tráfico en la cola, funciona como DRR.
    • Se agregó un nuevo tipo de programas BPF. BPF_PROG_TYPE_STRUCT_OPS, que le permite implementar controladores de funciones del kernel a través de BPF. Actualmente, esta característica ya se puede utilizar para implementar algoritmos de control de congestión TCP en forma de programas BPF. Como ejemplo propuesto Programa BPF con implementación de algoritmo. DCTCP.
    • Aceptado en el núcleo cambios, herramientas de traducción ettool con ioctl() para usar interfaz de enlace de red. La nueva interfaz facilita la adición de extensiones, mejora el manejo de errores, permite enviar notificaciones cuando cambia el estado, simplifica la interacción entre el kernel y el espacio del usuario y reduce la cantidad de listas con nombres que deben sincronizarse.
    • Se agregó la implementación del algoritmo de gestión de colas de red FQ-PIE (Flow Queue PIE), destinado a reducir el impacto negativo del almacenamiento en búfer de paquetes intermedios en los equipos de red de borde (bufferbloat). FQ-PIE demuestra una alta eficiencia cuando se utiliza en sistemas con módems de cable.
  • Subsistema de disco, E/S y sistemas de archivos
    • Para el sistema de archivos Btrfs agregado Implementación asincrónica de la operación DISCARD (marcar bloques liberados que ya no necesitan ser almacenados físicamente). Inicialmente, las operaciones DISCARD se realizaban de forma sincrónica, lo que podía provocar una degradación del rendimiento debido a que las unidades esperaban a que se completaran los comandos correspondientes. La implementación asincrónica le permite no esperar a que la unidad complete DESCARTAR y realizar esta operación en segundo plano.
    • En XFS llevado a cabo Limpiar el código que usaba contadores de tiempo antiguos de 32 bits (el tipo time_t fue reemplazado por time64_t), lo que generó el problema 2038. Se corrigieron errores y corrupción de memoria que ocurrían en plataformas de 32 bits. El código ha sido reelaborado para funcionar con atributos extendidos.
    • Al sistema de archivos ext4 ingresó Optimizaciones de rendimiento relacionadas con el manejo del bloqueo de inodos durante las operaciones de lectura y escritura. Rendimiento de reescritura mejorado en modo Direct I/O. Para simplificar el diagnóstico de problemas, el primer y el último código de error se almacenan en el superbloque.
    • En el sistema de archivos F2FS implementado capacidad de almacenar datos en forma comprimida. Para un archivo o directorio individual, la compresión se puede habilitar usando el comando "chattr +c file" o "chattr +c dir; toque directorio/archivo". Para comprimir toda la partición, puede utilizar la opción "-o compress_extension=ext" en la utilidad de montaje.
    • El kernel incluye un sistema de archivos. ZonaFS, que simplifica el trabajo de bajo nivel con dispositivos de almacenamiento zonificados. Las unidades zonificadas se refieren a dispositivos en discos duros magnéticos o SSD NVMe, cuyo espacio de almacenamiento se divide en zonas que forman grupos de bloques o sectores, en los que solo se permite la adición secuencial de datos, actualizando todo el grupo de bloques. FS ZoneFS fue desarrollado por Western Digital y asocia cada zona de la unidad con un archivo separado que se puede usar para almacenar datos en modo sin formato sin manipulación a nivel de sector y bloque, es decir. Permite que las aplicaciones utilicen la API de archivos en lugar de acceder directamente al dispositivo de bloque mediante un ioctl.
    • En NFS, el montaje de particiones a través de UDP está deshabilitado de forma predeterminada. Se agregó soporte para la capacidad de copiar archivos directamente entre servidores, definido en la especificación NFS 4.2. Se agregó una nueva opción de montaje "softreval", que permite utilizar valores de atributos almacenados en caché en caso de falla del servidor. Por ejemplo, al especificar esta opción, después de que el servidor no esté disponible, sigue siendo posible moverse por las rutas en la partición NFS y acceder a la información que se ha almacenado en el caché.
    • Realizado optimización del rendimiento del mecanismo fs-verity, utilizado para monitorear la integridad y autenticación de archivos individuales. Mayor velocidad de lectura secuencial gracias al uso de un árbol hash de Merkle. Se ha optimizado el rendimiento de FS_IOC_ENABLE_VERITY cuando no hay datos en la caché (se ha aplicado lectura preventiva de páginas con datos).
  • Virtualización y seguridad
    • La capacidad de deshabilitar el módulo SELinux mientras se ejecuta ha quedado obsoleta y en el futuro se prohibirá descargar un SELinux ya activado. Para deshabilitar SELinux necesitará pasar el parámetro "selinux=0" en la línea de comando del kernel.
    • Añadido por soporte para espacios de nombres para el tiempo (espacios de nombres de tiempo), lo que le permite vincular el estado del reloj del sistema al contenedor (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), utilice su propio tiempo en el contenedor y, al migrar el contenedor a otro host, asegúrese de que las lecturas de CLOCK_MONOTONIC y CLOCK_BOOTTIME permanezcan sin cambios (tenga en cuenta el tiempo después de la carga, teniendo en cuenta o sin estar en modo de suspensión) ).

    • Se ha eliminado el grupo de bloqueo /dev/random. El comportamiento de /dev/random es similar a /dev/urandom en términos de evitar el bloqueo de entropía después de la inicialización del grupo.
    • El kernel principal incluye un controlador que permite a los sistemas invitados que ejecutan VirtualBox montar directorios exportados por el entorno host (Carpeta compartida de VirtualBox).
    • Se ha agregado un conjunto de parches al subsistema BPF (despachador BPF), cuando se utiliza el mecanismo Retpoline para protegerse contra ataques de clase Spectre V2, le permite aumentar la eficiencia de llamar a programas BPF cuando ocurren eventos asociados con ellos (por ejemplo, hace posible acelerar la llamada de controladores XDP cuando un llega el paquete de red).
    • Se agregó un controlador para admitir TEE (entorno de ejecución confiable) integrado en las APU de AMD.
  • Servicios de memoria y sistema.
    • BPF ha agregado soporte para funciones globales. El desarrollo se está llevando a cabo como parte de una iniciativa para agregar soporte para bibliotecas de funciones que se pueden incluir en los programas BPF. El siguiente paso será admitir extensiones dinámicas que permitan cargar funciones globales, incluido el reemplazo de funciones globales existentes mientras están en uso. El subsistema BPF también agrega soporte para una variante de la operación de mapa (utilizada para almacenar datos persistentes), que admite la ejecución en modo por lotes.
    • Adicional El dispositivo “cpu_cooling” le permite enfriar una CPU sobrecalentada colocándola en estado inactivo durante cortos períodos de tiempo.
    • Llamada al sistema agregada abrirat2(), que ofrece un conjunto de indicadores adicionales para limitar la resolución de la ruta del archivo (prohibición de cruzar puntos de montaje, enlaces simbólicos, enlaces mágicos (/proc/PID/fd), componentes “../”).
    • Para sistemas heterogéneos basados ​​​​en la arquitectura big.LITTLE, que combinan núcleos de CPU potentes y menos eficientes energéticamente en un chip, el parámetro uclamp_min se establece al ejecutar tareas en tiempo real (aparecióШшся en el kernel 5.3 hay un mecanismo para asegurar la carga). Este parámetro garantiza que el programador colocará la tarea en un núcleo de CPU que tenga suficiente rendimiento.
    • El núcleo se libera de problemas de 2038. Se reemplazaron los últimos controladores restantes, que usaban el tipo time_t de 32 bits (int con signo) para el contador de tiempo de época, que, teniendo en cuenta el informe de 1970, debería desbordarse en 2038.
    • Mejora continua de la interfaz de E/S asíncrona io_duranteen el cual proporcionado soporte para nuevas operaciones: IORING_OP_FALLOCATE (reserva de áreas vacías), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (abrir y cerrar archivos),
      IORING_OP_FILES_UPDATE (agregar y eliminar archivos de la lista de acceso rápido),
      IORING_OP_STATX (solicitud de información de archivo),
      IORING_OP_READ,
      IORING_OP_WRITE (análogos simplificados de IORING_OP_READV e IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (variantes asíncronas de llamadas posix_fadvise y madvise), IORING_OP_SEND,
      IORING_OP_RECV (enviar y recibir datos de red),
      IORING_OP_EPOLL_CTL (realizar operaciones en descriptores de archivos epoll).

    • Llamada al sistema agregada pidfd_getfd(), permitiendo que un proceso recupere un descriptor de archivo para un archivo abierto de otro proceso.
    • Implementado el mecanismo “bootconfig”, que permite, además de las opciones de la línea de comandos, determinar los parámetros del kernel a través de un archivo de configuración. Para agregar dichos archivos a la imagen initramfs, se propone la utilidad bootconfig. Esta característica se puede utilizar, por ejemplo, para configurar kprobes en el momento del arranque.
    • Reelaborado un mecanismo para esperar la escritura y lectura de datos en canalizaciones sin nombre. El cambio permitió agilizar tareas como el montaje paralelo de grandes proyectos. Sin embargo, la optimización puede provocar una condición de carrera en GNU make debido a un error en la versión 4.2.1, que se solucionó en la versión 4.3.
    • Se agregó el indicador PR_SET_IO_FLUSHER a prctl(), que se puede usar para marcar procesos sin memoria que no deben estar sujetos a límites cuando el sistema tiene poca memoria.
    • Basado en el sistema de distribución de memoria ION utilizado en Android, se ha implementado un subsistema montones dma-buf, que le permite controlar la asignación de buffers DMA para compartir áreas de memoria entre controladores, aplicaciones y varios subsistemas.
  • Arquitecturas de hardware
    • Se agregó soporte para la extensión E0PD, que apareció en ARMv8.5 y permite protección contra ataques relacionados con la ejecución especulativa de instrucciones en la CPU. La protección basada en E0PD genera una sobrecarga menor que la protección KPTI (aislamiento de tabla de páginas del núcleo).
    • Para los sistemas basados ​​en la arquitectura ARMv8.5, se agregó soporte para la instrucción RNG, lo que brinda acceso a un generador de números pseudoaleatorios de hardware. En el kernel, la instrucción RNG se utiliza para generar entropía al inicializar el generador de números pseudoaleatorios proporcionado por el kernel.
    • Se eliminó el soporte para MPX (Extensiones de protección de memoria) agregado en el kernel. 3.19 y le permite organizar la verificación de punteros para garantizar que se respeten los límites de las áreas de memoria. Esta tecnología no se utilizó ampliamente en los compiladores y fue eliminada de GCC.
    • Para la arquitectura RISC-V, se ha implementado soporte para la herramienta de depuración KASan (Kernel Address Sanitizer), que ayuda a identificar errores al trabajar con la memoria.
  • Equipo
    • Soporte de especificación implementado USB 4.0, que se basa en el protocolo Thunderbolt 3 y proporciona un rendimiento de hasta 40 Gbps, manteniendo al mismo tiempo la compatibilidad con USB 2.0 y USB 3.2. Por analogía con Rayo La interfaz USB 4.0 le permite conectar diferentes protocolos a través de un solo cable con un conector Tipo C, incluidos PCIe, Display Port y USB 3.x, así como implementaciones de software de protocolos, por ejemplo, para organizar enlaces de red entre hosts. La implementación se basa en el controlador Thunderbolt ya incluido en el kernel de Linux y lo adapta para funcionar con hosts y dispositivos compatibles con USB4. Los cambios también agregan soporte para dispositivos Thunderbolt 3 a la implementación de software de Connection Manager, que es responsable de crear túneles para conectar múltiples dispositivos a través de un solo conector.
    • En el controlador amdgpu agregado soporte inicial para la tecnología de protección de copia HDCP 2.x (Protección de contenido digital de alto ancho de banda). Se agregó soporte para el chip AMD Pollock ASIC basado en Raven 2. Se implementó la capacidad de restablecer la GPU para las familias Renoir y Navi.
    • Controlador DRM para tarjetas de video Intel agregado Se implementó soporte DSI VDSC para chips basados ​​​​en la microarquitectura Ice Lake y Tiger Lake, se implementó LMEM mmap (memoria local del dispositivo), se mejoró el análisis de VBT (Video BIOS Table), se implementó soporte HDCP 2.2 para chips Coffee Lake.
    • Se continuó trabajando para unificar el código del controlador amdkfd (para GPU discretas, como Fiji, Tonga, Polaris) con el controlador amdgpu.
    • El controlador k10temp ha sido rediseñado, agregando soporte para mostrar parámetros de voltaje y corriente para las CPU AMD Zen, así como información ampliada de los sensores de temperatura utilizados en las CPU Zen y Zen 2.
    • En el nuevo conductor agregado soporte para el modo de carga de firmware verificado para GPU NVIDIA basado en la microarquitectura Turing (GeForce RTX 2000), lo que permitió habilitar el soporte para aceleración 3D para estas tarjetas (se requiere descargar el firmware oficial con una firma digital NVIDIA). Se agregó soporte para el motor gráfico TU10x. Se han resuelto los problemas con HD Audio.
    • Se agregó soporte para la compresión de datos cuando se transmiten a través de DisplayPort MST (Transporte Multi-Stream).
    • Se agregó un nuevo controlador "ath11k» para chips inalámbricos Qualcomm compatibles con 802.11ax.
      El controlador se basa en la pila mac80211 y admite modos de punto de acceso, estación de trabajo y nodo de red en malla.

    • A través de sysfs, se proporciona acceso a lecturas legibles de los sensores de temperatura utilizados en discos duros y SSD modernos.
    • contribuido cambios significativos en el sistema de sonido ALSA, destinados a eliminar el código de problemas de 2038 (evitando el uso del tipo time_t de 32 bits en las interfaces snd_pcm_mmap_status y snd_pcm_mmap_control). Se agregó soporte para nuevos códecs de audio.
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Adicional controladores para paneles LCD Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
      BOE NV140FHM-N49,
      Satoz SAT050AT40H12R2,
      Sharp LS020B1DD01D.

    • Añadido por soporte para placas ARM y plataformas Gen1 Amazon Echo (basado en OMAP3630), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
      Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
      Lector de libros electrónicos Tolino Shine 3,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX y HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Portador Rockchip Radxa Dalang, Radxa Rock Pi N10, VMARC RK3399Pro SOM
      ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Se agregó soporte para el controlador PCIe utilizado en Raspberry Pi 4.

Al mismo tiempo, la Fundación Latinoamericana de Software Libre formado
вариант kernel 5.6 completamente gratis - linux-libre 5.6-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 deshabilita la carga de blobs en los controladores para AMD TEE, ATH11K y Mediatek SCP. Código de limpieza de blobs actualizado en controladores y subsistemas AMD PSP, amdgpu y nouveau.

Fuente: opennet.ru

Añadir un comentario