Versión do núcleo de Linux 5.12

Despois de dous meses de desenvolvemento, Linus Torvalds presentou o lanzamento do kernel Linux 5.12. Entre os cambios máis notables: soporte para dispositivos de bloques por zonas en Btrfs, a capacidade de mapear ID de usuario para o sistema de ficheiros, limpeza de arquitecturas ARM legadas, un modo de escritura "ansioso" en NFS, o mecanismo LOOKUP_CACHED para determinar as rutas dos ficheiros desde a caché. , soporte para instrucións atómicas en BPF, un sistema de depuración KFENCE para identificar erros cando se traballa coa memoria, modo de sondeo NAPI que se executa nun fío do núcleo separado na pila de rede, hipervisor ACRN, a capacidade de cambiar o modelo de anticipación sobre a marcha na tarefa programador e soporte para optimizacións LTO ao construír en Clang.

A nova versión inclúe 14170 (na versión anterior 15480) correccións de desenvolvedores de 1946 (1991), o tamaño do parche é de 38 MB (os cambios afectaron a 12102 (12090) ficheiros, engadíronse 538599 (868025) liñas de código, 333377 (261456) elimináronse liñas). Aproximadamente o 43% de todos os cambios introducidos na versión 5.12 están relacionados con controladores de dispositivos, aproximadamente o 17% dos cambios están relacionados coa actualización de código específico de arquitecturas de hardware, o 12% están relacionados coa pila de rede, o 5% están relacionados con sistemas de ficheiros e o 4% están relacionados cos subsistemas do núcleo interno.

Principais novidades:

  • Subsistema de disco, E/S e sistemas de ficheiros
    • Implementouse a capacidade de asignar ID de usuario para sistemas de ficheiros montados (pode mapear ficheiros dun usuario nunha partición externa montada con outro usuario no sistema actual). A asignación é compatible con sistemas de ficheiros FAT, ext4 e XFS. A funcionalidade proposta fai máis doado compartir ficheiros entre diferentes usuarios e en diferentes ordenadores, incluíndo o mapeo que se utilizará no mecanismo de directorio home portátil con sistema systemd, permitindo aos usuarios mover os seus directorios de inicio a medios externos e utilizalos en diferentes ordenadores, mapeo. ID de usuario cos que non coincide. Outra aplicación útil é organizar a provisión de acceso compartido a ficheiros desde un host externo, sen cambiar realmente os datos sobre os propietarios dos ficheiros no sistema de ficheiros.
    • Os parches LOOKUP_CACHED adoptáronse no núcleo, o que permite que as operacións determinen unha ruta de ficheiro desde o espazo do usuario sen bloquealas, só en función dos datos dispoñibles na caché. O modo LOOKUP_CACHED actívase na chamada openat2() pasando a marca RESOLVE_CACHED, na que os datos só se serven desde a caché, e se a determinación da ruta require acceso á unidade, devólvese o erro EAGAIN.
    • O sistema de ficheiros Btrfs engadiu soporte inicial para dispositivos de bloques por zonas (dispositivos en discos duros magnéticos ou SSD NVMe, o espazo de almacenamento no que se divide en zonas que forman grupos de bloques ou sectores, aos que só se permite a adición secuencial de datos, actualizando todo o grupo de bloques). No modo de só lectura, implícase o soporte para bloques con metadatos e datos máis pequenos que unha páxina (subpáxina).
    • No sistema de ficheiros F2FS, engadiuse a posibilidade de seleccionar o algoritmo e o nivel de compresión. Engadido soporte para compresión de alto nivel para o algoritmo LZ4. Implementouse a opción de montaxe checkpoint_merge.
    • Implementouse un novo comando ioctl FS_IOC_READ_VERITY_METADATA para ler metadatos de ficheiros protexidos con fs-verity.
    • O cliente NFS implementa un modo de escritura "eager" (writes=eager), cando está activado, as operacións de escritura nun ficheiro transfírense inmediatamente ao servidor, evitando a caché da páxina. Este modo permítelle reducir o consumo de memoria, proporciona a recepción instantánea de información sobre o final do espazo libre no sistema de ficheiros e, nalgunhas situacións, permite conseguir un maior rendemento.
    • Engadíronse novas opcións de montaxe a CIFS (SMB): acregmax para controlar o almacenamento en caché de ficheiros e acdirmax para controlar o almacenamento en caché de metadatos do directorio.
    • En XFS, activouse o modo de comprobación de cotas multiproceso, acelerouse a execución fsync e preparouse o código growfs para implementar a función de reducir o tamaño do sistema de ficheiros.
  • Servizos de memoria e sistema
    • Engadiuse o subsistema DTMP (Dynamic Thermal Power Management), que permite regular de forma dinámica o consumo de enerxía dos distintos dispositivos en función dos límites xerais de temperatura establecidos.
    • Implementouse a capacidade de construír o núcleo usando o compilador Clang coa inclusión de optimizacións na fase de ligazón (LTO, Link Time Optimization). As optimizacións LTO difiren ao ter en conta o estado de todos os ficheiros implicados no proceso de compilación, mentres que os modos de optimización tradicionais optimizan cada ficheiro por separado e non teñen en conta as condicións para chamar ás funcións definidas noutros ficheiros. Por exemplo, con LTO, a implantación en liña é posible para funcións doutros ficheiros, o código non utilizado non se inclúe no ficheiro executable, a comprobación de tipos e a optimización xeral realízanse a nivel de proxecto no seu conxunto. O soporte LTO está limitado actualmente ás arquitecturas x86 e ARM64.
    • É posible seleccionar modos de preferencia (PREEMPT) no planificador de tarefas na fase de arranque (preempt=none/voluntary/full) ou mentres se traballa con debugfs (/debug/sched_debug), se se especificou a configuración PREEMPT_DYNAMIC ao construír o núcleo. Anteriormente, o modo de extrusión só se podía establecer a nivel de parámetros de montaxe. O cambio permite que as distribucións envíen núcleos co modo PREEMPT activado, o que proporciona unha latencia mínima para os escritorios ao custo dunha pequena penalización de rendemento e, se é necesario, volver a PREEMPT_VOLUNTARY (un modo intermedio para escritorios) ou PREEMPT_NONE (ofrece o máximo rendemento para os servidores). .
    • Engadiuse ao subsistema BPF soporte para operacións atómicas BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG e BPF_CMPXCHG.
    • Os programas BPF teñen a posibilidade de acceder aos datos da pila mediante punteiros con compensacións variables. Por exemplo, se antes só podías usar un índice de elemento constante para acceder a unha matriz da pila, agora podes usar un que cambia. O control de acceso só dentro dos límites existentes realízao o verificador BPF. Esta función só está dispoñible para programas privilexiados debido a preocupacións sobre a explotación de vulnerabilidades de execución de código especulativo.
    • Engadiuse a posibilidade de anexar programas BPF a puntos de rastrexo simples que non están asociados con eventos de rastrexo visibles no espazo do usuario (non se garante a preservación de ABI para tales puntos de rastrexo).
    • Implementouse o soporte para o bus CXL 2.0 (Compute Express Link), que se utiliza para organizar a interacción de alta velocidade entre a CPU e os dispositivos de memoria (permite utilizar dispositivos de memoria externos como parte da memoria RAM ou memoria permanente, coma se esta memoria estaban conectados a través dun controlador de memoria estándar na CPU).
    • Engadiuse o controlador nvmem para recuperar datos de áreas de memoria reservadas polo firmware que non son directamente accesibles para Linux (por exemplo, memoria EEPROM que só é accesible fisicamente para o firmware, ou datos que só son accesibles durante a fase de inicio inicial).
    • Eliminouse o soporte para o sistema de perfilado "oprofile", que non era moi utilizado e foi substituído polo mecanismo de perfeccionamento máis moderno.
    • A interface de E/S asíncrona io_uring proporciona integración con cgroups que controlan o uso da memoria.
    • A arquitectura RISC-V admite sistemas NUMA, así como mecanismos kprobes e uprobes.
    • Engadida a posibilidade de usar a chamada ao sistema kcmp() independentemente da funcionalidade das instantáneas do estado do proceso (punto de comprobación/restauración).
    • Elimináronse as macros EXPORT_UNUSED_SYMBOL() e EXPORT_SYMBOL_GPL_FUTURE(), que non se usan na práctica durante moitos anos.
  • Virtualización e seguridade
    • Engadiuse o mecanismo de protección KFence (Kernel Electric Fence), que detecta erros ao traballar coa memoria, como os excesos de memoria intermedia e o acceso despois de liberar memoria. A diferenza do mecanismo de depuración KASAN, o subsistema KFence caracterízase por unha alta velocidade de funcionamento e unha baixa sobrecarga, o que lle permite detectar erros de memoria que aparecen só nos sistemas de traballo ou durante un funcionamento a longo prazo.
    • Engadiuse soporte para o hipervisor ACRN, escrito para estar preparado para tarefas en tempo real e adecuación para o seu uso en sistemas de misión crítica. ACRN proporciona unha sobrecarga mínima, garante unha baixa latencia e unha resposta adecuada ao interactuar co equipo. Admite a virtualización de recursos da CPU, E/S, subsistema de rede, gráficos e operacións de son. ACRN pódese usar para executar varias máquinas virtuais illadas en unidades de control electrónico, paneis de instrumentos, sistemas de información de automóbiles, dispositivos IoT de consumo e outras tecnoloxías integradas. ACRN admite dous tipos de sistemas convidados: máquinas virtuales de servizo con privilexios, que se usan para xestionar os recursos do sistema (CPU, memoria, E/S, etc.) e máquinas virtuales de usuario personalizadas, que poden executar distribucións de Linux, Android e Windows.
    • No subsistema IMA (Integrity Measurement Architecture), que mantén unha base de datos hash para comprobar a integridade dos ficheiros e metadatos asociados, agora faise posible comprobar a integridade dos datos do propio núcleo, por exemplo, para rastrexar os cambios nas regras de SELinux .
    • A capacidade de interceptar hiperchamadas de Xen e reenvialas ao emulador que se executa no espazo do usuario engadiuse ao hipervisor KVM.
    • Engadiuse a posibilidade de usar Linux como ambiente raíz para o hipervisor Hyper-V. O ambiente raíz ten acceso directo ao hardware e úsase para executar sistemas convidados (análogo a Dom0 en Xen). Ata agora, Hyper-V (Microsoft Hypervisor) só admitía Linux en ambientes convidados, pero o propio hipervisor controlábase desde un ambiente baseado en Windows.
    • Engadiuse compatibilidade para o cifrado en liña para tarxetas eMMC, o que lle permite utilizar mecanismos de cifrado integrados no controlador da unidade que cifran e descifran E/S de forma transparente.
    • O soporte para os hash RIPE-MD 128/256/320 e Tiger 128/160/192, que non se usan no núcleo, así como o cifrado de fluxo Salsa20, que foi substituído polo algoritmo ChaCha20, foi eliminado do subsistema criptográfico. Actualizouse o algoritmo blake2 para implementar blake2s.
  • Subsistema de rede
    • Engadiuse a posibilidade de mover o controlador de sondeo NAPI para dispositivos de rede a un fío do núcleo separado, o que permite mellorar o rendemento para algúns tipos de carga de traballo. Anteriormente, a votación realizábase no contexto de softirq e non estaba cuberta polo programador de tarefas, o que dificultaba a realización de optimizacións detalladas para acadar o máximo rendemento. A execución nun fío do núcleo separado permite observar o manejador de votación desde o espazo do usuario, unido a núcleos individuais da CPU e telo en conta ao programar o cambio de tarefa. Para activar o novo modo en sysfs, proponse o parámetro /sys/class/net//threaded.
    • Integración no núcleo de MPTCP (MultiPath TCP), unha extensión do protocolo TCP para organizar o funcionamento dunha conexión TCP coa entrega de paquetes simultaneamente ao longo de varias rutas a través de diferentes interfaces de rede asociadas a diferentes enderezos IP. A nova versión engade a posibilidade de asignar prioridade a determinados fíos, o que permite, por exemplo, organizar o traballo dos fíos de seguridade que só se activan se hai problemas co fío principal.
    • IGMPv3 engade soporte para o mecanismo EHT (Explicit Host Tracking).
    • O motor de filtrado de paquetes de Netfilter ofrece a posibilidade de posuír determinadas táboas para obter o control exclusivo (por exemplo, un proceso de firewall en segundo plano pode facerse co propietario de determinadas táboas, evitando que outra persoa interfira con elas).
  • Оборудование
    • Limpamos plataformas ARM obsoletas e sen mantemento. Eliminouse o código das plataformas efm32, picoxcell, prima2, tango, u300, zx e c6x, así como os controladores asociados.
    • O controlador amdgpu ofrece a capacidade de overclock (OverDrive) tarxetas baseadas na GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). Engadido soporte para o formato de píxeles FP16 para DCE (motor de controlador de pantalla) de 8ª a 11ª xeración. Para GPU Navy Flounder (Navi 21) e APU Van Gogh, implementouse a capacidade de restablecer a GPU.
    • O controlador i915 para tarxetas gráficas Intel implementa o parámetro i915.mitigations para desactivar os mecanismos de illamento e protección a favor dun rendemento mellorado. Para os chips que comezan desde Tiger Lake, inclúese soporte para o mecanismo VRR (Variable Rate Refresh), que che permite cambiar de forma adaptativa a taxa de actualización do monitor para garantir a suavidade e sen lagoas durante os xogos. Inclúese compatibilidade coa tecnoloxía Intel Clear Color para mellorar a precisión da cor. Engadido soporte para DP-HDMI 2.1. Implementouse a capacidade de controlar a retroiluminación dos paneis eDP. Para as GPU Gen9 con compatibilidade con LSPCON (Level Shifter and Protocol Converter), o soporte HDR está activado.
    • O controlador nouveau engade soporte inicial para as GPU NVIDIA baseadas na arquitectura GA100 (Ampere).
    • O controlador msm engade soporte para as GPU Adreno 508, 509 e 512 utilizadas nos chips SDM (Snapdragon) 630, 636 e 660.
    • Engadiuse soporte para as tarxetas de son Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s e Pioneer DJM-750. Engadido soporte para o subsistema de audio Intel Alder Lake PCH-P. Implementouse o soporte para a simulación de software para conectar e desconectar un conector de audio para os controladores de depuración no espazo do usuario.
    • Engadiuse soporte para consolas de xogos Nintendo 64 fabricadas entre 1996 e 2003 (os intentos anteriores de portar Linux á Nintendo 64 non se completaron e clasificáronse como Vaporware). A motivación para crear un novo porto para unha plataforma obsoleta, que leva case vinte anos sen lanzar, é o desexo de estimular o desenvolvemento de emuladores e simplificar a portabilidade dos xogos.
    • Engadiuse o controlador para o controlador de xogos Sony PlayStation 5 DualSense.
    • Engadido soporte para placas, dispositivos e plataformas ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
    • Engadido soporte para Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070 smartphones.
    • Engadiuse o controlador bcm-vk para placas aceleradoras Broadcom VK (por exemplo, placas PCIe Valkyrie e Viper), que se pode usar para descargar operacións de procesamento de audio, vídeo e imaxes, así como operacións relacionadas co cifrado, a un dispositivo separado.
    • Engadiuse compatibilidade coa plataforma Lenovo IdeaPad coa capacidade de controlar a carga constante e a retroiluminación do teclado. Tamén se ofrece soporte para o perfil ACPI da plataforma ThinkPad coa capacidade de controlar os modos de consumo de enerxía. Engadiuse o controlador para o subsistema HID de Lenovo ThinkPad X1 Tablet Gen 2.
    • Engadido controlador ov5647 con soporte para módulo de cámara para Raspberry Pi.
    • Engadido soporte para placas RISC-V SoC FU740 e HiFive Unleashed. Tamén se engadiu un novo controlador para o chip Kendryte K210.

Fonte: opennet.ru

Engadir un comentario