Kernel Linux versão 5.17

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

A nova versão inclui 14203 correções de 1995 desenvolvedores, o tamanho do patch é de 37 MB (as alterações afetaram 11366 arquivos, 506043 linhas de código foram adicionadas, 250954 linhas foram excluídas). Cerca de 44% de todas as alterações introduzidas na versão 5.17 estão relacionadas a drivers de dispositivos, aproximadamente 16% das alterações estão relacionadas à atualização de código específico para arquiteturas de hardware, 15% estão relacionadas à pilha de rede, 4% estão relacionadas a sistemas de arquivos e 4% estão relacionados aos subsistemas internos do kernel.

Principais inovações no kernel 5.17:

  • Subsistema de disco, E/S e sistemas de arquivos
    • Implementada a possibilidade de mapeamento aninhado de IDs de usuários de sistemas de arquivos montados, usado para comparar arquivos de um usuário específico em uma partição externa montada com outro usuário no sistema atual. O recurso adicionado permite usar mapeamento recursivamente sobre sistemas de arquivos para os quais o mapeamento já está aplicado.
    • O subsistema fscache, usado para organizar o cache no sistema de arquivos local de dados transferidos por meio de sistemas de arquivos de rede, foi completamente reescrito. A nova implementação distingue-se por uma simplificação significativa do código e pela substituição de operações complexas de planejamento e rastreamento de estados de objetos por mecanismos mais simples. O suporte para o novo fscache é implementado no sistema de arquivos CIFS.
    • O subsistema de rastreamento de eventos no fanotify FS implementa um novo tipo de evento, FAN_RENAME, que permite interceptar imediatamente a operação de renomeação de arquivos ou diretórios (anteriormente, dois eventos separados FAN_MOVED_FROM e FAN_MOVED_TO eram usados ​​​​para processar renomeações).
    • O sistema de arquivos Btrfs otimizou operações de log e fsync para diretórios grandes, implementados copiando apenas chaves de índice e reduzindo a quantidade de metadados registrados. Foi fornecido suporte para indexação e pesquisa por tamanho de registros de espaço livre, o que reduziu a latência em aproximadamente 30% e reduziu o tempo de pesquisa. Permitido interromper operações de desfragmentação. A capacidade de adicionar dispositivos quando o balanceamento entre unidades está desativado, ou seja, ao montar um sistema de arquivos com a opção skip_balance.
    • Foi proposta uma nova sintaxe para montagem do sistema de arquivos Ceph, resolvendo problemas existentes associados à ligação a endereços IP. Além dos endereços IP, agora você pode usar o identificador de cluster (FSID) para identificar o servidor: mount -t ceph [email protegido]_name=/[subdir] mnt -o mon_addr=monip1[:port][/monip2[:port]]
    • O sistema de arquivos Ext4 mudou para uma nova API de montagem que separa as etapas de análise de opções de montagem e configuração de superbloco. Eliminamos o suporte para as opções de montagem lazytime e nolazytime, que foram adicionadas como uma mudança temporária para facilitar a transição do util-linux para usar o sinalizador MS_LAZYTIME. Adicionado suporte para configuração e leitura de rótulos no FS (ioctl FS_IOC_GETFSLABEL e FS_IOC_SETFSLABEL).
    • O NFSv4 adicionou suporte para trabalhar em sistemas de arquivos que não diferenciam maiúsculas de minúsculas em nomes de arquivos e diretórios. NFSv4.1+ adiciona suporte para definição de sessões agregadas (tronco).
  • Serviços de memória e sistema
    • Adicionado driver amd-pstate para fornecer controle de frequência dinâmico para desempenho ideal. O driver suporta CPUs e APUs AMD a partir da geração Zen 2, desenvolvido em conjunto com a Valve e tem como objetivo melhorar a eficiência do gerenciamento de energia. Para mudanças de frequência adaptativas, é usado o mecanismo CPPC (Collaborative Processor Performance Control), que permite alterar os indicadores com mais precisão (não limitado a três níveis de desempenho) e responder mais rapidamente às mudanças de estado do que o estado P baseado em ACPI usado anteriormente. drivers (CPUFreq).
    • O subsistema eBPF oferece um manipulador bpf_loop(), que fornece uma forma alternativa de organizar loops em programas eBPF, mais rápida e fácil para verificação por um verificador.
    • No nível do kernel, é implementado o mecanismo CO-RE (Compile Once - Run Everywhere), que permite compilar o código dos programas eBPF apenas uma vez e usar um carregador universal especial que adapta o programa carregado ao kernel atual e aos tipos de BTF (Formato de tipo BPF).
    • É possível atribuir nomes a áreas de memória privada anônima (alocada via malloc), o que pode simplificar a depuração e otimização do consumo de memória nas aplicações. Os nomes são atribuídos via prctl com o sinalizador PR_SET_VMA_ANON_NAME e são exibidos em /proc/pid/maps e /proc/pid/smaps no formato "[anon: ]".
    • O agendador de tarefas fornece rastreamento e exibição em /proc/PID/sched o tempo gasto pelos processos no estado de inatividade forçada, usado, por exemplo, para reduzir a carga quando o processador superaquece.
    • Adicionado módulo gpio-sim, projetado para simular chips GPIO para teste.
    • Adicionado um subcomando "latency" ao comando "perf ftrace" para gerar histogramas com informações de latência.
    • Adicionado um conjunto de utilitários “RTLA” para análise do trabalho em tempo real. Inclui utilitários como osnoise (determina a influência do sistema operacional na execução de uma tarefa) e timerlat (altera os atrasos associados ao temporizador).
    • Uma segunda série de patches foi integrada à implementação do conceito de fólios de páginas, que se assemelham a páginas compostas, mas possuem uma semântica aprimorada e uma organização de trabalho mais clara. O uso de tomos permite acelerar o gerenciamento de memória em alguns subsistemas do kernel. Os patches propostos completaram a conversão do cache de páginas para o uso de tomos e adicionaram suporte inicial para tomos no sistema de arquivos XFS.
    • Adicionado modo de construção “make mod2noconfig”, que gera uma configuração que coleta todos os subsistemas desabilitados na forma de módulos do kernel.
    • Os requisitos para a versão do LLVM/Clang que pode ser usada para construir o kernel foram aumentados. A compilação agora requer pelo menos a versão LLVM 11.
  • Virtualização e Segurança
    • É proposta uma implementação atualizada do gerador de números pseudo-aleatórios RDRAND, responsável pela operação dos dispositivos /dev/random e /dev/urandom, notável pela transição para o uso da função hash BLAKE2s em vez de SHA1 para operações de mistura de entropia. A mudança melhorou a segurança do gerador de números pseudoaleatórios, eliminando o algoritmo SHA1 problemático e eliminando a substituição do vetor de inicialização RNG. Como o algoritmo BLAKE2s é superior ao SHA1 em desempenho, seu uso também teve um efeito positivo no desempenho.
    • Adicionada proteção contra vulnerabilidades em processadores causadas pela execução especulativa de instruções após operações de avanço incondicional. O problema ocorre devido ao processamento preventivo de instruções imediatamente após a instrução de desvio na memória (SLS, Straight Line Speculation). Habilitar a proteção requer a construção com a versão atualmente em teste do GCC 12.
    • Adicionado mecanismo de rastreamento da contagem de referências (refcount, reference-count), que visa reduzir o número de erros na contagem de referências que levam ao acesso à memória após sua liberação. O mecanismo está atualmente limitado ao subsistema de rede, mas no futuro poderá ser adaptado para outras partes do kernel.
    • Foram implementadas verificações estendidas de novas entradas na tabela de páginas de memória do processo, permitindo detectar determinados tipos de danos e parar o sistema, bloqueando ataques em um estágio inicial.
    • Adicionada a capacidade de descompactar módulos do kernel diretamente pelo próprio kernel, e não por um manipulador no espaço do usuário, o que permite usar o módulo LoadPin LSM para garantir que os módulos do kernel sejam carregados na memória a partir de um dispositivo de armazenamento verificado.
    • Forneceu assembly com o sinalizador "-Wcast-function-type", que permite avisos sobre a conversão de ponteiros de função para um tipo incompatível.
    • Adicionado driver de host virtual pvUSB para o hipervisor Xen, fornecendo acesso a dispositivos USB encaminhados para sistemas convidados (permite que sistemas convidados acessem dispositivos USB físicos atribuídos ao sistema convidado).
    • Foi adicionado um módulo que permite interagir via Wi-Fi com o subsistema IME (Intel Management Engine), que vem na maioria das placas-mãe modernas com processadores Intel e é implementado como um microprocessador separado que opera independentemente da CPU.
    • Para a arquitetura ARM64, foi implementado suporte para a ferramenta de depuração KCSAN (Kernel Concurrency Sanitizer), projetada para detectar dinamicamente condições de corrida dentro do kernel.
    • Para sistemas ARM de 32 bits, foi adicionada a capacidade de usar o mecanismo KFENCE para detectar erros ao trabalhar com memória.
    • O hipervisor KVM adiciona suporte para instruções AMX (Advanced Matrix Extensions) implementadas nos próximos processadores de servidor escaláveis ​​Intel Xeon.
  • subsistema de rede
    • Adicionado suporte para operações de descarregamento relacionadas ao gerenciamento de tráfego para dispositivos de rede.
    • Adicionada a capacidade de usar MCTP (Management Component Transport Protocol) em dispositivos seriais. O MCTP pode ser usado para comunicação entre controladores de gerenciamento e seus dispositivos associados (processadores host, periféricos, etc.).
    • A pilha TCP foi otimizada, por exemplo, para melhorar o desempenho das chamadas recvmsg, a liberação atrasada de buffers de soquete foi implementada.
    • No nível de autoridade CAP_NET_RAW, é permitido definir os modos SO_PRIORITY e SO_MARK por meio da função setsockopt.
    • Para IPv4, os soquetes brutos podem ser vinculados a endereços IP não locais usando as opções IP_FREEBIND e IP_TRANSPARENT.
    • Adicionado sysctl arp_missed_max para configurar o número limite de falhas durante a verificação do monitor ARP, após o qual a interface de rede é colocada em um estado desabilitado.
    • Forneceu a capacidade de configurar valores sysctl min_pmtu e mtu_expires separados para namespaces de rede.
    • Adicionada a capacidade de definir e determinar o tamanho dos buffers para pacotes de entrada e saída à API ethtool.
    • O Netfilter adicionou suporte para filtrar o tráfego pppoe de trânsito em uma ponte de rede.
    • O módulo ksmbd, que implementa um servidor de arquivos usando o protocolo SMB3, adicionou suporte para troca de chaves, habilitou a porta de rede 445 para smbdirect e adicionou suporte para o parâmetro “smb2 max credit”.
  • Оборудование
    • Foi adicionado suporte para telas para exibição de informações confidenciais ao subsistema drm (Direct Renderering Manager) e ao driver i915, por exemplo, alguns laptops são equipados com telas com modo de visualização confidencial integrado, dificultando a visualização externa . As alterações adicionadas permitem conectar drivers especializados para essas telas e controlar modos de navegação confidenciais definindo propriedades em drivers KMS regulares.
    • O driver amdgpu inclui suporte para tecnologia de depuração STB (Smart Trace Buffer) para todas as GPUs AMD que o suportam. O STB facilita a análise de falhas e a identificação da origem dos problemas, armazenando em um buffer especial informações sobre as funções executadas antes da última falha.
    • O driver i915 adiciona suporte para chips Intel Raptor Lake S e permite suporte por padrão para o subsistema gráfico dos chips Intel Alder Lake P. É possível controlar a luz de fundo da tela através da interface VESA DPCD.
    • O suporte para aceleração de rolagem de hardware no console foi retornado nos drivers fbcon/fbdev.
    • Integração contínua de mudanças para oferecer suporte aos chips Apple M1. Implementada a capacidade de usar o driver simpledrm em sistemas com chip Apple M1 para saída por meio de um framebuffer fornecido pelo firmware.
    • Adicionado suporte para ARM SoС, 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 (usado 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, ponto de acesso JOZ, 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 para SoC StarFive JH7100 baseado na arquitetura RISC-V.
    • Adicionado driver lenovo-yogabook-wmi para controlar a luz de fundo do teclado e acessar vários sensores no Lenovo Yoga Book.
    • Adicionado driver asus_wmi_sensors para acessar sensores usados ​​nas placas-mãe Asus X370, X470, B450, B550 e X399 baseadas em processadores AMD Ryzen.
    • Adicionado driver x86-android-tablets para tablet PCs baseados em x86 fornecidos com a plataforma Android.
    • Adicionado suporte para telas sensíveis ao toque TrekStor SurfTab duo W1 e caneta eletrônica para tablets Chuwi Hi10 Plus e Pro.
    • Os drivers para SoC Tegra 20/30 adicionaram suporte para gerenciamento de energia e tensão. Permite a inicialização em dispositivos Tegra SoC de 32 bits mais antigos, como ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 e Pad TF300TG.
    • Adicionados drivers para computadores industriais Siemens.
    • Adicionado suporte 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.
    • Adicionado suporte para sistemas de som e codecs AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, sistemas Intel usando NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/PDIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Os problemas com o áudio HD Tegra194 foram resolvidos. Adicionado suporte HDA para codecs CS35L41. Suporte aprimorado para sistemas de som para laptops Lenovo e HP, bem como placas-mãe Gigabyte.

Fonte: opennet.ru

Adicionar um comentário