Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux-kernel 5.17 gepresenteerd. Onder de meest opvallende wijzigingen bevinden zich: een nieuw prestatiemanagementsysteem voor AMD-processors, de mogelijkheid voor recursieve mapping van gebruikers-ID's in bestandssystemen, ondersteuning voor draagbare gecompileerde BPF-programma's, de overstap van de pseudowillekeurige getallengenerator naar het BLAKE2s-algoritme, de RTLA-tool voor realtime uitvoeringsanalyse, een nieuwe fscache-backend voor het cachen van netwerksystemen en de mogelijkheid om namen te koppelen aan anonieme mmap-bewerkingen.
In de nieuwe versie zijn 14203 correcties aangebracht door 1995 ontwikkelaars, de patchgrootte is 37 MB (de wijzigingen hebben 11366 bestanden aangetast, er zijn 506043 regels code toegevoegd en 250954 regels verwijderd). Ongeveer 44% van alle wijzigingen in 5.17 heeft betrekking op apparaatsdrivers, ongeveer 16% van de wijzigingen betreft de update van architectuurspecifieke code, 15% heeft betrekking op de netwerStack, 4% op bestandssystemen en 4% op interne subsystemen van de kernel.
Belangrijkste nieuwigheden in kernel 5.17:
- Opslagsubsystemen, invoer/uitvoer en bestandssystemen
- De mogelijkheid voor geneste mapping van gebruikers-ID's van aangekoppelde bestandssystemen is geïmplementeerd, die wordt toegepast om bestanden van een bepaalde gebruiker op een aangekoppeld vreemd volume te koppelen aan een andere gebruiker in het huidige systeem. De toegevoegde mogelijkheid stelt gebruikers in staat om recursief mapping te gebruiken bovenop bestandssystemen waarvoor al mapping is toegepast.
- Het fscache-systeem is volledig herschreven, dat wordt gebruikt voor het organiseren van caching in lokale bestandssystemen van gegevens die via netwerksystemen worden verzonden. De nieuwe implementatie kenmerkt zich door een aanzienlijke vereenvoudiging van code en de vervanging van gecompliceerde planning- en statusbewakingsoperaties door eenvoudigere mechanismen. Ondersteuning voor de nieuwe fscache is geïmplementeerd in het CIFS-bestandssysteem.
- In het fanotify FS-evenementenvolgsysteem is een nieuw type evenement FAN_RENAME geïntroduceerd, dat het mogelijk maakt om de operatie van het hernoemen van bestanden of mappen in één keer te onderscheppen (voorheen werden voor het verwerken van hernoemingen twee aparte evenementen, FAN_MOVED_FROM en FAN_MOVED_TO, gebruikt).
- In het Btrfs-bestandssysteem zijn de log- en fsync-bewerkingen geoptimaliseerd voor grote mappen door alleen indexsleutels te kopiëren en de hoeveelheid gelogde metadata te verkleinen. Ondersteuning voor indexering en het zoeken op basis van de grootte van vrije ruimte-informatie is gerealiseerd, waardoor de latenties met ongeveer 30% zijn verminderd en de zoektijd is verkort. Het is toegestaan om defragmentatiebewerkingen te onderbreken. De mogelijkheid is ingebouwd om apparaten toe te voegen zonder de balans tussen opslagmedia uit te schakelen, dat wil zeggen bij het mounten van het FS met de skip_balance-optie.
- Een nieuwe mount-syntaxis voor het Ceph-bestandssysteem is voorgesteld, die bestaande problemen met IP-koppeling oplost. IP-adressen Voor het bepalen van de server kan nu de cluster-ID (FSID) worden gebruikt: mount -t ceph user@fsid.fs_name=\[subdir] mnt -o mon_addr=monip1[:port][\/monip2[:port]]
- Het Ext4-bestandssysteem is overgezet naar een nieuwe API voor het mounten, die de fasen van het parseren van mountopties en het instellen van de superblock scheidt. Ondersteuning voor de mountopties lazytime en nolazytime is stopgezet, die als tijdelijke wijziging aan util-linux werden toegevoegd om het gebruik van de MS_LAZYTIME-vlag te vereenvoudigen. Er is ondersteuning toegevoegd voor het instellen en lezen van labels in FS (ioctl FS_IOC_GETFSLABEL en FS_IOC_SETFSLABEL).
- In NFSv4 is ondersteuning toegevoegd voor bestands- en mapnamen zonder onderscheid in hoofdletters. In NFSv4.1+ is ondersteuning toegevoegd voor de definitie van geaggregeerde sessies (trunking).
- Geheugen en systeemdiensten
- Een amd-pstate driver is toegevoegd, die dynamische frequentiecontrole biedt voor optimale prestaties. De driver ondersteunt CPU en APU AMD vanaf de Zen 2-generatie, is gezamenlijk ontwikkeld met Valve en is gericht op het verbeteren van de efficiëntie van energiebeheer. Voor adaptieve frequentieaanpassing wordt het CPPC-mechanisme (Collaborative Processor Performance Control) gebruikt, dat een nauwkeurigere wijziging van de prestaties mogelijk maakt (niet beperkt tot drie prestatieniveaus) en sneller reageert op statuswijzigingen dan de eerder gebruikte P-state drivers op basis van ACPI (CPUFreq).
- In de eBPF-subsystem is de bpf_loop()-handler voorgesteld, die een alternatieve manier biedt om lussen in eBPF-programma's te organiseren die sneller en gemakkelijker te verifiëren zijn.
- Er is een CO-RE (Compile Once — Run Everywhere) mechanisme op kerkniveau geïmplementeerd, waarmee eBPF-programmacode slechts één keer kan worden verzameld en een speciale universele loader wordt gebruikt die het geladen programma aanpast aan de huidige kernel en BTF-typen (BPF Type Format).
- Er is de mogelijkheid toegevoegd om namen toe te wijzen aan gebieden van privé anonieme (toegewezen via malloc) geheugen, wat het debuggen en optimaliseren van het geheugengebruik in applicaties kan vereenvoudigen. Namen worden toegewezen via prctl met de vlag PR_SET_VMA_ANON_NAME en worden weergegeven in /proc/pid/maps en /proc/pid/smaps in de vorm van "[anon:<name>]".
- In de taakplanner is het mogelijk gemaakt om de tijd te volgen en weer te geven in /proc/PID/sched die processen doorbrengen in de toestand van gedwongen idle (forced-idle), toegepast bijvoorbeeld voor het verminderen van de belasting bij oververhitting van de processor.
- Er is een gpio-sim-module toegevoegd, bedoeld voor het simuleren van GPIO-chips voor testdoeleinden.
- De opdracht "perf ftrace" heeft een subopdracht "latency" gekregen voor het genereren van histogrammen met informatie over vertragingen.
- Er is een set hulpprogramma's "RTLA" toegevoegd voor het analyseren van realtime prestaties. De set bevat hulpprogramma's zoals osnoise (bepaalt de invloed van het besturingssysteem op de uitvoering van de taak) en timerlat (wijzigt de vertragingen gerelateerd aan de timer).
- De tweede reeks patches met de implementatie van het concept van geheugenpagina's (page folios) is geïntegreerd, die lijken op samengestelde geheugenpagina's (compound pages), maar verschillen in verbeterde semantiek en duidelijkere werkinrichting. Het gebruik van folios versnelt het beheer van geheugen in bepaalde subsysteem van de kernel. In de voorgestelde patches is de omzetting van de pagina-cache naar het gebruik van folios voltooid en is de eerste ondersteuning voor folios in het bestandssysteem XFS toegevoegd.
- Er is een build-modus "make mod2noconfig" toegevoegd, waarbij een configuratie wordt gegenereerd die alle uitgeschakelde subsysteem in de vorm van kernelmodules verzamelt.
- De vereisten voor de versie van LLVM/Clang die kan worden gebruikt voor het bouwen van de kernel zijn verhoogd. Voor het bouwen is nu minimaal release LLVM 11 vereist.
- Virtualisatie en beveiliging
- Een bijgewerkte implementatie van de RDRAND pseudo-random number generator is voorgesteld, die verantwoordelijk is voor de werking van de apparaten /dev/random en /dev/urandom. Het is opmerkelijk dat er een overgang heeft plaatsgevonden naar het gebruik van de hashfunctie BLAKE2s in plaats van SHA1 voor het mengen van entropie. Deze wijziging heeft de veiligheid van de pseudo-random number generator verhoogd door de problematische SHA1-algoritme te verwijderen en het herschrijven van de RNG-initialisatie vector uit te sluiten. Aangezien het BLAKE2s-algoritme SHA1 qua prestaties overtreft, heeft het gebruik ervan ook een positieve invloed gehad op de prestaties.
- Er is bescherming toegevoegd tegen kwetsbaarheden in processors, veroorzaakt door speculatieve uitvoering van instructies na onvoorwaardelijke directe sprongen. Het probleem doet zich voor bij het vooruitlopen op de verwerking van instructies die zich in het geheugen onmiddellijk achter de spronkinstructie bevinden (SLS, Straight Line Speculation). Voor het inschakelen van de bescherming is een build met GCC 12 vereist, die momenteel in testfase is.
- Een referentietellermechanisme is toegevoegd, gericht op het verminderen van fouten bij het tellen van referenties die leiden tot toegang tot geheugen na vrijgave. Het mechanisme is momenteel beperkt tot de netwerksubsystemen, maar kan in de toekomst worden aangepast voor andere delen van de kernel.
- Uitgebreide controles van nieuwe records in de paginatabellen van het procesgeheugen zijn geïmplementeerd, waardoor bepaalde soorten schade kunnen worden opgespoord en de systemen kunnen worden stopgezet door aanvallen in een vroeg stadium te blokkeren.
- De mogelijkheid is toegevoegd om kernelmodulen rechtstreeks door de kernel zelf uit te pakken, in plaats van door een handler in de gebruikersruimte. Dit zorgt ervoor dat met behulp van de LSM-module LoadPin kan worden gegarandeerd dat kernelmodulen in het geheugen worden geladen vanuit een geverifieerd opslagapparaat.
- Een build met de flag "-Wcast-function-type" is verzekerd, waarmee waarschuwingen worden weergegeven over het casten van functieptr naar incompatibele types.
- Een virtuele hostdriver pvUSB is toegevoegd voor de Xen-hypervisor, die toegang biedt tot USB-apparaten die zijn doorgegeven aan gastsystemen (dit stelt gastsystemen in staat om toegang te krijgen tot fysieke USB-apparaten die aan het gast systeem zijn toegewezen).
- Er is een module toegevoegd waarmee via Wi-Fi interactie kan plaatsvinden met de IME (Intel Management Engine) subsystemen, die van pas komen in de meeste moderne moederborden met Intel-processors en worden geïmplementeerd als een aparte microprocessor die onafhankelijk van de CPU werkt.
- Voor de ARM64-architectuur is ondersteuning toegevoegd voor het debugtool KCSAN (Kernel Concurrency Sanitizer), dat bedoeld is voor het dynamisch identificeren van race-omstandigheden binnen de kernel.
- Voor 32-bits ARM-systemen is de mogelijkheid toegevoegd om het KFENCE-mechanisme te gebruiken voor het opsporen van geheugenfouten.
- In de KVM-hypervisor is ondersteuning toegevoegd voor de AMX-instructies (Advanced Matrix Extensions), die zijn geïmplementeerd in de aankomende Intel Xeon Scalable serverprocessoren.
- Netwerk subsysteem
- Ondersteuning voor offloading van netwerkapparaten voor het beheer van verkeer is toegevoegd.
- De mogelijkheid om het MCTP (Management Component Transport Protocol) boven seriële interface-apparaten te gebruiken, is toegevoegd. MCTP kan worden gebruikt voor de interactie tussen beheerscontrollers en bijbehorende apparaten (host-processors, randapparatuur, enz.).
- De TCP-stack is geoptimaliseerd, bijvoorbeeld door het uitstellen van het vrijgeven van socket-buffers om de prestatie van recvmsg-aanroepen te verbeteren.
- Op het niveau van CAP_NET_RAW is het mogelijk gemaakt om via de setsockopt-functie de modi SO_PRIORITY en SO_MARK in te stellen.
- Voor IPv4 is het nu toegestaan om raw-sockets niet aan lokale IP-adressen te koppelen met de opties IP_FREEBIND en IP_TRANSPARENT.
- Een sysctl arp_missed_max is toegevoegd voor het configureren van het drempel aantal fouten bij de ARP-monitor, waarna de netwerkinterface wordt uitgeschakeld.
- Het is nu mogelijk om afzonderlijke waarden sysctl min_pmtu en mtu_expires in netwerkspecifieke namespaces in te stellen.
- In de ethtool API is de mogelijkheid om de grootte van binnenkomende en uitgaande pakketbuffers in te stellen en te bepalen toegevoegd.
- In Netfilter is ondersteuning toegevoegd voor het filteren van transit pppoe-verkeer in netwerkmolens.
- In de ksmbd-module, die het SMB3-protocol implementeert, is ondersteuning toegevoegd voor sleuteluitwisseling, waarbij netwerkpoort 445 voor smbdirect wordt gebruikt, en ondersteuning voor de parameter 'smb2 max credit' is toegevoegd. de server, gebruikmakend van het SMB3-protocol, is er ondersteuning toegevoegd voor het uitwisselen van sleutels, netwerkpoort 445 is toegewezen voor smbdirect en ondersteuning voor de parameter 'smb2 max credit' is toegevoegd.
- Apparatuur
- In het drm-systeem (Direct Rendering Manager) en de i915-driver is ondersteuning toegevoegd voor schermen die vertrouwelijke informatie weergeven, bijvoorbeeld worden sommige laptops geleverd met schermen die een ingebouwde privéweergavefunctie hebben die het zicht vanuit de zijkant bemoeilijkt. De toegevoegde wijzigingen maken het mogelijk om gespecialiseerde stuurprogramma's voor dergelijke schermen aan te sluiten en de privéweergave-instellingen te beheren via het instellen van eigenschappen in de gebruikelijke KMS-stuurprogramma's.
- In de amdgpu-driver is ondersteuning toegevoegd voor de debugtechnologie STB (Smart Trace Buffer) voor alle ondersteunde AMD-GPU's. STB vereenvoudigt de analyse van crashes en het identificeren van probleembronnen door informatie over de functies die vóór de laatste crash zijn uitgevoerd, in een speciale buffer op te slaan.
- In de i915-driver is ondersteuning toegevoegd voor Intel Raptor Lake S-chips en is standaard ondersteuning ingeschakeld voor de grafische subsystemen van Intel Alder Lake P-chips. Er is een mogelijkheid toegevoegd om de screenverlichting te regelen via de DPCD-interface van VESA.
- In de fbcon/fbdev-stuurprogramma's is de ondersteuning voor hardwareversnelling van scrollen in de console hersteld.
- De integratie van wijzigingen ter ondersteuning van Apple M1-chips is voortgezet. Er is een mogelijkheid geïmplementeerd om de simpledrm-driver te gebruiken op systemen met een Apple M1-chip voor uitvoer via de framebuffer die door de firmware wordt verstrekt.
- Ondersteuning toegevoegd voor ARM SoC, apparaten en borden zoals Snapdragon 7c, 845 en 888 (Sony Xperia XZ2 / XZ2C / XZ3, Xperia 1 III / 5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (gebruikt in Wi-fi-routers), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
- Ondersteuning toegevoegd voor ARM Cortex-M55 en Cortex-M33-processors.
- Ondersteuning toegevoegd voor apparaten op basis van MIPS-CPU: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
- Ondersteuning toegevoegd voor de StarFive JH7100 SoC, gebaseerd op de RISC-V-architectuur.
- De lenovo-yogabook-wmi-driver is toegevoegd voor het beheren van de toetsenbordverlichting en toegang tot verschillende sensoren in de Lenovo Yoga Book.
- De asus_wmi_sensors-driver is toegevoegd voor toegang tot sensoren op moederborden van Asus X370, X470, B450, B550 en X399 op basis van AMD Ryzen-processors.
- De x86-android-tablets-driver is toegevoegd voor tablet-pc's op basis van de x86-architectuur, geleverd met het Android-platform.
- Ondersteuning voor touchscreen TrekStor SurfTab duo W1 en digitale stylus voor Chuwi Hi10 Plus en Pro tablets is toegevoegd.
- De stuurprogramma's voor SoC Tegra 20/30 hebben ondersteuning voor energie- en spanningsbeheer gekregen. Er is mogelijkheid voor opstarten op oudere 32-bits apparaten op basis van SoC Tegra, zoals ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 en Pad TF300TG.
- Er zijn stuurprogramma's toegevoegd voor industriële computers van Siemens.
- Ondersteuning voor LCD-panelen Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA en Team Source Display TST043015CMHX is toegevoegd.
- Ondersteuning voor geluidsystemen en codecs AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel-systemen met NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/P-DIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx is toegevoegd. Problemen met Tegra194 HD-audio zijn opgelost. Ondersteuning voor HDA voor codecs CS35L41 is toegevoegd. Verbeterde ondersteuning voor geluidsystemen voor Lenovo- en HP-laptops, evenals moederborden van Gigabyte.
Bron: opennet.ru
