Linux 6.19

Linux 6.19

Después de dos meses de desarrollo Linus Torvalds presentado lanzamiento del núcleo Linux 6.19Entre los cambios más notables: subsistema Live Update Orchestrator, soporte para PCIe Link Encryption, llamada al sistema listns, modo de recepción Zero-Copy en io_uring, soporte para la extensión ARM MPAM, klp-build para generar parches en vivo, soporte para la arquitectura LoongArch32, QoS para s2idle, optimizaciones del subsistema de auditoría, Intel LASS para protección Spectre, soporte para hashes SHA-3 y BLAKE2b, mecanismo Confidential VMBus, optimizaciones TX en el subsistema de red, protocolo CAN XL, API para aceleración de hardware de salida HDR.

En el anuncio de la nueva versión, Linus anunció que la próxima versión del kernel se numeraría como 7.0, ya que la rama 6.x había acumulado suficientes versiones como para justificar un cambio en el primer dígito del número de versión (la versión 6.0 siguió a la 5.19). El cambio de numeración se realiza por razones estéticas y es un paso formal para aliviar la incomodidad causada por la acumulación de un gran número de versiones en la serie. Linus bromeó diciendo que le confundían los grandes números que requerían los dedos de las manos y de los pies. Sin embargo, formalmente, existe una razón para un cambio significativo en el número de versión, ya que a partir de el próximo soporte de lanzamiento para Rust esta decidido Pasar de las capacidades experimentales del núcleo a las capacidades centrales.

La nueva versión incorpora 15 657 correcciones realizadas por 2237 desarrolladores, con un tamaño de parche de 52 MB (los cambios afectaron a 13 682 archivos, añadiendo 794 649 líneas de código y eliminando 335 498). La versión anterior incluía 15 035 correcciones realizadas por 2217 desarrolladores, con un tamaño de parche de 45 MB. Aproximadamente el 40 % de los cambios en la versión 6.19 están relacionados con controladores de dispositivos, aproximadamente el 13 % con actualizaciones de código específicas de arquitecturas de hardware, el 12 % con la pila de red, el 5 % con los sistemas de archivos y el 3 % con los subsistemas internos del kernel.

Nuevas características clave en el kernel 6.19 (1, 2, 3):

  • Subsistema de disco, E/S y sistemas de archivos
    • В Btrfs Procesos de verificación de FS (scrub) y reemplazo de dispositivos más No bloquean El sistema entra en modo de suspensión (el estado de la comprobación de limpieza se guarda antes del modo de suspensión; tras salir del modo de suspensión, la comprobación continúa y se reinicia la operación de reemplazo del dispositivo). La implementación de RAID56 se ha actualizado para admitir bloques mayores que el tamaño de página de memoria. Se han realizado los preparativos para esta compatibilidad. fscryptSe mejoró el rendimiento del manejo de bloqueos al realizar operaciones relacionadas con la reserva de espacio. Añadido por soporte para la operación ioctl de apagado, que permite poner el sistema de archivos en un estado en el que se intenta completar la ejecución de las operaciones que ya se están ejecutando, pero se bloquean todas las operaciones nuevas.
    • En el sistema de archivos Ext4 incluido Compatibilidad con bloques mayores que el tamaño de página de memoria (>4 KB en sistemas x86). Uso de bloques grandes. permite Mejora el rendimiento de las operaciones de escritura en búfer en un promedio del 50 %, pero reduce el rendimiento de la E/S directa debido al mayor tiempo de cálculo de la suma de comprobación. La nueva versión también... agregado optimizaciones que aumentaron el rendimiento al realizar la desfragmentación en línea.
    • En el subsistema FUSIBLE Soporte mejorado para lectura en búfer cuando se utilizan archivos grandes folios de páginas de memoria (folios grandes). iomap ahora se utiliza para rastrear folios parcialmente actuales para descargar solo los datos que no están en el búfer.
    • В VFS Se agregó soporte para la delegación de directorio revocable, que le permite implementar NFS Transferencia del control del directorio del servidor al cliente, lo que permite al cliente NFS supervisar de forma independiente el estado del directorio mediante su caché local sin contactar con el servidor NFS. Si otro cliente NFS realiza cambios en este directorio, se revocará la delegación de control del primer cliente.
    • Para NFS agregado Soporte para lectura en modo E/S directa. Implementado Configuraciones /sys/kernel/debug/nfsd/io_cache_read y /sys/kernel/debug/nfsd/io_cache_write para controlar la inclusión de almacenamiento en caché y operaciones de E/S directas; manipular estas configuraciones puede reducir la sobrecarga en el lado del cliente NFS cuando se realizan operaciones de E/S grandes.
    • В NTFS Se ha implementado soporte para la operación de apagado ioctl, incluido Opciones de montaje predeterminadas acl y prealloc, se agregó soporte para marcas de tiempo anteriores al 1 de enero de 1970.
    • para dispositivos de bloque y FS incluido De forma predeterminada, se almacenan en caché objetos separados por CPU.bio» (Bloque de E/S), que define operaciones de entrada/salida activas.
  • Servicios de memoria y sistema.
    • En el núcleo incluido subsistema Orquestador de actualizaciones en vivo (LUO), que permite reiniciar completamente y actualizar el kernel sin interrumpir el funcionamiento ni perder el estado del sistema, los dispositivos ni los procesos. El subsistema LUO se basa en un mecanismo previamente añadido al kernel. DEPÓSITO (Kexec HandOver), además de permitir el lanzamiento de un nuevo kernel desde el antiguo sin perder el estado del sistema, aborda cuestiones como la preservación del estado de los dispositivos y la RAM, así como la garantía de la continuidad de las operaciones relacionadas con el acceso directo de memoria (DMA) y la gestión de interrupciones. El estado se preserva antes de cambiar al nuevo kernel y se restaura tras su activación, sin interrumpir las operaciones continuas de los dispositivos realizadas por el sistema y las aplicaciones de espacio de usuario.

    • Добавлен La llamada al sistema listns() se utiliza para enumerar los espacios de nombres existentes en el sistema sin tener que iterar a través de /proc/ /ns/ para todos los procesos.

    • El sistema de E/S asíncrona io_uring ahora permite colocar elementos de diferentes tamaños en la Entrada de la Cola de Envíos (SQE), de forma similar a cómo la versión anterior permitía mezclar los tamaños del contenido de la Cola de Resultados (CQE). Anteriormente, todos los elementos de la cola debían tener el mismo tamaño, lo que resultaba en un consumo excesivo de memoria debido a la necesidad de usar el tamaño máximo para todos los elementos de la cola.

      io_uring también añade compatibilidad con el mecanismo zcrx (Recepción de Copia Cero) para recibir datos sin copiarlos entre el núcleo y el espacio de usuario. Se ha añadido compatibilidad con consultas de diseño de memoria para las colas SQ (Cola de Envío) y CQ (Cola de Finalización), lo que permite obtener la información del tamaño del búfer de anillo necesaria para la asignación de memoria definida por el usuario mediante los indicadores IORING_SETUP_NO_MMAP y IORING_MEM_REGION_TYPE_USER.

    • Para facilitar el seguimiento de pila rápido con herramientas como perf, se ha añadido compatibilidad con el formato SFrame con información de desenrollado de la pila de llamadas. SFrame ya es compatible con GCC y binutils, no afecta al rendimiento y, a diferencia del formato DWARF, contiene solo la información mínima necesaria para el seguimiento de pila.

    • En la utilidad perf agregado Soporte para descripciones unificadas de métricas y eventos en formato JSON, así como desenrollado diferido de la pila de llamadas en el espacio del usuario.

    • para Procesadores AMD Se ha implementado un mecanismo de sustitución de datos que permite que los dispositivos de entrada/salida sustituyan directamente los datos en la memoria caché L3 de la CPU sin colocarlos primero en la RAM.

    • Soporte agregado MPAM (Particionamiento y monitoreo de recursos del sistema de memoria)Extensiones de la arquitectura del conjunto de instrucciones ARMv8-A para etiquetar cada acceso a memoria con un ID de Partición (PARTID) y un ID de Grupo de Monitoreo (PMG). Mediante los PARTID, se puede limitar el consumo de recursos, como el ancho de banda de memoria o el tamaño de caché, para evitar que un solo grupo de tareas consuma todos los recursos. En el contexto de la monitorización, la combinación de PMG y PARTID permite monitorizar el consumo de memoria bajo cargas de trabajo específicas.

    • Si un proceso finaliza de manera anormal después de recibir una señal, otro proceso que tenga el pidfd del proceso finalizado ahora puede determinar el número de señal que provocó la finalización del proceso.

    • Implementación reelaborada de secuencias reiniciables (secuencias reiniciables), Permite a las aplicaciones organizar la ejecución pseudoatómica e ininterrumpida de un grupo de instrucciones (si otro hilo la interrumpe, se reintenta la secuencia). La nueva implementación ofrece un rendimiento mejorado.

    • para Programas del BPF implementado Instrucciones BPF_JMP, BPF_X y BPF_JA para realizar saltos indirectos a una posición específica de la tabla de saltos. Se ha añadido el concepto de punteros dinámicos (dynptr), lo que le permite leer datos de archivos estructurados. Añadido por la capacidad de adjuntar múltiples bytes de metadatos a los paquetes de red.

    • Módulos de Python, utilizados para procesar la documentación del kernel, se han movido a un directorio separado tools/lib/python.

    • Característica añadida almacenamiento masivo de memoria () para asignar de forma segura elementos del grupo de memoria para varios objetos a la vez.

    • Continuado transferir cambios desde una sucursal Óxido para-Linux, relacionado con el uso Lenguaje Rust Como segundo lenguaje para desarrollar controladores y módulos del kernel (la compatibilidad con Rust no está activa por defecto y no implica que Rust se incluya en la lista de dependencias de compilación obligatorias para el kernel). En la nueva versión, el kernel está incluido en incorporado biblioteca "syn" con un analizador de código Rust, lo que simplifica la escritura de macros complejas. Se han ampliado las capacidades de las bibliotecas kernel, pin-init y rbtree. Se ha añadido la biblioteca num con la función Integer para la manipulación de enteros. Se ha añadido compatibilidad con parámetros enteros a la macro module!. Se ha implementado la posibilidad de especificar parámetros al cargar módulos del kernel escritos en Rust. Se han implementado abstracciones para subsistemas. I2C и PWM (Modulación por ancho de pulso).

    • Добавлен La macro at_least (por ejemplo, param[at_least 7]) informa sobre el tamaño mínimo permitido de un array pasado a una función. Si se pasa un array con menos elementos a la función, el compilador emitirá una advertencia.

    • La composición incluido El script klp-build genera módulos del kernel que modifican el kernel en ejecución (livepatch) basándose en un archivo de parche. La utilidad objtool se ha actualizado para permitir la generación de parches en vivo.

    • В Modo de usuario Linux (ejecutar el kernel como un proceso de usuario) agregó soporte limitado para multiprocesamiento, pero los subprocesos dentro del mismo proceso aún no pueden ejecutarse simultáneamente. Comenzó Portabilidad del modo de usuario Linux a la biblioteca nolibc.

    • Añadido por soporte de arquitectura LoongArch32 (LA32R, LA32S) además de LoongArch64.

    • Añadido por la capacidad de establecer límites de QoS en la tasa de activación del procesador en modo de ahorro de energía s2idle (Suspend-To-Idle), que congela la ejecución de procesos en el espacio de usuario pero deja activos algunos controladores en el kernel.

    • Añadido por Soporte para la gestión de tablas de páginas de memoria para controladores OIMMU (Unidad de gestión de memoria de entrada y salida), que traducen direcciones virtuales vistas por un dispositivo de hardware en direcciones físicas, con la capacidad de filtrar operaciones DMA por direcciones virtuales y limitar y aislar las operaciones de E/S.

    • Los eventos de seguimiento de llamadas del sistema ahora admiten la lectura de buffers desde el espacio del usuario y la inclusión de sus contenidos (por ejemplo, nombres de archivos) en la salida del seguimiento.

    • **Páginas de memoria de vigilancia(( (página de guardia), cuyo acceso provoca una excepción y una terminación anormal del proceso (SIGSEGV), ahora son están marcados marca especial en el archivo /proc/PID/smaps.

    • Añadido por capacidad de gestión grandes páginas de memoria (página enorme transparente) en la memoria privada de los dispositivos zonificados.

    • En el dispositivo zram, utilizado para el almacenamiento comprimido de la partición de intercambio en la memoria, implementado Soporte para vaciar múltiples estructuras "bio" (E/S de bloque) en modo por lotes (procesamiento por lotes de escritura diferida).

    • La fuente está incluida. Terminal 10×18, que mejora la legibilidad de la información de la consola en pantallas de portátiles con resolución media (1440×900).

    • Mucho optimizado trabajo subsistemas de auditoría —Se observa una reducción del doble en los costes generales.

  • Virtualización y seguridad
    • Se agregó soporte para la función proporcionada por los procesadores Intel para divisiones Separación lineal del espacio de direcciones (LASS), que permite la separación por hardware de los rangos de direcciones del espacio de usuario y del espacio del kernel para mayor seguridad. El espacio de direcciones se divide por el bit de orden superior de la dirección: la mitad del espacio de direcciones con el bit de orden superior activo es utilizada por el kernel, mientras que la mitad inferior es utilizada por el espacio de usuario. Al principio de la ejecución de la instrucción (antes de la ejecución especulativa), se realiza una comprobación para garantizar que se permitan los accesos desde el espacio de usuario a las direcciones con el bit de orden superior activo, y viceversa. Esta separación evita fugas de memoria del kernel por canal lateral al espacio de usuario, incluso durante la ejecución especulativa, lo que hace que LASS sea adecuado para la protección contra ataques Meltdown y Spectre sin incurrir en una sobrecarga significativa.
    • Se agregó la capacidad de habilitar extensiones Las mejoras de seguridad del bus PCI Express (Cifrado de Enlace PCIe y Autenticación de Dispositivos PCIe) permiten la autenticación y el cifrado del canal de comunicación entre un dispositivo PCIe y una máquina virtual protegida por Intel TDX (Extensiones de Dominio de Confianza) y AMD SEV-SNP (Paginación Anidada Segura). Estas tecnologías evitan la interceptación, el análisis y la inserción de datos en el tráfico DMA al acceder al sistema host u otros dispositivos.
    • En la biblioteca criptográfica incorporada agregado soporte para algoritmos SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512) SHAKE128, SHAKE256 y BLAKE2b.
    • Para módulos LSM (Linux Módulos de seguridad) y, en particular, para SELinux, implementado la capacidad de rastrear la creación de descriptores memfd para aplicar políticas de seguridad a los objetos asociados con ellos.
    • En el módulo LSM IPE (Aplicación de la política de integridad), que define la política de integridad general para todo el sistema, se ha añadido soporte para la bandera EN_EJECUTAR_CHECK en función ejecutar(), que incluye comprobar la integridad del script antes de que lo ejecute el intérprete.
    • Se agregaron los primitivos scoped_user_read_access(), scoped_user_write_access y scoped_user_rw_access() para acceso limitado a datos del espacio de usuario. protegido ataques especulativos.
    • Añadido por soporte del mecanismo VMBus confidencial, utilizado en el hipervisor HyperV para una comunicación a prueba de manipulaciones entre un sistema invitado que se ejecuta en modo confidencial (con cifrado de memoria y aislamiento de registros basado en tecnologías AMD SNP e Intel TDX) y un paravisor responsable de acceder a dispositivos que procesan datos confidenciales.
    • Añadido por La capacidad de transmitir información sobre un proceso bloqueado (para generar un volcado de memoria) mediante el mecanismo pidfd. Un identificador PIDFD se asocia a un proceso específico y no cambia, mientras que un PID puede asignarse a otro proceso después de que el proceso actual asociado con este PID finalice. El uso de pidfd permite bloquear la ejecución de... ataques al reemplazar un proceso suid bloqueado por otro proceso, se logra una condición de carrera en el momento después de que el núcleo comienza a procesar el bloqueo, pero antes de que el controlador del espacio de usuario verifique los parámetros del proceso.
  • Subsistema de red
    • Al subsistema de red ingresó Optimizaciones para mejorar la eficiencia de la transferencia de datos (TX). Eliminación del bloqueo de giro de la función __dev_queue_xmit() y uso de la estructura llist sin bloqueo. permitido Aumente el rendimiento 4 veces bajo carga pesada y duplique la velocidad de envío de paquetes mientras reduce la carga de la CPU a la mitad.
    • Proporcionado por oportunidad paradas Para los sockets de red individuales, se deshabilitarán los límites de memoria del sistema (en este caso, se usarán los límites de memoria generales establecidos para cada contenedor). Para deshabilitar estos límites, utilice el comando sysctl net.core.bypass_prot_mem y el indicador SK_BPF_BYPASS_PROT_MEM en la función bpf_setsockopt.
    • Añadido por soporte de extensión RFC 5837, que agrega información sobre las interfaces de red entrantes a los mensajes ICMP Time Exceeded devueltos cuando expira el tiempo de vida (TTL) de un paquete, para obtener información más detallada al rastrear rutas con la utilidad traceroute.
    • Añadido por Soporte para sondeo continuo en un hilo de kernel separado para extraer descriptores de colas RX/TX para aplicaciones que requieren una latencia mínima.
    • Soporte de protocolo agregado puede XL (Controller Area Network eXtended Length), que aumenta el tamaño del campo de datos a 2048 bytes para garantizar la integración con las redes. TCP/IPSe ha implementado la capacidad de tunelizar tramas Ethernet y se ha añadido soporte. modulación por ancho de pulso, lo que permitió transmitir datos a velocidades de 20 Mbps y superiores.
    • Añadido por estructura de soporte sockaddr_unsized, una variante de la estructura sockaddr que utiliza una matriz con elementos flexibles en lugar de una matriz de tamaño fijo (sa_data[] en lugar de sa_data[14], que se usaba esencialmente para hacer referencia a otras estructuras más grandes).
    • Se agregó la capacidad de usar la funcionalidad getsockname y getpeername a través del subsistema io_uring.
    • Se agregó sysctl net.ipv4.tcp_rcvbuf_low_rtt и net.ipv4.tcp_comp_sack_rtt_porcentaje para optimizar TCP.
    • Añadido por Soporte para enlaces con un rendimiento de 1600 Gbps (1.6T).
  • Equipo
    • Se ha añadido una API al subsistema DRM (Administrador de Renderizado Directo) para aprovechar las capacidades de transformación de color por hardware, eliminando así la necesidad de sombreadores o la ejecución de código basado en CPU. Para la salida de contenido HDR, el controlador de pantalla ahora puede realizar transformaciones de color complejas antes y después de la fusión, en lugar de que el software componga el contenido en el búfer de visualización final. Además de reducir la sobrecarga y el consumo de energía al organizar la salida HDR, esta funcionalidad permite garantizar una representación precisa del color en editores de vídeo o imágenes.
    • Добавлен Controlador ethosu para NPU Arm Ethos U65 y U85, diseñado para la aceleración de hardware de modelos de IA.
    • El controlador i915 para Lunar Lake y GPU más nuevas agrega soporte para nitidez asistida por hardware.
    • Continuado Se está trabajando en el controlador Xe DRM (Administrador de Renderizado Directo) para GPU basadas en la arquitectura Intel Xe, utilizada en las tarjetas gráficas de la serie Intel Arc y en los gráficos integrados, comenzando con los procesadores Tiger Lake. Se ha añadido compatibilidad inicial con la arquitectura Xe3P, utilizada en las GPU Crescent Island y la familia de procesadores Nova Lake con gráficos integrados.
    • El controlador AMDGPU ahora es totalmente compatible con las tarjetas gráficas AMD GCN 1.0 "Southern Island" y 1.1 "Sea Islands", que anteriormente dependían del controlador Radeon. El controlador AMDGPU se ha equiparado con el controlador Radeon y está habilitado por defecto para estas GPU. Las tarjetas GCN 1.x se lanzaron entre 2012 y 2019 y cubren modelos como Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 y otras tarjetas de vídeo de las familias Radeon Rx 200/Rx 300. Además. incrementar Con un aumento promedio del rendimiento del 24 %, la transición a AMDGPU habilitó la compatibilidad con la API gráfica Vulkan 1.3 para estas GPU. AMDGPU también agregó compatibilidad con conectores analógicos y Video Coding Engine 1.0, y habilitó la pila Display Core (DC) de forma predeterminada para las GPU basadas en la microarquitectura Bonaire (Radeon HD 7790).
    • En el controlador Nouveau implementado Soporte para el acelerador de hardware NVJPG presente en el SoC Tegra210.
    • En el conductor de Panthor agregado Compatibilidad con GPU Mali-G1 y soporte inicial para el chip MediaTek MT8196.
    • Añadido por Soporte para el subsistema de audio de los chips Intel Nova Lake S, portátiles HP con HDA CS35L41, así como interfaces de audio CIX IPBLOQ HD y Onkyo SE-300PCIE.
    • Se ha continuado la integración de los componentes del controlador Nova para las GPU NVIDIA equipadas con el firmware GSP, utilizado a partir de la serie NVIDIA GeForce RTX 2000 basada en la microarquitectura Turing. El controlador está escrito en Rust. Se está trabajando en RPC y terminado Implementación de la carga del coprocesador GSP (GPU System Processor).
    • Añadido por soporte para placas ARM, SoCs y dispositivos: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 opciones de placa Enclustra Mercury.
    • Se agregó compatibilidad con smartphones y tablets basados ​​en los SoC Mediatek MT6582 (Alcatel YarisXL), Nvidia Tegra124 (Xiaomi Mi Pad) y Qualcomm MSM8939 (ASUS ZenFone 2). Se agregó compatibilidad con portátiles basados ​​en el SoC Qualcomm SDM850, como el Huawei MateBook E 2019.
    • Se agregó soporte para SoC y placas basadas en la arquitectura RISC-V: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Al mismo tiempo, la Fundación Latinoamericana de Software Libre formado вариант kernel 6.19 completamente gratis - Linux-libre 6.19-gnuSe eliminaron elementos de firmware y controladores que contenían componentes propietarios o secciones de código con alcance restringido por el fabricante. En la versión 6.19, se eliminó el código para cargar firmware binario del subsistema de sonido SDCA. Se actualizó el código de limpieza de blobs en los controladores para los códecs de audio Intel XE, Nova-Core, Qualcomm Iris, Venus y Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 y TI tas2783. Se eliminaron los nombres de blobs en los archivos dts (árbol de dispositivos) de los chips ARM. Se interrumpió la limpieza del controlador DVB STM C8SECTPFE, que se eliminó del kernel.

Fuente: linux.org.ru

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster