Linux 5.11 kernel-release

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux-kernel 5.11. Een van de meest opvallende veranderingen: ondersteuning voor Intel SGX-enclaves, een nieuw mechanisme voor het onderscheppen van systeemoproepen, een virtuele hulpbus, een verbod op het samenstellen van modules zonder MODULE_LICENSE(), een snelle filtermodus voor systeemoproepen in seccomp, beëindiging van de ondersteuning voor de ia64-architectuur, overdracht van WiMAX-technologie naar de “staging”-tak, de mogelijkheid om SCTP in UDP in te kapselen.

De nieuwe versie bevat 15480 reparaties van 1991 ontwikkelaars, de patchgrootte is 72 MB (de wijzigingen betroffen 12090 bestanden, 868025 regels code zijn toegevoegd en 261456 regels zijn verwijderd). Ongeveer 46% van alle wijzigingen die in 5.11 zijn geïntroduceerd, hebben betrekking op apparaatstuurprogramma's, ongeveer 16% van de wijzigingen heeft betrekking op het updaten van code die specifiek is voor hardware-architecturen, 13% heeft betrekking op de netwerkstack, 3% heeft betrekking op bestandssystemen en 4% zijn gerelateerd aan interne kernelsubsystemen.

Belangrijkste innovaties:

  • Schijfsubsysteem, I/O en bestandssystemen
    • Er zijn verschillende montageopties aan Btrfs toegevoegd voor gebruik bij het herstellen van gegevens uit een beschadigd bestandssysteem: “rescue=ignorebadroots” voor montage, ondanks schade aan sommige rootbomen (extent, uuid, data reloc, device, csum, free space), “ Rescue=ignoredatacsums” om de controlesomcontrole op gegevens uit te schakelen en "rescue=all" om tegelijkertijd de modi 'ignorebadroots', 'ignoredatacsums' en 'nologreplay' in te schakelen. De mountoptie "inode_cache", die eerder verouderd was, is stopgezet. De code is voorbereid om ondersteuning te implementeren voor blokken met metagegevens en gegevens die kleiner zijn dan een paginagrootte (PAGE_SIZE), evenals ondersteuning voor de toewijzingsmodus voor gezoneerde ruimte. Niet-gebufferde (Direct IO) verzoeken zijn verplaatst naar de iomap-infrastructuur. De prestaties van een aantal handelingen zijn geoptimaliseerd; in sommige gevallen kan de versnelling oplopen tot tientallen procenten.
    • XFS implementeert de vlag "needsrepair", die aangeeft dat er reparatie nodig is. Wanneer deze vlag is ingesteld, kan het bestandssysteem pas worden aangekoppeld nadat de vlag opnieuw is ingesteld door het hulpprogramma xfs_repair.
    • Ext4 biedt alleen bugfixes en optimalisaties, evenals het opschonen van code.
    • Het opnieuw exporteren van bestandssystemen die via NFS zijn aangekoppeld, is toegestaan ​​(dat wil zeggen: een partitie die via NFS is aangekoppeld, kan nu via NFS worden geëxporteerd en als tussencache worden gebruikt).
    • De systeemaanroep close_range(), waarmee een proces een hele reeks open bestandsdescriptors in één keer kan sluiten, heeft een CLOSE_RANGE_CLOEXEC optie toegevoegd om descriptors te sluiten in close-on-exec-modus.
    • Het F2FS-bestandssysteem voegt nieuwe ioctl()-aanroepen toe om gebruikersruimtecontrole mogelijk te maken over welke bestanden in gecomprimeerde vorm worden opgeslagen. "compress_mode=" mount-optie toegevoegd om te kiezen of de compressie-handler aan de kernelzijde of in de gebruikersruimte moet worden geplaatst.
    • Biedt de mogelijkheid om Overlayfs te koppelen door niet-bevoorrechte processen met behulp van een afzonderlijke gebruikersnaamruimte. Om de naleving van de implementatie van het beveiligingsmodel te verifiëren, werd een volledige code-audit uitgevoerd. Overlayfs voegt ook de mogelijkheid toe om kopieën van bestandssysteemimages te gebruiken door optioneel de UUID-controle uit te schakelen.
    • Het Ceph-bestandssysteem heeft ondersteuning toegevoegd voor het msgr2.1-protocol, dat het gebruik van het AES-GCM-algoritme mogelijk maakt bij het verzenden van gegevens in gecodeerde vorm.
    • De dm-multipath-module implementeert de mogelijkheid om rekening te houden met CPU-affiniteit (“IO-affiniteit”) bij het kiezen van de route voor I/O-verzoeken.
  • Geheugen- en systeemservices
    • Er is een nieuw mechanisme voor het onderscheppen van systeemoproepen toegevoegd, gebaseerd op prctl(), waarmee u uitzonderingen uit de gebruikersruimte kunt genereren bij toegang tot een specifieke systeemoproep en de uitvoering ervan kunt emuleren. Deze functionaliteit is vereist in Wine en Proton om Windows-systeemaanroepen te emuleren, wat nodig is om compatibiliteit te garanderen met games en programma's die rechtstreeks systeemaanroepen uitvoeren zonder de Windows API te omzeilen (bijvoorbeeld om te beschermen tegen ongeoorloofd gebruik).
    • De systeemaanroep userfaultfd(), ontworpen om paginafouten (toegang tot niet-toegewezen geheugenpagina's) in de gebruikersruimte af te handelen, heeft nu de mogelijkheid om de afhandeling van uitzonderingen die op kernelniveau plaatsvindt uit te schakelen, waardoor het moeilijker wordt om bepaalde kwetsbaarheden te misbruiken.
    • Het BPF-subsysteem heeft ondersteuning toegevoegd voor taak-lokale opslag, die gegevensbinding aan een specifieke BPF-handler mogelijk maakt.
    • De boekhouding van het geheugengebruik door BPF-programma's is volledig opnieuw ontworpen - er is een cgroup-controller voorgesteld in plaats van memlock rlimit om het geheugengebruik in BPF-objecten te beheren.
    • Het BTF-mechanisme (BPF Type Format), dat typecontrole-informatie levert in BPF-pseudocode, biedt ondersteuning voor kernelmodules.
    • Ondersteuning toegevoegd voor shutdown(), renameat2() en unlinkat() systeemaanroepen naar de io_uring asynchrone I/O-interface. Bij het aanroepen van io_uring_enter() is de mogelijkheid toegevoegd om een ​​time-out op te geven (u kunt de ondersteuning voor het argument om een ​​time-out op te geven controleren met behulp van de vlag IORING_FEAT_EXT_ARG).
    • De ia64-architectuur die wordt gebruikt in Intel Itanium-processors is verplaatst naar de weescategorie, wat betekent dat het testen is stopgezet. Hewlett Packard Enterprise stopte met het accepteren van bestellingen voor nieuwe Itanium-apparatuur, en Intel deed dat vorig jaar ook.
    • Ondersteuning voor systemen gebaseerd op de MicroBlaze-architectuur die geen geheugenbeheereenheid (MMU) bevatten, is stopgezet. Dergelijke systemen zijn al lange tijd niet meer in het dagelijks leven gezien.
    • Voor de MIPS-architectuur is ondersteuning voor het testen van codedekking toegevoegd met behulp van het gcov-hulpprogramma.
    • Ondersteuning toegevoegd voor de virtuele hulpbus voor interface met multifunctionele apparaten die functionaliteit combineren waarvoor verschillende stuurprogramma's nodig zijn (bijvoorbeeld netwerkkaarten met Ethernet- en RDMA-ondersteuning). De bus kan worden gebruikt om een ​​primaire en secundaire driver aan een apparaat toe te wijzen, in situaties waarin het gebruik van het MFD-subsysteem (Multi-Function Devices) problematisch is.
    • Voor de RISC-V-architectuur is ondersteuning toegevoegd voor het CMA-geheugentoewijzingssysteem (Contiguous Memory Allocator), dat is geoptimaliseerd voor het toewijzen van grote aaneengesloten geheugengebieden met behulp van technieken voor het verplaatsen van geheugenpagina's. Voor RISC-V zijn ook tools geïmplementeerd om de toegang tot /dev/mem te beperken en rekening te houden met de verwerkingstijd van interrupts.
    • Voor 32-bits ARM-systemen is ondersteuning toegevoegd voor de KASan-foutopsporingstool (Kernel Address Sanitizer), die helpt bij het identificeren van fouten bij het werken met geheugen. Voor 64-bits ARM is de KASan-implementatie geconverteerd om MTE-tags (MemTag) te gebruiken.
    • Systeemoproep epoll_pwait2() toegevoegd om time-outs met nanosecondenprecisie mogelijk te maken (oproep epoll_wait manipuleert milliseconden).
    • Het bouwsysteem geeft nu een foutmelding weer wanneer wordt geprobeerd laadbare kernelmodules te bouwen waarin de codelicentie niet is gedefinieerd met behulp van de macro MODULE_LICENSE(). Vanaf nu zal het gebruik van de macro EXPORT_SYMBOL() voor statische functies ook een buildfout veroorzaken.
    • Ondersteuning toegevoegd voor het in kaart brengen van GEM-objecten vanuit geheugen dat wordt gebruikt voor I/O, waardoor het mogelijk werd om het werken met de framebuffer op sommige architecturen te versnellen.
    • Kconfig heeft de ondersteuning voor Qt4 stopgezet (terwijl de ondersteuning voor Qt5, GTK en Ncurses behouden blijft).
  • Virtualisatie en beveiliging
    • Er is ondersteuning voor een snelle responsmodus toegevoegd aan de systeemaanroep seccomp(), waarmee u zeer snel kunt bepalen of een bepaalde systeemaanroep is toegestaan ​​of verboden op basis van de bitmap met constante actie die aan het proces is gekoppeld en die niet hoeft te worden uitgevoerd een BPF-handler.
    • Geïntegreerde kernelcomponenten voor het maken en beheren van enclaves op basis van Intel SGX-technologie (Software Guard eXtensions), waarmee applicaties code kunnen uitvoeren in geïsoleerde gecodeerde geheugengebieden, waartoe de rest van het systeem beperkte toegang heeft.
    • Als onderdeel van een initiatief om de toegang vanuit de gebruikersruimte tot het MSR (modelspecifiek register) te beperken, schrijven naar het MSR_IA32_ENERGY_PERF_BIAS register, waarmee u de energie-efficiëntiemodus van de processor kunt wijzigen (“normaal”, “prestatie”, “powersave”) , is verboden.
    • De mogelijkheid om de migratie van taken met hoge prioriteit tussen CPU's uit te schakelen is verplaatst van de kernel-rt-branch voor realtime systemen.
    • Voor ARM64-systemen is de mogelijkheid toegevoegd om MTE-tags (MemTag, Memory Tagging Extension) te gebruiken voor signaalhandlergeheugenadressen. Het gebruik van MTE wordt mogelijk gemaakt door de optie SA_EXPOSE_TAGBITS op te geven in sigaction() en stelt u in staat het juiste gebruik van pointers te controleren om de exploitatie van kwetsbaarheden te blokkeren die worden veroorzaakt door toegang tot reeds vrijgemaakte geheugenblokken, bufferoverflows, toegang vóór initialisatie en gebruik buiten de huidige context.
    • De parameter "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING" toegevoegd, waarmee het dm-verity-subsysteem hash-handtekeningen kan controleren van certificaten die in de secundaire sleutelring zijn geplaatst. In de praktijk kunt u met de installatie niet alleen de certificaten verifiëren die in de kernel zijn ingebouwd, maar ook de certificaten die tijdens het gebruik zijn geladen, waardoor het mogelijk is om certificaten bij te werken zonder de hele kernel bij te werken.
    • Gebruikersmodus Linux heeft ondersteuning toegevoegd voor de slaapmodus, waardoor je de omgeving kunt bevriezen en het SIGUSR1-signaal kunt gebruiken om uit de slaapmodus te ontwaken.
    • Het virtio-mem-mechanisme, waarmee u geheugen kunt hot-pluggen en loskoppelen van virtuele machines, heeft ondersteuning toegevoegd voor Big Block Mode (BBM), wat het mogelijk maakt geheugen over te dragen of op te nemen in blokken die groter zijn dan de grootte van het kernelgeheugen blok, wat nodig is om VFIO in QEMU te optimaliseren.
    • Ondersteuning voor de CHACHA20-POLY1305-codering is toegevoegd aan de kernelimplementatie van TLS.
  • Netwerksubsysteem
    • Voor 802.1Q (VLAN) is een mechanisme voor het beheer van verbindingsfouten (CFM, Connectivity Fault Management) geïmplementeerd, waarmee u fouten in netwerken met virtuele bruggen (Virtual Bridged Networks) kunt identificeren, verifiëren en isoleren. CFM kan bijvoorbeeld worden gebruikt om problemen te isoleren in netwerken die meerdere onafhankelijke organisaties omvatten waarvan de medewerkers alleen toegang hebben tot hun eigen apparatuur.
    • Ondersteuning toegevoegd voor het inkapselen van SCTP-protocolpakketten in UDP-pakketten (RFC 6951), waardoor u SCTP kunt gebruiken op netwerken met oudere adresvertalers die SCTP niet rechtstreeks ondersteunen, en SCTP kunt implementeren op systemen die geen directe toegang tot het IP-adres bieden laag.
    • De implementatie van WiMAX-technologie is verplaatst naar staging en zal in de toekomst worden verwijderd als er geen gebruikers zijn die WiMAX nodig hebben. WiMAX wordt niet langer gebruikt in openbare netwerken, en in de kernel is de enige driver waarmee WiMAX kan worden gebruikt de verouderde Intel 2400m-driver. WiMAX-ondersteuning werd in 2015 stopgezet in de NetworkManager-netwerkconfigurator. Momenteel wordt WiMax vrijwel volledig vervangen door technologieën als LTE, HSPA+ en Wi-Fi 802.11n.
    • Er is gewerkt aan het optimaliseren van de verwerkingsprestaties van binnenkomend TCP-verkeer in de zerocopy-modus, d.w.z. zonder extra kopiëren naar nieuwe buffers. Voor middelgroot verkeer, dat tientallen of honderden kilobytes aan gegevens beslaat, is het gebruik van zerocopy in plaats van recvmsg() merkbaar effectiever. De geïmplementeerde wijzigingen maakten het bijvoorbeeld mogelijk om de efficiëntie van het verwerken van RPC-stijl verkeer met 32 ​​KB-berichten bij gebruik van zerocopy met 60-70% te verhogen.
    • Nieuwe ioctl()-aanroepen toegevoegd om netwerkbruggen te creëren die meerdere PPP-koppelingen overspannen. De voorgestelde mogelijkheid maakt het mogelijk frames van het ene kanaal naar het andere te verplaatsen, bijvoorbeeld van een PPPoE naar een PPPoL2TP-sessie.
    • Integratie in de kern van MPTCP (MultiPath TCP), een uitbreiding van het TCP-protocol voor het organiseren van de werking van een TCP-verbinding met de gelijktijdige levering van pakketten langs verschillende routes via verschillende netwerkinterfaces die zijn gekoppeld aan verschillende IP-adressen. De nieuwe release introduceert ondersteuning voor de optie ADD_ADDR om beschikbare IP-adressen te adverteren waarmee verbinding kan worden gemaakt bij het toevoegen van nieuwe stromen aan een bestaande MPTCP-verbinding.
    • De mogelijkheid toegevoegd om acties te configureren wanneer het pollingbudget voor verbindingen wordt overschreden (busy-polling). De voorheen beschikbare SO_BUSY_POLL-modus betekende het overschakelen naar softirq toen het budget op was. Voor toepassingen die polling moeten blijven gebruiken, wordt een nieuwe optie SO_PREFER_BUSY_POLL voorgesteld.
    • IPv6 implementeert ondersteuning voor de SRv6 End.DT4- en End.DT6-modi, die worden gebruikt om IPv4 L3 VPN's en VRF-apparaten (Virtual routing and forwarding) voor meerdere gebruikers te creëren.
    • Netfilter verenigde de implementatie van set-expressies, waardoor het mogelijk werd om meerdere expressies voor elk element van setlijsten te specificeren.
    • Er zijn API's toegevoegd aan de 802.11 draadloze stack om SAR-vermogenslimieten te configureren, evenals AE PWE- en HE MCS-parameters. Ondersteuning voor het 6GHz-bereik (Ultra High Band) is toegevoegd aan de Intel iwlwifi-driver. Het Qualcomm Ath11k-stuurprogramma heeft ondersteuning toegevoegd voor FILS-technologie (Fast Initial Link Setup, gestandaardiseerd als IEEE 802.11ai), waarmee u roamingvertragingen tijdens de migratie van het ene toegangspunt naar het andere kunt elimineren.
  • Uitrusting
    • Het amdgpu-stuurprogramma biedt ondersteuning voor AMD "Green Sardine" APU (Ryzen 5000) en "Dimgrey Cavefish" GPU (Navi 2), evenals initiële ondersteuning voor AMD Van Gogh APU met Zen 2 core en RDNA 2 GPU (Navi 2). Ondersteuning toegevoegd voor nieuwe Renoir APU-identifiers (gebaseerd op Zen 2 CPU en Vega GPU).
    • Het i915-stuurprogramma voor Intel-videokaarten ondersteunt IS-technologie (Integer scaling) met de implementatie van een filter voor het vergroten van de schaal, waarbij rekening wordt gehouden met de status van aangrenzende pixels (Nearest-neighbor interpolation) om de kleur van ontbrekende pixels te bepalen. Ondersteuning voor afzonderlijke Intel DG1-kaarten is uitgebreid. Er is ondersteuning geïmplementeerd voor de ‘Big Joiner’-technologie, die al aanwezig is sinds Ice Lake/Gen11-chips en het gebruik van één transcoder mogelijk maakt om twee streams te verwerken, bijvoorbeeld voor uitvoer naar een 8K-scherm via één DisplayPort. Een modus toegevoegd voor het asynchroon schakelen tussen twee buffers in het videogeheugen (async flip).
    • De nieuwe driver heeft initiële ondersteuning toegevoegd voor NVIDIA GPU's op basis van de Ampere-microarchitectuur (GA100, GeForce RTX 30xx), tot nu toe beperkt tot tools voor het besturen van videomodi.
    • Ondersteuning toegevoegd voor het 3WIRE-protocol dat wordt gebruikt in LCD-panelen. Ondersteuning toegevoegd voor Novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 en ABT Y030XX067A 3.0 panelen. Afzonderlijk kunnen we de ondersteuning voor het paneel van OnePlus 6- en 6T-smartphones opmerken, waardoor het mogelijk werd om het laden van een ongewijzigde kernel op apparaten te organiseren.
    • Ondersteuning toegevoegd voor Intel's eerste discrete USB4-hostcontroller, Maple Ridge.
    • Ondersteuning toegevoegd voor Allwinner H6 I2S, analoge apparaten ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI en XCVR, Realtek RT715 en Qualcomm SM8250 audiocodecs.
    • Ondersteuning toegevoegd voor ARM-boards, apparaten en platforms: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MStar Infinity2M, Nuvoton NPCM730, Marvell Armada 382, ​​​​Mikrotik gebaseerd op Marvell Prestera 98DX3236, servers met Nuvoton NPCM750 BMC, Kontron i.MX8M Mini, Espressobin Ultra, “Trogdor” Chromebook, Kobol Helios64, Engicam PX30.Core.
    • Ingebouwde ondersteuning voor de Ouya-gameconsole gebaseerd op NVIDIA Tegra 3.

Tegelijkertijd vormde de Latin American Free Software Foundation een versie van de volledig vrije 5.11-kernel - Linux-libre 5.11-gnu, ontdaan van elementen van de firmware en stuurprogramma's die niet-vrije componenten of codesecties bevatten, waarvan de reikwijdte beperkt is door de fabrikant. De nieuwe release schoont stuurprogramma's op voor qat_4xxx (crypto), lt9611uxcm (dsi/hdmi bridge), ccs/smia++ (sensor), ath11k_pci, nxp audio transceiver en mhi pci-controller. Bijgewerkte code voor het opschonen van blobs in stuurprogramma's en subsystemen amdgpu, btqca, btrtl, btusb, i915 csr. Nieuwe blobs uitgeschakeld in m3 rproc, idt82p33 ptp clock en qualcomm arm64.

Bron: opennet.ru

Voeg een reactie