Versión do núcleo de Linux 5.11

Despois de dous meses de desenvolvemento, Linus Torvalds presentou o lanzamento do kernel Linux 5.11. Entre os cambios máis salientables: soporte para enclaves Intel SGX, novo mecanismo para interceptar chamadas do sistema, bus auxiliar virtual, prohibición de montar módulos sen MODULE_LICENSE(), modo de filtrado rápido para chamadas ao sistema en seccomp, terminación do soporte para o Arquitectura ia64, transferencia de tecnoloxía WiMAX á rama de "escenificación", a capacidade de encapsular SCTP en UDP.

A nova versión inclúe 15480 correccións de 1991 desenvolvedores, o tamaño do parche é de 72 MB (os cambios afectaron a 12090 ficheiros, engadíronse 868025 liñas de código, elimináronse 261456 liñas). Aproximadamente o 46% de todos os cambios introducidos na versión 5.11 están relacionados con controladores de dispositivos, aproximadamente o 16% 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 3% están relacionados con sistemas de ficheiros e o 4% están relacionados cos subsistemas do núcleo interno.

Principais novidades:

  • Subsistema de disco, E/S e sistemas de ficheiros
    • Engadíronse varias opcións de montaxe a Btrfs para usar cando se restauran datos dun sistema de ficheiros danado: "rescue=ignorebadroots" para o montaxe, a pesar de danos nalgunhas árbores raíz (extensión, uuid, transferencia de datos, dispositivo, csum, espazo libre), " rescue=ignoredatacsums” para desactivar a comprobación da suma de comprobación de datos e “rescue=all” para activar simultaneamente os modos “ignorebadroots”, “ignoredatacsums” e “nologreplay”. A opción de montaxe "inode_cache", que antes estaba en desuso, foi descontinuada. O código preparouse para implementar compatibilidade con bloques con metadatos e datos máis pequenos que o tamaño dunha páxina (PAGE_SIZE), así como para o modo de asignación de espazo por zonas. As solicitudes sen búfer (E/S directa) movéronse á infraestrutura iomap. O rendemento dunha serie de operacións foi optimizado; nalgúns casos, a aceleración pode chegar a decenas de por cento.
    • XFS implementa a marca "needsrepair", que sinala a necesidade de reparación. Cando se establece esta marca, o sistema de ficheiros non se pode montar ata que a utilidade xfs_repair se restableza.
    • Ext4 só ofrece correccións de erros e optimizacións, así como a limpeza de código.
    • Permítese a reexportación de sistemas de ficheiros montados sobre NFS (é dicir, unha partición montada mediante NFS agora pódese exportar a través de NFS e utilizarse como caché intermedia).
    • A chamada ao sistema close_range(), que permite que un proceso peche todo un rango de descritores de ficheiros abertos á vez, engadiu unha opción CLOSE_RANGE_CLOEXEC para pechar os descritores no modo close-on-exec.
    • O sistema de ficheiros F2FS engade novas chamadas ioctl() para permitir o control no espazo do usuario sobre cales ficheiros se almacenan en forma comprimida. Engadida a opción de montaxe "compress_mode=" para escoller se colocar o controlador de compresión no lado do núcleo ou no espazo do usuario.
    • Proporcionou a posibilidade de montar Overlayfs mediante procesos sen privilexios utilizando un espazo de nomes de usuario separado. Para verificar o cumprimento da implementación do modelo de seguridade, realizouse unha auditoría de código completo. Overlayfs tamén engade a posibilidade de executarse usando copias de imaxes do sistema de ficheiros desactivando opcionalmente a comprobación de UUID.
    • O sistema de ficheiros Ceph engadiu compatibilidade co protocolo msgr2.1, que permite o uso do algoritmo AES-GCM cando se transmiten datos en forma cifrada.
    • O módulo dm-multipath implementa a capacidade de ter en conta a afinidade da CPU ("afinidade de E/S") ao elixir a ruta para as solicitudes de E/S.
  • Servizos de memoria e sistema
    • Engadiuse un novo mecanismo de interceptación de chamadas ao sistema, baseado en prctl(), que permite xerar excepcións desde o espazo de usuario ao acceder a unha chamada ao sistema específica e emular a súa execución. Esta funcionalidade é necesaria en Wine e Proton para emular as chamadas do sistema de Windows, o que é necesario para garantir a compatibilidade con xogos e programas que realizan chamadas directamente ao sistema sen pasar pola API de Windows (por exemplo, para protexer contra o uso non autorizado).
    • A chamada ao sistema userfaultfd(), deseñada para xestionar fallos de páxina (acceso a páxinas de memoria non asignadas) no espazo do usuario, agora ten a capacidade de desactivar o manexo de excepcións que se produce a nivel do núcleo para dificultar a explotación de certas vulnerabilidades.
    • O subsistema BPF engadiu soporte para o almacenamento local de tarefas, que proporciona conexión de datos a un controlador BPF específico.
    • A contabilidade do consumo de memoria dos programas BPF foi completamente redeseñado: propúxose un controlador cgroup en lugar de memlock rlimit para xestionar o uso da memoria en obxectos BPF.
    • O mecanismo BTF (BPF Type Format), que proporciona información de verificación de tipos en pseudocódigo BPF, proporciona soporte para módulos do núcleo.
    • Engadido soporte para chamadas de sistema shutdown(), renameat2() e unlinkat() á interface de E/S asíncrona io_uring. Ao chamar a io_uring_enter(), engadiuse a capacidade de especificar un tempo de espera (podes comprobar a compatibilidade do argumento para especificar un tempo de espera usando a marca IORING_FEAT_EXT_ARG).
    • A arquitectura ia64 utilizada nos procesadores Intel Itanium pasou á categoría de orfos, o que significa que cesaron as probas. Hewlett Packard Enterprise deixou de aceptar pedidos de novos equipos Itanium, e Intel fíxoo o ano pasado.
    • Descontinuouse o soporte para sistemas baseados na arquitectura MicroBlaze que non inclúen unha unidade de xestión de memoria (MMU). Estes sistemas non se ven na vida cotiá dende hai moito tempo.
    • Para a arquitectura MIPS, engadiuse soporte para probas de cobertura de código mediante a utilidade gcov.
    • Engadiuse soporte para o bus auxiliar virtual para a interface con dispositivos multifunción que combinan funcionalidades que requiren diferentes controladores (por exemplo, tarxetas de rede con soporte Ethernet e RDMA). O bus pódese usar para asignar un controlador primario e secundario a un dispositivo, en situacións nas que o uso do subsistema MFD (Dispositivos multifunción) é problemático.
    • Para a arquitectura RISC-V, engadiuse soporte para o sistema de asignación de memoria CMA (Contiguous Memory Allocator), que está optimizado para asignar grandes áreas de memoria contiguas mediante técnicas de movemento de páxinas de memoria. Para RISC-V, tamén se implementan ferramentas para limitar o acceso a /dev/mem e ter en conta o tempo de procesamento das interrupcións.
    • Para os sistemas ARM de 32 bits, engadiuse soporte para a ferramenta de depuración KASan (Kernel address sanitizer), que axuda a identificar erros ao traballar coa memoria. Para ARM de 64 bits, a implementación de KASan converteuse para usar etiquetas MTE (MemTag).
    • Engadiuse a chamada ao sistema epoll_pwait2() para permitir tempo de espera con precisión de nanosegundos (a chamada epoll_wait manipula milisegundos).
    • O sistema de compilación agora mostra un erro ao tentar construír módulos do núcleo cargables nos que a licenza de código non está definida mediante a macro MODULE_LICENSE(). A partir de agora, usar a macro EXPORT_SYMBOL() para funcións estáticas tamén provocará un erro de compilación.
    • Engadido soporte para mapear obxectos GEM desde a memoria utilizada para E/S, o que permitiu acelerar o traballo co framebuffer nalgunhas arquitecturas.
    • Kconfig abandonou o soporte para Qt4 (mentres mantén o soporte para Qt5, GTK e Ncurses).
  • Virtualización e seguridade
    • Engadiuse soporte para un modo de resposta rápida á chamada ao sistema seccomp(), que lle permite determinar moi rapidamente se unha determinada chamada ao sistema está permitida ou prohibida en función do mapa de bits de acción constante adxunto ao proceso, que non require executar un manejador BPF.
    • Compoñentes do núcleo integrados para a creación e xestión de enclaves baseados na tecnoloxía Intel SGX (Software Guard eXtensions), que permite que as aplicacións executen código en áreas de memoria cifradas illadas, ás que o resto do sistema ten acceso limitado.
    • Como parte dunha iniciativa para limitar o acceso desde o espazo do usuario ao MSR (rexistro específico do modelo), escribindo ao rexistro MSR_IA32_ENERGY_PERF_BIAS, que permite cambiar o modo de eficiencia enerxética do procesador ("normal", "rendemento", "aforro de enerxía"). , está prohibido.
    • A capacidade de desactivar a migración de tarefas de alta prioridade entre CPUs moveuse da rama kernel-rt para sistemas en tempo real.
    • Para os sistemas ARM64, engadiuse a posibilidade de usar etiquetas MTE (MemTag, Extensión de etiquetado de memoria) para os enderezos de memoria do controlador de sinal. O uso de MTE habilitase especificando a opción SA_EXPOSE_TAGBITS en sigaction() e permítelle comprobar o uso correcto dos punteiros para bloquear a explotación de vulnerabilidades causadas polo acceso a bloques de memoria xa liberados, desbordamentos de búfer, accesos antes da inicialización e uso fóra do contexto actual.
    • Engadiuse o parámetro "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", que permite ao subsistema dm-verity comprobar as sinaturas hash dos certificados colocados no anel de chaves secundario. Na práctica, a configuración permítelle verificar non só os certificados integrados no núcleo, senón tamén os certificados cargados durante o funcionamento, o que permite actualizar os certificados sen actualizar todo o núcleo.
    • O modo de usuario Linux engadiu soporte para o modo de suspensión a inactividade, que lle permite conxelar o ambiente e utilizar o sinal SIGUSR1 para espertar do modo de suspensión.
    • O mecanismo virtio-mem, que permite conectar e desconectar memoria en máquinas virtuais, engadiu soporte para o modo de bloque grande (BBM), que permite transferir ou levar memoria en bloques máis grandes que o tamaño da memoria do núcleo. bloque, que é necesario para optimizar VFIO en QEMU.
    • Engadiuse soporte para o cifrado CHACHA20-POLY1305 á implementación do núcleo de TLS.
  • Subsistema de rede
    • Para 802.1Q (VLAN), implantouse un mecanismo de xestión de fallos de conexión (CFM, Connectivity Fault Management) que permite identificar, verificar e illar fallos en redes con pontes virtuais (Virtual Bridged Networks). Por exemplo, CFM pódese usar para illar problemas en redes que abarcan varias organizacións independentes cuxos empregados só teñen acceso aos seus propios equipos.
    • Engadido soporte para encapsular paquetes de protocolo SCTP en paquetes UDP (RFC 6951), que permite usar SCTP en redes con tradutores de enderezos máis antigos que non admiten directamente SCTP, así como implementar SCTP en sistemas que non proporcionan acceso directo á IP. capa.
    • A implementación da tecnoloxía WiMAX trasladouse á posta en escena e está programada para a súa eliminación no futuro se non hai usuarios que precisen WiMAX. WiMAX xa non se usa nas redes públicas, e no núcleo o único controlador co que se pode usar WiMAX é o desactualizado controlador Intel 2400m. A compatibilidade con WiMAX descontinuouse no configurador de rede NetworkManager en 2015. Actualmente, WiMax está case completamente substituído por tecnoloxías como LTE, HSPA+ e Wi-Fi 802.11n.
    • Traballouse para optimizar o rendemento do procesamento do tráfico TCP entrante en modo de copia cero, é dicir. sen copias adicionais a novos búfers. Para o tráfico de tamaño medio, que abrangue decenas ou varios centos de kilobytes de datos, usar zerocopy en lugar de recvmsg() é notablemente máis efectivo. Por exemplo, os cambios implementados permitiron aumentar a eficiencia do procesamento de tráfico de estilo RPC con mensaxes de 32 KB ao usar zerocopy nun 60-70%.
    • Engadíronse novas chamadas ioctl() para crear pontes de rede que abranguen varias ligazóns PPP. A capacidade proposta permite que os fotogramas se movan dunha canle a outra, por exemplo, dunha sesión PPPoE a unha sesión PPPoL2TP.
    • 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 introduce compatibilidade coa opción ADD_ADDR para anunciar os enderezos IP dispoñibles aos que se poden conectar cando se engaden novos fluxos a unha conexión MPTCP existente.
    • Engadida a posibilidade de configurar accións cando se supera o orzamento de sondeo de conexión (enquisa ocupada). O modo SO_BUSY_POLL dispoñible anteriormente significaba cambiar a softirq cando se esgotaba o orzamento. Para as aplicacións que precisan seguir usando a enquisa, proponse unha nova opción SO_PREFER_BUSY_POLL.
    • IPv6 implementa soporte para os modos SRv6 End.DT4 e End.DT6, usados ​​para crear VPN L4 IPv3 multiusuario e dispositivos VRF (enrutamento e reenvío virtual).
    • Netfilter unificou a implementación de expresións de conxunto, o que permitiu especificar varias expresións para cada elemento das listas de conxuntos.
    • Engadíronse API á pila sen fíos 802.11 para configurar os límites de potencia SAR, así como os parámetros AE PWE e HE MCS. O controlador Intel iwlwifi engadiu soporte para a gama de 6 GHz (Ultra High Band). O controlador Qualcomm Ath11k engadiu compatibilidade coa tecnoloxía FILS (Fast Initial Link Setup, estandarizada como IEEE 802.11ai), que che permite desfacerse dos atrasos de itinerancia durante a migración dun punto de acceso a outro.
  • Оборудование
    • O controlador amdgpu ofrece soporte para APU AMD "Green Sardine" (Ryzen 5000) e GPU "Dimgrey Cavefish" (Navi 2), así como soporte inicial para APU AMD Van Gogh con núcleo Zen 2 e GPU RDNA 2 (Navi 2). Engadido soporte para novos identificadores de APU Renoir (baseados na CPU Zen 2 e na GPU Vega).
    • O controlador i915 para tarxetas de vídeo Intel admite a tecnoloxía IS (escalado enteiro) coa implementación dun filtro para aumentar a escala tendo en conta o estado dos píxeles veciños (interpolación do veciño máis próximo) para determinar a cor dos píxeles que faltan. Ampliouse a compatibilidade con tarxetas Intel DG1 discretas. Implementouse o soporte para a tecnoloxía "Big Joiner", que estivo presente desde os chips Ice Lake / Gen11 e permite o uso dun transcodificador para procesar dous fluxos, por exemplo, para a saída a unha pantalla 8K a través dun DisplayPort. Engadiuse un modo para cambiar de forma asíncrona entre dous búfers na memoria de vídeo (flip asíncrono).
    • O controlador nouveau engadiu soporte inicial para as GPU NVIDIA baseadas na microarquitectura Ampere (GA100, GeForce RTX 30xx), ata agora limitada a ferramentas para controlar os modos de vídeo.
    • Engadido soporte para o protocolo 3WIRE usado nos paneis LCD. Engadido soporte para paneis novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 e ABT Y030XX067A 3.0. Por separado, podemos destacar o soporte para o panel dos teléfonos intelixentes OnePlus 6 e 6T, que permitiu organizar a carga dun núcleo sen modificar nos dispositivos.
    • Engadido soporte para o primeiro controlador de host USB4 discreto de Intel, Maple Ridge.
    • Engadiuse soporte para Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI e XCVR, códecs de audio Realtek RT715 e Qualcomm SM8250.
    • Engadiuse soporte para placas, dispositivos e plataformas ARM: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Armada 730 NPl, Marvel 382, Marvel ​Mikrotik baseado en Marvell Prestera 98DX3236, servidores con Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, Chromebook “Trogdor”, Kobol Helios64, Engicam PX30.Core.
    • Soporte integrado para a consola de xogos Ouya baseada en NVIDIA Tegra 3.

Ao mesmo tempo, a Fundación Latinoamericana de Software Libre formou unha versión do núcleo 5.11 completamente gratuíto - Linux-libre 5.11-gnu, eliminada 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 limpa controladores para qat_4xxx (crypto), lt9611uxcm (ponte dsi/hdmi), ccs/smia++ (sensor), ath11k_pci, transceptor de audio nxp e controlador mhi pci. Código de limpeza de blob actualizado en controladores e subsistemas amdgpu, btqca, btrtl, btusb, i915 csr. Desactiváronse os novos blobs en m3 rproc, idt82p33 ptp clock e qualcomm arm64.

Fonte: opennet.ru

Engadir un comentario