De release van de Linux-kernel 6.18

Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux kernel 6.18 gepresenteerd. Enkele van de meest opvallende wijzigingen zijn: dm-pcache voor schijfcaching in niet-vluchtig geheugen (PMEM), verwijdering van Bcachefs, online XFS-controlemodus, drivers voor Binder (Android IPC) en Tyr (GPU Mali) geschreven in Rust, de mogelijkheid om USB-drivers in Rust te maken, optimalisatie van caching in de SLUB-geheugenallocater, adressing van namespaces via bestandsdescriptors, versnelling van swapfunctionaliteit, verificatie van BPF-programma's via digitale handtekening, Intel CET virtualisatie in KVM, netwerksprotocol PSP (hybride TLS en IPsec), ondersteuning voor IP-uitbreiding AccECN, en optimalisatie van de UDP-stack.

In de nieuwe versie zijn 15035 correcties door 2217 ontwikkelaars opgenomen, de patchgrootte is 45 MB (de wijzigingen hebben betrekking op 13142 bestanden, 601897 nieuwe regels code zijn toegevoegd en 355006 regels zijn verwijderd). In de vorige release waren er 14334 correcties door 2118 ontwikkelaars, met een patchgrootte van 46 MB. Ongeveer 40% van alle veranderingen in 6.18 heeft betrekking op stuurprogramma's voor apparaten, ongeveer 16% van de wijzigingen betreft de update van hardware-specifieke code, 12% heeft te maken met de netwerkstack, 5% met bestandssystemen en 3% met interne subsysteemen van de kernel.

De belangrijkste vernieuwingen in kernel 6.18 (1, 2, 3):

  • Opslagsubsystemen, invoer/uitvoer en bestandssystemen
    • In Device Mapper is een dm-pcache-handler toegevoegd voor het gebruik van non-volatiegeheugen (CXL-geheugen, bereikbaar via het DAX-apparaat) als een extra hoogwaardige cache voor de langzamere traditionele schijven of flash-opslag. Dm-pcache zorgt voor de integriteit van de cache-inhoud in geval van crashes (crash-safe) door gebruik te maken van niet-vluchtig geheugen, duplicatie van metadata en gegevensintegriteitsverificatie via CRC32-controlewaarden. Momenteel wordt alleen caching in write-back modus ondersteund.
    • De code van het bestandssysteem Bcachefs is uit de kernel verwijderd; het zal nu worden verspreid als een extern module die wordt opgebouwd met behulp van DKMS (Dynamic Kernel Module Support). De Bcachefs-code kan weer in de kernel worden opgenomen nadat Kent Overstreet feitelijk heeft bewezen dat het correct kan samenwerken met andere kernelontwikkelaars en in staat is om vastgestelde ontwikkelingsregels te volgen.
    • De systeemaanroep pwritev2() is voorzien van de vlag RWF_NOSIGNAL, die de verzending van het SIGNO SIGPIPE uitschakelt bij het schrijven naar verbroken onbenoembare kanalen of sockets.
    • In Procfs is een optie voor het mounten toegevoegd: "pidns" om PID-namespaces aan te duiden. Bijvoorbeeld: "mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc".
    • In XFS is de mogelijkheid om fsck te gebruiken om problemen in online-modus te controleren en te herstellen, zonder de bestandssystemen te ontkoppelen, als stabiel verklaard en standaard ingeschakeld. Systeemaanroepen file_getattr en file_setattr zijn toegevoegd voor het wijzigen van de attributen van speciale bestanden (elke inode). In KConfig zijn de opties XFS_SUPPORT_V4 (versie 4 van XFS) en XFS_SUPPORT_ASCII_CI (case insensitive mode voor ASCII) standaard uitgeschakeld, omdat ze verouderd zijn. Verouderde mountopties attr2, noattr2, ikeep en noikeep zijn verwijderd.
    • In MD RAID is een nieuw type bitmaps geïmplementeerd — llbitmap (lockless bitmap), dat werkt zonder vergrendelingen en een hogere prestaties biedt.
    • In de algemene structuur 'inode' zijn informatie gerelateerd aan encryptie en verificatie (de aanwijzers i_crypt_info en i_verity_info) uitgehaald. Deze wijziging verlaagt het geheugengebruik in bestandssystemen die geen ondersteuning voor encryptie en verificatie bieden.
    • In de FUSE-subsystem is ondersteuning toegevoegd voor de systeemaanroep copy_file_range() en directe kopie van reeksen met gebruik van een 64-bits formaat (eerder werd alleen 32-bits formaat ondersteund). Ondersteuning voor synchronisatie-initialisatie tijdens het mounten is toegevoegd (FUSE_DEV_IOC_SYNC_INIT).
    • In het ext4 FS is de mogelijkheid gerealiseerd om 32-bits gebruikers (uid) en groepen (gid) identificatoren te gebruiken bij toegang tot gereserveerde blokken. ioctl-operaties voor het instellen en lezen van parameters van de superblock van gemounte FS zijn toegevoegd (tune2fs kan parameters in de superblock wijzigen zonder schrijfrechten op het blokapparaat). Verouderde instellingen die specifiek zijn voor ext3 zijn volledig verwijderd.
    • In f2fs is added the mount option 'lookup_mode' for selecting the search mode: perf — hash-based search, compat — linear search, auto — automatic selection. Changing the mode makes sense for configurations with directories that do not consider case sensitivity. The current search mode can be found through the file '/sys/fs/f2fs//effective_lookup_mode'. The ability to reserve inodes is now available, accessible only to privileged users.
    • In Overlayfs a case-insensitive mode of operation has been added, enabled at the layer level of the file system (setting it for individual directories is not yet supported).
    • In BTRFS, the parallelization of operations under high read load and low write load has been improved, reducing transaction commit time, and significantly decreasing synchronization time (from minutes to tens of seconds). The ability to use blocks (bs) larger than the size of a memory page (ps) has been provided.
    • In ksmbd (a kernel-level SMB server) a parameter has been added to limit the maximum number of connections from a single client. IP-adressen. smbdirect, smbclient, and smbserver have been transitioned to use standard kernel structures.
    • In SQUASHFS, the ability to use SEEK_DATA and SEEK_HOLE options in the lseek() system call for searching data and holes in sparse files has been added. Some tests have recorded an increase in the performance of copying sparse files by up to 150 times.
    • In EXFAT, support for ioctl FS_IOC_GETFSLABEL and FS_IOC_SETFSLABEL for reading and writing partition labels has been added. The ability to change mount options during remounting has been provided. Loading of bitmap files has been accelerated.
    • In NTFS3, support for ioctl FS_IOC_GETFSLABEL and FS_IOC_SETFSLABEL for reading and setting partition labels has been added.
  • Geheugen en systeemdiensten
    • The implementation of the Binder inter-process communication mechanism, written in Rust, has been adopted. Binder is used in Android to facilitate interactions between processes and remote method invocation (one Android process can call a method or function in another Android process using Binder for identification, invocation, and argument transfer between processes). The Binder code has been rewritten in Rust as part of Google's initiative to enhance Android's security.
    • In SLUB, de kernelgeheugenallocator, is een optionele cachelaag "sheaves" geïmplementeerd, die meerdere caches gebruikt, elk gekoppeld aan een afzonderlijke CPU-kern. Dit maakt het mogelijk om geheugenbewerkingen te lokaliseren met één kern bij toewijzing of vrijgave van geheugen. Deze cache heeft de prestaties van geheugenallocatie en -vrijgave in de kernel verbeterd door overbodige synchronisatie-primitieven te elimineren die vereist waren wanneer verschillende CPU-kernen betrokken waren. In uitgevoerde tests varieerde de prestatieverbetering van 6,3% tot 31%, afhankelijk van het type belasting.
    • Er is een mogelijkheid toegevoegd om bestandsdescriptoren te creëren die gekoppeld zijn aan een specifieke namespace. In tegenstelling tot toegang tot namespaces via identificatoren ( /proc//ns/ ), is de bestandsdescriptor gekoppeld aan een specifiek exemplaar van de namespace en elimineert het de situatie waarin de identificator opnieuw wordt toegewezen en nu naar een ander object wijst. Net als bij het gebruik van pidfds vindt het openen van bestandsdescriptoren die naar namespaces verwijzen plaats via de functies open_by_handle_at() en name_to_handle_at().
    • Er is een mechanisme "Swap Table" geïmplementeerd dat de prestaties van swapverbetering mogelijk maakt. De versnelling wordt bereikt door de concurrentie voor toegang tot de swapcache te verminderen, efficiënter zoeken in de cache te realiseren en de fragmentatie te verminderen. De backend op basis van de Swap Table wordt gebruikt voor caching van swap in plaats van de XArray-backend en heeft gemiddeld de prestaties met 5-20% weten te verbeteren. In de usemem-test nam de doorvoersnelheid toe met 17-28%, en in de test voor multi-threaded kernelherbouw werd de bouwtijd met 1,12-3,19% verminderd. De redis-benchmark test met BGSAVE toonde een toename van het aantal verwerkte verzoeken van 6-7% aan.
    • De Zswap-subsystem is overgestapt op direct gebruik van het zsmalloc-geheugentoewijzingssysteem in plaats van de zpool-laag, die nergens anders meer wordt gebruikt en nu uit de kernel is verwijderd.
    • Voor het beheren van het gedrag van de microcode-bootloader op x86-systemen is er een optie voor de opdrachtregel "microcode=lijst van vlaggen" geïmplementeerd. In zijn huidige vorm is de nieuwe optie ter vervanging gekomen van "microcode.force_minrev" en maakt het ook mogelijk om de minimaal toegestane versie van de microcode voor opstarten in te stellen.
    • Er is begonnen met de reorganisatie van de te grote structuur 'page', die wordt gebruikt voor het beheren van pagina's in het werkgeheugen. Een type 'memdesc_flags_t' is toegevoegd voor velden met universele vlaggen die na de verwachte toekomstige allocatie van aparte structuren voor slab en folio's uit de 'page' structuur kunnen worden gebruikt.
    • Voor de nios2-architectuur, die wordt toegepast in Altera Nios II-processors (soft-processor op basis van FPGA), is ondersteuning voor de systeemaanroep clone3() geïmplementeerd.
    • Aan de kernelconfiguratie (KConfig) is het attribuut 'transitional' toegevoegd, dat kan worden gebruikt om instellingen te markeren die niet worden weergegeven in gebruikersinterfaces zoals 'make menuconfig' en niet worden opgenomen in de gegenereerde configuratiebestanden. Het belangrijkste doel van dit attribuut is het vergemakkelijken van het hernoemen van opties terwijl de achterwaartse compatibiliteit behouden blijft.
    • De minimale versie van de Clang-compiler, waarmee de kernel kan worden opgebouwd, is verhoogd naar de LLVM-toolchain 15. In Debian 12 en Ubuntu 22.04 wordt LLVM 14 geleverd.
    • De overdracht van wijzigingen uit de Rust-for-Linux-tak is voortgezet, met betrekking tot het gebruik van de taal Rust als tweede taal voor de ontwikkeling van stuurprogramma's en kernelmodules (ondersteuning voor Rust is niet standaard ingeschakeld en leidt niet tot het opnemen van Rust in de verplichte bouwafhankelijkheden van de kernel). In de nieuwe versie zijn atomische geheugenbewerkingen voor code in de Rust-taal geïmplementeerd, evenals de maple tree-structuur, de mogelijkheid om DebugFS-bestanden te maken en functies voor het manipuleren van bitmaps. De toegang tot de API voor stuurprogrammadevelopment is uitgebreid. Een volledige set van abstraheringen voor de ontwikkeling van USB-stuurprogramma's is toegevoegd (voorbeeld USB-stuurprogramma). In de perf-tool is ondersteuning toegevoegd voor debug-symbolen die door de rustc-compiler worden gegenereerd.
  • Virtualisatie en beveiliging
    • Ondersteuning voor cryptografische verificatie van geladen BPF-programma's op basis van digitale handtekeningen is toegevoegd. In de toekomst zal deze mogelijkheid worden uitgebreid met middelen voor het definiëren van regels voor het laden van ondertekende BPF-programma's en voor het bieden van niet-privilegegebruikers van de mogelijkheid om geverifieerde BPF-programma's te gebruiken.
    • In de KVM-hypervisor is ondersteuning voor virtualisatie van Intel CET (Control-flow Enforcement Technology) geïmplementeerd, dat wordt gebruikt ter bescherming tegen exploits die technieken voor return-oriented programming (ROP - Return-Oriented Programming) toepassen. De kern van de bescherming is dat na het overdragen van de controle aan een functie, het terugkeeradres door de processor niet alleen in de gewone stack, maar ook in een aparte shadow stack wordt opgeslagen, die niet direct kan worden gewijzigd.
    • Er is nu de mogelijkheid om meer dan 255 CPU's te gebruiken in gastsystemen die draaien onder de Bhyve-hypervisor op hosts met FreeBSD 15.
    • Een dibs-laag (Direct Internal Buffer Sharing) is toegevoegd voor beheerd gedeeld gebruik van buffers binnen een geïsoleerde omgeving, zoals een hypervisor of een kernel-instance van Linux.
    • De audit-subsysteem ondersteunt nu het gelijktijdig werken met meerdere ingeschakelde LSM-modules (Linux Security Module).
    • De virtio-driver spi-virtio is toegevoegd voor toegang tot een SPI-apparaat (Serial Peripheral Interface) vanuit virtuele machines.
    • In de KVM-hypervisor is ondersteuning voor de SEV-SNP CipherText Hiding-modus toegevoegd, die het lezen van de geheime geheugeninhoud van beschermde gastsystemen door niet-geautoriseerde CPU's blokkeert.
    • Er is een qtee-driver toegevoegd voor TEE-omgevingen (Trusted Execution Environment) van Qualcomm-chips.
  • Netwerk subsysteem
    • Er is ondersteuning toegevoegd voor het versleutelen van TCP-verbindingen, gebruikmakend van het PSP-protocol (PSP Security Protocol), ontwikkeld door Google voor het versleutelen van verkeer tussen datacenters. PSP biedt versleuteling, cryptografische integriteitscontrole en authenticatie van de bron, en implementeert een soort combinatie van de mogelijkheden van TLS- en IPsec-protocollen. In PSP wordt versleuteling op het niveau van individuele netwerkverbindingen toegepast, en niet over de gehele communicatieverbinding. PSP gebruikt afzonderlijke versleutels voor verschillende getunnelde TCP-verbindingen voor strikte isolatie van verkeer tussen verschillende applicaties en verwerkers. Om de belasting op de CPU te verlichten, is er ondersteuning voor het afschuiven van versleutel- en ontsleuteloperaties naar netwerkkaarten (offload). Voor de overdracht van gegevens wordt het UDP-protocol gebruikt, waarboven de inhoud van het oorspronkelijke TCP-pakket wordt doorgegeven.

      De release van de Linux-kernel 6.18
    • Initiële ondersteuning voor de AccECN (Accurate Explicit Congestion Notification) extensie is toegevoegd, een verbeterde versie van de ECN-extensie, waarmee hosts in het geval van overbelasting IP-pakketten kunnen markeren in plaats van deze te verwerpen. Dit maakt het mogelijk om de vroege fase van congestie in communicatielijnen te identificeren zonder pakketverlies. De oorspronkelijke ECN-extensie heeft een beperking van slechts één congestiesignaal per cyclus van verzenden-ontvangen TCP (RTT, Round-Trip Time, verzenden van een verzoek en ontvangen van een antwoord). AccECN verwijdert deze beperking en stelt de ontvanger in staat om meerdere congestiemarkeringen naar de afzender te sturen in de TCP-pakketheader. Algoritmen voor congestiebeheer kunnen de ontvangen informatie gebruiken voor een nauwkeurigere reactie op congesties en hoeven niet drastisch de verzendintensiteit te verlagen bij het ontstaan van een lichte congestie.
    • In de UDP-stack is de verwerking van binnenkomende pakketten in situaties van DDoS-aanvallen geoptimaliseerd, waarbij een groot aantal pakketten naar één of meerdere UDP-sockets wordt gestuurd. De aangebrachte optimalisaties, zoals het verminderen van concurrerende blokkades, het optimaliseren van de plaatsing van gegevensstructuren in het geheugen en het gebruik van blokkades die rekening houden met de NUMA-architectuur (Non-Uniform Memory Access), hebben geleid tot een prestatieverbetering van 47% of meer bij het ontvangen van UDP-pakketten onder extreme omstandigheden.
    • De mogelijkheid om de in- en uitvoer-cache op de NFS-server uit te schakelen is geïmplementeerd, wat het gebruik van de NFS-server in systemen met beperkte geheugenhoeveelheid mogelijk maakt (bijvoorbeeld in afgeslankte cloudomgevingen). Het uitschakelen van de cache kan ook nuttig zijn op drukke NFS-servers om te voorkomen dat gegevens met betrekking tot lokale schijven uit de cache worden verdrongen door elkaars geheugen vrij te maken voor de NFS-cache.
    • De maximale grootte van de ontvangen en verzonden pakketten voor netwerksockets (net.core.rmem_max en net.core.wmem_max) is verhoogd van 2 MB naar 4 MB. De standaardgrootte is niet veranderd (net.core.rmem_default en net.core.wmem_default = 2 MB).
    • Een driver is toegevoegd voor de Qualcomm PPE (Packet Processing Engine) netwerkefficiëntiesnelheid, die wordt toegepast in SoC Qualcomm IPQ9574.
  • Apparatuur
    • De kern omvat de Tyr-driver, geschreven in Rust, die werkt met de ARM Mali GPU's, waaronder technologieën zoals CSF (Command Stream Frontend), zoals de Mali G310, G510 en G710. De driver is nog niet klaar voor regulier gebruik door de meeste gebruikers en wordt beschouwd als een experimenteel prototype voor het testen van abstracts voor driverontwikkeling in Rust.
    • De drivers voor invoerapparaten met een HID-interface (Human Interface Device) hebben ondersteuning gekregen voor touchpads met haptische feedback en drukgevoelige sensoren.
    • De ontwikkeling van de drm-driver (Direct Rendering Manager) Xe voor GPU's gebaseerd op de Intel Xe-architectuur, die wordt gebruikt in Intel Arc grafische kaarten en geïntegreerde graphics, is voortgezet, te beginnen met de Tiger Lake-processors. In de nieuwe versie is een madvise-interface toegevoegd, is de ondersteuning voor SR-IOV PF (Single Root I/O Virtualization Physical Function) ingeschakeld, is ondersteuning voor de Intel PSMI-modus toegevoegd voor hardwarevalidatie, is ervoor gezorgd dat foutinformatie die door firmware wordt doorgegeven correct wordt afgehandeld, is een SLPC-energiebesparingsprofiel geïmplementeerd, en is de ondersteuning voor het laden van secundaire firmware (bijvoorbeeld voor de koelercontroller en spanningsregulator) tijdens de drivercontrole toegevoegd.
    • In de AMDGPU-driver is ondersteuning voor apparaten met APU Cyan Skillfish toegevoegd, is de ondersteuning voor AMD GCN 1.0 verbeterd, is compatibiliteit met het tooling criu gerealiseerd, zijn temperatuurmetingen in sysfs toegevoegd, en zijn MMIO-remapping aanvragen vanuit de gebruikersruimte toegestaan.
    • In de i915-driver is ondersteuning voor chips van de Wildcat Lake-serie toegevoegd en is de werking met GPU's van Jasper Lake, Elkhart Lake, Gen7 en Gen6 verbeterd.
    • In de Nouveau-driver zijn standaard NVIDIA GSP-firmware-engines ingeschakeld en is de foutverwerking verbeterd.
    • De integratie van de Nova-drivercomponenten voor NVIDIA GPU's, uitgerust met GSP-firmware, die vanaf de NVIDIA GeForce RTX 2000-serie op basis van de Turing-microarchitectuur wordt gebruikt, is voortgezet. De driver is geschreven in Rust. In de nieuwe versie is de ondersteuning voor GSP-firmware uitgebreid, is de implementatie van de macro 'register!' verbeterd, en is er ondersteuning voor PCI-deviceclasses en fabrikantenidentificaties toegevoegd.
    • De rocket-driver voor NPU-versnellers die worden gebruikt in de Rockchip RK3588 SoC is toegevoegd.
    • Een kernelparameter 'boot_display' is toegevoegd om het uitvoerapparaat te selecteren voor het weergeven van het opstartproces op systemen met meerdere GPU's.
    • In de vesadrm-driver is ondersteuning voor 8-bits paletten gerealiseerd.
    • In de msm-driver is ondersteuning toegevoegd voor de GPU Adreno 663 en is ondersteuning geïmplementeerd voor de energiebesparingstechnologie IFPC (Inter Frame Power Collapse).
    • In de panthor-driver is ondersteuning toegevoegd voor de GPU Mali-G710, Mali-G510, Mali-G310, Mali-Gx15, Mali-Gx20 en Mali-Gx25.
    • Ondersteuning toegevoegd voor de audiosystemen ASoC Qualcomm Glymur en PM4125, Realtek RT1321, Shanghai FourSemi FS2104/5S, Texas Instruments PCM1754 en TAS2783A, qcs615, CS35L56 B2, tas2118, tas2x20, tas5825. Ondersteuning toegevoegd voor USB-geluidkaarten Tascam US-144mkII en Presonus S1824c.
    • Ondersteuning toegevoegd voor ARM CPU Cortex-A320/A520AE/A720AE en C1-Nano/Pro/Premium/Ultra.
    • Ondersteuning toegevoegd voor ARM-platforms, SoC en apparaten: Apple M2 Pro, M2 Max en M2 Ultra, Sony Xperia SP, Samsung Galaxy S22, Samsung Galaxy S20 FE, ASUS Eee Pad Slider SL101, Lenovo ThinkBook 16, HP Omnibook X14 X1P42100, Dell Inspiron 7441 / Latitude 7455, Sige1, NanoPi Zero2, Axis Artpec8, NXP i.MX91, ROCK 2A/2F, Qualcomm Lemans Auto, Renesas RZ/T2H, RZ/N2H, RZ/T2H en RZ/N2H, Aspeed AST27xx, Meta Clemente BMC, Netcube Nagami som, Tqma91xx, Ultratronik i.MX8MP Ultra-MACH, i.MX8ULP EVK9, Buffalo WXR-1750DHP.

Tegelijkertijd heeft de Latijns-Amerikaanse Vrije Software Stichting een volledig vrij kernelversie 6.18 — Linux-libre 6.18-gnu gepresenteerd, vrijgemaakt van elementen van firmware en stuurprogramma's die niet-vrije componenten of codegedeelten bevatten, waarvan het toepassingsgebied door de fabrikant is beperkt. In versie 6.18 is de code voor het schoonmaken van blobs in de drivers Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP, Marvell WiFi-Ex bijgewerkt. De namen van blobs in dts-bestanden (devicetree) voor ARM-chips van Qualcomm, Mediatek en TI ARM64 zijn schoongemaakt. De laadcapaciteit van blobs in nieuwe drivers van FourSemi fs2104/5s, TI TAS2783 en Qualcomm GENI is geneutraliseerd.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster