Versión del kernel Linux 6.18

Tras dos meses de desarrollo, Linus Torvalds lanzó el núcleo. Linux 6.18. Entre los cambios más notables: dm-pcache para el almacenamiento en caché de disco en memoria no volátil (PMEM), eliminación de Bcachefs, modo de comprobación XFS en línea, controladores Binder (Android IPC) y Tyr (GPU Mali) en Rust, la capacidad de crear controladores USB en Rust, optimización de caché en el asignador de memoria SLUB, direccionamiento de espacios de nombres por descriptores de archivos, aceleración del intercambio, verificación de programas BPF por firma digital, virtualización de Intel CET en KVM, protocolo de red PSP (un híbrido de TLS e IPsec), soporte para la extensión IP AccECN, optimización de la pila UDP.

La nueva versión incluye 15035 correcciones de 2217 desarrolladores, el tamaño del parche es de 45 MB (los cambios afectaron a 13142 archivos, se agregaron 601897 líneas de código, se eliminaron 355006 líneas). La última versión tuvo 14334 correcciones de 2118 desarrolladores, el tamaño del parche fue de 46 MB. Aproximadamente el 40% de todos los cambios introducidos en 6.18 están relacionados con los controladores de dispositivos, aproximadamente el 16% de los cambios están relacionados con la actualización del código específico de las arquitecturas de hardware, el 12% están relacionados con la pila de red, el 5% están relacionados con los sistemas de archivos y el 3% están relacionados con los subsistemas internos del kernel.

Principales novedades del kernel 6.18 (1, 2, 3):

  • Subsistema de disco, E/S y sistemas de archivos
    • Se ha añadido el controlador dm-pcache a Device Mapper para utilizar memoria persistente (memoria CXL direccionada mediante un dispositivo DAX) como caché adicional de alto rendimiento, frente a discos duros o unidades flash tradicionales más lentos. Dm-pcache garantiza la conservación del contenido de la caché en caso de fallo (a prueba de fallos) mediante el uso de memoria no volátil, la duplicación de metadatos y la verificación de la integridad de los datos y metadatos mediante sumas de comprobación CRC32. Actualmente, solo se admite el almacenamiento en caché con escritura diferida.
    • El código del sistema de archivos Bcachefs se ha eliminado del kernel y ahora se distribuirá como un módulo externo creado con la cadena de herramientas DKMS (Dynamic Kernel Module Support). El código Bcachefs podría reintroducirse en el kernel después de que Kent Overstreet demuestre su capacidad para interactuar correctamente con otros desarrolladores del kernel y adherirse a las directrices de desarrollo establecidas.
    • Se ha agregado el indicador RWF_NOSIGNAL a la llamada del sistema pwritev2() para deshabilitar el envío de una señal SIGPIPE al escribir en tuberías o sockets rotos sin nombre.
    • Se ha añadido la opción de montaje "pidns" a Procfs para especificar espacios de nombres de ID de proceso (espacios de nombres PID). Por ejemplo: "mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc".
    • XFS se ha declarado estable y está habilitado por defecto para usar la utilidad fsck para comprobar y corregir problemas detectados en línea, sin desmontar el sistema de archivos. Se han añadido las llamadas al sistema file_getattr y file_setattr para cambiar los atributos de archivos especiales (cualquier inodo). Las opciones XFS_SUPPORT_V4 (XFS versión 4) y XFS_SUPPORT_ASCII_CI (modo ASCII sin distinción entre mayúsculas y minúsculas) están ahora deshabilitadas por defecto en KConfig y han quedado obsoletas. Se han eliminado las opciones de montaje obsoletas attr2, noattr2, ikeep y noikeep.
    • MD RAID implementa un nuevo tipo de mapas de bits: llbitmap (mapa de bits sin bloqueo), que funciona sin bloqueos y proporciona un mayor rendimiento.
    • La información relacionada con el cifrado y la verificación (los punteros i_crypt_info e i_verity_info) se ha eliminado de la estructura general de inodos. Este cambio reduce el consumo de memoria en sistemas de archivos que no admiten cifrado ni verificación.
    • El subsistema FUSE ahora admite la llamada al sistema copy_file_range() y la copia directa de rangos con un tipo de tamaño de 64 bits (anteriormente, solo se admitía el de 32 bits). Se ha añadido compatibilidad con la inicialización síncrona durante el montaje (FUSE_DEV_IOC_SYNC_INIT).
    • El sistema de archivos ext4 ahora admite el uso de identificadores de usuario (uid) e identificadores de grupo (gid) de 32 bits al acceder a bloques reservados. Se han añadido operaciones Ioctl para configurar y leer parámetros de superbloque para sistemas de archivos montados (tune2fs ahora puede cambiar los parámetros de superbloque sin necesidad de acceso de escritura al dispositivo de bloque). Se han eliminado por completo las configuraciones obsoletas específicas de ext3.
    • Se ha añadido la opción de montaje "lookup_mode" a f2fs para seleccionar el modo de búsqueda: perf (búsqueda hash), compat (búsqueda lineal) o auto (selección automática). Cambiar el modo es útil para configuraciones con directorios que no distinguen entre mayúsculas y minúsculas. El modo de búsqueda actual se encuentra en el archivo "/sys/fs/f2fs/". /effective_lookup_mode". Se agregó la capacidad de reservar inodos accesibles solo para usuarios privilegiados.
    • Overlayfs ahora admite operaciones sin distinción entre mayúsculas y minúsculas, lo cual se puede habilitar en el nivel de la capa del sistema de archivos (aún no se admite la configuración para directorios individuales).
    • BTRFS mejora la paralelización de operaciones con altas cargas de lectura y bajas cargas de escritura, reduce los tiempos de confirmación de transacciones y reduce significativamente el tiempo de sincronización (de minutos a decenas de segundos). Ahora es posible usar bloques (bs) más grandes que una página de memoria (ps).
    • Se ha agregado un parámetro a ksmbd (un servidor SMB basado en kernel) para limitar el número máximo de conexiones desde un servidor. Dirección IP. smbdirect, smbclient y smbserver se han cambiado para utilizar estructuras de kernel estándar.
    • SQUASHFS ahora admite las opciones SEEK_DATA y SEEK_HOLE en la llamada al sistema lseek() para buscar datos y huecos en archivos dispersos. Algunas pruebas han demostrado una mejora del rendimiento de hasta 150 veces en la copia de archivos dispersos.
    • EXFAT ahora admite las ioctl FS_IOC_GETFSLABEL y FS_IOC_SETFSLABEL para leer y escribir etiquetas de partición. Permite cambiar las opciones de montaje durante el remontaje. Se ha mejorado el rendimiento de carga de mapas de bits.
    • NTFS3 agrega soporte para ioctls FS_IOC_GETFSLABEL y FS_IOC_SETFSLABEL para leer y configurar etiquetas de partición.
  • Servicios de memoria y sistema.
    • Se adopta la implementación del mecanismo de comunicación entre procesos Binder, escrito en el lenguaje Rust. Binder se utiliza en Android para organizar la interacción entre procesos y llamadas a métodos remotos (un proceso Android puede llamar a un método o función en otro proceso Android(utilizando Binder para identificar, invocar y pasar argumentos entre procesos). El código de Binder fue reescrito en Rust como parte de la iniciativa de seguridad de Google. Android.
    • SLUB, el asignador de memoria del kernel, implementa una capa de caché opcional de "haces". Utiliza múltiples cachés, cada una asociada a un núcleo de CPU independiente, lo que permite que las operaciones de asignación y desasignación de memoria se localicen en un solo núcleo. Esta caché mejora el rendimiento de la asignación y desasignación de memoria en el kernel al eliminar primitivas de sincronización innecesarias que se requieren al involucrar a varios núcleos de CPU. En nuestras pruebas, la mejora del rendimiento osciló entre el 6.3 % y el 31 %, dependiendo de la carga de trabajo.
    • Se agregó la capacidad de crear descriptores de archivos asociados a un espacio de nombres específico. A diferencia del acceso a espacios de nombres mediante identificadores (/proc/) /ns/), el descriptor de archivo se asigna a una instancia de espacio de nombres específica e impide que el identificador se reasigne y apunte a un objeto diferente. Al igual que con pidfds, la apertura de descriptores de archivo que hacen referencia a espacios de nombres se realiza mediante las funciones open_by_handle_at() y name_to_handle_at().
    • Se ha implementado un mecanismo de "Tabla de Intercambio" para mejorar el rendimiento de la memoria de intercambio. Esta mejora se logra reduciendo la contención de la caché de intercambio, optimizando las búsquedas en caché y reduciendo la fragmentación. Se utiliza un backend basado en la Tabla de Intercambio para el almacenamiento en caché de intercambio en lugar del backend XArray, lo que ha resultado en una mejora promedio del rendimiento de entre el 5 % y el 20 %. En la prueba usemem, el rendimiento aumentó entre un 17 % y un 28 %; en la prueba de reconstrucción del kernel multihilo, el tiempo de compilación disminuyó entre un 1.12 % y un 3.19 %, y la prueba redis-benchmark con BGSAVE mostró un aumento del 6 % al 7 % en el número de solicitudes procesadas.
    • Se ha migrado el subsistema Zswap para utilizar directamente el sistema de asignación de memoria zsmalloc en lugar de la capa zpool, que ya no se utiliza en ningún lugar y ahora se ha eliminado del kernel.
    • Para controlar el comportamiento del gestor de arranque de microcódigo en sistemas x86, se ha implementado la opción de línea de comandos "microcode=flaglist". En su forma actual, esta nueva opción reemplaza a "microcode.force_minrev" y también permite especificar la versión mínima de microcódigo permitida para el arranque.
    • Se ha comenzado a reorganizar la estructura de "páginas", excesivamente recargada, utilizada para gestionar las páginas de RAM. Se ha añadido el tipo 'memdesc_flags_t' para los campos con indicadores de propósito general que podrán utilizarse tras la futura separación de las estructuras independientes para losas y folios de la estructura de "páginas".
    • Para la arquitectura nios2 utilizada en los procesadores Altera Nios II (procesador de software basado en FPGA), se ha implementado soporte para la llamada del sistema clone3().
    • Se ha añadido el atributo "transicional" a la configuración del kernel (KConfig). Permite marcar configuraciones que no se muestran en las interfaces de usuario, como "make menuconfig", y que no se incluyen en los archivos de configuración generados. El objetivo principal de este atributo es simplificar el cambio de nombre de las opciones, manteniendo la compatibilidad con versiones anteriores.
    • La versión mínima del compilador Clang que puede compilar el kernel se ha aumentado a LLVM 15. Debian 12 y Ubuntu LLVM 14 se lanzó el 22.04 de abril.
    • Continuación de la migración de cambios desde la rama Rust-for-LinuxRelacionado con el uso de Rust como segundo lenguaje para el desarrollo de controladores y módulos del kernel (el soporte para Rust no está habilitado por defecto y no incluye Rust como dependencia obligatoria de compilación del kernel). La nueva versión implementa operaciones de memoria atómicas, una estructura de árbol Maple, la capacidad de crear archivos DebugFS y funciones de manipulación de mapas de bits para código Rust. Se ha ampliado el acceso a la API de desarrollo de controladores. Se ha añadido un conjunto completo de abstracciones para el desarrollo de controladores de dispositivos USB (ejemplo de controlador USB). La utilidad perf ahora admite símbolos de depuración generados por el compilador rustc.
  • Virtualización y seguridad
    • Se ha añadido compatibilidad con la verificación criptográfica de programas BPF descargados mediante una firma digital. Esta función se ampliará para incluir herramientas que definan reglas para la descarga de programas BPF firmados y permitan a usuarios sin privilegios utilizar programas BPF verificados.
    • El hipervisor KVM implementa compatibilidad con la extensión de virtualización Intel CET (Tecnología de Implementación de Flujo de Control), que protege contra exploits mediante técnicas de programación orientada al retorno (ROP). Esta protección funciona almacenando la dirección de retorno de una función no solo en la pila normal, sino también en una pila de sombra independiente, que no se puede modificar directamente.
    • Se agregó la capacidad de usar más de 255 CPU en invitados que ejecutan el hipervisor Bhyve en hosts FreeBSD 15.
    • Se agregó la capa dibs (Direct Internal Buffer Sharing) para compartir de forma controlada los búferes dentro de un entorno aislado, como un hipervisor o una instancia del kernel. Linux.
    • El subsistema de auditoría ahora admite el trabajo con varios módulos LSM habilitados simultáneamente (Linux Módulo de seguridad).
    • Se agregó el controlador virtio spi-virtio para acceder al dispositivo SPI (Interfaz periférica serial) desde máquinas virtuales.
    • El hipervisor KVM ahora admite el modo de ocultación de texto cifrado SEV-SNP, que bloquea la lectura del texto cifrado de la memoria del sistema invitado protegido en una CPU no autorizada.
    • Se agregó el controlador qtee para entornos TEE (Trusted Execution Environment) de chips Qualcomm.
  • Subsistema de red
    • Se ha añadido compatibilidad con conexiones TCP cifradas mediante el Protocolo de Seguridad PSP (PSP), desarrollado por Google para cifrar el tráfico entre centros de datos. PSP proporciona cifrado, control de integridad criptográfica y autenticación de origen, implementando una combinación única de capacidades TLS e IPsec. PSP aplica el cifrado a nivel de conexiones de red individuales, en lugar de a todo el canal de comunicación. PSP utiliza claves de cifrado independientes para las diferentes conexiones TCP tunelizadas, a fin de aislar estrictamente el tráfico de las distintas aplicaciones y controladores. Para reducir la carga de la CPU, las operaciones de cifrado y descifrado se descargan en las tarjetas de red (descarga). Se utiliza UDP como protocolo de transporte de datos, a través del cual se reenvía el contenido del paquete TCP original.

      
Versión del kernel Linux 6.18
    • Se ha añadido compatibilidad inicial con la extensión Notificación Explícita de Congestión Precisa (AcECN). Esta extensión es una versión mejorada de la extensión ECN que permite a los hosts marcar paquetes IP en caso de congestión en lugar de descartarlos, lo que permite detectar la aparición de congestión en los canales de comunicación sin pérdida de paquetes. La extensión ECN original tenía la limitación de que solo permitía generar una señal de congestión durante un único viaje de ida y vuelta TCP (RTT, tiempo de ida y vuelta, enviar una solicitud y recibir una respuesta). AccECN elimina esta limitación y permite al receptor transmitir más de una señal de congestión al emisor en el encabezado del paquete TCP. Los algoritmos de control de congestión pueden utilizar esta información para responder con mayor precisión a la congestión y evitar una reducción abrupta de la velocidad de paquetes cuando se produce una congestión leve.
    • La pila UDP se ha optimizado para procesar paquetes entrantes bajo ataques DDoS, que resultan en la llegada de grandes cantidades de paquetes a uno o más sockets UDP. Optimizaciones como la reducción de la contención, la optimización del diseño de las estructuras de datos en memoria y el uso de bloqueos compatibles con NUMA (Acceso a Memoria No Uniforme) han incrementado el rendimiento de recepción de paquetes UDP en un 47 % o más en condiciones extremas.
    • Se ha implementado la capacidad de deshabilitar el almacenamiento en caché de E/S en el servidor NFS, lo que permite su uso en sistemas con memoria limitada (por ejemplo, entornos de nube limitados). Deshabilitar la caché también puede ser útil en servidores NFS con mucha carga para evitar que los datos asociados al almacenamiento local se eliminen de la caché al liberar memoria para la caché NFS.
    • El tamaño máximo de los búferes de paquetes entrantes y salientes para los sockets de red (net.core.rmem_max y net.core.wmem_max) se ha incrementado de 2 MB a 4 MB. El tamaño predeterminado se mantiene sin cambios (net.core.rmem_default y net.core.wmem_default = 2 MB).
    • Se agregó controlador para el acelerador de red Qualcomm PPE (Packet Processing Engine) utilizado en el SoC Qualcomm IPQ9574.
  • Equipo
    • El controlador Tyr, escrito en Rust, se ha integrado en el kernel. Es compatible con GPU ARM Mali que utilizan la tecnología Command Stream Frontend (CSF), como las Mali G310, G510 y G710. El controlador aún no está listo para su uso habitual por parte de usuarios habituales y se considera un prototipo experimental para probar abstracciones para el desarrollo de controladores en Rust.
    • Se ha agregado soporte para paneles táctiles con retroalimentación háptica y sensores de presión a los controladores para dispositivos de entrada HID (dispositivo de interfaz humana).
    • Se ha continuado el trabajo en el controlador Xe DRM (Direct Rendering Manager) para GPU basadas en la arquitectura Intel Xe, utilizado en tarjetas gráficas y gráficos integrados de la serie Intel Arc, comenzando con los procesadores Tiger Lake. La nueva versión incorpora la interfaz madvise, habilita la compatibilidad con SR-IOV PF (Función Física de Virtualización de E/S de Raíz Única), añade compatibilidad con el modo Intel PSMI para la validación de hardware, garantiza el procesamiento de la información de errores transmitida por el firmware, implementa el perfil de energía SLPC y añade compatibilidad para la carga de firmware auxiliar (como el controlador del ventilador y el regulador de voltaje) durante la validación del controlador.
    • El controlador AMDGPU ahora admite dispositivos con APU Cyan Skillfish, mejora la compatibilidad con AMD GCN 1.0, agrega compatibilidad con el kit de herramientas criu, agrega métricas de temperatura a sysfs y permite solicitudes de reasignación de MMIO desde el espacio del usuario.
    • El controlador i915 incluye soporte para la familia de chips Wildcat Lake y mejora el rendimiento con las GPU Jasper Lake, Elkhart Lake, Gen7 y Gen6.
    • El controlador Nouveau utiliza el firmware NVIDIA GSP de forma predeterminada y tiene un manejo de errores mejorado.
    • Se ha continuado la integración de los componentes del controlador Nova para las GPU NVIDIA equipadas con firmware GSP, utilizadas a partir de la serie NVIDIA GeForce RTX 2000 basada en la microarquitectura Turing. El controlador está escrito en Rust. La nueva versión amplía la compatibilidad con el firmware GSP, mejora la implementación de la macro "register!" y añade compatibilidad con clases de dispositivos PCI e ID de proveedor.
    • Se agregó un controlador de cohete para los aceleradores NPU utilizados en Rockchip RK3588 SoC.
    • Se agregó el parámetro del kernel "boot_display" para seleccionar el dispositivo de salida para mostrar el proceso de arranque en sistemas con múltiples GPU.
    • El controlador vesadrm implementa soporte para paletas de 8 bits.
    • El controlador msm se ha actualizado para admitir la GPU Adreno 663 e implementa compatibilidad con la tecnología de reducción de consumo de energía IFPC (Inter Frame Power Collapse).
    • El controlador panthor ha agregado soporte para las GPU Mali-G710, Mali-G510, Mali-G310, Mali-Gx15, Mali-Gx20 y Mali-Gx25.
    • Se agregó compatibilidad con los siguientes sistemas de sonido ASoC: Qualcomm Glymur y PM4125, Realtek RT1321, Shanghai FourSemi FS2104/5S, Texas Instruments PCM1754 y TAS2783A, qcs615, CS35L56 B2, tas2118, tas2x20 y tas5825. Se agregó compatibilidad con las tarjetas de sonido USB Tascam US-144mkII y Presonus S1824c.
    • Se agregó soporte para CPU ARM Cortex-A320/A520AE/A720AE y C1-Nano/Pro/Premium/Ultra.
    • Soporte agregado para placas ARM, SoCs y dispositivos: Apple M2 Pro, M2 Max y M2 Ultr, Sony Xperia SP, Samsung Galaxy S22, Samsung Galaxy S20 FE, ASUS Eee Pad Slider SL101, Lenovo ThinkBook 16, HP Omnibook X14 X1P42100, Dell Inspiron 7441 / Latitude 7455, Sige1, NanoPi Zero2, Axis Artpec8, NXP i.MX91, ROCK 2A/2F, Qualcomm Lemans Auto, Renesas RZ/T2H, RZ/N2H, RZ/T2H y RZ/N2H, Aspeed AST27xx, Meta Clemente BMC, Netcube Nagami som, Tqma91xx, Ultratronik i.MX8MP Ultra-MACH, i.MX8ULP EVK9, Buffalo WXR-1750DHP,

Al mismo tiempo, la Fundación Latinoamericana de Software Libre creó una versión del kernel 6.18 completamente libre. Linux-libre 6.18-gnu, se han eliminado los elementos de firmware y controladores que contienen componentes no libres o secciones de código con alcance restringido. La versión 6.18 incluye código de limpieza de blobs actualizado en los controladores Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP y Marvell WiFi-Ex. Se han limpiado los nombres de blobs en los archivos devicetree (.dts) para los chips ARM64 de Qualcomm, Mediatek y TI. Se ha deshabilitado la carga de blobs en los nuevos controladores FourSemi fs2104/5s, TI TAS2783 y Qualcomm GENI.

Fuente: opennet.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