Linux 6.7 kernel-release

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux-kernel 6.7. Een van de meest opvallende veranderingen: integratie van het Bcachefs-bestandssysteem, stopzetting van de ondersteuning voor de Itanium-architectuur, de mogelijkheid van Nouvea om met GSP-R-firmware te werken, ondersteuning voor TLS-codering in NVMe-TCP, de mogelijkheid om uitzonderingen te gebruiken in BPF, ondersteuning voor futex in io_uring, optimalisatie van fq (Fair Queuing) plannerprestaties), ondersteuning voor de TCP-AO-extensie (TCP Authentication Option) en de mogelijkheid om netwerkverbindingen te beperken in het Landlock-beveiligingsmechanisme, toegevoegd toegangscontrole tot gebruikersnaamruimte en io_uring via AppArmor.

De nieuwe versie bevat 18405 reparaties van 2066 ontwikkelaars, de patchgrootte is 72 MB (de wijzigingen betroffen 13467 bestanden, 906147 regels code zijn toegevoegd en 341048 regels zijn verwijderd). De laatste release bevatte 15291 fixes van 2058 ontwikkelaars, de patchgrootte was 39 MB. Ongeveer 45% van alle wijzigingen die in 6.7 zijn geïntroduceerd, hebben betrekking op apparaatstuurprogramma's, ongeveer 14% van de wijzigingen heeft betrekking op het updaten van code die specifiek is voor hardware-architecturen, 13% heeft betrekking op de netwerkstack, 5% heeft betrekking op bestandssystemen en 3% zijn gerelateerd aan interne kernelsubsystemen.

Belangrijkste innovaties in kernel 6.7:

  • Schijfsubsysteem, I/O en bestandssystemen
    • De kernel gebruikt de Bcachefs-bestandssysteemcode, die probeert de prestaties, betrouwbaarheid en schaalbaarheid van XFS te bereiken, gecombineerd met elementen van de geavanceerde functionaliteit die te vinden is in Btrfs en ZFS. Bcachefs ondersteunt bijvoorbeeld functies zoals het opnemen van meerdere apparaten in een partitie, meerlaagse schijfindelingen (de onderste laag met veelgebruikte gegevens op basis van snelle SSD's, en de bovenste laag met minder gebruikte gegevens van harde schijven), replicatie (RAID 1/10), caching, transparante datacompressie (LZ4-, gzip- en ZSTD-modi), statusplakken (snapshots), integriteitsverificatie met behulp van checksums, de mogelijkheid om Reed-Solomon-foutcorrectiecodes op te slaan (RAID 5/6), informatie op te slaan in gecodeerde vorm (ChaCha20 en Poly1305 worden gebruikt). Wat betreft prestaties loopt Bcachefs voor op Btrfs en andere bestandssystemen die zijn gebaseerd op het Copy-on-Write-mechanisme, en demonstreert de werkingssnelheid dicht bij Ext4 en XFS.
    • Het Btrfs-bestandssysteem introduceert een vereenvoudigde quotamodus waarmee u hogere prestaties kunt bereiken door alleen de gebieden bij te houden in de subpartitie waarin ze zijn gemaakt. Dit vereenvoudigt de berekeningen aanzienlijk en verbetert de prestaties, maar u kunt geen rekening houden met de gebieden die in verschillende delen worden gedeeld. subpartities.
    • Btrfs heeft een nieuwe "stripe tree"-datastructuur toegevoegd, geschikt voor het in kaart brengen van logische omvang in situaties waarin fysieke toewijzingen niet op alle apparaten overeenkomen. De structuur wordt momenteel gebruikt in implementaties van RAID0 en RAID1 voor gezoneerde blokapparaten. In de toekomst zijn ze van plan deze structuur te gebruiken in RAID's op een hoger niveau, wat een aantal problemen zal oplossen die in de huidige implementatie bestaan.
    • Het Ceph-bestandssysteem implementeert ondersteuning voor het toewijzen van gebruikers-ID's van aangekoppelde bestandssystemen, die worden gebruikt om de bestanden van een specifieke gebruiker op een aangekoppelde buitenlandse partitie te matchen met een andere gebruiker op het huidige systeem.
    • De mogelijkheid toegevoegd om uid en gid op te geven bij mount aan efivarfs, zodat niet-rootprocessen UEFI-variabelen kunnen wijzigen.
    • Ioctl-aanroepen toegevoegd aan exFAT voor het lezen en wijzigen van FS-attributen. Behandeling van mappen met een nulgrootte toegevoegd.
    • F2FS implementeert de mogelijkheid om 16K-blokken te gebruiken.
    • Het autofs automount-mechanisme is omgeschakeld om de nieuwe partitiemontage-API te gebruiken.
    • OverlayFS biedt "lowerdir+" en "datadir+" mount-opties. Ondersteuning toegevoegd voor geneste montage van OverlayFS met xattrs.
    • XFS heeft de CPU-belasting in de realtime bloktoewijzingscode geoptimaliseerd. Er wordt voorzien in de mogelijkheid om tegelijkertijd lees- en FICLONE-bewerkingen uit te voeren.
    • De EXT2-code is geconverteerd om paginafolio's te gebruiken.
  • Geheugen- en systeemservices
    • Ondersteuning voor de ia64-architectuur die wordt gebruikt in Intel Itanium-processors, die in 2021 volledig werd stopgezet, is stopgezet. Itanium-processors werden in 2001 door Intel geïntroduceerd, maar de ia64-architectuur kon niet concurreren met AMD64, voornamelijk vanwege de hogere prestaties van AMD64 en de soepelere overgang van 32-bit x86-processors. Als gevolg hiervan verschoven de belangen van Intel ten gunste van x86-64-processors, en bleef het lot van Itanium HP Integrity-servers, waarvan de bestellingen drie jaar geleden werden stopgezet. Code voor ia64-ondersteuning werd uit de kernel verwijderd, voornamelijk vanwege het langdurige gebrek aan ondersteuning voor dit platform, terwijl Linus Torvalds zijn bereidheid uitsprak om ia64-ondersteuning terug te geven aan de kernel, maar alleen als er een onderhouder is die hoge kwaliteit kan aantonen ondersteuning voor dit platform buiten de hoofdkernel gedurende minimaal een jaar.
    • De kernelregelopdrachtparameter “ia32_emulation” is toegevoegd, waarmee u tijdens de opstartfase ondersteuning voor 32-bit-modus-emulatie in kernels die zijn gebouwd voor de x86-64-architectuur kunt in- of uitschakelen. Aan de praktische kant kun je met de nieuwe optie de kernel bouwen met ondersteuning voor compatibiliteit met 32-bits applicaties, maar schakel deze modus standaard uit om de aanvalsvector op de kernel te verminderen, aangezien de compatibiliteits-API minder getest is dan de hoofdkernel interfaces.
    • Voortdurende migratie van wijzigingen uit de Rust-voor-Linux-tak gerelateerd aan het gebruik van de Rust-taal als tweede taal voor het ontwikkelen van stuurprogramma's en kernelmodules (Rust-ondersteuning is standaard niet actief en leidt niet tot de opname van Rust in de vereiste assemblage-afhankelijkheden voor de kernel). De nieuwe versie maakt de overstap naar het gebruik van de Rust 1.73-release en biedt een set bindingen voor het werken met werkwachtrijen.
    • Het is mogelijk om het binfmt_misc-mechanisme te gebruiken om ondersteuning toe te voegen voor nieuwe uitvoerbare bestandsformaten (bijvoorbeeld om gecompileerde Java- of Python-applicaties uit te voeren) binnen afzonderlijke niet-bevoorrechte naamruimten.
    • De cgroup-controller-cpuset, waarmee u het gebruik van CPU-kernen kunt regelen bij het uitvoeren van een taak, biedt een indeling in lokale en externe partities, die verschillen in de vraag of de bovenliggende cgroup de juiste rootsectie is of niet. Nieuwe instellingen “cpuset.cpus.exclusive” en “cpuset.cpus.excluisve.effectief” zijn ook toegevoegd aan cpuset voor exclusieve CPU-binding.
    • Het BPF-subsysteem implementeert ondersteuning voor uitzonderingen, die worden verwerkt als een nooduitgang van een BPF-programma met de mogelijkheid om stapelframes veilig af te wikkelen. Bovendien maken BPF-programma's het gebruik van kptr-pointers mogelijk in verband met de CPU.
    • Ondersteuning voor bewerkingen met futex is toegevoegd aan het io_uring-subsysteem en er zijn nieuwe bewerkingen geïmplementeerd: IORING_OP_WAITID (asynchrone versie van waitid), SOCKET_URING_OP_GETSOCKOPT (getsockoptand-optie), SOCKET_URING_OP_SETSOCKOPT (setsockopt-optie) en IORING_OP_READ_MULTISHOT (meerdere leesbewerkingen die niet stoppen terwijl er zijn gegevens of de buffer is niet vol).
    • Implementatie toegevoegd van lichtgewicht, enkelvoudig verbonden FIFO-wachtrijen die alleen een spinlock vereisen voor het uit de wachtrij halen in een procescontext en waarbij een spinlock achterwege blijft voor atomaire toevoegingen aan de wachtrij in elke context.
    • Een ringbuffer "objpool" toegevoegd met een schaalbare implementatie van een krachtige wachtrij voor het toewijzen en retourneren van objecten.
    • Het eerste deel van de wijzigingen is toegevoegd om de nieuwe futex2 API te implementeren, die betere prestaties levert op NUMA-systemen, andere formaten dan 32 bits ondersteunt en kan worden gebruikt in plaats van de gemultiplexte futex()-systeemaanroep.
    • Voor ARM32- en S390x-architecturen is ondersteuning voor de huidige set (cpuv4) BPF-instructies toegevoegd.
    • Voor de RISC-V-architectuur is het mogelijk om de Shadow-Call Stack-controlemodus te gebruiken die beschikbaar is in Clang 17, ontworpen om te beschermen tegen het overschrijven van het retouradres van een functie in het geval van een bufferoverflow op de stapel. De essentie van de beveiliging is om het retouradres op te slaan in een aparte “schaduwstapel” nadat de besturing naar een functie is overgedragen en dit adres is opgehaald voordat de functie wordt verlaten.
    • Er is een nieuwe slimme modus voor het scannen van geheugenpagina's toegevoegd aan het mechanisme voor het samenvoegen van identieke geheugenpagina's (KSM: Kernel Samepage Merging), die niet-succesvol gescande pagina's bijhoudt en de intensiteit van het opnieuw scannen ervan vermindert. Om de nieuwe modus in te schakelen is de instelling /sys/kernel/mm/ksm/smart_scan toegevoegd.
    • Een nieuw ioctl-commando PAGEMAP_SCAN toegevoegd, waarmee u, wanneer gebruikt met userfaultfd(), de feiten kunt bepalen van het schrijven naar een specifiek geheugenbereik. De nieuwe functie kan bijvoorbeeld in het systeem worden gebruikt om de status van CRIU-processen of in anti-cheatsystemen in games op te slaan en te herstellen.
    • In het assemblagesysteem is, als de Clang-compiler beschikbaar is, de assemblage van voorbeelden van het gebruik van het perf-subsysteem, geschreven als BPF-programma's, standaard ingeschakeld.
    • De oude videobuf-laag, die werd gebruikt om framebuffers in het mediasubsysteem te beheren en meer dan 10 jaar geleden werd vervangen door een nieuwe implementatie van videobuf2, is verwijderd.
  • Virtualisatie en beveiliging
    • De mogelijkheid om gegevens te coderen in blokken die kleiner zijn dan de blokgrootte in het bestandssysteem is toegevoegd aan het fscrypt-subsysteem. Dit kan nodig zijn om hardwareversleutelingsmechanismen in te schakelen die alleen kleine blokken ondersteunen (UFS-controllers die alleen een blokgrootte van 4096 ondersteunen, kunnen bijvoorbeeld worden gebruikt met een bestandssysteem met een blokgrootte van 16 KB).
    • Het “iommufd”-subsysteem, waarmee u IOMMU-geheugenpaginatabellen (I/O Memory-Management Unit) kunt beheren via bestandsdescriptors vanuit de gebruikersruimte, heeft het volgen van gegevens toegevoegd die nog niet uit de cache zijn verwijderd (vuil) voor DMA bewerkingen, die nodig zijn voor het bepalen van geheugen met niet-geschoonde gegevens tijdens procesmigratie.
    • Ondersteuning voor het definiëren van toegangscontroleregels voor TCP-sockets is toegevoegd aan het Landlock-mechanisme, waarmee u de interactie van een groep processen met de externe omgeving kunt beperken. U kunt bijvoorbeeld een regel maken die alleen toegang tot netwerkpoort 443 toestaat om HTTPS-verbindingen tot stand te brengen.
    • Het AppArmor-subsysteem heeft de mogelijkheid toegevoegd om de toegang tot het io_uring-mechanisme te controleren en gebruikersnaamruimten te creëren, waardoor u selectief alleen bepaalde processen toegang tot deze mogelijkheden kunt verlenen.
    • Attestation-API voor virtuele machines toegevoegd om de integriteit van het opstartproces van de virtuele machine te verifiëren.
    • LoongArch-systemen ondersteunen virtualisatie met behulp van de KVM-hypervisor.
    • Bij gebruik van de KVM-hypervisor op RISC-V-systemen is ondersteuning voor de Smstateen-extensie verschenen, die de virtuele machine blokkeert om toegang te krijgen tot CPU-registers die niet expliciet worden ondersteund door de hypervisor. Ook ondersteuning toegevoegd voor het gebruik van de Zicond-extensie in gastsystemen, waardoor het gebruik van enkele voorwaardelijke gehele bewerkingen mogelijk is.
    • In x86-gebaseerde gastsystemen die onder KVM draaien, zijn maximaal 4096 virtuele CPU's toegestaan.
  • Netwerksubsysteem
    • Het NVMe-TCP-stuurprogramma (NVMe over TCP), waarmee u toegang krijgt tot NVMe-schijven via het netwerk (NVM Express over Fabrics) met behulp van het TCP-protocol, heeft ondersteuning toegevoegd voor het coderen van het gegevensoverdrachtkanaal met behulp van TLS (met behulp van KTLS en een achtergrondproces in gebruikersruimte tlshd voor verbindingsonderhandelingen).
    • De prestaties van de fq-pakketplanner (Fair Queuing) zijn geoptimaliseerd, waardoor het mogelijk is de doorvoer met 5% te verhogen onder zware belasting in de tcp_rr-test (TCP Request/Response) en met 13% bij een onbeperkte stroom UDP-pakketten.
    • TCP voegt een optionele microsecond-precision timestamp (TCP TS)-mogelijkheid (RFC 7323) toe, die een nauwkeurigere latentieschatting en geavanceerdere congestiecontrolemodules mogelijk maakt. Om dit in te schakelen, kunt u het commando “ip route add 10/8 ... features tcp_usec_ts” gebruiken.
    • De TCP-stack heeft ondersteuning toegevoegd voor de TCP-AO-extensie (TCP Authentication Option, RFC 5925), die het mogelijk maakt om TCP-headers te verifiëren met behulp van MAC-codes (Message Authentication Code), met behulp van modernere algoritmen HMAC-SHA1 en CMAC-AES- 128 in plaats van de eerder beschikbare TCP-MD5-optie gebaseerd op het oudere MD5-algoritme.
    • Er is een nieuw type virtuele netwerkapparaten “netkit” toegevoegd, waarbij de logica voor gegevensoverdracht wordt ingesteld met behulp van een BPF-programma.
    • KSMBD, een implementatie op kernelniveau van een SMB-server, heeft ondersteuning toegevoegd voor het omzetten van bestandsnamen die surrogaatparen van samengestelde tekens bevatten.
    • NFS heeft de implementatie van threads met RPC-services verbeterd. Ondersteuning toegevoegd voor schrijfdelegatie (voor NFSv4.1+). NFSD heeft ondersteuning toegevoegd voor de rpc_status netlink-handler. Verbeterde ondersteuning voor NFSv4.x-clients bij opnieuw exporteren naar knfsd.
  • Uitrusting
    • Initiële ondersteuning voor GSP-RM-firmware is toegevoegd aan de Nouveau-kernelmodule, die wordt gebruikt in de NVIDIA RTX 20+ GPU om initialisatie- en GPU-besturingsbewerkingen naar de zijkant van een afzonderlijke GSP-microcontroller (GPU-systeemprocessor) te verplaatsen. Dankzij GSP-RM-ondersteuning kan de Nouveau-driver werken via firmware-aanroepen, in plaats van rechtstreeks hardware-interacties te programmeren, waardoor het veel eenvoudiger wordt om ondersteuning voor nieuwe NVIDIA GPU's toe te voegen door gebruik te maken van vooraf gebouwde oproepen voor initialisatie en energiebeheer.
    • Het AMDGPU-stuurprogramma ondersteunt GC 11.5, NBIO 7.11, SMU 14, SMU 13.0 OD, DCN 3.5, VPE 6.1 en DML2. Verbeterde ondersteuning voor naadloos laden (geen flikkering bij het wisselen van videomodus).
    • Het i915-stuurprogramma voegt ondersteuning toe voor Intel Meteor Lake-chips en voegt een eerste implementatie van Intel LunarLake (Xe 2) toe.
    • Ondersteuning toegevoegd voor asymmetrische transmissiekanalen toegevoegd aan de USB4 v2 (120/40G)-specificatie.
    • Ondersteuning toegevoegd voor ARM SoC: Qualcomm Snapdragon 720G (gebruikt in Xiaomi-smartphones), AMD Pensando Elba, Renesas, R8A779F4 (R-Car S4-8), USRobotics USR8200 (gebruikt in routers en NAS).
    • Ondersteuning toegevoegd voor de Fairphone 5-smartphone en ARM-boards Orange Pi 5, QuartzPro64, Turing RK1, Variscite MX6, BigTreeTech CB1, Freescale LX2162, Google Spherion, Google Hayato, Genio 1200 EVK, RK3566 Powkiddy RGB30.
    • Ondersteuning toegevoegd voor RISC-V-borden Milk-V Pioneer en Milk-V Duo.
    • Ondersteuning toegevoegd voor geluidsinterfaces van HUAWEI-laptops geleverd met AMD CPU's. Ondersteuning toegevoegd voor extra luidsprekers geïnstalleerd op Dell Oasis 13/14/16 laptops. Ondersteuning toegevoegd voor ingebouwde luidsprekers ASUS K6500ZC. Ondersteuning toegevoegd voor de mute-indicator op HP 255 G8- en G10-laptops. Ondersteuning toegevoegd voor acp6.3-audiostuurprogramma's. Ondersteuning toegevoegd voor de professionele opname-interfaces Focusrite Clarett+ 2Pre en 4Pre.

Tegelijkertijd vormde de Latin American Free Software Foundation een versie van de volledig vrije kernel 6.7 - Linux-libre 6.7-gnu, ontdaan van elementen van firmware en stuurprogramma's die niet-vrije componenten of codesecties bevatten, waarvan de reikwijdte beperkt is door de fabrikant. In release 6.7 is de blob-opschooncode bijgewerkt in verschillende stuurprogramma's en subsystemen, bijvoorbeeld in de stuurprogramma's amdgpu, nouveau, adreno, mwifiex, mt7988, ath11k, avs en btqca. De code voor het opschonen van de localtalk- en rtl8192u-stuurprogramma's is verwijderd omdat ze uit de kernel zijn uitgesloten. Onnodige componenten verwijderd voor het opschonen van de xhci-pci-, rtl8xxxu- en rtw8822b-stuurprogramma's, die eerder per ongeluk waren toegevoegd. Blobnamen in dts-bestanden opgeschoond voor de Aarch64-architectuur. Blobs verwijderd in de nieuwe stuurprogramma's mt7925, tps6598x, aw87390 en aw88399.

Bron: opennet.ru

Voeg een reactie