Versión do núcleo de Linux 5.15

Despois de dous meses de desenvolvemento, Linus Torvalds presentou o lanzamento do kernel Linux 5.15. Os cambios notables inclúen: novo controlador NTFS con soporte de escritura, módulo ksmbd con implementación de servidor SMB, subsistema DAMON para monitorización de acceso á memoria, primitivas de bloqueo en tempo real, compatibilidade con fs-verity en Btrfs, chamada do sistema process_mrelease para memoria de sistemas de resposta á fame, módulo de certificación remota dm-ima.

A nova versión inclúe 13499 correccións de 1888 desenvolvedores, o tamaño do parche é de 42 MB (os cambios afectaron a 10895 ficheiros, engadíronse 632522 liñas de código, elimináronse 299966 liñas). Aproximadamente o 45% de todos os cambios introducidos en 5.15 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 14% están relacionados coa pila de rede, o 6% están relacionados con sistemas de ficheiros e o 3% están relacionados cos subsistemas do núcleo interno.

Principais novidades:

  • Subsistema de disco, E/S e sistemas de ficheiros
    • O núcleo adoptou unha nova implementación do sistema de ficheiros NTFS, aberta por Paragon Software. O novo controlador pode funcionar en modo de escritura e admite todas as funcións da versión actual de NTFS 3.1, incluíndo atributos de ficheiros estendidos, listas de acceso (ACL), modo de compresión de datos, traballo efectivo con espazos baleiros nos ficheiros (escasos) e reproducción de cambios desde o rexistro para restaurar a integridade despois de fallos.
    • O sistema de ficheiros Btrfs implementa soporte para o mecanismo fs-verity, que se usa para controlar de forma transparente a integridade e autenticidade dos ficheiros individuais mediante hash criptográficos ou claves asociadas aos ficheiros almacenados na área de metadatos. Anteriormente, fs-verity só estaba dispoñible para os sistemas de ficheiros Ext4 e F2fs.

      Btrfs tamén engade soporte para mapear ID de usuario para sistemas de ficheiros montados (anteriormente compatible con sistemas de ficheiros FAT, ext4 e XFS). Esta función permítelle comparar ficheiros dun usuario específico nunha partición externa montada con outro usuario do sistema actual.

      Outros cambios en Btrfs inclúen: adición máis rápida de claves ao índice do directorio para mellorar o rendemento da creación de ficheiros; a capacidade de traballar raid0 cun dispositivo e raid10 con dous (por exemplo, durante o proceso de reconfiguración da matriz); opción “rescue=ibadroots” para ignorar unha árbore de extensión incorrecta; aceleración da operación "enviar"; redución dos conflitos de bloqueo durante as operacións de cambio de nome; a capacidade de usar sectores 4K en sistemas cun tamaño de páxina de memoria de 64K.

    • En XFS, estabilizouse a capacidade de usar datas posteriores a 2038 no sistema de ficheiros. Implementouse un mecanismo para a desactivación atrasada do inodo e soporte para a instalación e eliminación atrasadas de atributos de ficheiro. Para eliminar os problemas, eliminouse a capacidade de desactivar as cotas de disco para as particións xa montadas (podes desactivar as cotas de forma forzada, pero o cálculo asociado a elas continuará, polo que é necesario remontalas para desactivalas por completo).
    • En EXT4, traballouse para aumentar o rendemento de escribir búfers delalloc e procesar ficheiros orfos que seguen existindo debido ao feito de que permanecen abertos, pero non están asociados a un directorio. O procesamento de operacións de descarte foi movido fóra do fío jbd2 kthread para evitar o bloqueo de operacións con metadatos.
    • F2FS engadiu a opción "discard_unit=block|segment|section" para vincular operacións de descarte (marcando bloques liberados que xa non poden almacenarse fisicamente) ao aliñamento relativo a un bloque, sector, segmento ou sección. Engadiuse compatibilidade para rastrexar os cambios na latencia de E/S.
    • O sistema de ficheiros EROFS (Extendable Read-Only File System) engade soporte directo de E/S para ficheiros gardados sen compresión, así como compatibilidade con mapas de mapas.
    • OverlayFS implementa o manexo correcto dos indicadores de montaxe "inmutable", "só anexar", "sincronizar" e "noatime".
    • NFS mellorou o manexo das situacións nas que o servidor NFS deixa de responder ás solicitudes. Engadida a posibilidade de montar desde un servidor que xa está en uso, pero accesible a través dun enderezo de rede diferente.
    • Comezaron os preparativos para reescribir o subsistema FSCACHE.
    • Engadido soporte para particións EFI con colocación non estándar de táboas GPT.
    • O mecanismo fanotify implementa unha nova marca, FAN_REPORT_PIDFD, que fai que pidfd se inclúa nos metadatos devoltos. Pidfd axuda a xestionar as situacións de reutilización de PID para identificar con máis precisión os procesos que acceden a ficheiros supervisados ​​(un pidfd está asociado a un proceso específico e non cambia, mentres que un PID pódese asociar a outro proceso despois de que finalice o proceso actual asociado a ese PID).
    • Engadiuse a posibilidade de engadir puntos de montaxe aos grupos compartidos existentes á chamada ao sistema move_mount(), que resolve os problemas de gardar e restaurar o estado do proceso en CRIU cando hai varios espazos de montaxe compartidos en contedores illados.
    • Engadiuse protección contra as condicións de carreira ocultas que poderían provocar a corrupción dos ficheiros ao realizar lecturas da caché mentres se procesan baleiros nun ficheiro.
    • O soporte para o bloqueo obrigatorio (obrigatorio) de ficheiros, implementado a través do bloqueo de chamadas ao sistema que levan a un cambio de ficheiro, foi descontinuado. Debido ás posibles condicións de carreira, estes bloqueos consideráronse pouco fiables e quedaron en desuso hai moitos anos.
    • Eliminouse o subsistema LightNVM, o que permitía o acceso directo á unidade SSD, evitando a capa de emulación. LightNVM perdeu o seu significado despois da chegada dos estándares NVMe que prevén a zonificación (ZNS, Zoned Namespace).
  • Servizos de memoria e sistema
    • Implementouse o subsistema DAMON (Data Access MONitor), que permite supervisar a actividade relacionada co acceso a datos na RAM en relación a un proceso seleccionado que se executa no espazo do usuario. O subsistema permítelle analizar a que áreas de memoria accedeu o proceso durante todo o seu funcionamento e que áreas de memoria permaneceron sen reclamar. DAMON presenta baixa carga da CPU, baixo consumo de memoria, alta precisión e unha sobrecarga constante previsible, independentemente do tamaño. O subsistema pode ser usado tanto polo núcleo para optimizar a xestión da memoria, como polas utilidades no espazo do usuario para comprender o que fai exactamente un proceso e optimizar o uso da memoria, por exemplo, liberando o exceso de memoria para o sistema.
    • Implementouse a chamada ao sistema process_mrelease para acelerar o proceso de liberación da memoria dun proceso que completa a súa execución. En circunstancias normais, a liberación de recursos e a terminación do proceso non son instantáneas e poden atrasarse por varios motivos, que interfiren cos sistemas de resposta anticipada da memoria do espazo do usuario, como oomd (proporcionado por systemd) e lmkd (utilizado por Android). Ao chamar process_mrelease, estes sistemas poden desencadear de forma máis previsible a recuperación de memoria dos procesos forzados.
    • Desde a rama do núcleo PREEMPT_RT, que desenvolve soporte para o funcionamento en tempo real, transferíronse variantes de primitivas para organizar bloqueos mutex, ww_mutex, rw_semaphore, spinlock e rwlock, baseados no subsistema RT-Mutex. Engadíronse cambios ao asignador de lousa SLUB para mellorar o funcionamento no modo PREEMPT_RT e reducir o impacto nas interrupcións.
    • Engadiuse a compatibilidade co atributo do planificador de tarefas SCHED_IDLE a cgroup, o que lle permite proporcionar este atributo a todos os procesos dun grupo incluído nun cgroup específico. Eses. estes procesos só executaranse cando non haxa outras tarefas pendentes de ser executadas no sistema. A diferenza de establecer o atributo SCHED_IDLE para cada proceso individualmente, ao vincular SCHED_IDLE a un cgroup, o peso relativo das tarefas dentro do grupo tómase en conta ao seleccionar unha tarefa para executar.
    • O mecanismo para contabilizar o consumo de memoria en cgroup ampliouse coa capacidade de rastrexar estruturas de datos do núcleo adicionais, incluídas as creadas para sondeos, procesamento de sinais e espazos de nomes.
    • Engadiuse soporte para a programación asimétrica da vinculación de tarefas aos núcleos do procesador en arquitecturas nas que algunhas CPU permiten a execución de tarefas de 32 bits e algunhas só funcionan en modo de 64 bits (por exemplo, ARM). O novo modo permítelle considerar só as CPU que admiten tarefas de 32 bits ao programar tarefas de 32 bits.
    • A interface de E/S asíncrona io_uring agora admite abrir ficheiros directamente na táboa de índice de ficheiros fixos, sen usar un descritor de ficheiros, o que permite acelerar significativamente algúns tipos de operacións, pero vai en contra do proceso tradicional de Unix de usar descritores de ficheiros. para abrir ficheiros.

      io_uring para o subsistema BIO (Block I/O Layer) implementa un novo mecanismo de reciclaxe ("reciclaxe BIO"), que reduce a sobrecarga no proceso de xestión da memoria interna e aumenta o número de operacións de E/S procesadas por segundo aproximadamente un 10 % . io_uring tamén engade soporte para as chamadas ao sistema mkdirat(), symlinkat() e linkat().

    • Para os programas BPF, implementouse a capacidade de solicitar e procesar eventos do temporizador. Engadiuse un iterador para sockets UNIX e implementouse a capacidade de obter e establecer opcións de socket para setsockopt. O dumper BTF agora admite datos escritos.
    • Nos sistemas NUMA con diferentes tipos de memoria que difiren no seu rendemento, cando se esgota o espazo libre, as páxinas de memoria desaloxadas transfírense da memoria dinámica (DRAM) á memoria permanente máis lenta (memoria persistente) en lugar de eliminar estas páxinas. As probas demostraron que tales tácticas adoitan mellorar o rendemento destes sistemas. NUMA tamén ofrece a capacidade de asignar páxinas de memoria para un proceso dun conxunto seleccionado de nós NUMA.
    • Para a arquitectura ARC, implementouse soporte para táboas de páxinas de memoria de tres e catro niveis, o que permitirá ademais o soporte para procesadores ARC de 64 bits.
    • Para a arquitectura s390, implementouse a capacidade de usar o mecanismo KFENCE para detectar erros ao traballar coa memoria e engadiuse soporte para o detector de condicións de carreira KCSAN.
    • Engadido soporte para indexar a lista de mensaxes saídas a través de printk(), o que lle permite recuperar todas esas mensaxes á vez e seguir os cambios no espazo do usuario.
    • mmap() eliminou a compatibilidade coa opción VM_DENYWRITE e o código do núcleo eliminouse de usar o modo MAP_DENYWRITE, o que reduciu o número de situacións que levan ao bloqueo das escrituras nun ficheiro co erro ETXTBSY.
    • Engadiuse un novo tipo de comprobacións, "Probas de eventos", ao subsistema de rastrexo, que se pode anexar aos eventos de rastrexo existentes, definindo o seu propio formato de saída.
    • Cando se crea o núcleo usando o compilador Clang, agora úsase o ensamblador predeterminado do proxecto LLVM.
    • Como parte dun proxecto para eliminar o código do núcleo que leva á saída de avisos polo compilador, realizouse un experimento co modo "-Werror" activado por defecto, no que as advertencias do compilador se procesan como erros. En preparación para a versión 5.15, Linus comezou a aceptar só cambios que non producían avisos ao construír o núcleo e habilitou a construción con "-Werror", pero entón acordou que tal decisión era prematura e atrasaba a habilitación de "-Werror" por defecto. . A inclusión da bandeira "-Werror" durante a montaxe contrólase mediante o parámetro WERROR, que está configurado como COMPILE_TEST por defecto, é dicir. Polo momento só está habilitado para compilacións de proba.
  • Virtualización e seguridade
    • Engadiuse un novo controlador dm-ima a Device Mapper (DM) coa implementación dun mecanismo de certificación remota baseado no subsistema IMA (Integrity Measurement Architecture), que permite que un servizo externo verifique o estado dos subsistemas do núcleo para garantir a súa autenticidade. . Na práctica, dm-ima permítelle crear almacenamentos mediante Device Mapper que están ligados a sistemas de nube externos, nos que se comproba a validez da configuración de destino DM iniciada mediante IMA.
    • prctl() implementa unha nova opción PR_SPEC_L1D_FLUSH, que cando está activada, fai que o núcleo borre o contido da caché de primeiro nivel (L1D) cada vez que se produce un cambio de contexto. Este modo permite, selectivamente para os procesos máis importantes, implementar unha protección adicional contra o uso de ataques de canle lateral realizados para determinar os datos que se instalaron na caché como consecuencia de vulnerabilidades provocadas pola execución especulativa de instrucións na CPU. O custo de activar PR_SPEC_L1D_FLUSH (non activado de forma predeterminada) supón unha importante penalización de rendemento.
    • É posible construír o núcleo coa adición da marca "-fzero-call-used-regs=used-gpr" a GCC, o que garante que todos os rexistros se restablezan a cero antes de devolver o control da función. Esta opción permítelle protexerse contra a fuga de información das funcións e reducir nun 20 % o número de bloques axeitados para construír aparellos ROP (Return-Oriented Programming) en exploits.
    • Implementouse a capacidade de construír núcleos para a arquitectura ARM64 en forma de clientes para o hipervisor Hyper-V.
    • Proponse un novo marco de desenvolvemento de controladores “VDUSE”, que permite implementar dispositivos de bloques virtuais no espazo de usuario e utilizar Virtio como transporte para o acceso desde sistemas convidados.
    • Engadiuse o controlador Virtio para o bus I2C, o que permite emular controladores I2C en modo de paravirtualización usando backends separados.
    • Engadiuse o controlador de Virtio gpio-virtio para permitir que os hóspedes accedan ás liñas GPIO proporcionadas polo sistema host.
    • Engadiuse a posibilidade de restrinxir o acceso ás páxinas de memoria dos controladores de dispositivos con compatibilidade con DMA en sistemas sen MMU (unidade de xestión de memoria) de E/S.
    • O hipervisor KVM ten a capacidade de mostrar estatísticas en forma de histogramas lineais e logarítmicos.
  • Subsistema de rede
    • O módulo ksmbd engadiuse ao núcleo coa implementación dun servidor de ficheiros mediante o protocolo SMB3. O módulo complementa a implementación do cliente SMB dispoñible anteriormente no núcleo e, a diferenza do servidor SMB que se executa no espazo do usuario, é máis eficiente en canto a rendemento, consumo de memoria e integración con capacidades avanzadas do núcleo. Ksmbd preséntase como unha extensión Samba de alto rendemento e preparada para integrar que se integra coas ferramentas e bibliotecas de Samba segundo sexa necesario. As capacidades de ksmbd inclúen un soporte mellorado para a tecnoloxía de caché de ficheiros distribuídos (arrendamentos SMB) en sistemas locais, o que pode reducir significativamente o tráfico. No futuro, teñen previsto engadir soporte para RDMA ("smbdirect") e extensións de protocolo relacionadas co aumento da fiabilidade do cifrado e da verificación mediante sinaturas dixitais.
    • O cliente CIFS xa non admite NTLM nin os algoritmos de autenticación baseados en DES máis débiles utilizados no protocolo SMB1.
    • O soporte de multidifusión implícase na implementación de pontes de rede para vlans.
    • O controlador de enlace, usado para agregar interfaces de rede, engadiu soporte para o subsistema XDP (eXpress Data Path), que lle permite manipular os paquetes de rede na fase antes de que sexan procesados ​​pola pila de rede do núcleo de Linux.
    • A pila sen fíos mac80211 admite 6GHZ STA (Autorización Temporal Especial) nos modos LPI, SP e VLP, así como a posibilidade de configurar TWT (Hora de espertar) individual no modo de punto de acceso.
    • Engadido soporte para o MCTP (Management Component Transport Protocol), usado para a interacción entre controladores de xestión e dispositivos asociados (procesadores host, dispositivos periféricos, etc.).
    • Integración no núcleo de MPTCP (MultiPath TCP), unha extensión 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. A nova versión engade soporte para enderezos en modo de malla completa.
    • Engadíronse a netfilter controladores para fluxos de rede encapsulados no protocolo SRv6 (Segment Routing IPv6).
    • Engadiuse compatibilidade con sockmap para sockets de transmisión de Unix.
  • Оборудование
    • O controlador amdgpu admite APU Cyan Skillfish (equipado con GPU Navi 1x). A APU Yellow Carp agora admite códecs de vídeo. Compatibilidade coa GPU Aldebaran mellorada. Engadíronse novos identificadores de mapa baseados na GPU Navi 24 "Beige Goby" e RDNA2. Proponse unha implementación mellorada de pantallas virtuais (VKMS). Implementouse o soporte para controlar a temperatura dos chips AMD Zen 3.
    • O controlador amdkfd (para GPU discretas, como Polaris) implementa un xestor de memoria virtual compartida (SVM, memoria virtual compartida) baseado no subsistema HMM (Xestión de memoria heteroxénea), que permite o uso de dispositivos coas súas propias unidades de xestión de memoria (MMU). , unidade de xestión de memoria), que pode acceder á memoria principal. En particular, usando HMM, pode organizar un espazo de enderezos compartido entre a GPU e a CPU, no que a GPU pode acceder á memoria principal do proceso.
    • O controlador i915 para tarxetas de vídeo Intel amplía o uso do xestor de memoria de vídeo TTM e inclúe a capacidade de xestionar o consumo de enerxía baseado en GuC (Graphics micro Controller). Comezaron os preparativos para a implementación do soporte para a tarxeta gráfica Intel ARC Alchemist e a GPU Intel Xe-HP.
    • O controlador nouveau implementa o control de retroiluminación para os paneis eDP mediante DPCD (Datos de configuración de DisplayPort).
    • Engadiuse soporte para as GPU Adreno 7c Gen 3 e Adreno 680 ao controlador msm.
    • O controlador IOMMU está implementado para o chip Apple M1.
    • Engadido controlador de son para sistemas baseados en APU AMD Van Gogh.
    • O controlador Realtek R8188EU engadiuse á rama de posta en escena, que substituíu a versión antiga do controlador (rtl8188eu) para os chips sen fíos Realtek RTL8188EU 802.11 b/g/n.
    • Inclúese o controlador ocp_pt para a placa PCIe desenvolvida por Meta (Facebook) coa implementación dun reloxo atómico en miniatura e un receptor GNSS, que se pode usar para organizar o funcionamento de servidores de sincronización de hora exacta separados.
    • Engadido soporte para teléfonos intelixentes Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle.
    • Engadiuse soporte para ARM SoС e NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm Snapdragon SDM636, HSM8150, HSM3 placas -2G/M3e-2G, Marvell CN913x, ASpeed ​​​​AST2600 (placas de servidor Facebook Cloudripper, Elbert e Fuji), 4KOpen STiH418-b2264.
    • Engadiuse compatibilidade para paneis LCD Gopher 2b, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ilitek EJ9341NA 3300, ilitek E C-NAKCA33, Samsung IliC20 AT-KCA7430 2401, Samsung DBXNUMX, WideChips WSXNUMX .
    • Engadiuse o controlador LiteETH con soporte para controladores Ethernet utilizados nos SoC de software LiteX (para FPGA).
    • Engadiuse unha opción de baixa latencia ao controlador de audio USB para controlar a inclusión da operación no modo de latencia mínima. Tamén se engadiu a opción quirk_flags para pasar a configuración específica do dispositivo.

Ao mesmo tempo, a Latin American Free Software Foundation formou unha versión do núcleo completamente gratuíto 5.15 - Linux-libre 5.15-gnu, eliminado de elementos de firmware e controladores que conteñan compoñentes ou seccións de código non libres, cuxo alcance é limitado. polo fabricante. A nova versión implementa a saída dunha mensaxe ao rexistro sobre a finalización da limpeza. Solucionáronse os problemas coa xeración de paquetes mediante mkspec, mellorouse o soporte para paquetes snap. Elimináronse algunhas advertencias que se mostraban ao procesar o ficheiro de cabeceira firmware.h. Permitiuse a saída dalgúns tipos de avisos ("format-extra-args", comentarios, funcións e variables non utilizadas) ao construír no modo "-Werror". Engadida a limpeza do controlador gehc-achc. Código de limpeza de blob actualizado en controladores e subsistemas adreno, btusb, btintel, brcmfmac, aarch64 qcom. Detívose a limpeza dos controladores prism54 (eliminado) e rtl8188eu (substituído por r8188eu).

Fonte: opennet.ru

Engadir un comentario