Llançament del nucli Linux 5.11

Després de dos mesos de desenvolupament, Linus Torvalds va presentar el llançament del nucli Linux 5.11. Entre els canvis més destacats: suport per a enclavaments Intel SGX, un nou mecanisme per interceptar trucades al sistema, un bus auxiliar virtual, prohibició de muntar mòduls sense MODULE_LICENSE(), un mode de filtratge ràpid per a trucades al sistema en seccomp, terminació del suport per al arquitectura ia64, transferència de tecnologia WiMAX a la branca de "escenificació", la capacitat d'encapsular SCTP en UDP.

La nova versió inclou 15480 correccions de 1991 desenvolupadors, la mida del pegat és de 72 MB (els canvis van afectar 12090 fitxers, s'han afegit 868025 línies de codi, s'han eliminat 261456 línies). Al voltant del 46% de tots els canvis introduïts a 5.11 estan relacionats amb controladors de dispositiu, aproximadament el 16% dels canvis estan relacionats amb l'actualització de codi específic de les arquitectures de maquinari, el 13% estan relacionats amb la pila de xarxa, el 3% estan relacionats amb sistemes de fitxers i el 4% estan relacionats amb subsistemes interns del nucli.

Principals innovacions:

  • Subsistema de disc, E/S i sistemes de fitxers
    • S'han afegit diverses opcions de muntatge a Btrfs per utilitzar-les en restaurar dades d'un sistema de fitxers danyat: "rescue=ignorebadroots" per muntar, malgrat els danys en alguns arbres arrel (extensió, uuid, reubicació de dades, dispositiu, csum, espai lliure), " rescue=ignoredatacsums" per desactivar la comprovació de la suma de comprovació de dades i "rescue=all" per activar simultàniament els modes "ignorebadroots", "ignoredatacsums" i "nologreplay". L'opció de muntatge "inode_cache", que abans estava obsoleta, s'ha interromput. El codi s'ha preparat per implementar el suport per a blocs amb metadades i dades més petites que una mida de pàgina (PAGE_SIZE), així com per al mode d'assignació d'espais per zones. Les sol·licituds sense memòria intermèdia (E/S directa) s'han mogut a la infraestructura iomap. S'ha optimitzat el rendiment d'una sèrie d'operacions; en alguns casos, l'acceleració pot arribar a desenes de per cent.
    • XFS implementa la marca "needsrepair", que indica la necessitat de reparació. Quan s'estableix aquesta marca, el sistema de fitxers no es pot muntar fins que la utilitat xfs_repair restableixi la marca.
    • Ext4 només ofereix correccions d'errors i optimitzacions, així com neteja de codi.
    • Es permet la reexportació de sistemes de fitxers muntats sobre NFS (és a dir, una partició muntada mitjançant NFS ara es pot exportar mitjançant NFS i utilitzar-la com a memòria cau intermèdia).
    • La crida al sistema close_range(), que permet que un procés tanqui tot un rang de descriptors de fitxers oberts alhora, ha afegit una opció CLOSE_RANGE_CLOEXEC per tancar els descriptors en mode close-on-exec.
    • El sistema de fitxers F2FS afegeix noves crides ioctl() per permetre el control de l'espai d'usuari sobre quins fitxers s'emmagatzemen en forma comprimida. S'ha afegit l'opció de muntatge "compress_mode=" per triar si col·locar el controlador de compressió al costat del nucli o a l'espai d'usuari.
    • Proporciona la possibilitat de muntar Overlayfs mitjançant processos sense privilegis mitjançant un espai de noms d'usuari independent. Per verificar el compliment de la implementació del model de seguretat, es va dur a terme una auditoria completa del codi. Overlayfs també afegeix la possibilitat d'executar-se amb còpies d'imatges del sistema de fitxers desactivant opcionalment la comprovació d'UUID.
    • El sistema de fitxers Ceph ha afegit suport per al protocol msgr2.1, que permet l'ús de l'algorisme AES-GCM quan es transmeten dades en forma xifrada.
    • El mòdul dm-multipath implementa la capacitat de tenir en compte l'afinitat de la CPU ("afinitat d'IO") a l'hora de triar la ruta per a les sol·licituds d'E/S.
  • Serveis de memòria i sistema
    • S'ha afegit un nou mecanisme d'intercepció de trucades del sistema, basat en prctl(), que permet generar excepcions des de l'espai d'usuari quan accedeix a una trucada de sistema específica i emular-ne l'execució. Aquesta funcionalitat és necessària a Wine i Proton per emular les trucades al sistema de Windows, la qual cosa és necessària per garantir la compatibilitat amb jocs i programes que realitzen directament trucades al sistema sense passar per alt l'API de Windows (per exemple, per protegir-se de l'ús no autoritzat).
    • La crida al sistema userfaultfd(), dissenyada per gestionar errors de pàgina (accés a pàgines de memòria no assignades) a l'espai d'usuari, ara té la capacitat de desactivar el maneig d'excepcions que es produeix al nivell del nucli per dificultar l'explotació de determinades vulnerabilitats.
    • El subsistema BPF ha afegit suport per a l'emmagatzematge local de tasques, que proporciona l'enllaç de dades a un controlador BPF específic.
    • La comptabilització del consum de memòria dels programes BPF s'ha redissenyat completament: s'ha proposat un controlador cgroup en lloc de memlock rlimit per gestionar l'ús de la memòria en objectes BPF.
    • El mecanisme BTF (BPF Type Format), que proporciona informació de comprovació de tipus en pseudocodi BPF, proporciona suport per als mòduls del nucli.
    • S'ha afegit suport per a les trucades del sistema shutdown(), renameat2() i unlinkat() a la interfície d'E/S asíncrona io_uring. Quan es crida a io_uring_enter(), s'ha afegit la possibilitat d'especificar un temps d'espera (podeu comprovar el suport de l'argument per especificar un temps d'espera utilitzant el senyalador IORING_FEAT_EXT_ARG).
    • L'arquitectura ia64 utilitzada als processadors Intel Itanium s'ha mogut a la categoria d'orfes, la qual cosa significa que les proves han cessat. Hewlett Packard Enterprise va deixar d'acceptar comandes de nous equips Itanium, i Intel ho va fer l'any passat.
    • S'ha interromput el suport per a sistemes basats en l'arquitectura MicroBlaze que no inclouen una unitat de gestió de memòria (MMU). Aquests sistemes no s'han vist a la vida quotidiana durant molt de temps.
    • Per a l'arquitectura MIPS, s'ha afegit suport per a les proves de cobertura de codi mitjançant la utilitat gcov.
    • S'ha afegit suport per al bus auxiliar virtual per a la interfície amb dispositius multifunció que combinen funcionalitats que requereixen diferents controladors (per exemple, targetes de xarxa amb suport Ethernet i RDMA). El bus es pot utilitzar per assignar un controlador primari i secundari a un dispositiu, en situacions en què l'ús del subsistema MFD (Multi-Function Devices) és problemàtic.
    • Per a l'arquitectura RISC-V, s'ha afegit suport per al sistema d'assignació de memòria CMA (Contiguous Memory Allocator), que està optimitzat per assignar grans àrees de memòria contigües mitjançant tècniques de moviment de pàgines de memòria. Per a RISC-V, també s'implementen eines per limitar l'accés a /dev/mem i tenir en compte el temps de processament d'interrupcions.
    • Per als sistemes ARM de 32 bits, s'ha afegit suport per a l'eina de depuració KASan (desinfectador d'adreces del nucli), que ajuda a identificar errors quan es treballa amb la memòria. Per a ARM de 64 bits, la implementació KASan s'ha convertit per utilitzar etiquetes MTE (MemTag).
    • S'ha afegit la crida al sistema epoll_pwait2() per permetre temps d'espera amb precisió de nanosegons (la trucada epoll_wait manipula mil·lisegons).
    • El sistema de compilació ara mostra un error quan s'intenta construir mòduls del nucli carregables en què la llicència de codi no està definida mitjançant la macro MODULE_LICENSE(). A partir d'ara, utilitzar la macro EXPORT_SYMBOL() per a funcions estàtiques també provocarà un error de compilació.
    • S'ha afegit suport per mapejar objectes GEM des de la memòria utilitzada per a E/S, cosa que va permetre accelerar el treball amb el framebuffer en algunes arquitectures.
    • Kconfig ha eliminat el suport per a Qt4 (tot i que manté el suport per a Qt5, GTK i Ncurses).
  • Virtualització i seguretat
    • S'ha afegit suport per a un mode de resposta ràpida a la trucada al sistema seccomp(), que us permet determinar molt ràpidament si una determinada trucada al sistema està permesa o prohibida en funció del mapa de bits d'acció constant adjunt al procés, que no requereix execució. un gestor de BPF.
    • Components integrats del nucli per a la creació i gestió d'enclavaments basats en la tecnologia Intel SGX (Software Guard eXtensions), que permet a les aplicacions executar codi en àrees de memòria xifrades aïllades, a les quals la resta del sistema té accés limitat.
    • Com a part d'una iniciativa per limitar l'accés des de l'espai d'usuari al MSR (registre específic del model), escrivint al registre MSR_IA32_ENERGY_PERF_BIAS, que permet canviar el mode d'eficiència energètica del processador (“normal”, “rendiment”, “estalvi d'energia”). , està prohibit.
    • La capacitat de desactivar la migració de tasques d'alta prioritat entre CPU s'ha mogut de la branca kernel-rt per a sistemes en temps real.
    • Per als sistemes ARM64, s'ha afegit la possibilitat d'utilitzar etiquetes MTE (MemTag, Extensió d'etiquetatge de memòria) per a adreces de memòria del gestor de senyals. L'ús de MTE s'habilita especificant l'opció SA_EXPOSE_TAGBITS a sigaction() i permet comprovar l'ús correcte dels punters per bloquejar l'explotació de vulnerabilitats causades per l'accés a blocs de memòria ja alliberats, desbordaments de memòria intermèdia, accessos abans de la inicialització i ús fora del context actual.
    • S'ha afegit el paràmetre "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", que permet al subsistema dm-verity comprovar les signatures hash dels certificats col·locats a l'anell de claus secundari. A la pràctica, la configuració us permet verificar no només els certificats integrats al nucli, sinó també els certificats carregats durant el funcionament, cosa que permet actualitzar els certificats sense actualitzar tot el nucli.
    • El mode d'usuari Linux ha afegit suport per al mode de suspensió a inactiu, que us permet congelar l'entorn i utilitzar el senyal SIGUSR1 per despertar-vos del mode de suspensió.
    • El mecanisme virtio-mem, que us permet connectar i desconnectar la memòria en calent a màquines virtuals, ha afegit suport per al mode de blocs grans (BBM), que permet transferir o agafar memòria en blocs més grans que la mida de la memòria del nucli. bloc, que és necessari per optimitzar VFIO a QEMU.
    • S'ha afegit suport per al xifrat CHACHA20-POLY1305 a la implementació del nucli de TLS.
  • Subsistema de xarxa
    • Per a 802.1Q (VLAN), s'ha implementat un mecanisme de gestió de fallades de connexió (CFM, Connectivity Fault Management) que permet identificar, verificar i aïllar fallades en xarxes amb ponts virtuals (Virtual Bridged Networks). Per exemple, CFM es pot utilitzar per aïllar problemes en xarxes que abasten diverses organitzacions independents, els empleats de les quals només tenen accés al seu propi equip.
    • S'ha afegit suport per encapsular paquets de protocol SCTP en paquets UDP (RFC 6951), que permet utilitzar SCTP en xarxes amb traductors d'adreces antics que no admeten directament SCTP, així com implementar SCTP en sistemes que no proporcionen accés directe a la IP. capa.
    • La implementació de la tecnologia WiMAX s'ha traslladat a la posada en escena i està previst que s'elimini en el futur si no hi ha usuaris que necessitin WiMAX. WiMAX ja no s'utilitza a les xarxes públiques, i al nucli l'únic controlador amb el qual es pot utilitzar WiMAX és el controlador Intel 2400m obsolet. El suport de WiMAX es va suspendre al configurador de xarxa NetworkManager el 2015. Actualment, WiMax està gairebé completament substituït per tecnologies com LTE, HSPA+ i Wi-Fi 802.11n.
    • S'ha treballat per optimitzar el rendiment del processament del trànsit TCP entrant en mode zerocopy, és a dir. sense còpies addicionals a nous buffers. Per al trànsit de mida mitjana, que cobreix desenes o diversos centenars de kilobytes de dades, utilitzar zerocopy en lloc de recvmsg() és notablement més efectiu. Per exemple, els canvis implementats van permetre augmentar l'eficiència del processament del trànsit a l'estil RPC amb missatges de 32 KB quan s'utilitzava zerocopy en un 60-70%.
    • S'han afegit noves trucades ioctl() per crear ponts de xarxa que abasten diversos enllaços PPP. La capacitat proposada permet que les trames es moguin d'un canal a un altre, per exemple, d'una sessió PPPoE a una sessió PPPoL2TP.
    • Integració al nucli de MPTCP (MultiPath TCP), una extensió del protocol TCP per organitzar el funcionament d'una connexió TCP amb el lliurament de paquets simultàniament al llarg de diverses rutes a través de diferents interfícies de xarxa associades a diferents adreces IP. La nova versió introdueix suport per a l'opció ADD_ADDR per anunciar adreces IP disponibles a les quals es poden connectar quan s'afegeixen nous fluxos a una connexió MPTCP existent.
    • S'ha afegit la possibilitat de configurar accions quan es supera el pressupost de sondeig de connexió (sondeig ocupat). El mode SO_BUSY_POLL disponible anteriorment significava canviar a softirq quan s'esgotava el pressupost. Per a les aplicacions que necessiten continuar utilitzant l'enquesta, es proposa una nova opció SO_PREFER_BUSY_POLL.
    • IPv6 implementa suport per als modes SRv6 End.DT4 i End.DT6, utilitzats per crear VPN L4 IPv3 multiusuari i dispositius VRF (encaminament i reenviament virtual).
    • Netfilter va unificar la implementació d'expressions conjuntes, la qual cosa va permetre especificar diverses expressions per a cada element de les llistes de conjunts.
    • S'han afegit API a la pila sense fil 802.11 per configurar els límits de potència SAR, així com els paràmetres AE PWE i HE MCS. El controlador Intel iwlwifi ha afegit suport per a la gamma de 6GHz (banda ultra alta). El controlador Qualcomm Ath11k ha afegit suport per a la tecnologia FILS (Fast Initial Link Setup, estandarditzada com a IEEE 802.11ai), que us permet desfer-vos dels retards en itinerància durant la migració d'un punt d'accés a un altre.
  • Оборудование
    • El controlador amdgpu proporciona suport per a APU AMD "Green Sardine" (Ryzen 5000) i GPU "Dimgrey Cavefish" (Navi 2), així com suport inicial per APU AMD Van Gogh amb Zen 2 core i GPU RDNA 2 (Navi 2). S'ha afegit suport per als nous identificadors d'APU Renoir (basats en CPU Zen 2 i GPU Vega).
    • El controlador i915 per a targetes de vídeo Intel admet la tecnologia IS (escalat enter) amb la implementació d'un filtre per augmentar l'escala tenint en compte l'estat dels píxels veïns (interpolació del veí més proper) per determinar el color dels píxels que falten. S'ha ampliat el suport per a targetes Intel DG1 discretes. S'ha implementat el suport per a la tecnologia "Big Joiner", que està present des dels xips Ice Lake / Gen11 i permet l'ús d'un transcodificador per processar dos fluxos, per exemple, per a la sortida a una pantalla de 8K mitjançant un DisplayPort. S'ha afegit un mode per canviar de manera asíncrona entre dos buffers a la memòria de vídeo (flip asíncron).
    • El controlador nouveau ha afegit suport inicial per a les GPU NVIDIA basades en la microarquitectura Ampere (GA100, GeForce RTX 30xx), fins ara limitat a eines per controlar els modes de vídeo.
    • S'ha afegit suport per al protocol 3WIRE utilitzat als panells LCD. S'ha afegit suport per als panells novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 i ABT Y030XX067A 3.0. Per separat, podem destacar el suport per al panell dels telèfons intel·ligents OnePlus 6 i 6T, que va permetre organitzar la càrrega d'un nucli sense modificar als dispositius.
    • S'ha afegit suport per al primer controlador d'amfitrió USB4 discret d'Intel, Maple Ridge.
    • S'ha afegit suport per a Allwinner H6 I2S, Analog Devices ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI i XCVR, Realtek RT715 i Qualcomm SM8250 còdecs d'àudio.
    • Suport afegit per a plaques, dispositius i plataformes ARM: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Armada 730 NPl, 382 NPl, Marvel ​Mikrotik basat en Marvell Prestera 98DX3236, servidors amb Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, Chromebook "Trogdor", Kobol Helios64, Engicam PX30.Core.
    • Suport integrat per a la consola de jocs Ouya basada en NVIDIA Tegra 3.

Al mateix temps, la Latin American Free Software Foundation va formar una versió del nucli 5.11 completament gratuït: Linux-libre 5.11-gnu, eliminada d'elements de microprogramari i controladors que contenien components o seccions de codi no lliures, l'abast dels quals és limitat. pel fabricant. La nova versió neteja els controladors per a qat_4xxx (cripto), lt9611uxcm (pont dsi/hdmi), ccs/smia++ (sensor), ath11k_pci, transceptor d'àudio nxp i controlador mhi pci. Codi de neteja de blob actualitzat als controladors i subsistemes amdgpu, btqca, btrtl, btusb, i915 csr. Blobs nous desactivats a m3 rproc, idt82p33 ptp clock i qualcomm arm64.

Font: opennet.ru

Afegeix comentari