Liberación del núcleo de Linux 7.3

Después de dos meses de desarrollo, Linus Torvalds presentó el lanzamiento del núcleo Linux 7.3. Entre los cambios más notables se encuentran: un mecanismo de aislamiento del sistema de archivos basado en el pseudo-sistema de archivos failfs y la llamada al sistema fchroot(), soporte para la creación de programadores anidados SCHED_EXT, controladores BPF para la ejecución de archivos, flujos alternativos de datos en NTFS3, optimizaciones de rendimiento para FUSE, Btrfs y Ext4, soporte para Apple Time Machine en ksmbd, eliminación de los sistemas de archivos EFS y FreeVxFS, modo de acceso directo a dispositivos de bloques, mejora en la gestión de la falta de memoria de video, seguimiento de accesos a la memoria del sistema huésped a través de userfaultfd, compresión de reglas de AppArmor, restricciones de acceso a AF_ALG, soporte para los procesadores Apple M3 Pro, Max y Ultra.

En la nueva versión se han incorporado 20260 correcciones de 3171 desarrolladores, de las cuales 807 enviaron sus cambios al núcleo por primera vez. El tamaño del parche es de 63 MB (los cambios afectaron a 14923 archivos, se añadieron 943849 líneas de código,
se eliminaron 297515 líneas). En la versión anterior hubo 17833 correcciones de 2766 desarrolladores, el tamaño del parche fue de 68 MB. Aproximadamente el 44% de todas las modificaciones presentadas en 7.3 están relacionadas con controladores de dispositivos, alrededor del 12% de los cambios se relacionan con la actualización de código específico de arquitecturas de hardware, el 12% se relaciona con el stack de red, el 5% con sistemas de archivos y el 3% con subsistemas internos del núcleo.

Novedades principales en el núcleo 7.3 (1, 2, 3):

  • Subsistema de disco, entrada/salida y sistemas de archivos
    • Se ha optimizado el rendimiento del sistema de archivos Btrfs. Para los dispositivos que no son SSD, se ha eliminado la latencia innecesaria, lo que ha resultado en un aumento de cinco veces en la capacidad de procesamiento para cargas que utilizan activamente la función fsync, como el registro de logs. En fsync se ha desactivado la detección de huecos en archivos con un gran número de extensiones y sin huecos, lo que ha acelerado la ejecución de ciertas pruebas específicas en 5 veces.

      Al rastrear los búferes no cachéados de extensiones, la estructura xarray se ha reemplazado por una lista LRU local, lo que ha llevado a un aumento del rendimiento de estas operaciones en 3 veces. Se han eliminado las caídas en el rendimiento al utilizar el modo de entrada/salida directa, causadas por regresiones en versiones anteriores del núcleo. Se han reducido los bloqueos durante la lectura anticipada de extensiones, lo que ha disminuido la sobrecarga al acceder a áreas superpuestas por diferentes tareas.

    • En Btrfs, se eliminó el soporte para la primera versión de la caché de información sobre el espacio libre. Los sistemas de archivos creados en versiones antiguas deben actualizarse a la segunda versión de la caché mediante la utilidad btrfstune, de lo contrario, funcionarán más lentamente. También se eliminó la opción de montaje 'usebackuproot', que ahora debe ser reemplazada por 'rescue=usebackuproot'.
    • En el sistema de archivos Ext4, se ha mejorado el rendimiento de las operaciones de escritura paralelas mediante entrada/salida directa (Direct I/O) y se ha acelerado la reserva de áreas vacías a través de la llamada fallocate(). Se ha corregido una regresión que reducía el rendimiento en escritura en búfer.
    • En el sistema de archivos Ext4, el modo de montaje 'data=journal' ha sido clasificado como obsoleto. Se prevé que el soporte de esta opción de montaje se interrumpa en 2028. La opción 'data=journal' habilita el modo de registro completo, donde se registran no solo los metadatos, sino también los propios datos, lo que proporciona una alta resistencia en caso de fallos, pero complica el mantenimiento del código y conduce a una disminución significativa del rendimiento en comparación con los modos 'data=ordered' y 'data=writeback'.
    • Se ha eliminado el sistema de archivos EFS, que se utilizaba en las primeras versiones del sistema operativo IRIX, dejó de usarse hace aproximadamente 30 años y ha estado sin soporte durante más de 20 años. Para aquellos que necesiten acceder a particiones con EFS, existen utilidades que funcionan en el espacio del usuario.
    • Se ha eliminado el sistema de archivos FreeVxFS, que implementaba el formato de sistema de archivos VERITAS VxFS, utilizado en SCO UnixWare en los años 90 y que hace tiempo que no se utiliza en la práctica.
    • En el mecanismo de creación de sistemas de archivos en espacio de usuario FUSE, se ha mejorado el rendimiento y reducido el consumo de memoria al usar la sistema de entrada/salida asíncrona io_uring. La aceleración se ha logrado gracias a la adición de la capacidad de transmisión de grupos de búferes desde el espacio del usuario al núcleo y la eliminación de la doble compartición (zero-copy) al acceder el servidor FUSE a las páginas de memoria del proceso cliente o a la caché de páginas.
    • Se ha implementado la bandera RWF_DONTCACHE para dispositivos de bloque, que es similar al modo de entrada/salida directa.
      (Direct I/O), que se puede utilizar en las funciones preadv2() y pwritev2() o en solicitudes de lectura y escritura a través de io_uring para acceder al dispositivo de bloques evitando la caché de páginas. Por ejemplo, el flag puede ser utilizado en bases de datos para un acceso de bajo nivel a dispositivos de bloques.
    • En el sistema de archivos overlayfs se ha añadido soporte para el mapeo de identificadores de usuarios, utilizado para asociar archivos de un usuario en una partición montada de otro usuario en el sistema actual.
    • Se ha mejorado el soporte para montar varios sistemas de archivos desde un único dispositivo de bloques.
    • En el controlador ntfs3 se ha implementado un soporte inicial para flujos de datos alternativos, que se comparten a través de dos puntos en el nombre del archivo. Para crear un nuevo flujo alternativo, se puede usar el comando «touch file:flujo», para leer — «cat file:flujo», para eliminar — «rm file:flujo», para listar los flujos disponibles — «cat file:query_streams».
    • En la nueva implementación de NTFS (ntfsplus) en modo solo lectura, se ha añadido soporte para la tecnología de compresión de archivos transparente mediante filtros de superposición WOF (Windows Overlay Filter).
    • En el servidor NFS se ha añadido soporte para la operación CB_NOTIFY, que permite al cliente almacenar en caché los metadatos de los directorios localmente, recibiendo notificaciones de cambios del servidor.
    • En el sistema de archivos F2FS se ha añadido soporte para la eliminación dinámica (sin desmontar el sistema de archivos) de particiones del grupo compartido con la transferencia automática de datos a otras particiones y su retorno (por ejemplo, se puede retirar temporalmente el dispositivo para otros usos).
    • En XFS se ha añadido soporte para el flag FALLOC_FL_WRITE_ZEROES en la llamada al sistema fallocate(), que permite llenar con ceros el rango especificado en un archivo, utilizando un comando WRITE_ZERO soportado por algunos SSD que realiza el borrado sin operaciones de entrada/salida.
  • Memoria y servicios del sistema
    • Se ha mejorado el manejo de la falta de memoria de video. En situaciones de agotamiento de la memoria de video libre, el núcleo ahora intenta desplazar de la memoria de video a la memoria del sistema (GTT) los buffers de aplicaciones que no tienen una cuota de memoria garantizada (dmem cgroup), en lugar de rechazar de inmediato la asignación de memoria de video. Este enfoque asegura que se asignen recursos a la aplicación para la cual el sistema ha reservado una cierta cantidad de memoria de video, incluso si la memoria ya está asignada a otras aplicaciones. Anteriormente, si una aplicación sin cuotas ya había recibido memoria de video, en una situación de falta de memoria de video, la aplicación con cuotas garantizadas no podía obtenerla, y en su lugar, a través del subsistema TTM (Translation Table Maps), se le asignaba memoria RAM del sistema más lenta, direccionada desde la GPU (GTT).
      Se ha implementado el soporte para dmem cgroup en los controladores nouveau, xe y amdgpu.
    • En el mecanismo SCHED_EXT, que permite usar BPF para crear planificadores de CPU, se ha completado el trabajo en la posibilidad de crear planificadores anidados (sub-scheduler), con los cuales se puede activar un planificador de tareas propio para cada cgroup.
    • Se han realizado mejoras en el planificador de tareas relacionadas con el manejo de cgroup y la solución de problemas con la distribución de pesos, que causaban sobrecostos adicionales y retrasos. Se han propuesto varios métodos de distribución de pesos para cgroup: ‘up’, ‘max’, ‘concur’ y ‘tasks’, que se establecen a través del parámetro cgroup_mode. Se ha involucrado una cola de ejecución unificada (runqueue) para la planificación de tareas dentro del cgroup. Se han reducido los retrasos en la planificación de tareas que reciben cortos tiempos de CPU, gracias a
      la capacidad de cancelar, actualizar o minimizar el tiempo de ejecución de tareas, protegidas contra el desalojo, cuando sea necesario.
    • Se ha implementado en el mecanismo binfmt_misc (/proc/sys/fs/binfmt_misc)
      posibilidad de conectar controladores BPF para agregar soporte a nuevos formatos de archivos ejecutables. Este cambio permite analizar programáticamente el tipo de archivo ejecutable en el momento de cada inicio y seleccionar el intérprete o cargador dinámico correspondiente sin hacks como el uso de la utilidad patchelf y envoltorios de scripts. Por ejemplo, en un programa BPF se pueden definir archivos ejecutables para otras arquitecturas o plataformas y lanzar los emuladores o Wine correspondientes, además de simplificar la organización del lanzamiento de archivos ejecutables en paquetes instalados en diferentes directorios en sistemas con el gestor de paquetes Nix.
    • Continúa la transferencia de cambios desde la rama Rust-for-Linux, relacionada con el uso del lenguaje Rust como segundo lenguaje para el desarrollo de controladores y módulos del núcleo (el soporte de Rust no está activo por defecto y no lleva a incluir Rust en las dependencias de compilación obligatorias del núcleo). Se ha habilitado el uso de Rust para la arquitectura PowerPC. Se han implementado: un módulo para conversiones enteras sin pérdidas, un modo de registro ofuscado de valores de punteros para prevenir la fuga de información sobre el espacio de direcciones, un envoltorio sobre la función synchronize_rcu(), barreras de memoria, un módulo de interrupción para habilitar/deshabilitar interrupciones, tipos para entrada/salida, envoltorios sobre fwctl, un mecanismo SRCU (sleepable read-copy-update), y envoltorios sobre gem shmem.
      bloqueos de SpinLockIrq que no permiten interrupciones en secciones críticas.
    • Se ha agregado el parámetro de sysctl syscall_user_dispatch para controlar la activación del modo de despacho de llamadas al sistema en el espacio de usuario, permitiendo que un proceso intercepte las llamadas al sistema de otro proceso (se utiliza en Wine para emular llamadas al sistema Windows).
    • En BPF se ha añadido la función bpf_sock_read_xattr(), mediante la cual los programas BPF pueden leer atributos extendidos establecidos por el usuario.
      (user.*) del inode de los sockets. En las aplicaciones BPF ha surgido la posibilidad de definir variables globales vinculadas a la CPU. En el verificador de programas BPF se ha proporcionado información adicional sobre los errores encontrados, facilitando la identificación de las causas de los problemas.
    • Los mecanismos de trazado kprobes, uprobes y fprobes han implementado soporte para la conversión de tipos, utilizando datos BTF (BPF Type Format) con información para la verificación de tipos en pseudocódigo BPF, así como se ha mejorado la extracción de información sobre variables.
    • En el subsistema DAMON (Data Access MONitor), que permite rastrear el acceso de un proceso a los datos en la memoria RAM (por ejemplo, se puede saber a qué áreas de la memoria accedió el proceso y qué áreas de memoria quedaron sin ser utilizadas), se ha añadido la capacidad de monitorear los cambios en los atributos de los datos (memoria anónima, archivos mapeados en memoria, solo lectura, ausencia de accesos a la memoria, etc.).
    • En el mecanismo KHO (Kexec HandOver), utilizado para iniciar un nuevo núcleo desde uno antiguo sin perder el estado del sistema, se ha tenido en cuenta la asignación de grandes páginas de memoria (huge pages) durante el arranque. Estas páginas de memoria ahora son marcadas y preservadas tras el inicio del nuevo núcleo.
    • El código de bajo nivel del sistema de intercambio (swap) ha sido trasladado a una nueva estructura de datos de bajo nivel llamada swap_ops, lo que ha simplificado el mantenimiento del código y ha implementado las abstracciones necesarias para expandir la funcionalidad en el futuro.
    • Se han añadido comandos ioctl ALLOCINFO_IOC_CONTENT_ID, ALLOCINFO_IOC_GET_AT y ALLOCINFO_IOC_GET_NEXT, que permiten transmitir selectivamente datos de perfilado de la asignación de memoria al espacio de usuario. En comparación con la interfaz previamente disponible /proc/allocinfo, las llamadas ioctl propuestas permiten aumentar hasta 20 veces el rendimiento de las solicitudes de perfilado mediante la filtración de datos innecesarios.
  • Virtualización y seguridad
    • Se ha propuesto un nuevo mecanismo de aislamiento que bloquea el acceso al contenido de los sistemas de archivos, exceptuando los recursos que se han transferido explícitamente al entorno sandbox a través de descriptores de archivos. Este mecanismo se implementa mediante el pseudo-sistema de archivos failfs y la llamada al sistema fchroot.

      El pseudo-sistema de archivos failfs se asemeja al sistema de archivos nullfs, pero a diferencia de este último, implementa el principio de "nada se admite" en lugar de "nada se almacena". Esta propiedad impide montar cualquier cosa sobre failfs, clonar el sistema de archivos y rastrear el estado a través de statmount(), listmount(), /proc//mountinfo y /proc/filesystems. Si el directorio raíz o de trabajo del proceso está en failfs, se bloquean todos los intentos de navegación por el sistema de archivos utilizando rutas de archivo absolutas, enlaces simbólicos y rutas relativas dependiendo del directorio de trabajo actual. Al proceso solo se le permite acceder a un directorio específico a través de descriptores de archivo abiertos antes de la isolación.

      Para pasar al nuevo modo de aislamiento, se ha añadido la llamada al sistema fchroot, similar a la llamada al sistema chroot, pero que opera a nivel de descriptores de archivo. A las llamadas al sistema fchdir se le ha agregado el flag FD_FAILFS_ROOT para mover el directorio de trabajo del proceso al sistema de archivos failfs.
      Un flag similar está disponible en la llamada al sistema fchroot.

    • Se ha añadido la capacidad de rastrear accesos a la memoria del sistema huésped mediante el mecanismo userfaultfd, que permite crear manejadores para accesos a páginas de memoria no asignadas o protegidas en el espacio de usuario. En la práctica, esta funcionalidad permite al hipervisor identificar las páginas de memoria a las que no se ha accedido en la máquina virtual, para ser desplazadas a una memoria más lenta o a un almacenamiento externo. Para rastrear violaciones de la prohibición de lectura y escritura en el área de memoria monitoreada, se ha añadido el flag UFFDIO_REGISTER_MODE_RWP, que se puede utilizar como un análogo de mayor rendimiento a la aplicación de mprotect(PROT_NONE) junto con un manejador de señales generado al acceder a la memoria para la que se impuso prohibición de lectura y escritura (en el caso de userfaultfd se genera una excepción que se procesa en el espacio de usuario). Este cambio se preparó con ayuda de IA ("Assisted-by: Claude:claude-opus-4-6").
    • Se ha reforzado la separación entre los hilos del núcleo (kthread) y el proceso init (PID 1). Anteriormente, los hilos del núcleo y el PID 1 compartían el estado del sistema de archivos.
      lo que permitía, a través de la llamada pivot_root(), redefinir el estado del sistema de archivos para todos los hilos del núcleo. En la nueva versión, el PID 1 utiliza una estructura fs_struct completamente separada, y los hilos del núcleo están aislados en un punto de montaje separado con nullfs.
    • Se ha añadido soporte para los modos de cifrado AES — ECB, CBC, CBC-CTS, CTR, XCTR, XTS, GCM y CCM en la biblioteca criptográfica integrada (libcrypto).
    • El sistema de gestión de acceso obligatorio AppArmor ha implementado la capacidad de cargar conjuntos de reglas comprimidas y se ha añadido un modo de auditoría.
    • Se ha añadido el parámetro sysctl af_alg_restrict, que gestiona el acceso al API criptográfico AF_ALG desde el espacio de usuario. AF_ALG permite utilizar aceleradores de hardware para cálculos criptográficos en el API Crypto del núcleo, pero se aplica en situaciones bastante específicas y no siempre proporciona un aumento de rendimiento en comparación con la implementación de aceleración en el espacio de usuario. Además, se han descubierto una serie de vulnerabilidades relacionadas con los controladores de AF_ALG, como Copy Fail, que permiten modificar los datos en la caché de páginas. Para reducir la superficie de ataque, el acceso a AF_ALG está parcialmente limitado por defecto. Se está considerando la posibilidad de eliminar AF_ALG en una de las futuras versiones.
    • Se ha reforzado la verificación de los programas BPF firmados digitalmente. Se ha añadido una verificación de la integridad de los metadatos del programa BPF antes de su carga.
    • Se ha añadido una bandera al sistema de llamada landlock_restrict_self(), utilizada para activar bloqueos Landlock.
      LANDLOCK_RESTRICT_SELF_NO_NEW_PRIVS, que prohíbe al proceso actual adquirir nuevos privilegios. El mecanismo Landlock permite a los programas no privilegiados renunciar a privilegios innecesarios para su funcionamiento, limitando voluntariamente su acceso posterior al sistema para mejorar la seguridad, por ejemplo, para protegerse en caso de intentos de explotación de vulnerabilidades en el programa.
    • En el controlador VirtIO-GPU, que permite el funcionamiento de un GPU virtual, se ha añadido soporte para el modo de suspensión S4 (hibernación).
  • Subsistema de red
    • En ksmbd, el servidor integrado en el núcleo para el protocolo SMB, se ha añadido soporte para las extensiones Apple Time Machine para el almacenamiento de copias de seguridad creadas en macOS a través de esta aplicación. Se implementó un mecanismo de aislamiento de secuencias de comandos SMB vinculado a MessageId para bloquear ataques mediante el envío de solicitudes inválidas o duplicadas. Se agregó soporte para el reenvío de solicitudes a través del protocolo SMB3 sin interrumpir el estado de la sesión si la solicitud anterior se perdió. En SMB3 se ha implementado la posibilidad de cifrado a nivel de recursos compartidos individuales (share). Se añadió soporte para el cifrado del canal de comunicación SMB Direct, que utiliza la tecnología RDMA (Remote Direct Memory Access).
    • Se ha implementado la posibilidad de usar paquetes TCP con la extensión BIG TCP, que permite aumentar el tamaño máximo del paquete TCP hasta 4 GB, en túneles UDP basados en protocolos VXLAN y GENEVE.
    • Se ha añadido soporte para la transmisión del protocolo MCTP (Management Component Transport Protocol) sobre USB (MCTP-over-USB 1.1).
    • Se ha proporcionado la posibilidad de desregistrar (unregistration) dispositivos de red (netkit, veth, vxcan, bareudp, geneve, ipvlan, macvlan, etc.) para los espacios de nombres seleccionados.
    • Para Bluetooth 6.2+, se ha implementado soporte para el mecanismo SCI (Shorter Connection Interval) para reducir la latencia en la transmisión de datos en modo Bluetooth LE (Low Energy).
    • En la API nl80211 se ha añadido un mecanismo unificado (NL80211_CMD_PROBE_PEER) para verificar los pares conectados, que funciona tanto en puntos de acceso inalámbricos como en el lado del cliente.
  • Hardware
    • Se han declarado obsoletas y se han programado para eliminación en el núcleo 7.5 las antiguas plataformas ARM que son casi no utilizadas y complican el mantenimiento de subsistemas actuales. Se prevé eliminar alrededor de 55 mil líneas de código relacionado con el soporte de plataformas sa1100, omap24xx, i.MX31, samv7, lpc18xx, riscpc, axxia, footbridge, antiguas placas pxa, orion, dove y mv78xx0, chips sin unidad de gestión de memoria (MMU) y microcontroladores stm32f4/f7/h7.
    • Se ha añadido soporte inicial para chips Apple M3 Pro, Max y Ultra. Se ha implementado el control del estado de consumo de energía para los SoC de Apple.
    • En el subsistema DRM (Direct Rendering Manager) se ha añadido la propiedad 'color format', que permite al usuario cambiar el formato de representación de color para el dispositivo de salida. Esta propiedad se ha implementado para los controladores GPU i915 (HDMI, DP), amdgpu (HDMI, DP) y rockchip (HDMI). Para realizar pruebas, se puede usar un comando en la forma 'modetest -s 115:1920×1080-60@NV12 -w 115:'color format':4', donde 115 es el identificador del conector y '4' el número del formato YUV420.
    • Se ha agregado soporte para modificadores DRM en el controlador amdgpu para GPUs AMD de las series GFX6-8 (Southern Islands, Sea Islands y Volcanic Islands). Se ha implementado el soporte inicial para DCN 6.0.0 (Display Core Next). Se ha realizado una limpieza de código obsoleto.
      Se ha activado el soporte para CACP (Content Adaptive Contrast and Power), que permite reducir el consumo energético de los paneles OLED. Para los motores de visualización basados en la arquitectura DCN4, se ha añadido soporte para el mecanismo IPS (Idle Power State) para disminuir el consumo energético durante la inactividad. Se añade soporte para las tarjetas gráficas AMD Barco.
    • En el controlador i915 se ha reescrito el código para determinar las capacidades y restaurar el estado de los conectores DisplayPort. Se ha añadido soporte para CMTG (Common mode timing generator) y DC3DO (Display C3 with Clock Off) en GPUs Novalake (NVL).
    • Se ha continuado trabajando en el controlador drm (Direct Rendering Manager) Xe para GPUs basadas en la arquitectura Intel Xe, que se utilizan en las tarjetas gráficas Intel de la familia Arc y la gráfica integrada desde los procesadores Tiger Lake. Se han añadido nuevos identificadores para dispositivos compatibles. En configfs se ha implementado el atributo ‘enable_multi_queue’ para desactivar el uso simultáneo de múltiples colas de transmisión de comandos. Se ha mejorado el soporte para la transición a modo de suspensión.
    • Se ha seguido integrando componentes del controlador Nova para GPUs NVIDIA equipadas con firmware GSP, utilizado desde la serie NVIDIA GeForce RTX 2000 basada en la microarquitectura Turing. El controlador se ha escrito en Rust. En la nueva versión se ha realizado la transición a nuevas imágenes de firmware TLV, en lugar de las antiguas variantes utilizadas en el controlador Nouveau. Se ha añadido soporte
      para el lanzamiento del firmware para el chip GSP (GPU System Processor) con habilitación de vGPU. Se ha agregado una API para obtener información sobre el tamaño de la memoria de video.
    • En el controlador Tyr, escrito en Rust y que gestiona GPUs ARM Mali, se ha añadido la capacidad de cargar firmware en formato Mali CSF, activar la memoria virtual de la GPU y ejecutar el MCU.
    • En el controlador msm se ha añadido soporte para GPUs Adreno Shikra (A704) y Eliza (722).
    • Se ha añadido soporte para dispositivos de audio y ASoC: Pioneer DJ DJM-S11,
      AW88399 (Lenovo Legion Pro), AW88399 (Lenovo Legion), Lisuan, ALC235, RME HDSPe AIO, RT766/RT767 SDCA, Maili, Hawi, CS35L62 (SoundWire), RT766/RT767 VA1.
    • Se ha añadido soporte para el Steam Controller (modelo 2026); ratones Logitech G502 X Plus y G502 X Lightspeed; teclados Endorfy Thock TKL, Zenbook A16; auriculares Nova 5X, Nova 7 y Arctis 7; volante de juego Turtle Beach VelocityOne Race; controladores MSI Claw.
    • Se ha mejorado el soporte para audio en dispositivos ASUS VivoBook M515DA/X515DAP.
      LG gram 16 (16Z90TR), Minisforum AI X1 Pro, HP Pavilion 15-eh2xxx, HP Laptop 15-dy0xxx y HP Spectre x360 16-aa0xxx, HP EliteBook 6 G1, HP OmniBook X Flip 14, Lenovo Yoga Pro 7, Huawei Matebook,
      ThinkPad X1 Carbon 6th, HP ProBook 440 G5, Acer Aspire A515-57.
    • Se añadió soporte para smartphones, tablets y laptops: Motorola Edge 30, Motorola Moto G2, Xiaomi 12 Lite 5G, Microsoft Surface Pro, Honor MagicBook art 1412in, Sony Xperia M2, Vicharak Axon, Axon Mini y Vaaman2, Asus Zenbook A16, Lenovo Thinkedge se70.
    • Se añadió soporte para plataformas ARM y SoC Samsung Exynos 1580 (utilizado en smartphones insignia desde 2024), Orange Pi 5 pro, Sophgo SG2000 (híbrido Arm/RISC-V), BeagleBadge, Qualcomm "Shikra" y "Altera" (Cortex-A78C), Agilex72 (Cortex-A720), Alientek ATK-DLRV1126, Variscite SoC DART-MX8M-PLUS, DART-MX8M-MINI, VAR-SOM-MX8QM y placas Sonata/Symphony basadas en ellos, 9Tripod X3568 v4, Youyeetoo YY3588, milk-v duo, ArmSoM CM5, Freescale Verdin iMX8M Mini, Anbernic rg vita-pro, Embedfire lubancat 4, Vicharak Vaaman, LincStation E1, HINLINK H28K.

Simultáneamente, la Fundación de Software Libre de América Latina formó
una versión completamente libre del núcleo 7.3 — Linux-libre 7.3-gnu, limpia de elementos de firmware y controladores que contienen componentes no libres o segmentos de código cuya área de aplicación está limitada por el fabricante. En la versión 7.3 se realizó una limpieza de blobs de nuevos controladores para GPU Mali Tyr, Morse Micro mm81x wi-fi, NXP wi-fi y tarjetas de red en chips Realtek. Se actualizó el código de limpieza en los controladores nova-core, amdgpu, adreno, tegra, iris, rtw89 y mt76 wifi, Qualcomm Q6V5 PAS, qla2xxx scsi y códec de audio aw88399. Se llevó a cabo la limpieza de nombres de blobs en archivos dts (devicetree) para chips ARM Qualcomm.

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