Lançamento do núcleo Linux 5.17

Após dois meses de desenvolvimento, Linus Torvalds apresentou o lançamento do núcleo Linux 5.17. Entre as mudanças mais notáveis estão: um novo sistema de gerenciamento de desempenho para processadores AMD, a capacidade de mapeamento recursivo de identificadores de usuários em sistemas de arquivos, suporte a programas BPF compilados portáteis, a transição do gerador de números pseudo-aleatórios para o algoritmo BLAKE2s, a ferramenta RTLA para análise de execução em tempo real, um novo backend fscache para cache de sistemas de arquivos em rede, e a possibilidade de anexar nomes a operações anônimas mmap.

A nova versão inclui 14203 correções de 1995 desenvolvedores, e o tamanho do patch é de 37 MB (as mudanças afetaram 11366 arquivos, adicionando 506043 linhas de código e removendo 250954 linhas). Cerca de 44% de todas as alterações apresentadas no 5.17 estão relacionadas a drivers de dispositivos, aproximadamente 16% dizem respeito a atualizações de código específicas de arquiteturas de hardware, 15% estão ligadas à pilha de rede, 4% a sistemas de arquivos e 4% a subsistemas internos do núcleo.

Principais novidades no núcleo 5.17:

  • Subsistema de disco, entrada/saída e sistemas de arquivos
    • Implementada a possibilidade de mapeamento aninhado de identificadores de usuários em sistemas de arquivos montados, usada para correlacionar arquivos de um determinado usuário em uma partição externa montada com outro usuário no sistema atual. A nova funcionalidade permite usar recursivamente o mapeamento em cima de sistemas de arquivos em que já é aplicado o mapeamento.
    • O subsistema fscache foi completamente reescrito, utilizado para organizar o cache em um sistema de arquivos local de dados transmitidos através de sistemas de arquivos em rede. A nova implementação apresenta uma simplificação significativa do código e a substituição de operações complexas de agendamento e rastreamento de estados de objetos por mecanismos mais simples. O suporte ao novo fscache foi implementado no sistema de arquivos CIFS.
    • No subsistema de rastreamento de eventos no sistema de arquivos fanotify, foi implementado um novo tipo de evento FAN_RENAME, que permite interceptar de uma só vez a operação de renomeação de arquivos ou diretórios (anteriormente, para lidar com renomeações, eram utilizados dois eventos separados, FAN_MOVED_FROM e FAN_MOVED_TO).
    • No sistema de arquivos Btrfs, foram otimizadas as operações de registro e fsync para diretórios grandes, implementando apenas a cópia de chaves de índice e reduzindo o volume de metadados registrados. Foi garantido suporte à indexação e pesquisa com base no tamanho dos registros de espaço livre, permitindo uma redução de cerca de 30% na latência e diminuindo o tempo de busca. As operações de desfragmentação podem agora ser interrompidas. A possibilidade de adicionar dispositivos sem equilibrar entre os armazenamentos foi incluída, ou seja, ao montar o FS com a opção skip_balance.
    • Foi proposto um novo sintaxe de montagem para o sistema de arquivos Ceph, resolvendo problemas anteriores relacionados ao vínculo com endereços IP. Além disso, endereços IP para determinar o servidor, agora pode-se usar o identificador de cluster (FSID): mount -t ceph user@fsid.fs_name=\/[subdir] mnt -o mon_addr=monip1[:port][\/monip2[:port]]
    • O sistema de arquivos Ext4 foi migrado para uma nova API de montagem, que separa as fases de análise das opções de montagem e a configuração do superbloco. Foi descontinuado o suporte para as opções de montagem lazytime e nolazytime, que foram adicionadas como uma alteração temporária para facilitar a migração do util-linux para o uso da flag MS_LAZYTIME. Adicionado suporte para instalação e leitura de rótulos no FS (ioctl FS_IOC_GETFSLABEL e FS_IOC_SETFSLABEL).
    • O NFSv4 agora tem suporte para operar em sistemas de arquivos que não diferenciam maiúsculas de minúsculas em nomes de arquivos e diretórios. No NFSv4.1+ foi adicionado suporte para a definição de sessões agregadas (trunking).
  • Memória e serviços do sistema
    • Adicionado o driver amd-pstate, que fornece gerenciamento dinâmico de frequência para alcançar desempenho ideal. O driver suporta CPUs e APUs AMD a partir da geração Zen 2, desenvolvido em colaboração com a Valve e focado em aumentar a eficiência do gerenciamento de consumo de energia. Para a alteração adaptativa de frequência, é utilizado o mecanismo CPPC (Collaborative Processor Performance Control), que permite alterar os indicadores de forma mais precisa (não limitado a três níveis de desempenho) e responder mais rapidamente às mudanças de estado, em comparação com os drivers P-state anteriores baseados em ACPI (CPUFreq).
    • No subsistema eBPF, foi proposta a função bpf_loop(), que oferece uma alternativa para organizar loops em programas eBPF, sendo mais rápida e mais fácil de verificar pelo verificador.
    • No nível do núcleo, foi implementado o mecanismo CO-RE (Compile Once — Run Everywhere), que permite compilar o código de programas eBPF uma única vez e usar um carregador universal especial que adapta o programa carregado ao núcleo atual e aos tipos BTF (BPF Type Format).
    • Foi adicionada a possibilidade de nomear áreas de memória anônima privada (alocadas através de malloc), o que pode simplificar a depuração e a otimização do uso de memória em aplicações. Os nomes são atribuídos através do prctl com a flag PR_SET_VMA_ANON_NAME e aparecem em /proc/pid/maps e /proc/pid/smaps na forma "[anon:]".
    • No escalonador de tarefas, foi assegurado o rastreamento e a exibição em /proc/PID/sched do tempo que os processos passaram em estado de idle forçado (forced-idle), aplicado, por exemplo, para reduzir a carga em caso de superaquecimento do processador.
    • Adicionado o módulo gpio-sim, destinado à simulação de chips GPIO para testes.
    • Foi adicionada à ferramenta "perf ftrace" o subtipo "latency" para gerar histogramas com informações sobre latências.
    • Foi adicionado um conjunto de utilitários "RTLA" para analisar o funcionamento em tempo real. Isso inclui utilitários como osnoise (que determina a influência do sistema operacional na execução da tarefa) e timerlat (que altera as latências relacionadas ao timer).
    • Integrado a segunda série de patches com a implementação do conceito de folhetos de páginas de memória (page folios), que se assemelham às páginas de memória compostas (compound pages), mas com semântica aprimorada e organização de trabalho mais clara. O uso de folhetos permite acelerar a gestão de memória em alguns subsistemas do núcleo. Nos patches propostos, a tradução do cache de página para o uso de folhetos foi concluída e o suporte inicial para folhetos foi adicionado ao sistema de arquivos XFS.
    • Adicionado o modo de construção "make mod2noconfig", que gera uma configuração que compila todos os subsistemas desativados na forma de módulos do núcleo.
    • Aumentadas as exigências de versão do LLVM/Clang que podem ser usadas para compilar o núcleo. Para a compilação, agora é necessário pelo menos a versão 11 do LLVM.
  • Virtualização e segurança
    • Foi proposta uma implementação atualizada do gerador de números pseudoaleatórios RDRAND, responsável pelo funcionamento dos dispositivos /dev/random e /dev/urandom, notável pela transição para o uso da função de hash BLAKE2s em vez de SHA1 para operações de mistura de entropia. A mudança permitiu aumentar a segurança do gerador de números pseudoaleatórios ao eliminar o problemático algoritmo SHA1 e excluir a reescrita do vetor de inicialização do RNG. Como o algoritmo BLAKE2s supera o SHA1 em desempenho, sua aplicação também teve um impacto positivo na performance.
    • Foi adicionada proteção contra vulnerabilidades em processadores causadas pela execução especulativa de instruções após operações de salto incondicional direto. O problema surge devido ao processamento antecipado de instruções que estão na memória logo após o comando de salto (SLS, Straight Line Speculation). Para ativar a proteção, é necessária uma compilação utilizando a versão GCC 12, que está em fase de testes.
    • Foi adicionado um mecanismo de rastreamento de contagem de referências (refcount, reference-count) com o objetivo de reduzir o número de erros na contagem de referências que levam ao acesso à memória após a sua liberação. O mecanismo ainda está restrito à subsistema de rede, mas no futuro pode ser adaptado para outras partes do núcleo.
    • Verificações ampliadas foram implementadas para novas entradas na tabela de páginas de memória do processo, permitindo identificar alguns tipos de corrupção e interromper o sistema, bloqueando ataques em estágio inicial.
    • Foi adicionada a capacidade de descompactar módulos do núcleo diretamente pelo próprio núcleo, em vez de um manipulador em espaço do usuário, permitindo que, por meio do módulo LSM LoadPin, se garanta que os módulos do núcleo sejam carregados na memória a partir de um dispositivo de armazenamento verificado.
    • Foi garantida a compilação com a flag "-Wcast-function-type", que ativa a exibição de avisos sobre conversões de ponteiros de funções para tipos incompatíveis.
    • Foi adicionado um driver de host virtual pvUSB para o hypervisor Xen, oferecendo acesso aos dispositivos USB repassados para os sistemas convidados (permitindo que os sistemas convidados acessem os dispositivos USB físicos alocados ao sistema convidado).
    • Adicionado um módulo que permite a interação via Wi-Fi com o subsistema IME (Intel Management Engine), que é fornecido na maioria das placas-mãe modernas com processadores Intel e implementado como um microprocessador separado, funcionando de forma independente da CPU.
    • Para a arquitetura ARM64, foi implementado o suporte ao instrumento de depuração KCSAN (Kernel Concurrency Sanitizer), destinado a detectar dinamicamente condições de corrida dentro do núcleo.
    • Para sistemas ARM de 32 bits, foi adicionada a possibilidade de utilizar o mecanismo KFENCE para identificar erros ao trabalhar com memória.
    • No hipervisor KVM, foi adicionado o suporte a instruções AMX (Advanced Matrix Extensions), que serão implementadas em futuros processadores de servidor Intel Xeon Scalable.
  • Subsistema de Rede
    • Foi adicionada a opção de descarregar (offloading) para dispositivos de rede as operações relacionadas ao gerenciamento de tráfego.
    • Foi adicionada a possibilidade de usar o protocolo MCTP (Management Component Transport Protocol) sobre dispositivos com interface serial. O MCTP pode ser utilizado para interagir com controladores de gerenciamento e dispositivos relacionados (como processadores hospedeiros, dispositivos periféricos, etc.).
    • O stack TCP foi otimizado, por exemplo, para aumentar o desempenho das chamadas recvmsg, foi implementada a liberação tardia dos buffers dos sockets.
    • No nível de permissões CAP_NET_RAW, foi permitido a configuração, através da função setsockopt, dos modos SO_PRIORITY e SO_MARK.
    • Para IPv4, foi permitido o anexo de sockets raw não a endereços IP locais, usando as opções IP_FREEBIND e IP_TRANSPARENT.
    • Adicionado o sysctl arp_missed_max para ajustar o número limite de falhas ao verificar o monitor ARP, após o qual a interface de rede é colocada em estado desligado.
    • Foi disponibilizada a possibilidade de configurar valores sysctl específicos min_pmtu e mtu_expires para espaços de nomes de rede.
    • Na API ethtool, foi adicionada a possibilidade de definir e determinar o tamanho dos buffers de pacotes de entrada e saída.
    • No Netfilter, foi adicionado o suporte à filtragem de tráfego PPPoE transitório na ponte de rede.
    • No módulo ksmbd, que implementa o compartilhamento de arquivos usando o protocolo SMB3, foi adicionado o suporte à troca de chaves, envolvendo a porta de rede 445 para smbdirect, e foi adicionado o suporte ao parâmetro 'smb2 max credit. servidor, usando o protocolo SMB3, foi adicionada a suporte para troca de chaves, a porta de rede 445 foi ativada para smbdirect e foi adicionada a suporte para o parâmetro «smb2 max credit.
  • Hardware
    • O subsistema drm (Direct Rendering Manager) e o driver i915 agora suportam telas para a exibição de informações confidenciais, por exemplo, alguns laptops vêm com telas que possuem um modo de visualização confidencial embutido, dificultando a visualização lateral. As alterações adicionadas permitem a conexão de drivers especializados para tais telas e gerenciam os modos de visualização confidencial através da definição de propriedades em drivers KMS padrão.
    • O driver amdgpu agora inclui suporte para a tecnologia de depuração STB (Smart Trace Buffer) para todas as GPUs AMD que a suportam. O STB simplifica a análise de falhas e identificação de problemas por meio do armazenamento em um buffer especial de informações sobre as funções executadas antes da última falha.
    • O driver i915 agora suporta os chips Intel Raptor Lake S e inclui por padrão o suporte ao subsistema gráfico dos chips Intel Alder Lake P. Foi fornecida a capacidade de gerenciar a retroiluminação da tela através da interface DPCD VESA.
    • Nos drivers fbcon/fbdev, o suporte para aceleração de hardware de rolagem no console foi restaurado.
    • Continuou a integração de alterações para suporte aos chips Apple M1. Foi implementada a capacidade de usar o driver simpledrm em sistemas com chip Apple M1 para saída através do framebuffer fornecido pelo firmware.
    • Adicionado suporte a SoCs ARM, dispositivos e placas Snapdragon 7c, 845 e 888 (Sony Xperia XZ2/XZ2C/XZ3, Xperia 1 III/5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (utilizado em roteadores Wi-Fi), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
    • Adicionado suporte para processadores ARM Cortex-M55 e Cortex-M33.
    • Adicionado suporte para dispositivos baseados em CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Adicionado suporte ao SoC StarFive JH7100 baseado na arquitetura RISC-V.
    • Adicionado o driver lenovo-yogabook-wmi para gerenciar a retroiluminação do teclado e acessar vários sensores no Lenovo Yoga Book.
    • Adicionado o driver asus_wmi_sensors para acessar os sensores utilizados em placas-mãe Asus X370, X470, B450, B550 e X399 baseadas em processadores AMD Ryzen.
    • Adicionado o driver x86-android-tablets para tablets baseados na arquitetura x86, fornecidos com a plataforma Android.
    • Suporte adicionado para telas sensíveis ao toque do TrekStor SurfTab duo W1 e para a caneta eletrônica nos tablets Chuwi Hi10 Plus e Pro.
    • Os drivers para o SoC Tegra 20/30 agora incluem suporte para gerenciamento de energia e tensão. Possibilitada a inicialização em dispositivos antigos de 32 bits baseados no SoC Tegra, como ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 e Pad TF300TG.
    • Drivers adicionados para computadores industriais da Siemens.
    • Suporte adicionado para painéis LCD Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA e Team Source Display TST043015CMHX.
    • Suporte adicionado para sistemas de som e codecs AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, sistemas Intel usando NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PIDF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Problemas com áudio HD Tegra194 foram resolvidos. Suporte HDA adicionado para codecs CS35L41. Melhorias no suporte a sistemas de som para notebooks Lenovo e HP, assim como placas-mãe Gigabyte.

Fonte: opennet.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