Versión do núcleo de Linux 5.2

Despois de dous meses de desenvolvemento, Linus Torvalds introducido liberación do núcleo Linux 5.2. Entre os cambios máis notables: o modo operativo Ext4 non distingue entre maiúsculas e minúsculas, chamadas de sistema separadas para montar o sistema de ficheiros, controladores para GPU Mali 4xx/ 6xx/7xx, a capacidade de xestionar cambios nos valores sysctl en programas BPF, mapeador de dispositivos. módulo dm-dust, protección contra ataques MDS, soporte para Sound Open Firmware para DSP, optimización do rendemento BFQ, achegando o subsistema PSI (Pressure Stall Information) á posibilidade de uso en Android.

A nova versión inclúe 15100 correccións de 1882 desenvolvedores.
tamaño do parche: 62 MB (os cambios afectaron a 30889 ficheiros, engadíronse 625094 liñas de código, elimináronse 531864 liñas). Preto do 45% de todos os presentados en 5.2
os cambios están relacionados cos controladores de dispositivos, aproximadamente o 21% dos cambios teñen
actitude cara á actualización de código específico para arquitecturas de hardware, 12%
relacionados coa pila de rede, un 3% con sistemas de ficheiros e un 3% con internos
subsistemas do núcleo. O 12.4 % de todos os cambios foron preparados por Intel, o 6.3 % por Red Hat, o 5.4 % por Google, o 4.0 % por AMD, o 3.1 % por SUSE, o 3 % por IBM, o 2.7 % por Huawei, o 2.7 % por Linaro, o 2.2 % por ARM. , 1.6 % - Oracle.

O principal innovacións:

  • Subsistema de disco, E/S e sistemas de ficheiros
    • Engadido para Ext4 apoiar funciona sen distinguir entre maiúsculas e minúsculas nos nomes de ficheiros, que só se activa en relación con directorios baleiros individuais mediante o novo atributo "+F" (EXT4_CASEFOLD_FL). Cando este atributo está definido nun directorio, todas as operacións con ficheiros e subdirectorios no seu interior realizaranse sen ter en conta o caso de caracteres, incluíndo o caso de ser ignorado ao buscar e abrir ficheiros (por exemplo, os ficheiros Test.txt, test.txt e test.TXT nestes directorios consideraranse iguais). De xeito predeterminado, o sistema de ficheiros segue distinguindo entre maiúsculas e minúsculas, con excepción dos directorios co atributo “chattr +F”;
    • Unificáronse as funcións para procesar caracteres UTF-8 nos nomes de ficheiros, que se usan cando se realizan operacións de comparación e normalización de cadeas;
    • XFS engade infraestrutura para o seguimento da saúde do sistema de ficheiros e un novo ioctl para consultar o estado de saúde. Implementouse unha función experimental para comprobar os contadores de superbloques en liña.
    • Engadiuse un novo módulo mapeador de dispositivos "dm-po“, que permite simular a aparición de bloques defectuosos nos medios ou erros ao ler desde o disco. O módulo permite simplificar a depuración e proba de aplicacións e varios sistemas de almacenamento ante posibles fallos;
    • Levado a cabo Optimizacións de rendemento significativas para o planificador de E/S BFQ. En condicións de alta carga de E/S realizáronse optimizacións permitir Reduce ata un 80 % o tempo de operacións como o lanzamento de aplicacións.
    • Engadíronse unha serie de chamadas ao sistema para montar sistemas de ficheiros: fsopen(), árbore_aberta(), fspick(), fsmount(), fsconfig() и move_mount(). Estas chamadas ao sistema permítenche procesar por separado diferentes etapas de montaxe (procesar o superbloque, obter información sobre o sistema de ficheiros, montar, conectar ao punto de montaxe), que anteriormente se realizaban mediante a chamada ao sistema mount() común. As chamadas separadas ofrecen a posibilidade de realizar escenarios de montaxe máis complexos e realizar operacións separadas, como reconfigurar o superbloque, habilitar opcións, cambiar o punto de montaxe e moverse a un espazo de nomes diferente. Ademais, o procesamento separado permítelle determinar con precisión os motivos da saída dos códigos de erro e establecer varias fontes para sistemas de ficheiros multicapa, como superposicións;
    • Engadiuse unha nova operación IORING_OP_SYNC_FILE_RANGE á interface para io_uring de E/S asíncrona, que realiza accións equivalentes a unha chamada ao sistema intervalo_de_ficheros de sincronización(), e tamén implementou a capacidade de rexistrar eventfd con io_uring e recibir notificacións sobre a conclusión das operacións;
    • Para o sistema de ficheiros CIFS, engadiuse o FIEMAP ioctl, que proporciona un mapeo de extensión eficiente, así como soporte para os modos SEEK_DATA e SEEK_HOLE;
    • No subsistema FUSE proposto API para xestionar o almacenamento en caché de datos;
    • Btrfs optimizou a implementación de qgroups e mellorou a velocidade de execución de fsync para ficheiros con varias ligazóns duras. Mellorouse o código de verificación da integridade dos datos, que agora ten en conta posibles danos á información na memoria RAM antes de lavar os datos no disco;
    • CEPH engadiu soporte para exportar instantáneas a través de NFS;
    • Mellorouse a implementación do montaxe de NFSv4 en modo "soft" (se se produce un erro ao acceder ao servidor en modo "soft", unha chamada a devolve inmediatamente un código de erro e en modo "hard" non se dá control ata que o FS restablece a dispoñibilidade ou o tempo de espera). A nova versión ofrece un manexo máis preciso do tempo de espera, unha recuperación máis rápida do fallo e unha nova opción de montaxe "máis suave" que lle permite cambiar o código de erro (ETIMEDOUT) que se devolve cando se produce un tempo de espera;
    • A API nfsdcld, deseñada para rastrexar o estado dos clientes NFS, permite que o servidor NFS rastrexa correctamente o estado do cliente ao reiniciar. Así, o daemon nfsdcld agora pode actuar como un controlador nfsdcltrack;
    • Para AFS engadido emulación de bloqueos de intervalos de bytes en ficheiros (Bloqueo do intervalo de bytes);
  • Virtualización e seguridade
    • Traballouse para eliminar lugares do núcleo que permiten a execución de código desde áreas de memoria reflectidas escribibles, o que permite bloquear os posibles buratos que poderían ser explotados durante un ataque;
    • Engadiuse un novo parámetro de liña de comandos do núcleo "mitigations=", que proporciona unha forma simplificada de controlar a activación de determinadas técnicas para protexerse contra vulnerabilidades asociadas á execución especulativa de instrucións na CPU. Ao pasar "mitigations=off" desactiva todos os métodos existentes, e o modo predeterminado "mitigations=auto" activa a protección pero non afecta o uso de Hyper Threading. O modo "mitigations=auto,nosmt" tamén desactiva Hyper Threading se o método de protección o require.
    • Engadido soporte para sinatura dixital electrónica segundo GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), desenvolvido Vitaly Chikunov de Basalt SPO. Engadido soporte para AES128-CCM á implementación nativa de TLS. Engadido soporte para algoritmos AEAD ao módulo crypto_simd;
    • En Kconfig engadido unha sección separada de "endurecemento do núcleo" con opcións para mellorar a protección do núcleo. Actualmente, a nova sección só contén configuracións para activar os complementos de mellora da comprobación de GCC;
    • O código do núcleo é case entregado a partir de declaracións case non breaking en switch (sen retorno ou interrupción despois de cada bloque de case). Queda por corrixir 32 dos 2311 casos de uso deste tipo de switch, despois do cal será posible usar o modo "-Wimplicit-fallthrough" ao construír o núcleo;
    • Para a arquitectura PowerPC, implementouse soporte para mecanismos de hardware para limitar os camiños de acceso ao núcleo non desexados aos datos no espazo do usuario;
    • Engadido código de bloqueo ataques Clase MDS (Microarchitectural Data Sampling) en procesadores Intel. Pode comprobar se un sistema é vulnerable a vulnerabilidades a través da variable SysFS "/sys/devices/system/cpu/vulnerabilities/mds". Dispoñible dous modos de protección: completo, que require un microcódigo actualizado, e bypass, que non garante completamente a limpeza dos búfers da CPU cando o control se transfire ao espazo do usuario ou ao sistema convidado. Para controlar os modos de protección, engadiuse ao núcleo o parámetro "mds=", que pode tomar os valores "full", "full,nosmt" (+ desactivar Hyper-Threads) e "off";
    • Nos sistemas x86-64, engadiuse a protección de "páxina de garda de pila" para IRQ, mecanismos de depuración e manejadores de excepcións, cuxa esencia é a substitución de páxinas de memoria no límite coa pila, o que leva ao acceso á xeración dun excepción (error de páxina);
    • Engadiuse a configuración de sysctl vm.unprivileged_userfaultfd, que controla a capacidade dos procesos sen privilexios para usar a chamada ao sistema userfaultfd();
  • Subsistema de rede
    • Engadido Compatibilidade con pasarela IPv6 para rutas IPv4. Por exemplo, agora pode especificar regras de enrutamento como "ip ro add 172.16.1.0/24 via inet6 2001:db8::1 dev eth0";
    • Para ICMPv6, as chamadas de ioctl icmp_echo_ignore_anycast e icmp_echo_ignore_multicast están implementadas para ignorar ICMP ECHO para anycast e
      enderezos de multidifusión. Engadido a capacidade de limitar a intensidade do procesamento de paquetes ICMPv6;

    • Para o protocolo de malla BATMAN (Better Approach To Mobile Adhoc Networking), que permite a creación de redes descentralizadas nas que cada nodo está conectado a través de nodos veciños, engadido soporte para a transmisión de multidifusión a unicast, así como a capacidade de controlar a través de sysfs;
    • En ethtool engadido un novo parámetro Fast Link Down, que permite reducir o tempo que tarda en recibir información sobre un evento de desactivación da ligazón para 1000BaseT (en condicións normais o atraso é de ata 750 ms);
    • Apareceu oportunidade vincular túneles Foo-Over-UDP a un enderezo específico, interface de rede ou socket (anteriormente a vinculación facíase só mediante unha máscara común);
    • Na pila sen fíos asegurado posibilidade de implementar controladores
      OWE (Opportunistic Wireless Encryption) no espazo do usuario;

    • En Netfilter, engadiuse soporte para a familia de enderezos inet ás cadeas nat (por exemplo, agora pode usar unha regra de tradución para procesar ipv4 e ipv6, sen separar as regras para ipv4 e ipv6);
    • En netlink engadido o réxime estrito para a verificación rigorosa da corrección de todas as mensaxes e atributos, nos que non se permite superar o tamaño esperado dos atributos e prohíbese engadir datos adicionais ao final das mensaxes;
  • Servizos de memoria e sistema
    • A marca CLONE_PIDFD engadiuse á chamada do sistema clone(), cando se especifica, o descritor de ficheiro "pidfd" identificado co proceso fillo creado devólvese ao proceso pai. Este descritor de ficheiros, por exemplo, pódese usar para enviar sinais sen medo a atoparse nunha condición de carreira (inmediatamente despois de enviar o sinal, o PID de destino pode liberarse debido á terminación do proceso e ocupado por outro proceso);
    • Para a segunda versión de cgroups, engadiuse a funcionalidade do controlador do conxelador, coa que podes deixar de traballar nun cgroup e liberar temporalmente algúns recursos (CPU, E/S e, potencialmente, incluso memoria) para realizar outras tarefas. A xestión realízase a través dos ficheiros de control cgroup.freeze e cgroup.events na árbore cgroup. A entrada 1 en cgroup.freeze conxela os procesos no cgroup actual e en todos os grupos fillos. Dado que a conxelación leva algún tempo, ofrécese un ficheiro cgroup.events adicional a través do cal podes informarte sobre a finalización da operación;
    • Asegurado exportación de atributos de memoria unidos a cada nodo en sysfs, o que permite determinar a partir do espazo do usuario a natureza do procesamento dos bancos de memoria en sistemas con memoria heteroxénea;
    • Mellorouse o subsistema PSI (Pressure Stall Information), que permite analizar información sobre o tempo de espera para recibir diversos recursos (CPU, memoria, E/S) para determinadas tarefas ou conxuntos de procesos nun cgroup. Usando PSI, os manejadores do espazo do usuario poden estimar con máis precisión o nivel de carga do sistema e os patróns de desaceleración en comparación coa media de carga. A nova versión ofrece compatibilidade para establecer limiares de sensibilidade e a posibilidade de usar a chamada poll() para recibir a notificación de que os limiares establecidos se activaron durante un período de tempo determinado. Esta función permite a Android supervisar a escaseza de memoria nunha fase inicial, identificar a orixe dos problemas e finalizar aplicacións sen importancia sen causar problemas que se noten para o usuario. Durante as probas de esforzo, as ferramentas de monitorización do consumo de memoria baseadas en PSI demostraron 10 veces menos falsos positivos en comparación coas estatísticas de vmpressure;
    • Optimizouse o código para comprobar os programas BPF, o que fai que a comprobación sexa ata 20 veces máis rápida para programas grandes. A optimización permitiu aumentar o límite do tamaño dos programas BPF de 4096 a un millón de instrucións;
    • Para programas BPF concedida a posibilidade de acceder a datos globais, que permite definir variables e constantes globais nos programas;
    • Engadido API, que permite controlar os cambios nos parámetros sysctl dos programas BPF;
    • Para a arquitectura MIPS32, implementouse un compilador JIT para a máquina virtual eBPF;
    • Para a arquitectura PowerPC de 32 bits, engadiuse soporte para a ferramenta de depuración KASan (Kernel address sanitizer), que axuda a identificar erros ao traballar coa memoria;
    • Nos sistemas x86-64, eliminouse a restrición para colocar volcados de estado durante un fallo do núcleo (crash-dump) en áreas de memoria superiores a 896 MB;
    • Para a arquitectura s390, implícase o soporte para a aleatorización do espazo de enderezos do núcleo (KASLR) e a capacidade de verificar sinaturas dixitais ao cargar o núcleo a través de kexec_file_load();
    • Para a arquitectura PA-RISC, engadiuse soporte para o depurador do núcleo (KGDB), marcas de salto e kprobes;
  • Оборудование
    • Condutor incluído Lima para a GPU Mali 400/450, utilizada en moitos chips máis antigos baseados na arquitectura ARM. Para as GPU Mali máis novas, engadiuse o controlador Panfrost, que admite chips baseados nas microarquitecturas Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) e Bifrost (Mali G3x, G5x, G7x);
    • Engadido soporte para dispositivos de audio que usan firmware aberto Firmware aberto de son (SOF). A pesar da dispoñibilidade de controladores abertos, o código de firmware para os chips de son aínda permaneceu pechado e proporcionouse en forma binaria. O proxecto Sound Open Firmware foi desenvolvido por Intel para crear firmware aberto para chips DSP relacionados co procesamento de audio (Google tamén se uniu posteriormente ao desenvolvemento). Actualmente, o proxecto xa ten preparado o descubrimento de firmware para chips de son das plataformas Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake e IceLake;
    • O controlador Intel DRM (i915) engade soporte para chips
      Elkhartlake (Xenación 11). Engadíronse ID PCI para chips Comet Lake (Gen9). Estabilizouse a compatibilidade con chips Icelake, para o que tamén se engadiron identificadores de dispositivos PCI adicionais.
      Acendido
      modo de conmutación asíncrona entre dous búfers na memoria de vídeo (async flip) ao realizar operacións de escritura mediante mmio, o que aumentou significativamente o rendemento dalgunhas aplicacións 3D (por exemplo, o rendemento na proba 3DMark Ice Storm aumentou nun 300-400%). Soporte tecnolóxico engadido HDCP2.2 (Protección de contido dixital de ancho de banda alto) para cifrar sinais de vídeo transmitidos a través de HDMI;

    • O controlador amdgpu para a GPU Vega20 engadido soporte para RAS (Reliability, Availability, Serviceability) e soporte experimental para o subsistema SMU 11, que substituíu a tecnoloxía Powerplay. Para GPU Vega12 engadido soporte para o modo BACO (Bus Active, Chip Off). Engadiuse soporte inicial para XGMI, un bus de alta velocidade (PCIe 4.0) para a interconexión de GPU. Engadíronse os identificadores que faltan para as tarxetas baseadas na GPU Polaris10 ao controlador amdkfd;
    • O controlador Nouveau engadiu soporte para placas baseadas no chipset NVIDIA Turing 117 (TU117, usado na GeForce GTX 1650). EN
      kconfig engadido configuración para desactivar funcións obsoletas que xa non se usan nas versións actuais de libdrm;

    • Engadiuse a compatibilidade con obxectos de sincronización da "líña de tempo" á API DRM e ao controlador amdgpu, o que lle permite prescindir do bloqueo clásico.
    • O controlador vboxvideo para a GPU virtual VirtualBox moveuse da rama de posta en escena á estrutura principal;
    • Engadido controlador de velocidade para o chip GFX SoC ASPEED;
    • Engadido soporte 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 Fundación Latinoamericana de Software Libre formado
opción núcleo completamente gratuíto 5.2 - Linux-libre 5.2-gnu, eliminado de elementos de firmware e controladores que conteñan compoñentes ou seccións de código non libres, cuxo alcance está limitado polo fabricante. A nova versión inclúe a carga de ficheiros
Firmware aberto de son. A carga de blobs nos controladores está desactivada
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp e ucsi_ccg. Actualizouse o código de limpeza de blob nos controladores e subsistemas ixp4xx, imx-sdma, amdgpu, nouveau e goya, así como na documentación do microcódigo. Deixou de limpar as manchas no controlador r8822be debido á súa eliminación.

Fonte: opennet.ru

Engadir un comentario