Linux 7.1

Após dois meses de desenvolvimento, Linus Torvalds apresentou lançamento do núcleo Linux 7.1. Entre as mudanças mais notáveis estão: o novo driver ntfsplus, o início da descontinuação do suporte ao CPU i486, a remoção de antigos adaptadores Ethernet, a eliminação dos protocolos ISDN e AX.25, a ativação padrão do mecanismo Intel FRED, suporte a manipuladores BPF no io_uring, otimização do subsistema de swap, suporte a subescalonadores no sched_ext, entrada/saída em modo zero-copy no driver ublk, operação ioctl shutdown no Btrfs, troca dinâmica do modo de desempenho no driver amd-pstate e suporte a xattr para sockets Unix.

A nova versão inclui 17275 correções de 2589 desenvolvedores, o tamanho do patch é de 57 MB (as mudanças afetaram 13528 arquivos, foram adicionadas 751785 linhas de código e removidas 405916 linhas). Na versão anterior, houve 15624 correções de 2477 desenvolvedores, com um tamanho de patch de 56 MB. Aproximadamente 41% de todas as mudanças apresentadas no 7.1 estão relacionadas a drivers de dispositivos, cerca de 12% referem-se à atualização de código específico de arquiteturas de hardware, 14% estão ligadas à pilha de rede, 5% a sistemas de arquivos e 3% a subsistemas internos do núcleo.

As principais inovações no núcleo 7.1 (kernelnewbies.org, lwn.net, opennet):

Subsistema de disco, entrada/saída e sistemas de arquivos
  • Foi aceita uma nova implementação do sistema de arquivos NTFS — ntfsplus, baseada no código do driver ntfs clássico, que foi removido do núcleo. O antigo driver foi reestruturado, ampliado com a capacidade de gravação de dados e adaptado para suportar recursos modernos, como o uso de folhetos de páginas de memória em vez da estrutura buffer_head. O novo driver implementou a alocação de blocos sob demanda, o que proporcionou alto desempenho nas operações de gravação e diminuição da fragmentação. Para operações de gravação/leitura em buffer, I/O direto, mapeamento de extensões e operações de gravação/leitura de páginas, foi utilizada a biblioteca iomap. Nos testes do iozone, o driver ntfsplus se mostrou de 3 a 5% mais rápido que o ntfs3 em gravações em modo de thread única e de 35 a 110% mais rápido ao utilizar 4 threads. A velocidade de leitura do ntfsplus e do ntfs3 está em níveis semelhantes. O driver ntfs3 permanece no núcleo e nele foram feitas correções e pequenas melhorias.
  • Foi adicionado o suporte à geração e verificação de dados de integridade T10 (deepwiki.com) no nível do sistema de arquivos, e não no bloco do dispositivo, o que permite um aumento no desempenho das operações de leitura.
  • No driver de dispositivos de bloco ublk, permitindo movimentar lógica específica para o lado do processo no espaço do usuário, foi adicionada suporte para entrada/saída através de memória compartilhada sem copiar dados entre buffers (modo zero-copy).
  • Para dispositivos de bloco auto-encriptados SED-OPAL foram adicionados ioctl para gerenciar o modo Usuário Único e implementou o comando STACK_RESET.
  • No Btrfs, foi declarada estável a operação ioctl de shutdown, permitindo que o sistema de arquivos entre em um estado em que se tenta concluir operações já iniciadas, mas bloqueando todas as novas operações.
  • No exfat, foi implementada a possibilidade de reservar áreas vazias através da chamada fallocate().
  • No sistema de arquivos CIFS, foi adicionada a capacidade de criar arquivos temporários com a flag O_TMPFILE.
  • Na chamada de sistema fsmount() foi adicionada a opção FSMOUNT_NAMESPACE, que cria um novo espaço de nomes para os pontos de montagem do sistema de arquivos montado. As chamadas de sistema clone3() e unshare() agora incluem flags para retornar um novo espaço de nomes de pontos de montagem, contendo apenas um sistema de arquivos vazio montado baseado em nullfs, driver fs-dax com interface de sistema de arquivos para dispositivos DAX (Acesso Direto).
  • No servidor NFS foi adicionada proteção contra ataques de enumeração de descritores de arquivos, implementada através da assinatura criptográfica de descritores. A proteção é ativada pela opção de montagem sign_fh.
  • Adicionado driver de caracteres fs-dax, fornecendo uma interface para interação com dispositivos DAX (kernel.org) (Acesso Direto), que suportam operação em contorno ao cache de páginas. Esta interface é necessária para integração no núcleo do sistema de arquivos famfs, alocada na memória.
  • No sistema de arquivos Ceph implementado coleta de métricas de entrada/saída vinculadas a partições.
Memória e serviços do sistema
  • A primeira série de mudanças para encerrar o suporte a processadores i486 foi aceita. As opções para compilar o núcleo com suporte a processadores 486DX, 486SX e AMD ELAN (CONFIG_M486, CONFIG_M486SX e CONFIG_MELAN) foram removidas do Kconfig, e as opções de compilação para sistemas i486 (-march=i486) foram excluídas do Makefile. O código para suporte efetivo em processadores i486 permanece no núcleo, mas a compilação para tais sistemas agora exigirá a aplicação de patches nos arquivos de compilação. As razões para a remoção do suporte a processadores i486 estão ligadas ao desejo de simplificar o núcleo, removendo código que emulava certas operações de hardware, como CX8 (comparar e trocar 8 bytes) e TSC (contador de ciclos de CPU, usado no escalonador de tarefas).
  • No driver amd-pstate, utilizado para gerenciar o consumo de energia em sistemas com processadores AMD, implementado alternância dinâmica das configurações de desempenho e mudança do comportamento de gerenciamento de energia dependendo do uso de alimentação externa ou de bateria. Quando conectado à alimentação, o modo performance é ativado, enquanto na operação com bateria, o modo balance_performance é aplicado.
  • O mecanismo Intel FRED (Flexible Return and Event Delivery) foi acionado por padrão, permitindo aumentar a eficiência e a confiabilidade na entrega de informações sobre eventos de baixo nível. O aumento do desempenho e a diminuição das latências são proporcionados pelo retorno dos eventos usando a instrução de processador IRET em vez de transmitir eventos através da tabela IDT (Interrupt Descriptor Table). A confiabilidade é aprimorada através da manipulação separada da chegada do evento no contexto do núcleo e no contexto do usuário, proteção contra a execução aninhada de NMI e armazenando todos os registradores da CPU relacionados a exceções em uma estrutura de pilha estendida.
  • No subsistema perf, foi adicionada suporte a blocos de monitoramento de desempenho de memória (PMU - Performance Monitoring Unit), utilizados no SoC NVIDIA Tegra410.
  • As operações futex em sistemas ARM foram aceleradas devido à utilização das instruções Arm 9.6 LSUI, permitindo que o núcleo acesse a memória do espaço do usuário sem desativar previamente o modo de proteção. PAN (arm.com) (Privileged Access Never).
  • Em sistemas com processadores ARM, foi melhorado o suporte para a extensão do conjunto de instruções MPAM (Memory System Resource Partitioning and Monitoring) e adicionada a possibilidade de seu uso no espaço do usuário para gerenciar recursos através do mecanismo resctrl.O MPAM permite que cada acesso à memória seja marcado com um identificador de seção (PARTID, Partition ID) e um identificador de grupo de monitoramento (PMG, Monitoring Group ID). Em associação ao PARTID, é possível restringir o consumo de recursos, como largura de banda de memória ou tamanho do cache, para que um grupo de tarefas não consuma todos os recursos. No contexto de monitoramento, a combinação de PMG e PARTID pode ser usada para rastrear o consumo de recursos de memória sob determinados tipos de carga.
  • Adicionada possibilidade de uso do modo de tempo real (PREEMPT_RT) em processadores ARM de 32 bits. Anteriormente, o suporte ao PREEMPT_RT era oferecido para arquiteturas x86 e x86-64, ARM64, RISC-V e LoongArch.
  • Na chamada de sistema clone3() novas flags adicionadas: CLONE_NNP — proibição de aquisição de novas permissões no processo criado; CLONE_AUTOREAP — finalização automática do processo em vez de transformá-lo em um processo zumbi até que a função wait() seja chamada pelo processo pai; CLONE_PIDFD_AUTOKILL — finalização do processo filho no caso de fechamento do descritor pidfd associado (por exemplo, ao finalizar o processo pai).
  • Para cada módulo do núcleo, foi adicionado um arquivo import_ns no diretório /sys/module, contendo uma lista de namespaces de símbolos importados (namespace de símbolos).
  • O sistema de entrada/saída assíncrono io_uring agora suporta o uso do subsistema BPF para criar manipuladores. Por exemplo, é possível substituir o loop principal de despacho por um programa BPF.
  • No subsistema BPF modernizado a análise do uso da pilha, o que acelerou significativamente a verificação de muitos programas BPF pelo verificador.
  • Com o objetivo de otimização de desempenho reescrita o subsistema hrtimer (high resolution timer). O agendador de tarefas agora pode usar timers de alta resolução sem perder desempenho em comparação com timers menos precisos.
  • Continuou-se a transferência de alterações da branch Rust-for-Linux, relacionadas ao uso da linguagem Rust como segunda linguagem para o desenvolvimento de drivers e módulos do núcleo (o suporte a Rust não está ativado por padrão e não leva à inclusão do Rust como dependência obrigatória para a compilação do núcleo). Até a versão 1.85 (disponível no Debian 13), aumentaram os requisitos de versão do Rust necessários para a compilação dos componentes do núcleo. Adicionada a opção Kconfig experimental CONFIG_RUST_INLINE_HELPERS para incorporar ponteiros em C no código Rust durante a compilação (a otimização acelerou o funcionamento do driver de bloco null em 2%). Adicionado o macro ‘const_assert!’. Ampliadas as capacidades dos módulos sizes, clk, ptr, sync, error.
  • No mecanismo SCHED_EXT, permitindo o uso do BPF para criar agendadores de CPU, foi adicionada uma capacidade inicial de criação de agendadores aninhados (sub-scheduler), através dos quais cada cgroup pode utilizar seu próprio agendador de tarefas.
  • A otimização do subsistema de troca (swap) continuou. A antiga estrutura swap_map foi removida e substituída por um mecanismo “Tabela de Troca”. A mudança aumentou o desempenho e diminuiu o consumo de memória no subsistema de troca.
  • No subsistema DAMON (Data Access MONitor), que permite rastrear o acesso de processos a dados na memória RAM (por exemplo, é possível descobrir quais áreas da memória um processo acessou e quais áreas permaneceram não utilizadas), foi adicionada suporte a diferentes algoritmos de afinação de quotas.
  • No subsistema de rastreamento são implementadas a conceito de buffers circulares externos, permitindo obter dados de rastreamento de máquinas virtuais. A possibilidade está disponível em hipervisores KVM e nVHE para a transmissão de dados de rastreamento do sistema convidado para o lado do host.
  • No subsistema RV (kernel.org) (Runtime Verification), destinada a verificar a correção do funcionamento de sistemas de alta confiabilidade, foram adicionados componentes de monitoramento "stall" para rastrear tarefas cuja execução foi temporariamente suspensa ou bloqueada, e "deadline" para analisar o comportamento do escalonador de tarefas.
Virtualização e segurança
  • Por padrão, o sinal PROC_MEM_FORCE_PTRACE está ativado, permitindo contornar os direitos de acesso à memória do processo através do arquivo /proc/PID/mem apenas para processos que aplicam a chamada de sistema ptrace() para depuração.
  • Adicionado um novo conjunto de hooks para módulos LSM (Linux Security Module), facilitando a implementação de políticas para sistemas de arquivos empilhados, como overlayfs. No LSM também o sinalizador -k para integração com hook para gerenciar o acesso a soquetes Unix, que é utilizado no módulo LSM Landlock para atribuição de políticas de acesso a soquetes Unix.
  • Na biblioteca criptográfica embutida lib/crypto, que fornece funções mais simples e rápidas do que a API criptográfica tradicional, foi adicionada suporte aos algoritmos AES-CMAC, AES-XCBC-MAC, AES-CBC-MAC, GHASH e SM3. Adicionada documentação suporte em lib/crypto.
  • Implementado o modo pKVM (Protected KVM) para isolamento rigoroso de memória anônima usando extensões de virtualização para a arquitetura AArch64. Nesse modo, as páginas de memória do convidado são excluídas da tabela de endereços virtuais do sistema host.
  • No hipervisor KVM, foi adicionada a compatibilidade com a quinta versão do controlador de interrupções virtual ARM (VGICv5 — ARM Virtual Generic Interrupt Controller v5).
Subsistema de Rede
  • Para soquetes Unix criados pela função socket(), são implementadas suporte a atributos estendidos de arquivos (xattr) user.*. Entre as aplicações, destaca-se a atribuição de rótulos por meio de atributos estendidos a soquetes Unix usados para IPC Varlink, com o objetivo de destacá-los para inspeção e depuração do funcionamento do IPC utilizando programas BPF. No systemd-journald, atributos estendidos devem ser utilizados para determinar o formato do log em relação ao soquete /dev/log.
  • Removido suporte ao protocolo UDP-Lite (RFC 3828), que permite a entrega de pacotes com somas de verificação incorretas, considerando que, por exemplo, dados de áudio e vídeo parcialmente danificados podem ser recuperados no nível do codec. O protocolo foi removido, pois ninguém o utiliza.
  • Removida a capacidade de construção da pilha IPv6 na forma de um módulo do kernel, que não era utilizada na prática (IPv6 é ou incorporado ao kernel ou completamente desativado), mas complicava a manutenção, pois ao construir o IPv6 como um módulo do kernel (CONFIG_IPV6=m), muitas subsistemas eram forçadas a adicionar manipuladores desnecessários para o caso da descarga do módulo IPv6.
Hardware
  • No driver AMDGPU incluso novo motor de exibição (DC) para APU AMD da série HD 7000 (Sea Islands, GCN 1.1).
  • No driver Nouveau foi adicionada suporte inicial para GPU NVIDIA GA100 baseada na microarquitetura Ampere.
  • O trabalho continuou no driver drm (Direct Rendering Manager) Xe para GPU baseada na arquitetura Intel Xe, que é utilizada em placas de vídeo Intel da família Arc e gráficos integrados, começando com os processadores Tiger Lake. Adicionado suporte ao subsistema gráfico dos processadores Intel Nova Lake-P. Foram implementados objetos de buffer limpos (Purgeable Buffer Objects).
  • A integração dos componentes do driver Nova para GPUs NVIDIA equipadas com firmwares GSP, que são utilizados a partir da série NVIDIA GeForce RTX 2000 com arquitetura Turing, foi continuada. O driver foi escrito na linguagem Rust. A suporte inicial para GPUs baseadas na arquitetura Turing foi adicionada.
  • Adicionado Driver DRM corebootdrm para saída gráfica através do framebuffer de firmwares baseados em CoreBoot.
  • Adicionada suporte para dispositivos de áudio ASoC AMD RPL DMIC, Cirrus Logic CS42L43, CS47L47, NVIDIA CPCAP e WM8962. Melhorado o suporte para dispositivos de áudio com interface USB: Huawei Headset, Focusrite Novation, MV-Silicon, Studio 1824, Arturia AF16Rig, Hotone Audio, Feaulle Rainbow, PreSonus AudioBox, Moondrop Ju Jiu, Scarlett 18i20.
  • Adicionado Driver yogafan para monitorar a velocidade de rotação do ventilador em laptops Lenovo Yoga, Legion e IdeaPad.
  • Adicionada suporte a placas ARM, SoC e dispositivos: Qualcomm Glymur, Qualcomm Mahua, Qualcomm Eliza, Qualcomm IPQ5210, Qualcomm apq8084 e ipq806x, Axis ARTPEC-9, ARM Zena, ARM corstone-1000-a320, Microchip LAN9691, Microchip PIC64GX, Rockchip RV1103B, Renesas RZ/G3L, NXP S32N79.
  • Removido suporte para controladores AHCI SATA e PCIe usados em SoC Baikal-T1, bem como drivers de temporizador, memória, physmap, barramento, hwmon, dwc e bt1-rom. A razão para a remoção é a falta de manutenção e a integração inacabada dos componentes da plataforma Baikal no núcleo, cuja produção na Rússia foi encerrada em novembro de 2025.
  • método não padrão 12 drivers para dispositivos Ethernet com interfaces ISA e PCMCIA, fabricados até 2002, para os quais não foram encontrados usuários aplicando-os em sistemas operacionais. Também excluídos do núcleo estão os subsistemas ISDN, implementações de protocolos AX.25, CAIF e Bluetooth CMTP (Common ISDN Application Programming Interface Message Transport Protocol), drivers yellowfin (Yellowfin Gigabit-NIC), hamachi (Hamachi GNIC-II), hamradio (Radioamador). inport e logibm (busmouse). A razão da remoção foi a falta de mantenedores ativos em meio ao aumento do número de erros identificados por meio de syzbot e ferramentas de IA, que ninguém se propõe a corrigir, e toda a carga para resolver problemas sérios recai sobre os mantenedores dos principais subsistemas de rede do núcleo. No total, mais de 140 mil linhas de código foram removidas.

Fonte: linux.org.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster