Kernel Linux versão 5.2

Após dois meses de desenvolvimento, Linus Torvalds introduzido lançamento do kernel Linux 5.2. Entre as mudanças mais visíveis: o modo de operação Ext4 não diferencia maiúsculas de minúsculas, chamadas de sistema separadas para montagem do sistema de arquivos, drivers para GPU Mali 4xx/ 6xx/7xx, capacidade de lidar com alterações nos valores sysctl em programas BPF, mapeador de dispositivos módulo dm-dust, proteção contra ataques MDS, suporte para Sound Open Firmware para DSP, otimização do desempenho do BFQ, trazendo o subsistema PSI (Pressure Stall Information) para possibilidade de uso em Android.

A nova versão inclui 15100 correções de 1882 desenvolvedores,
tamanho do patch - 62 MB (as alterações afetaram 30889 arquivos, 625094 linhas de código foram adicionadas, 531864 linhas foram excluídas). Cerca de 45% de todos apresentados em 5.2
alterações estão relacionadas a drivers de dispositivos, aproximadamente 21% das alterações são
atitude em relação à atualização de código específico para arquiteturas de hardware, 12%
relacionado à pilha de rede, 3% aos sistemas de arquivos e 3% aos internos
subsistemas do kernel. 12.4% de todas as mudanças foram preparadas pela Intel, 6.3% pela Red Hat, 5.4% pelo Google, 4.0% pela AMD, 3.1% pela SUSE, 3% pela IBM, 2.7% pela Huawei, 2.7% pela Linaro, 2.2% pela ARM , 1.6% - Oráculo.

O principal inovações:

  • Subsistema de disco, E/S e sistemas de arquivos
    • Adicionado para Ext4 apoiar funcionam sem distinguir o caso dos caracteres nos nomes dos arquivos, que é ativado apenas em relação aos diretórios vazios individuais usando o novo atributo “+F” (EXT4_CASEFOLD_FL). Quando este atributo é definido em um diretório, todas as operações com arquivos e subdiretórios dentro dele serão realizadas sem levar em consideração a caixa dos caracteres, inclusive a caixa será ignorada ao pesquisar e abrir arquivos (por exemplo, os arquivos Test.txt, test.txt e test.TXT em tais diretórios serão considerados iguais). Por padrão, o sistema de arquivos continua diferenciando maiúsculas de minúsculas, com exceção dos diretórios com o atributo “chattr +F”;
    • As funções para processamento de caracteres UTF-8 em nomes de arquivos, que são usadas ao realizar operações de comparação e normalização de strings, foram unificadas;
    • O XFS adiciona infraestrutura para monitoramento da integridade do sistema de arquivos e um novo ioctl para consultar o status da integridade. Um recurso experimental foi implementado para verificar contadores de superblocos online.
    • Adicionado novo módulo mapeador de dispositivos "dm-poeira“, que permite simular o aparecimento de blocos defeituosos na mídia ou erros na leitura do disco. O módulo permite simplificar a depuração e teste de aplicativos e diversos sistemas de armazenamento diante de possíveis falhas;
    • Realizado Otimizações de desempenho significativas para o agendador de E/S BFQ. Em condições de alta carga de E/S, otimizações feitas permitir Reduza o tempo de operações como lançamento de aplicativos em até 80%.
    • Adicionada uma série de chamadas de sistema para montagem de sistemas de arquivos: fsopen(), árvore_aberta(), fspick(), fsmount(), fsconfig() и mover_montar(). Essas chamadas de sistema permitem processar separadamente diferentes estágios de montagem (processar o superbloco, obter informações sobre o sistema de arquivos, montar, anexar ao ponto de montagem), que foram executados anteriormente usando a chamada de sistema comum mount(). Chamadas separadas fornecem a capacidade de executar cenários de montagem mais complexos e executar operações separadas, como reconfigurar o superbloco, ativar opções, alterar o ponto de montagem e mover para um namespace diferente. Além disso, o processamento separado permite determinar com precisão os motivos da saída de códigos de erro e definir múltiplas fontes para sistemas de arquivos multicamadas, como overlayfs;
    • Uma nova operação IORING_OP_SYNC_FILE_RANGE foi adicionada à interface para E/S assíncrona io_uring, que executa ações equivalentes a uma chamada de sistema intervalo_de_arquivo_sincronizado(), e também implementou a capacidade de registrar eventfd com io_uring e receber notificações sobre a conclusão das operações;
    • Para o sistema de arquivos CIFS, foi adicionado o ioctl FIEMAP, fornecendo mapeamento de extensão eficiente, bem como suporte para os modos SEEK_DATA e SEEK_HOLE;
    • No subsistema FUSE proposto API para gerenciamento de cache de dados;
    • O Btrfs otimizou a implementação do qgroups e melhorou a velocidade de execução do fsync para arquivos com vários links físicos. O código de verificação de integridade dos dados foi aprimorado, que agora leva em consideração possíveis danos às informações na RAM antes de descarregar os dados no disco;
    • CEPH adicionou suporte para exportação de snapshots via NFS;
    • A implementação da montagem do NFSv4 no modo “soft” foi melhorada (se ocorrer um erro no acesso ao servidor no modo “soft”, uma chamada para retorna imediatamente um código de erro, e no modo “hard” o controle não é dado até que o FS disponibilidade ou tempo limite for restaurado). A nova versão oferece tratamento de tempo limite mais preciso, recuperação de falhas mais rápida e uma nova opção de montagem “softerr” que permite alterar o código de erro (ETIMEDOUT) retornado quando ocorre um tempo limite;
    • A API nfsdcld, projetada para rastrear o estado dos clientes NFS, permite que o servidor NFS rastreie corretamente o estado do cliente na reinicialização. Assim, o daemon nfsdcld agora pode atuar como um manipulador nfsdcltrack;
    • Para AFS adicionado emulação de bloqueios de intervalo de bytes em arquivos (Bloqueio de intervalo de bytes);
  • Virtualização e Segurança
    • Foram feitos trabalhos para eliminar locais no kernel que permitem a execução de código a partir de áreas de memória refletida graváveis, o que permite bloquear possíveis falhas que poderiam ser exploradas durante um ataque;
    • Um novo parâmetro de linha de comando do kernel "mitigations=" foi adicionado, fornecendo uma maneira simplificada de controlar a ativação de certas técnicas para proteção contra vulnerabilidades associadas à execução especulativa de instruções na CPU. Passar "mitigations=off" desativa todos os métodos existentes, e o modo padrão "mitigations=auto" habilita a proteção, mas não afeta o uso do Hyper Threading. O modo “mitigations=auto,nosmt” desativa adicionalmente o Hyper Threading se exigido pelo método de proteção.
    • Adicionado por suporte para assinatura digital eletrônica de acordo com GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), Desenvolvido por Vitaly Chikunov do Basalto SPO. Adicionado suporte para AES128-CCM à implementação nativa de TLS. Adicionado suporte para algoritmos AEAD ao módulo crypto_simd;
    • No Kconfig adicionado uma seção separada de “endurecimento do kernel” com opções para aprimorar a proteção do kernel. Atualmente, a nova seção contém apenas configurações para ativar plug-ins de aprimoramento de verificação do GCC;
    • O código do kernel é quase entregue a partir de instruções case ininterruptas em switch (sem return ou break após cada bloco case). Resta corrigir 32 dos 2311 casos de tal uso do switch, após o qual será possível usar o modo “-Wimplicit-fallthrough” ao construir o kernel;
    • Para a arquitetura PowerPC, foi implementado suporte para mecanismos de hardware para limitar caminhos de acesso indesejados do kernel aos dados no espaço do usuário;
    • Adicionado código de bloqueio ataques Classe MDS (Microarchitectural Data Sampling) em processadores Intel. Você pode verificar se um sistema está vulnerável a vulnerabilidades através da variável SysFS “/sys/devices/system/cpu/vulnerabilities/mds”. Disponível dois modos de proteção: completo, que requer microcódigo atualizado, e bypass, que não garante completamente a limpeza dos buffers da CPU quando o controle é transferido para o espaço do usuário ou para o sistema convidado. Para controlar os modos de proteção, foi adicionado ao kernel o parâmetro “mds=”, que pode assumir os valores “full”, “full,nosmt” (+ desabilitar Hyper-Threads) e “off”;
    • Em sistemas x86-64, foi adicionada proteção “stack guard-page” para IRQ, mecanismos de depuração e manipuladores de exceções, cuja essência é a substituição de páginas de memória na borda da pilha, cujo acesso leva à geração de um exceção (falha de página);
    • Adicionada configuração de sysctl vm.unprivileged_userfaultfd, que controla a capacidade de processos sem privilégios de usar a chamada de sistema userfaultfd();
  • subsistema de rede
    • Adicionado por Suporte de gateway IPv6 para rotas IPv4. Por exemplo, agora você pode especificar regras de roteamento como “ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0”;
    • Para ICMPv6, as chamadas ioctl icmp_echo_ignore_anycast e icmp_echo_ignore_multicast são implementadas para ignorar ICMP ECHO para anycast e
      endereços multicast. Adicionado por a capacidade de limitar a intensidade do processamento de pacotes ICMPv6;

    • Para o protocolo mesh BATMAN (Better Approach To Mobile Adhoc Networking), que permite a criação de redes descentralizadas nas quais cada nó está conectado através de nós vizinhos, adicionado suporte para transmissão de multicast para unicast, bem como capacidade de controle via sysfs;
    • Em ettool adicionado um novo parâmetro Fast Link Down, que permite reduzir o tempo de recebimento de informações sobre um evento de link down para 1000BaseT (em condições normais o atraso é de até 750ms);
    • Apareceu oportunidade vincular túneis Foo-Over-UDP a um endereço, interface de rede ou soquete específico (anteriormente a vinculação era feita apenas por uma máscara comum);
    • Na pilha sem fio fornecido possibilidade de implementar manipuladores
      OWE (criptografia sem fio oportunista) no espaço do usuário;

    • No Netfilter, o suporte para a família de endereços inet foi adicionado às cadeias nat (por exemplo, agora você pode usar uma regra de tradução para processar ipv4 e ipv6, sem separar as regras para ipv4 e ipv6);
    • No link da rede adicionado o regime rigoroso para verificação rigorosa da veracidade de todas as mensagens e atributos, em que não é permitido ultrapassar o tamanho esperado dos atributos e é proibida a adição de dados adicionais ao final das mensagens;
  • Serviços de memória e sistema
    • O sinalizador CLONE_PIDFD foi adicionado à chamada de sistema clone(), quando especificado, o descritor de arquivo “pidfd” identificado com o processo filho criado é retornado ao processo pai. Este descritor de arquivo, por exemplo, pode ser usado para enviar sinais sem medo de entrar em uma condição de corrida (imediatamente após o envio do sinal, o PID alvo pode ser liberado devido ao encerramento do processo e ocupado por outro processo);
    • Para a segunda versão do cgroups, foi adicionada a funcionalidade do controlador de freezer, com a qual você pode interromper o trabalho em um cgroup e liberar temporariamente alguns recursos (CPU, E/S e potencialmente até memória) para executar outras tarefas. O gerenciamento é feito através dos arquivos de controle cgroup.freeze e cgroup.events na árvore do cgroup. A entrada 1 em cgroup.freeze congela processos no cgroup atual e em todos os grupos filhos. Como o congelamento leva algum tempo, um arquivo cgroup.events adicional é fornecido através do qual você pode saber mais sobre a conclusão da operação;
    • Protegido exportação de atributos de memória anexados a cada nó no sysfs, o que permite determinar a partir do espaço do usuário a natureza do processamento de bancos de memória em sistemas com memória heterogênea;
    • Foi aprimorado o subsistema PSI (Pressure Stall Information), que permite analisar informações sobre o tempo de espera para recebimento de diversos recursos (CPU, memória, I/O) para determinadas tarefas ou conjuntos de processos em um cgroup. Usando o PSI, os manipuladores de espaço do usuário podem estimar com mais precisão o nível de carga do sistema e os padrões de desaceleração em comparação com a média de carga. A nova versão fornece suporte para definir limites de sensibilidade e a capacidade de usar a chamada poll() para receber notificação de que os limites definidos foram acionados por um determinado período de tempo. Esse recurso permite que o Android monitore a falta de memória em um estágio inicial, identifique a origem dos problemas e encerre aplicativos sem importância sem causar problemas perceptíveis ao usuário. Durante os testes de estresse, as ferramentas de monitoramento de consumo de memória baseadas em PSI demonstraram 10 vezes menos falsos positivos em comparação com as estatísticas de vmpression;
    • O código para verificação de programas BPF foi otimizado, o que permite verificação até 20 vezes mais rápida para programas grandes. A otimização permitiu aumentar o limite de tamanho dos programas BPF de 4096 para um milhão de instruções;
    • Para programas BPF fornecido por a capacidade de acessar dados globais, que permite definir variáveis ​​​​e constantes globais em programas;
    • Adicionado API, que permite controlar alterações nos parâmetros sysctl de programas BPF;
    • Para a arquitetura MIPS32 foi implementado um compilador JIT para a máquina virtual eBPF;
    • Para a arquitetura PowerPC de 32 bits, foi adicionado suporte para a ferramenta de depuração KASan (Kernel address sanitizer), que ajuda a identificar erros ao trabalhar com memória;
    • Em sistemas x86-64, a restrição de colocar dumps de estado durante uma falha do kernel (crash-dump) em áreas de memória acima de 896MB foi removida;
    • Para a arquitetura s390, são implementados suporte para randomização de espaço de endereço do kernel (KASLR) e a capacidade de verificar assinaturas digitais ao carregar o kernel via kexec_file_load();
    • Para a arquitetura PA-RISC, foi adicionado suporte para o depurador de kernel (KGDB), marcas de salto e kprobes;
  • Оборудование
    • Motorista incluído Cal para a GPU Mali 400/450, usada em muitos chips mais antigos baseados na arquitetura ARM. Para GPUs Mali mais recentes, o driver Panfrost foi adicionado, suportando chips baseados nas microarquiteturas Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) e Bifrost (Mali G3x, G5x, G7x);
    • Adicionado suporte para dispositivos de áudio usando firmware aberto Firmware aberto de som (SOF). Apesar da disponibilidade de drivers abertos, o código do firmware para chips de som ainda permaneceu fechado e foi fornecido em formato binário. O projeto Sound Open Firmware foi desenvolvido pela Intel para criar firmware aberto para chips DSP relacionados ao processamento de áudio (mais tarde o Google também se juntou ao desenvolvimento). Atualmente, o projeto já preparou a descoberta de firmware para chips de som das plataformas Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake e IceLake;
    • Driver Intel DRM (i915) adiciona suporte para chips
      Elkhartlake (Gen11). Adicionados IDs PCI para chips Comet Lake (Gen9). O suporte para chips Icelake foi estabilizado, para os quais também foram adicionados identificadores de dispositivos PCI adicionais.
      Incluído
      modo de comutação assíncrona entre dois buffers na memória de vídeo (async flip) ao realizar operações de gravação via mmio, o que aumentou significativamente o desempenho de alguns aplicativos 3D (por exemplo, o desempenho no teste 3DMark Ice Storm aumentou em 300-400%). Adicionado suporte tecnológico HDCP2.2 (Proteção de conteúdo digital de alta largura de banda) para criptografar sinais de vídeo transmitidos via HDMI;

    • O driver amdgpu para GPU Vega20 adicionado suporte para RAS (Confiabilidade, Disponibilidade, Capacidade de Manutenção) e suporte experimental para o subsistema SMU 11, que substituiu a tecnologia Powerplay. Para GPU Vega12 adicionado suporte para modo BACO (Bus Active, Chip Off). Adicionado suporte inicial para XGMI, um barramento de alta velocidade (PCIe 4.0) para interconexão de GPU. Adicionados identificadores ausentes para placas baseadas na GPU Polaris10 ao driver amdkfd;
    • O driver Nouveau adicionou suporte para placas baseadas no chipset NVIDIA Turing 117 (TU117, usado na GeForce GTX 1650). EM
      kconfig adicionado configuração para desabilitar funções obsoletas que não são mais usadas nas versões atuais do libdrm;

    • O suporte para objetos de sincronização “linha do tempo” foi adicionado à API DRM e ao driver amdgpu, permitindo que você faça isso sem o bloqueio clássico.
    • O driver vboxvideo para a GPU virtual VirtualBox foi movido da ramificação de teste para a estrutura principal;
    • Adicionado driver aspeed para chip GFX SoC ASPEED;
    • Adicionado suporte para ARM SoC e Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD,, Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi ) placas RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Ao mesmo tempo, a Fundação Latino-Americana para o Software Livre formado
opção kernel 5.2 totalmente gratuito - Linux-libre 5.2-gnu, livre de elementos de firmware e driver contendo componentes ou seções de código não livres, cujo escopo é limitado pelo fabricante. A nova versão inclui upload de arquivos
Firmware aberto de som. O carregamento de blobs em drivers está desabilitado
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp e ucsi_ccg. O código de limpeza de blob nos drivers e subsistemas ixp4xx, imx-sdma, amdgpu, nouveau e goya, bem como na documentação do microcódigo, foi atualizado. Interrompida a limpeza de blobs no driver r8822be devido à sua remoção.

Fonte: opennet.ru

Adicionar um comentário