Versión do núcleo de Linux 6.7

Despois de dous meses de desenvolvemento, Linus Torvalds presentou o lanzamento do núcleo Linux 6.7. Entre os cambios máis salientables: a integración do sistema de ficheiros Bcachefs, a descontinuación do soporte para a arquitectura Itanium, a capacidade de Nouvea para traballar co firmware GSP-R, soporte para o cifrado TLS en NVMe-TCP, a posibilidade de utilizar excepcións en BPF, soporte para futex en io_uring, optimización do rendemento do planificador fq (Fair Queuing), compatibilidade coa extensión TCP-AO (opción de autenticación TCP) e a capacidade de restrinxir as conexións de rede no mecanismo de seguranza Landlock, control de acceso adicional ao espazo de nomes de usuario e io_uring a través de AppArmor.

A nova versión inclúe 18405 correccións de 2066 desenvolvedores, o tamaño do parche é de 72 MB (os cambios afectaron a 13467 ficheiros, engadíronse 906147 liñas de código, elimináronse 341048 liñas). A última versión tivo 15291 correccións de 2058 desenvolvedores, o tamaño do parche era de 39 MB. Aproximadamente o 45% de todos os cambios introducidos en 6.7 están relacionados con controladores de dispositivos, aproximadamente o 14% dos cambios están relacionados coa actualización de código específico de arquitecturas de hardware, o 13% están relacionados coa pila de rede, o 5% están relacionados con sistemas de ficheiros e o 3% están relacionados cos subsistemas do núcleo interno.

Principais novidades no núcleo 6.7:

  • Subsistema de disco, E/S e sistemas de ficheiros
    • O núcleo adopta o código do sistema de ficheiros Bcachefs, que tenta acadar o rendemento, fiabilidade e escalabilidade de XFS, combinado con elementos da funcionalidade avanzada que se atopa en Btrfs e ZFS. Por exemplo, Bcachefs admite funcións como incluír varios dispositivos nunha partición, deseños de unidades de varias capas (a capa inferior con datos de uso frecuente baseados en SSD rápidos e a capa superior con datos de discos duros menos utilizados), replicación (RAID). 1/10), caché , compresión de datos transparente (modos LZ4, gzip e ZSTD), porcións de estado (instantáneas), verificación da integridade mediante sumas de comprobación, a capacidade de almacenar códigos de corrección de erros de Reed-Solomon (RAID 5/6), almacenar información en forma cifrada (utilízanse ChaCha20 e Poly1305). En termos de rendemento, Bcachefs está por diante de Btrfs e outros sistemas de ficheiros baseados no mecanismo Copy-on-Write, e demostra unha velocidade de funcionamento próxima a Ext4 e XFS.
    • O sistema de ficheiros Btrfs introduce un modo de cota simplificado que permite acadar un maior rendemento rastrexando extensións só na subpartición na que se crean, o que simplifica significativamente os cálculos e mellora o rendemento, pero non permite ter en conta as extensións compartidas en varios subparticións.
    • Btrfs engadiu unha nova estrutura de datos de "árbore de bandas", adecuada para a asignación de extensións lóxicas en situacións nas que as asignacións físicas non coinciden entre os dispositivos. A estrutura utilízase actualmente en implementacións de RAID0 e RAID1 para dispositivos de bloques por zonas. No futuro, prevén utilizar esta estrutura en RAID de nivel superior, o que resolverá unha serie de problemas existentes na implementación actual.
    • O sistema de ficheiros Ceph implementa compatibilidade para mapear ID de usuario dos sistemas de ficheiros montados, que se usan para facer coincidir os ficheiros dun usuario específico nunha partición externa montada con outro usuario do sistema actual.
    • Engadiuse a capacidade de especificar uid e gid no montaxe para efivarfs para permitir que os procesos non root cambien as variables UEFI.
    • Engadíronse chamadas ioctl a exFAT para ler e cambiar os atributos de FS. Engadiuse o manexo de directorios de tamaño cero.
    • F2FS implementa a capacidade de usar bloques de 16K.
    • O mecanismo de montaxe automática autofs cambiouse para utilizar a nova API de montaxe de particións.
    • OverlayFS ofrece opcións de montaxe "lowerdir+" e "datadir+". Engadido soporte para montaxe anidada de OverlayFS con xattrs.
    • XFS optimizou a carga da CPU no código de asignación de bloques en tempo real. Ofrécese a capacidade de realizar simultaneamente operacións de lectura e FICLONE.
    • O código EXT2 converteuse para usar folios de páxina.
  • Servizos de memoria e sistema
    • O soporte para a arquitectura ia64 usada nos procesadores Intel Itanium, que foron completamente descontinuados en 2021, foi descontinuado. Os procesadores Itanium foron introducidos por Intel en 2001, pero a arquitectura ia64 non puido competir con AMD64, principalmente debido ao maior rendemento de AMD64 e á transición máis suave dos procesadores x32 de 86 bits. Como resultado, os intereses de Intel cambiaron a favor dos procesadores x86-64, e o lote de Itanium seguiron sendo servidores HP Integrity, os pedidos dos cales foron parados hai tres anos. O código para o soporte de ia64 foi eliminado do núcleo principalmente debido á falta de soporte a longo prazo para esta plataforma, mentres que Linus Torvalds expresou a súa vontade de devolver o soporte de ia64 ao núcleo, pero só se hai un mantedor que poida demostrar a alta calidade. soporte para esta plataforma fóra do núcleo principal durante polo menos un ano .
    • Engadiuse o parámetro de comando da liña do núcleo "ia32_emulation", que lle permite activar ou desactivar o soporte para a emulación en modo de 32 bits nos núcleos construídos para a arquitectura x86-64 na fase de arranque. No lado práctico, a nova opción permítelle construír o núcleo con compatibilidade con aplicacións de 32 bits, pero desactivar este modo por defecto para reducir o vector de ataque no núcleo, xa que a API de compatibilidade está menos probada que o núcleo principal. interfaces.
    • Migración continuada de cambios da rama Rust-for-Linux relacionadas co uso da linguaxe Rust como segunda lingua para desenvolver controladores e módulos do núcleo (o soporte de Rust non está activo por defecto e non leva á inclusión de Rust entre os dependencias de montaxe necesarias para o núcleo). A nova versión fai a transición ao uso da versión Rust 1.73 e ofrece un conxunto de ligazóns para traballar con filas de traballo.
    • É posible utilizar o mecanismo binfmt_misc para engadir soporte para novos formatos de ficheiros executables (por exemplo, para executar aplicacións Java ou Python compiladas) dentro de espazos de nomes sen privilexios separados.
    • O cpuset do controlador cgroup, que lle permite controlar o uso dos núcleos da CPU ao executar unha tarefa, ofrece unha división en partición local e remota, que difiren en se o cgroup pai é a sección raíz correcta ou non. Tamén se engadiron novas configuracións "cpuset.cpus.exclusive" e "cpuset.cpus.excluisve.effective" a cpuset para a vinculación exclusiva da CPU.
    • O subsistema BPF implementa soporte para excepcións, que se procesan como unha saída de emerxencia dun programa BPF coa capacidade de desenrolar marcos de pila de forma segura. Ademais, os programas BPF permiten o uso de punteiros kptr en conexión coa CPU.
    • Engadiuse compatibilidade con operacións con futex ao subsistema io_uring e implementáronse novas operacións: IORING_OP_WAITID (versión asíncrona de waitid), SOCKET_URING_OP_GETSOCKOPT (opción getsockoptand), SOCKET_URING_OP_SETSOCKOPT (opción setsockopt) e HOREAT_MTI_ULTIS_OPCIÓN mentres non se detén a operación domulti hai datos ou non hai un buffer cheo).
    • Engadiuse a implementación de colas FIFO lixeiras de conexión única que requiren un bloqueo de rotación só para a eliminación da cola nun contexto de proceso e prescinde dun bloqueo de conexión para adicións atómicas á cola en calquera contexto.
    • Engadiuse un búfer de anel "objpool" cunha implementación escalable dunha cola de alto rendemento para asignar e devolver obxectos.
    • Engadiuse a parte inicial dos cambios para implementar a nova API futex2, que ten un mellor rendemento nos sistemas NUMA, admite tamaños distintos dos 32 bits e pódese usar en lugar da chamada ao sistema futex() multiplexada.
    • Para as arquitecturas ARM32 e S390x, engadiuse soporte para o conxunto actual (cpuv4) de instrucións BPF.
    • Para a arquitectura RISC-V, é posible utilizar o modo de verificación Shadow-Call Stack dispoñible en Clang 17, deseñado para protexer contra a sobreescritura do enderezo de retorno dunha función en caso de desbordamento do búfer na pila. A esencia da protección é gardar o enderezo de retorno nunha pila "sombra" separada despois de transferir o control a unha función e recuperar este enderezo antes de saír da función.
    • Engadiuse un novo modo de dixitalización intelixente de páxinas de memoria ao mecanismo para fusionar páxinas de memoria idénticas (KSM: Kernel Samepage Merging), que rastrexa as páxinas escaneadas sen éxito e reduce a intensidade da súa nova dixitalización. Para activar o novo modo, engadiuse a configuración /sys/kernel/mm/ksm/smart_scan.
    • Engadiuse un novo comando ioctl PAGEMAP_SCAN que, cando se usa con userfaultfd(), permite determinar os feitos de escribir nun intervalo de memoria específico. A nova función, por exemplo, pódese usar no sistema para gardar e restaurar o estado dos procesos CRIU ou nos sistemas anti-trampas do xogo.
    • No sistema de montaxe, se o compilador Clang está dispoñible, o conxunto de exemplos de uso do subsistema perf, escrito como programas BPF, está habilitado por defecto.
    • Eliminouse a antiga capa videobuf, que se utilizou para xestionar os framebuffers no subsistema multimedia e que foi substituída por unha nova implementación de videobuf10 hai máis de 2 anos.
  • Virtualización e seguridade
    • A capacidade de cifrar datos en bloques máis pequenos que o tamaño do bloque no sistema de ficheiros engadiuse ao subsistema fscrypt. Isto pode ser necesario para habilitar mecanismos de cifrado de hardware que só admiten bloques pequenos (por exemplo, os controladores UFS que só admiten un tamaño de bloque 4096 pódense usar cun sistema de ficheiros cun tamaño de bloque de 16 K).
    • O subsistema "iommufd", que lle permite xestionar táboas de páxinas de memoria IOMMU (Unidade de xestión de memoria de E/S) a través de descritores de ficheiros desde o espazo do usuario, engadiu un seguimento dos datos que aínda non foron eliminados da caché (sucio) para DMA operacións, o que é necesario para determinar a memoria con datos non vaciados durante a migración do proceso.
    • Engadiuse ao mecanismo Landlock soporte para definir regras de control de acceso para sockets TCP, que permite limitar a interacción dun grupo de procesos co entorno externo. Por exemplo, pode crear unha regra que só permita o acceso ao porto de rede 443 para establecer conexións HTTPS.
    • O subsistema AppArmor engadiu a capacidade de controlar o acceso ao mecanismo io_uring e crear espazos de nomes de usuario, o que lle permite permitir selectivamente o acceso a estas capacidades só a determinados procesos.
    • Engadiuse a API de certificación da máquina virtual para verificar a integridade do proceso de inicio da máquina virtual.
    • Os sistemas LoongArch admiten a virtualización mediante o hipervisor KVM.
    • Ao usar o hipervisor KVM en sistemas RISC-V, apareceu soporte para a extensión Smstateen, que impide que a máquina virtual acceda aos rexistros da CPU que non son compatibles explícitamente polo hipervisor. Tamén se engadiu soporte para o uso da extensión Zicond en sistemas convidados, que permite o uso dalgunhas operacións de enteiros condicionais.
    • Nos sistemas convidados baseados en x86 que se executan baixo KVM, permítense ata 4096 CPU virtuais.
  • Subsistema de rede
    • O controlador NVMe-TCP (NVMe sobre TCP), que che permite acceder ás unidades NVMe a través da rede (NVM Express sobre Fabrics) mediante o protocolo TCP, engadiu compatibilidade para cifrar a canle de transmisión de datos mediante TLS (usando KTLS e un proceso en segundo plano). no espazo de usuario tlshd para a negociación de conexión).
    • Optimizouse o rendemento do programador de paquetes fq (Fair Queuing), o que permitiu aumentar o rendemento nun 5% baixo cargas pesadas na proba tcp_rr (Solicitude/resposta TCP) e nun 13% cun fluxo ilimitado de paquetes UDP.
    • TCP engade unha capacidade opcional de marca de tempo de precisión de microsegundos (TCP TS) (RFC 7323), que permite unha estimación de latencia máis precisa e módulos de control de conxestión máis avanzados. Para activalo, pode usar o comando "ip route add 10/8 ... features tcp_usec_ts".
    • A pila TCP engadiu soporte para a extensión TCP-AO (TCP Authentication Option, RFC 5925), que permite verificar as cabeceiras TCP mediante códigos MAC (Message Authentication Code), utilizando algoritmos máis modernos HMAC-SHA1 e CMAC-AES- 128 en cambio, a opción TCP-MD5 dispoñible anteriormente baseada no algoritmo MD5 legado.
    • Engadiuse un novo tipo de dispositivos de rede virtuais "netkit", cuxa lóxica de transferencia de datos se configura mediante un programa BPF.
    • KSMBD, unha implementación a nivel de núcleo dun servidor SMB, engadiu soporte para resolver os nomes de ficheiros que conteñan pares substitutos de caracteres compostos.
    • NFS mellorou a implementación de fíos con servizos RPC. Engadido soporte para a delegación de escritura (para NFSv4.1+). NFSD engadiu soporte para o manejador de enlaces de rede rpc_status. Compatibilidade mellorada para clientes NFSv4.x ao volver exportar a knfsd.
  • Оборудование
    • A compatibilidade inicial para o firmware GSP-RM engadiuse ao módulo do núcleo Nouveau, que se usa na GPU NVIDIA RTX 20+ para mover as operacións de inicialización e control da GPU ao lado dun microcontrolador GSP separado (procesador do sistema GPU). A compatibilidade con GSP-RM permite que o controlador Nouveau funcione a través de chamadas de firmware, en lugar de programar directamente as interaccións de hardware, o que fai que sexa moito máis fácil engadir soporte para novas GPU NVIDIA mediante chamadas preconstruídas para a inicialización e a xestión de enerxía.
    • O controlador AMDGPU admite GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 e DML2. Compatibilidade mellorada para a carga sen problemas (sen parpadeo ao cambiar o modo de vídeo).
    • O controlador i915 engade soporte para chips Intel Meteor Lake e engade unha implementación inicial de Intel LunarLake (Xe 2).
    • Engadido soporte para canles de transmisión asimétricas engadido á especificación USB4 v2 (120/40G).
    • Engadido soporte para ARM SoC: Qualcomm Snapdragon 720G (usado en teléfonos intelixentes Xiaomi), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (utilizado en routers e NAS).
    • Engadido soporte para o smartphone Fairphone 5 e as placas ARM Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Engadido soporte para placas RISC-V Milk-V Pioneer e Milk-V Duo.
    • Engadiuse compatibilidade para interfaces de son dos portátiles HUAWEI provistos de CPU AMD. Engadido soporte para altofalantes adicionais instalados en portátiles Dell Oasis 13/14/16. Engadido soporte para altofalantes integrados ASUS K6500ZC. Engadido soporte para o indicador de silencio nos portátiles HP 255 G8 e G10. Engadido soporte para controladores de audio acp6.3. Engadiuse soporte para as interfaces de gravación profesionais Focusrite Clarett+ 2Pre e 4Pre.

Ao mesmo tempo, a Latin American Free Software Foundation formou unha versión do núcleo completamente gratuíto 6.7 - Linux-libre 6.7-gnu, limpa de elementos de firmware e controladores que conteñan compoñentes ou seccións de código non libres, cuxo alcance é limitado. polo fabricante. Na versión 6.7, o código de limpeza de blob actualizouse en varios controladores e subsistemas, por exemplo, nos controladores amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs e btqca. O código para limpar os controladores localtalk e rtl8192u foi eliminado debido á súa exclusión do núcleo. Elimináronse os compoñentes innecesarios para limpar os controladores xhci-pci, rtl8xxxu e rtw8822b, engadidos anteriormente por erro. Limpáronse os nomes de blob en ficheiros dts para a arquitectura Aarch64. Elimináronse as manchas nos novos controladores mt7925, tps6598x, aw87390 e aw88399.

Fonte: opennet.ru

Engadir un comentario