Lanzamiento del núcleo Linux 6.3

Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 6.3. Entre los cambios más destacados se encuentran: la limpieza de plataformas ARM obsoletas y controladores gráficos, la continuación de la integración del soporte para el lenguaje Rust, la utilidad hwnoise, el soporte para estructuras de árbol rojo-negro en BPF, el modo BIG TCP para IPv4, una prueba de rendimiento Dhrystone integrada, la capacidad de prohibir la ejecución en memfd, el soporte para crear controladores HID utilizando BPF, y se han realizado cambios en Btrfs para reducir la fragmentación de grupos de bloques.

En la nueva versión se han aceptado 15637 correcciones de 2055 desarrolladores; el tamaño del parche es de 76 MB (los cambios han afectado a 14296 archivos, se han añadido 1023183 líneas de código y se han eliminado 883103 líneas). En comparación, en la versión anterior se propusieron 16843 correcciones de 2178 desarrolladores; el tamaño del parche fue de 62 MB. Aproximadamente el 39% de todos los cambios presentados en el núcleo 6.3 están relacionados con controladores de dispositivos, alrededor del 15% de los cambios están relacionados con la actualización de código específico de arquitecturas de hardware, el 10% está relacionado con la pila de red, el 5% con sistemas de archivos y el 3% con subsistemas internos del núcleo.

Las principales novedades en el núcleo 6.3:

  • Memoria y servicios del sistema
    • Se ha realizado una limpieza significativa del código relacionado con las antiguas y no utilizadas plataformas ARM, lo que ha permitido reducir el tamaño de los textos fuente del núcleo en 150 mil líneas. Se han eliminado más de 40 plataformas ARM antiguas.
    • Se ha implementado la posibilidad de crear controladores para dispositivos de entrada con interfaz HID (Dispositivo de Interfaz Humana), implementados en forma de programas BPF.
    • Se ha continuado la transferencia de la rama Rust-for-Linux de funcionalidades adicionales relacionadas con el uso del lenguaje Rust como segundo lenguaje para el desarrollo de controladores y módulos del núcleo. El soporte para Rust no está activado por defecto y no implica que Rust se convierta en una de las dependencias obligatorias para compilar el núcleo. Las funcionalidades propuestas en lanzamientos anteriores se han ampliado con el soporte de tipos Arc (implementación de punteros con recuento de referencias), ScopeGuard (realiza limpieza al salir del ámbito) y ForeignOwnable (facilita el movimiento de punteros entre código en C y Rust). Se ha eliminado el módulo 'borrow' (tipo 'Cow' y rasgo 'ToOwned') del paquete 'alloc'. Se señala que el estado del soporte para Rust en el núcleo ya está cerca de poder aceptar los primeros módulos escritos en Rust.
    • En User-mode Linux (ejecución del núcleo como un proceso de usuario) en sistemas x86-64 se ha implementado soporte para código escrito en el lenguaje Rust. Se ha añadido soporte para la construcción de User-mode Linux utilizando clang, incluyendo optimizaciones durante el enlace (LTO).
    • Se ha añadido la utilidad hwnoise para rastrear retardos causados por peculiaridades del hardware. Se determinan desviaciones en el tiempo de ejecución de las operaciones (jitter) al desactivar el procesamiento de interrupciones, que superan una microsegundo en 10 minutos de cálculos.
    • Se ha añadido un módulo del núcleo con la implementación de la prueba de rendimiento Dhrystone, que se puede utilizar para evaluar el rendimiento de la CPU en configuraciones sin componentes del espacio de usuario (por ejemplo, en la etapa de portabilidad para nuevos SoC, donde solo se ha implementado el arranque del núcleo).
    • Se ha añadido el parámetro de línea de comandos del núcleo "cgroup.memory=nobpf", que desactiva el seguimiento del consumo de memoria para programas BPF, lo que puede ser útil para sistemas con contenedores aislados.
    • Para los programas BPF se ha propuesto una implementación de la estructura de datos árbol rojo-negro, que utiliza kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) en lugar de añadir un nuevo tipo de mapeo.
    • En el mecanismo de secuencias reiniciables (rseq, restartable sequences) se ha añadido la posibilidad de pasar a los procesos identificadores de ejecución paralela (memory-map concurrency ID), que se identifican con el número de la CPU. Rseq proporciona medios para realizar operaciones atómicas rápidas, que en caso de interrupción por otro hilo se limpian y se intenta ejecutar nuevamente.
    • En los procesadores ARM se ha asegurado el soporte para las instrucciones SME 2 (Scalable Matrix Extension).
    • Para las arquitecturas s390x y RISC-V RV64 se ha implementado soporte para el mecanismo "BPF trampoline", que minimiza la sobrecarga al transmitir llamadas entre el núcleo y los programas BPF.
    • En sistemas con procesadores basados en la arquitectura RISC-V se ha implementado el uso de instrucciones "ZBB" para acelerar las operaciones con cadenas.
    • Para sistemas basados en la arquitectura del conjunto de instrucciones LoongArch (utilizada en procesadores Loongson 3 5000 y que implementa un nuevo ISA RISC similar a MIPS y RISC-V) se ha implementado soporte para la aleatorización del espacio de direcciones del núcleo (KASLR), el reubicado del núcleo en memoria (relocation), puntos de interrupción hardware y el mecanismo kprobe.
    • En el mecanismo DAMOS (Esquemas de Operación basados en el Monitoreo de Acceso a Datos), que permite liberar memoria considerando la frecuencia de acceso a la memoria, se ha implementado soporte para filtros para excluir ciertas áreas de memoria del procesamiento en DAMOS.
    • La biblioteca estándar C mínima Nolibc ha implementado soporte para la arquitectura s390 y el conjunto de instrucciones Arm Thumb1 (además del soporte para ARM, AArch64, i386, x86_64, RISC-V y MIPS).
    • Se ha optimizado objtool para acelerar la compilación del núcleo y reducir el uso máximo de memoria durante la compilación (en la compilación del núcleo en modo «allyesconfig» ahora no surgen problemas de finalización forzada de procesos en sistemas con 32 GB de RAM).
    • Se ha detenido el soporte para la compilación del núcleo con el compilador Intel ICC, que ha estado inoperante durante mucho tiempo y nadie ha manifestado el deseo de corregirlo.
  • Subsistema de disco, entrada/salida y sistemas de archivos
    • En tmpfs se ha implementado soporte para el mapeo de identificadores de usuario de sistemas de archivos montados, utilizado para asociar archivos de un determinado usuario en una partición externa montada con otro usuario en el sistema actual.
    • En Btrfs, para reducir la fragmentación de grupos de bloques, se ha garantizado la separación de extensiones por tamaño al asignar bloques, es decir, cualquier grupo de bloques ahora está limitado a extensiones pequeñas (hasta 128 KB), medianas (hasta 8 MB) y grandes. Se ha realizado una refactorización de la implementación de raid56. Se ha reescrito el código para la verificación de sumas de verificación. Se han realizado optimizaciones de rendimiento que han permitido acelerar la operación send hasta 10 veces mediante la caché de utime para directorios y la ejecución de comandos solo cuando es necesario. La ejecución de operaciones fiemap se ha acelerado tres veces al omitir las verificaciones de enlaces reversos para datos compartidos (instantáneas). Las operaciones con metadatos se han acelerado en un 10% gracias a la optimización de la búsqueda de claves en estructuras b-tree.
    • Se ha mejorado el rendimiento del sistema de archivos ext4 gracias a la capacidad de realizar operaciones de entrada/salida directa simultáneamente por varios procesos en bloques previamente asignados, usando bloqueos compartidos de inode en lugar de bloqueos exclusivos.
    • En f2fs se ha trabajado para mejorar la legibilidad del código. Se han resuelto importantes problemas relacionados con la escritura atómica y la nueva caché de extensiones.
    • En el sistema de archivos EROFS (Enhanced Read-Only File System), diseñado para su uso en particiones accesibles en modo solo lectura, se ha implementado la posibilidad de vincular las operaciones de descompresión del contenido comprimido de los archivos al CPU para reducir la latencia en el acceso a los datos.
    • El planificador de entrada/salida BFQ ha añadido soporte para unidades avanzadas de discos giratorios, como aquellas que utilizan múltiples unidades de cabezales de control gestionadas de forma independiente (Multi Actuator).
    • Se ha añadido soporte para el cifrado de datos utilizando el algoritmo AES-SHA2 en la implementación del cliente y servidores NFS.
    • Se ha añadido soporte para un mecanismo de extensión de solicitudes en el subsistema FUSE (Filesystems In User Space), que permite incluir información adicional en la solicitud. Basado en esta capacidad, se ha implementado la adición de identificadores de grupos a la solicitud del sistema de archivos, necesarios para la gestión de derechos de acceso al crear objetos en el sistema de archivos (crear, mkdir, symlink, mknod).
  • Virtualización y seguridad
    • Se ha agregado soporte para llamadas mejoradas de hypervisor Hyper-V en el hypervisor KVM para sistemas x86 y se ha habilitado su reenvío a un controlador que opera en el entorno de host en el espacio del usuario. Este cambio ha permitido implementar el soporte para la ejecución anidada del hypervisor Hyper-V.
    • En KVM, se ha simplificado la limitación del acceso del sistema operativo invitado a los eventos PMU (Performance Monitor Unit) relacionados con la medición del rendimiento.
    • En el mecanismo memfd, que permite identificar una región de memoria a través de un descriptor de archivo intercambiado entre procesos, se ha añadido la posibilidad de crear áreas donde se prohíbe la ejecución de código (memfd no ejecutable) y donde no se pueden establecer permisos de ejecución en el futuro.
    • Se ha añadido una nueva operación prctl PR_SET_MDWE, que bloquea los intentos de habilitar permisos de acceso a la memoria que permitan tanto la escritura como la ejecución.
    • Se ha añadido y habilitado por defecto la protección contra ataques de tipo Spectre, implementada sobre la base del modo automático IBRS (Enhanced Indirect Branch Restricted Speculation) propuesto en los procesadores AMD Zen 4, que permite habilitar y deshabilitar de manera adaptativa la ejecución especulativa de instrucciones durante la gestión de interrupciones, llamadas al sistema y cambios de contexto. La protección propuesta resulta en menores costos operativos en comparación con la protección Retpoline.
    • Se ha corregido una vulnerabilidad que permitía eludir la protección contra ataques Spectre v2 al utilizar la tecnología de multihilo simultáneo (SMT o Hyper-Threading), causada por la desactivación del mecanismo STIBP (Single Thread Indirect Branch Predictors) al seleccionar el modo de protección IBRS.
    • Para sistemas basados en la arquitectura ARM64, se ha añadido un nuevo objetivo de compilación 'virtconfig', que activa solo el conjunto mínimo de componentes del núcleo necesarios para arrancar en sistemas de virtualización.
    • Se ha añadido soporte para la filtración de llamadas al sistema mediante el mecanismo seccomp en la arquitectura m68k.
    • Se ha añadido soporte para dispositivos CRB TPM2 (Command Response Buffer) integrados en procesadores AMD Ryzen, basados en la tecnología Microsoft Pluton.
  • Subsistema de red
    • Se ha añadido una interfaz netlink para la configuración de la subcapa de prevención de colisiones PLCA (Physical Layer Collision Avoidance), definida en la especificación IEEE 802.3cg-2019 y utilizada en redes Ethernet 802.3cg (10Base-T1S), optimizadas para la conexión de dispositivos del Internet de las cosas y sistemas industriales. El uso de PLCA permite mejorar el rendimiento en redes Ethernet con medio compartido.
    • Se ha descontinuado el soporte para la API 'wireless extensions' para la gestión de interfaces inalámbricas WiFi 7 (802.11be), ya que esta API no abarca todas las configuraciones necesarias. Al intentar utilizar la API 'wireless extensions', que sigue siendo compatible como una capa emulada, ahora se mostrará una advertencia para la mayoría de dispositivos actuales.
    • Se ha preparado una documentación detallada sobre la API netlink (para desarrolladores del núcleo y para desarrolladores de aplicaciones en espacio de usuario). Se ha implementado la utilidad ynl-gen-c para generar código en C basado en especificaciones YAML del protocolo Netlink.
    • Se ha añadido soporte para la opción IP_LOCAL_PORT_RANGE en los sockets de red para simplificar la configuración de conexiones salientes a través de traductores de direcciones sin utilizar SNAT. Al utilizar uno IP en varios hosts, IP_LOCAL_PORT_RANGE permite utilizar un rango único de puertos de red salientes en cada host, mientras que en el gateway se redirigen los paquetes basándose en los números de puerto.
    • Para MPTCP (TCP MultiPath), se ha implementado la capacidad de manejar flujos mixtos que utilizan protocolos IPv4 e IPv6. MPTCP es una extensión del protocolo TCP que permite el funcionamiento de una conexión TCP mediante la entrega de paquetes de forma simultánea a través de múltiples rutas a través de diferentes interfaces de red, vinculadas a distintas direcciones IP.
    • Para IPv4 se ha habilitado la posibilidad de utilizar la extensión BIG TCP, que permite aumentar el tamaño máximo del paquete TCP hasta 4GB, optimizando el funcionamiento de redes internas de alta velocidad en centros de datos. Este aumento en el tamaño del paquete, con un tamaño de campo de 16 bits en el encabezado, se logra implementando paquetes «jumbo», cuyo tamaño en el encabezado IP se establece en 0, mientras que el tamaño real se transmite en un campo de 32 bits separado en un encabezado adicional.
    • Se ha añadido un nuevo parámetro sysctl, default_rps_mask, que permite definir la configuración predeterminada de RPS (Receive Packet Steering), responsable de distribuir el procesamiento del tráfico entrante entre núcleos de CPU a nivel de controladores de interrupciones.
    • Se ha descontinuado el soporte para las disciplinas de procesamiento de colas para la limitación de tráfico CBQ (class-based queuing), ATM (circuitos virtuales ATM), dsmark (marcador de servicio diferenciado), tcindex (índice de control de tráfico) y RSVP (protocolo de reserva de recursos). Estas disciplinas han estado abandonadas durante mucho tiempo y no hubo interesados en continuar su mantenimiento.
  • Hardware
    • Se han eliminado todos los controladores gráficos basados en DRI1: i810 (antiguas tarjetas gráficas integradas Intel 8xx), mga (GPU Matrox), r128 (GPU ATI Rage 128, incluyendo las tarjetas Rage Fury, XPERT 99 y XPERT 128), savage (GPU S3 Savage), sis (GPU SiS), tdfx (3dfx Voodoo) y via (VIA IGP), que fueron declarados obsoletos en 2016 y no se han mantenido en Mesa desde 2012.
    • Se han eliminado los controladores de marco de búfer obsoletos (fbdev) omap1, s3c2410, tmiofb y w100fb.
    • Se ha añadido un controlador DRM para los bloques VPU (Unidad de Procesamiento Versátil) integrados en el CPU Intel Meteor Lake (14ª generación), destinado a acelerar operaciones relacionadas con la visión por computadora y el aprendizaje automático. El controlador se ha implementado utilizando la subsistema «accel», que está orientada a proporcionar soporte para aceleradores de cálculo que pueden presentarse tanto en forma de ASIC separados como en forma de bloques de IP dentro de SoC y GPU.
    • En el controlador i915 (Intel), se ha ampliado el soporte para las tarjetas gráficas discretas Intel Arc (DG2/Alchemist), se ha implementado soporte preliminar para el GPU Meteor Lake, e incluido soporte para el GPU Intel Xe HP 4tile.
    • El controlador amdgpu ha añadido soporte para la tecnología AdaptiveSync y la posibilidad de utilizar el modo de protección de datos en pantalla (Secure Display) con múltiples pantallas. Se ha actualizado el soporte para DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x y DP 2.1.
    • En el controlador msm (GPU Qualcomm Adreno) se ha añadido soporte para las plataformas SM8350, SM8450 SM8550, SDM845 y SC8280XP.
    • En el controlador Nouveau se ha dejado de dar soporte a las antiguas llamadas ioctl.
    • En el controlador etnaviv se ha añadido soporte experimental para el NPU VerSilicon (VeriSilicon Neural Network Processor).
    • Se ha implementado el controlador pata_parport para discos IDE conectados a través del puerto paralelo. El controlador añadido ha permitido eliminar el antiguo controlador PARIDE del núcleo y modernizar la subsistema ATA. Una limitación del nuevo controlador es la imposibilidad de conectar simultáneamente una impresora y un disco a través del puerto paralelo.
    • Se ha añadido el controlador ath12k para tarjetas inalámbricas en chips Qualcomm con soporte para Wi-Fi 7. También se ha añadido soporte para tarjetas inalámbricas en chips RealTek RTL8188EU.
    • Se ha añadido soporte para 46 placas con procesadores basados en la arquitectura ARM64, entre las que se encuentran Samsung Galaxy Tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, así como dispositivos basados en SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 y SDM632, cajas de TV Rockchips RK3128, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 y RK3328, TI K3 (AM642/AM654/AM68/AM69).

Simultáneamente, la Fundación Latinoamericana de Software Libre ha creado una versión completamente libre del núcleo 6.3 — Linux-libre 6.3-gnu, limpiada de elementos de firmware y controladores que contienen componentes libres o fragmentos de código cuya aplicación está restringida por el fabricante. En la versión 6.3 se realizó una limpieza de blobs en los nuevos controladores ath12k, aw88395 y peb2466, así como en los nuevos archivos devicetree para dispositivos qcom basados en la arquitectura AArch64. Se actualizó el código de limpieza de blobs en los controladores y subsistemas amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, así como en los controladores para tarjetas DVB con decodificación por software y en archivos BPF precompilados. Se ha detenido la limpieza en los controladores mga, r128, tm6000, cpia2 y r8188eu, ya que han sido eliminados del núcleo. Se ha mejorado la limpieza de blobs del controlador i915.

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