Versión do núcleo de Linux 5.9

Despois de dous meses de desenvolvemento, Linus Torvalds introducido liberación do núcleo Linux 5.9. Entre os cambios máis salientables: limitación da importación de símbolos de módulos propietarios a módulos GPL, aceleración das operacións de cambio de contexto mediante a instrución do procesador FSGSBASE, soporte para a compresión de imaxes do núcleo mediante Zstd, reelaboración da priorización dos fíos no núcleo, soporte para o PRP. (Protocolo de redundancia paralela) , programación consciente do ancho de banda no programador de prazos, empaquetado preventivo de páxinas de memoria, marca de capacidade CAP_CHECKPOINT_RESTOR, chamada ao sistema close_range(), melloras de rendemento de dm-crypt, eliminación de código para convidados Xen PV de 32 bits, nova memoria de forxado mecanismo de xestión, opción "rescate" en Btrfs, soporte para cifrado en liña en ext4 e F2FS.

A nova versión inclúe 16074 correccións de desenvolvedores de 2011,
tamaño do parche: 62 MB (os cambios afectaron a 14548 ficheiros, engadíronse 782155 liñas de código, elimináronse 314792 liñas). Preto do 45% de todos os presentados en 5.9
os cambios están relacionados cos controladores de dispositivos, aproximadamente o 15% dos cambios teñen
actitude cara á actualización de código específico para arquitecturas de hardware, 13%
relacionados coa pila de rede, un 3% con sistemas de ficheiros e un 3% con internos
subsistemas do núcleo.

O principal innovacións:

  • Servizos de memoria e sistema
    • Apretado protección contra o uso de capas GPL para vincular controladores propietarios con compoñentes do núcleo exportados só para módulos baixo a licenza GPL. A marca TAINT_PROPRIETARY_MODULE agora herdase en todos os módulos que importan símbolos de módulos con esta marca. Se un módulo GPL tenta importar símbolos dun módulo que non é GPL, entón ese módulo GPL herdará a etiqueta TAINT_PROPRIETARY_MODULE e non poderá acceder aos compoñentes do núcleo dispoñibles só para módulos con licenza GPL, aínda que o módulo teña importado previamente símbolos de GPL. a categoría "gplonly". O bloqueo inverso (exportando só EXPORT_SYMBOL_GPL en módulos que importaron EXPORT_SYMBOL_GPL), que podería romper o traballo dos controladores propietarios, non está implementado (só se herda a marca do módulo propietario, pero non as ligazóns GPL).
    • Engadido soporte de motor kcompactd para páxinas de memoria pre-empaquetadas en segundo plano para aumentar o número de páxinas de memoria grande dispoñibles para o núcleo. Segundo estimacións preliminares, a embalaxe en segundo plano, a costa dunha sobrecarga mínima, pode reducir os atrasos á hora de asignar páxinas de memoria grandes (páxinas enormes) entre 70 e 80 veces en comparación co mecanismo de empaquetado usado anteriormente, lanzado cando é necesario (baixo demanda). ). Para establecer os límites da fragmentación externa que proporcionará kcompactd, engadiuse sysctl vm.compaction_proactiveness.
    • Engadido soporte para a compresión de imaxes do núcleo mediante o algoritmo Zestándar (zstd).
    • Implementouse soporte para instrucións do procesador para sistemas x86 FSGSBASE, que permite ler e modificar o contido dos rexistros FS/GS desde o espazo de usuario. No núcleo, FSGSBASE úsase para acelerar as operacións de cambio de contexto eliminando as operacións de escritura MSR innecesarias para GSBASE, e no espazo do usuario evita chamadas innecesarias ao sistema para cambiar FS/GS.
    • Engadido o parámetro "allow_writes" permítelle prohibir os cambios nos rexistros MSR do procesador desde o espazo de usuario e limitar o acceso ao contido destes rexistros ás operacións de lectura, xa que cambiar o MSR pode provocar problemas. Por defecto, a escritura aínda non está desactivada e os cambios no MSR reflíctense no rexistro, pero no futuro está previsto cambiar o acceso predeterminado ao modo de só lectura.
    • Á interface de E/S asíncrona io_uring Engadiuse soporte completo para operacións de lectura asíncronas en búfer que non requiren fíos do núcleo. Espérase soporte de gravación nun futuro lanzamento.
    • No prazo do planificador de E/S implementado planificación baseada na capacidade, permitindo tomar decisións correctas sobre sistemas asimétricos como os sistemas baseados en ARM DynamIQ e big.LITTLE, que combinan núcleos de CPU potentes e menos eficientes enerxéticamente nun só chip. En particular, o novo modo permítelle evitar desaxustes de programación cando un núcleo de CPU lento non dispón dos recursos axeitados para completar unha tarefa a tempo.
    • O modelo de consumo de enerxía no núcleo (Energy Model framework) está agora describe non só o comportamento do consumo de enerxía da CPU, senón que tamén abrangue os dispositivos periféricos.
    • Implementouse a chamada ao sistema close_range() para permitir que un proceso peche todo un rango de descritores de ficheiros abertos á vez.
    • Desde a implementación da consola de texto e do controlador fbcon código eliminado, que ofrece a posibilidade de desprazar o texto cara atrás mediante programación (CONFIG_VGACON_SOFT_SCROLLBACK) máis que a cantidade de memoria de vídeo en modo texto VGA.
    • Reelaborado algoritmo para asignar prioridades a fíos dentro do núcleo. A nova opción proporciona unha mellor coherencia en todos os subsistemas do núcleo ao asignar prioridades ás tarefas en tempo real.
    • Engadido sysctl sched_uclamp_util_min_rt_default para controlar a configuración de impulso da CPU para tarefas en tempo real (por exemplo, pode cambiar o comportamento das tarefas en tempo real sobre a marcha para aforrar enerxía despois de cambiar á batería ou nos sistemas móbiles).
    • Fixéronse os preparativos para implementar compatibilidade coa tecnoloxía Transparent Huge Pages na caché da páxina.
    • O motor de fanotify implementa novas marcas FAN_REPORT_NAME e FAN_REPORT_DIR_FID para informar do nome do pai e da información única do FID cando se producen eventos de creación, eliminación ou movemento de elementos de directorio e obxectos que non son do directorio.
    • Para cgroups implementado un novo controlador de memoria de losas, que destaca por mover a contabilidade de losas desde o nivel de páxina de memoria ata o nivel de obxectos do núcleo, o que fai posible compartir páxinas de losas en diferentes cgroups, en lugar de asignar cachés de losas separadas para cada cgroup. O enfoque proposto permite aumentar a eficiencia do uso de lousa, reducir o tamaño da memoria empregada para a lousa nun 30-45%, reducir significativamente o consumo total de memoria do núcleo e reducir a fragmentación da memoria.
    • No subsistema de son ALSA и pila USB, dacordo con recentemente adoptado recomendacións sobre o uso de terminoloxía inclusiva no núcleo de Linux; limpáronse os termos politicamente incorrectos. O código foi borrado das palabras "escravo", "mestre", "lista negra" e "lista branca".
  • Virtualización e seguridade
    • Ao construír o núcleo usando o compilador Clang apareceu a capacidade de configurar (CONFIG_INIT_STACK_ALL_ZERO) a inicialización automática a cero de todas as variables almacenadas na pila (ao construír, especifique "-ftrivial-auto-var-init=zero").
    • No subsistema seccomp, ao usar o modo de control de procesos no espazo de usuario, engadido oportunidade substitución de descritores de ficheiros no proceso supervisado para emular totalmente as chamadas ao sistema que levan á creación de descritores de ficheiros. A funcionalidade é demandada en sistemas de contedores illados e implementacións de sandbox para Chrome.
    • Para as arquitecturas xtensa e csky, engadiuse soporte para limitar as chamadas ao sistema usando o subsistema seccomp. Para xtensa, tamén se implementa soporte para o mecanismo de auditoría.
    • Engadido nova marca de capacidade CAP_CHECKPOINT_RESTORE, que che permite proporcionar acceso a capacidades relacionadas coa conxelación e restauración do estado dos procesos sen transferir privilexios adicionais.
    • GCC 11 ofrece todas as funcións que precisa
      ferramenta de depuración KCSAN (Kernel Concurrency Sanitizer), deseñada para detectar de forma dinámica as condicións de carreira dentro do núcleo. Así, KCSAN agora pódese usar con núcleos construídos en GCC.

    • Para modelos de CPU AMD Zen e máis novos engadido soporte para a tecnoloxía P2PDMA, que permite utilizar DMA para a transferencia directa de datos entre a memoria de dous dispositivos conectados ao bus PCI.
    • Engadiuse a dm-crypt un modo que che permite reducir a latencia realizando o procesamento de datos criptográficos sen utilizar colas de traballo. Este modo tamén é necesario para un correcto funcionamento zonificado dispositivos de bloques (dispositivos con áreas que deben escribirse secuencialmente, actualizando todo o grupo de bloques). Traballouse para aumentar o rendemento e reducir a latencia en dm-crypt.
    • Eliminouse o código para admitir convidados de 32 bits que se executan en modo de paravirtualización que executan o hipervisor Xen. Os usuarios deste tipo de sistemas deberían cambiar ao uso de núcleos de 64 bits en ambientes convidados ou utilizar modos de virtualización completos (HVM) ou combinados (PVH) en lugar da paravirtualización (PV) para executar ambientes.
  • Subsistema de disco, E/S e sistemas de ficheiros
    • No sistema de ficheiros Btrfs implementado unha opción de montaxe "rescate" que unifica o acceso a todas as outras opcións de recuperación. Eliminouse o soporte para as opcións "alloc_start" e "subvolrootid" e a opción "inode_cache" quedou en desuso. Realizáronse optimizacións de rendemento, especialmente acelerando notablemente a execución das operacións fsync(). Engadido a capacidade de utilizar tipos alternativos de sumas de comprobación que non sexan CRC32c.
    • Engadido a capacidade de usar o cifrado en liña (cifrado en liña) nos sistemas de ficheiros ext4 e F2FS, para activar a opción de montaxe "inlinecrypt". O modo de cifrado en liña permítelle utilizar os mecanismos de cifrado integrados no controlador da unidade, que cifra e descifra de forma transparente a entrada/saída.
    • En XFS asegurado reinicio de inodos (lavado) nun modo completamente asíncrono que non bloquea os procesos ao realizar unha operación de limpeza de memoria. Resolveuse un problema de cota de longa data que facía que se fixeran un seguimento incorrecto dos avisos de límite suave e límite de inodo. Implementación unificada de compatibilidade con DAX para ext4 e xfs.
    • En Ext4 implementado precarga mapas de bits de asignación de bloques. Combinada coa limitación da exploración de grupos non inicializados, a optimización reduciu o tempo necesario para montar particións moi grandes.
    • En F2FS engadido ioctl F2FS_IOC_SEC_TRIM_FILE, que lle permite utilizar os comandos TRIM/discard para restablecer fisicamente os datos especificados nun ficheiro, por exemplo, para eliminar claves de acceso sen deixar datos residuais na unidade.
      En F2FS tamén engadido novo modo de recollida de lixo GC_URGENT_LOW, que funciona de forma máis agresiva eliminando algunhas comprobacións de estar en estado inactivo antes de iniciar o colector de lixo.

    • En bcache, o bucket_size para extensións aumentou de 16 a 32 bits como preparación para permitir cachés de dispositivos por zonas.
    • A capacidade de usar o cifrado en liña baseado no cifrado de hardware integrado proporcionado polos controladores UFS engadiuse ao subsistema SCSI (Almacenamento Flash Universal).
    • Engadiuse un novo parámetro de liña de comandos do núcleo "debugfs", que permite controlar a dispoñibilidade do pseudo-FS do mesmo nome.
    • O cliente NFSv4.2 ofrece soporte para atributos de ficheiro estendidos (xattr).
    • En dm-po engadido interface para mostrar á vez unha lista de todos os bloques defectuosos identificados no disco ("dmsetup message dust1 0 listbadblocks").
    • Para md/raid5, engadiuse o parámetro /sys/block/md1/md/stripe_size para configurar o tamaño do bloque STRIPE.
    • Para dispositivos de almacenamento NVMe engadido soporte para comandos de zonificación de unidades (ZNS, NVM Express Zoned Namespace), que permite dividir o espazo de almacenamento en zonas que constitúen grupos de bloques para un control máis completo sobre a colocación dos datos na unidade.
  • Subsistema de rede
    • En Netfilter engadido a capacidade de rexeitar paquetes na fase anterior á comprobación do enrutamento (a expresión REJECT agora pódese usar non só nas cadeas INPUT, FORWARD e OUTPUT, senón tamén na fase PREROUTING para icmp e tcp).
    • En nftables engadido a capacidade de auditar eventos relacionados cos cambios de configuración.
    • En nftables na API de netlink engadido soporte para cadeas anónimas, cuxo nome é asignado dinámicamente polo núcleo. Cando eliminas unha regra asociada a unha cadea anónima, a propia cadea elimínase automaticamente.
    • BPF engade soporte para iteradores para atravesar, filtrar e modificar elementos de matrices asociativas (mapas) sen copiar datos no espazo do usuario. Os iteradores pódense usar para sockets TCP e UDP, o que permite que os programas BPF iteren sobre listas de sockets abertos e extraian a información que necesitan deles.
    • Engadiuse un novo tipo de programa BPF BPF_PROG_TYPE_SK_LOOKUP, que se inicia cando o núcleo busca unha toma de escoita adecuada para unha conexión entrante. Usando un programa BPF coma este, pode crear controladores que tomen decisións sobre a que socket debe asociarse unha conexión, sen estar restrinxido pola chamada do sistema bind(). Por exemplo, pode asociar un único socket a unha serie de enderezos ou portos. Ademais, engadiuse a compatibilidade coa marca SO_KEEPALIVE a bpf_setsockopt() e implementouse a posibilidade de instalar controladores BPF_CGROUP_INET_SOCK_RELEASE, chamados cando se libera o socket.
    • Implementouse o apoio ao protocolo PRP (Protocolo de redundancia paralela), que permite a conmutación baseada en Ethernet a unha canle de copia de seguridade, transparente para as aplicacións, en caso de falla de calquera compoñentes da rede.
    • Pila mac80211 engadido soporte para a negociación de canles WPA/WPA2-PSK de catro etapas no modo de punto de acceso.
    • Engadiuse a posibilidade de cambiar o programador de qdisc (disciplina de cola) para usar o algoritmo de xestión de colas de rede FQ-PIE (Flow Queue PIE) de forma predeterminada, co obxectivo de reducir o impacto negativo do búfer de paquetes intermedios nos equipos de rede de borde (bufferbloat) en redes con módems por cable.
    • Engadíronse novas funcionalidades a MPTCP (MultiPath TCP), extensións do protocolo TCP para organizar o funcionamento dunha conexión TCP coa entrega de paquetes simultaneamente ao longo de varias rutas a través de diferentes interfaces de rede asociadas a diferentes enderezos IP. Engadiuse compatibilidade para syn cookie, DATA_FIN, axuste automático do búfer, diagnóstico de sockets e marcas REUSEADDR, REUSEPORT e V6ONLY en setsockopt.
    • Para as táboas de enrutamento virtuais VRF (Virtual Routing and Forwarding), que permiten organizar o funcionamento de varios dominios de enrutamento nun só sistema, implantouse o modo "estricto". Neste modo, unha táboa virtual só se pode asociar a unha táboa de enrutamento que non se utiliza noutras táboas virtuais.
    • O controlador sen fíos é ath11k engadido admite frecuencia de 6 GHz e exploración espectral.
  • Оборудование
    • Eliminouse o código para admitir a arquitectura UniCore, desenvolvida no Microprocessor Center da Universidade de Pequín e incluída no núcleo de Linux en 2011. Esta arquitectura non se mantén desde 2014 e non ten soporte en GCC.
    • Implementouse o soporte para a arquitectura RISC-V kcov (interfaz debugfs para analizar a cobertura do código do núcleo), kmemleak (sistema de detección de fugas de memoria), protección de pilas, marcas de salto e operacións sen cóxegas (multitarea independente dos sinais do temporizador).
    • Para a arquitectura PowerPC, implementouse soporte para colas de bloqueo de bloqueo, o que mellorou significativamente o rendemento en situacións de conflito de bloqueo.
    • Para as arquitecturas ARM e ARM64, o mecanismo de regulación da frecuencia do procesador está activado por defecto scheduleutil (cpufreq governor), que utiliza directamente a información do programador de tarefas para tomar unha decisión sobre o cambio de frecuencia e pode acceder inmediatamente aos controladores cpufreq para cambiar rapidamente a frecuencia, axustando instantáneamente os parámetros de funcionamento da CPU á carga actual.
    • O controlador DRM i915 para tarxetas gráficas Intel inclúe soporte para chips baseados na microarquitectura Lago foguete e engadiu soporte inicial para tarxetas discretas Intel Xe DG1.
    • O controlador Amdgpu engadiu soporte inicial para as GPU AMD Navi 21 (Plancha mariña) e Navi 22 (Cíclido de Siena). Engadiuse compatibilidade con motores de aceleración de codificación e decodificación de vídeo UVD/VCE para a GPU das Illas do Sur (Radeon HD 7000).
      Engadiuse unha propiedade para xirar a pantalla 90, 180 ou 270 graos.

      Curiosamente, o controlador para AMD GPU é o maior controlador do núcleo: ten uns 2.71 millóns de liñas de código, o que supón aproximadamente o 10% do tamaño total do núcleo (27.81 millóns de liñas). Ao mesmo tempo, os ficheiros de cabeceira xerados automaticamente con datos para os rexistros da GPU representan 1.79 millóns de liñas e o código C é de 366 mil liñas (para comparación, o controlador Intel i915 inclúe 209 mil liñas e Nouveau - 149 mil).

    • Condutor en Nouveau engadido soporte para a comprobación de integridade cadro por cadro usando CRC (Comprobacións de redundancia cíclica) nos motores de visualización de GPU de NVIDIA. A implementación baséase na documentación proporcionada por NVIDIA.
    • Engadidos controladores para paneis LCD: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 e Xingbangda XBD599.
    • O subsistema de audio ALSA é compatible Intel Silent Stream (modo de alimentación continua para dispositivos HDMI externos para eliminar o atraso ao iniciar a reprodución) e dispositivo novo para controlar a iluminación dos botóns de activación e silencio do micrófono, e tamén engadiu soporte para novos equipos, incluído un controlador Longson 7A1000.
    • Engadido soporte para placas, dispositivos e plataformas ARM: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (utilizado en Sony Xperia 10, 10 Plus, XA2, XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, cinco novas placas baseadas en NXP i.MX2, MikroTik RouterBoard 6, Xiaomi Libra, Microsoft Lumia 3011, Sony Xperia Z950, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v5, Renesas RZ/G3H.

Ao mesmo tempo, a Fundación Latinoamericana de Software Libre formado
opción núcleo completamente gratuíto 5.9 - Linux-libre 5.9-gnu, eliminado de elementos de firmware e controladores que conteñan compoñentes ou seccións de código non libres, cuxo alcance está limitado polo fabricante. A nova versión desactiva a carga de blob nos controladores para WiFi rtw8821c e SoC MediaTek mt8183. Código de limpeza de blob actualizado nos controladores e subsistemas de pantalla táctil Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) e x86.

Fonte: opennet.ru

Engadir un comentario