Efter to måneders udvikling præsenterede Linus Torvalds kerneudgivelse . Bland de mest bemærkelsesværdige ændringer er integrationen af VPN-interfacet WireGuard, understøttelse af USB4, navnerum for tid, mulighed for at oprette TCP overload handlers via BPF, indledende support af MultiPath TCP, afhjælpning af 2038-problemet i kernen, 'bootconfig'-mekanismen, samt filsystemet ZoneFS.
I den nye version er der blevet inkluderet 13702 rettelser fra 1810 udviklere,
patch-størrelsen er 40 MB (ændringerne berørte 11577 filer, der blev tilføjet 610012 kode-linjer,
294828 linjer blev fjernet). Omkring 45% af alle ændringerne i 5.6
er relateret til enhedsdrivere, cirka 15% ændringer har
relation til opdatering af maskinvarens arkitektur-specifik kode, 12%
vedrører netværksstakken, 4% — til filsystemer, og 3% til interne
kernesubsystemer.
:
- Netværkssubsystem
- implementering af VPN-interfacet , som er baseret på moderne krypteringsmetoder (ChaCha20, Poly1305, Curve25519, BLAKE2s), er nem at bruge, uden unødvendige komplikationer, har vist sig effektiv i flere store implementeringer og sikrer en meget høj ydeevne (3,9 gange hurtigere end OpenVPN i båndbredde). I WireGuard anvendes en nøgle-baseret routing-koncept, der indebærer, at hver netværksinterface er bundet til en privat nøgle og anvender åbne nøgler til at etablere forbindelser. Udvekslingen af åbne nøgler for at oprette forbindelse sker analogt med SSH. De nødvendige kryptografiske primtive til WireGuard stammer fra bibliotekerne i den indbyggede Crypto API og i kernen .
- integration af komponenter nødvendige for at understøtte MPTCP (MultiPath TCP), en udvidelse af TCP-protokollen til at muliggøre oprettelse af en TCP-forbindelse med samtidig pakkelevering gennem flere ruter via forskellige netværksinterfacer knyttet til forskellige IP-adresser. For netværksapplikationer fremstår denne aggregerede forbindelse som en almindelig TCP-forbindelse, mens al logikken omkring strømskille udføres af MPTCP. Multipath TCP kan bruges både til at øge båndbredden og til at forbedre pålideligheden. For eksempel kan MPTCP bruges til dataoverførsel på en smartphone ved samtidigt at anvende forbindelser fra WiFi og 4G, eller for at reducere omkostningerne ved at tilslutte en server med flere billige forbindelser i stedet for én dyr.
- understøttelse af håndtering af netværkskøer sch_ets (, IEEE 802.1Qaz), som gør det muligt at fordele båndbredden mellem forskellige trafikklasser. Hvis belastningen på en bestemt trafikklasse er under den tildelte båndbredde, giver ETS andre trafikklasser mulighed for at bruge den tilgængelige (ubrugte) båndbredde. Qdisc sch_ets er konfigureret som en PRIO-disciplin og bruger trafikklasser til at bestemme strenge og fælles båndbreddegrænser. ETS fungerer som en kombination af discipliner og — når der er hårdt begrænsede trafikklasser, anvendes PRIO, men hvis der ikke er trafik i køen, fungerer det som DRR.
- Tilføjet en ny type BPF-programmer , som gør det muligt at implementere kernefunktionshåndteringsfunktioner via BPF. Denne mulighed kan i øjeblikket allerede anvendes til implementering af TCP-overbelastningskontrolalgoritmer som BPF-programmer. For eksempel BPF-program med implementering af algoritmen .
- Er blevet accepteret i kernen , der konverterer værktøjskassen fra ioctl() til brug af . Den nye grænseflade forenkler tilføjelsen af udvidelser, forbedrer fejlhåndtering, muliggør udsendelse af meddelelser ved statusændringer, gør interaktionen mellem kernen og brugerrummet lettere og reducerer antallet af synkroniserede navngivne lister.
- Tilføjet implementeringen af FQ-PIE (Flow Queue PIE) netværkskøstyringsalgoritmen, der sigter mod at reducere den negative indflydelse af mellembuffering af pakker på grænsefinansnetværksudstyr (bufferbloat). FQ-PIE viser høj effektivitet ved brug i systemer med kabelmodem.
- DiskSubsystem, input/output og filsystemer
- For filsystemet Btrfs den asynkrone implementering af DISCARD-operationen (markering af frigivne blokke, som allerede ikke længere behøver at blive gemt fysisk). Oprindeligt blev DISCARD-operationer udført synkront, hvilket kunne føre til præstationsnedgang på grund af ventetid for afslutning af de relevante kommandoer fra medierne. Den asynkrone implementering gør det muligt ikke at vente på afslutningen af DISCARD fra mediet og udføre denne operation i baggrunden.
- I XFS rensning af koden, der brugte gamle 32-bit tidsstællere (typen time_t er blevet ændret til time64_t), som fører til 2038-problemer. Fejl og hukommelsesskader på 32-bit platforme er blevet løst. Koden er blevet omarbejdet for at arbejde med udvidede attributter.
- til filsystemet ext4 ydeevneoptimeringer relateret til håndtering af inode-låsning ved læse- og skriveoperationer. Ydeevnen for overskrivning i direkte input/output (Direct I/O) er blevet forbedret. For at lette diagnosticering af problemer er det blevet muligt at gemme den første og sidste fejl i superblokken.
- I filsystemet F2FS muligheden for at gemme data i komprimeret form. For en individuel fil eller mappe kan komprimering aktiveres ved hjælp af kommandoen «chattr +c fil» eller «chattr +c dir; touch dir/fil». For at komprimere hele partitionen kan man i mount-værktøjet bruge muligheden «-o compress_extension=ext».
- Filsystemet , der forenkler lavniveauarbejde med zonerede lagringsenheder. Med zonerede lagringsenheder menes enheder på magnetiske harddiske eller NVMe SSD'er, hvor lagringspladsen er opdelt i zoner, der udgør grupper af blokke eller sektioner, hvor der kun er tilladt sekventiel tilføjelse af data med opdatering af hele blokgruppen. ZoneFS-filsystemet er udviklet af Western Digital og knytter hver zone i enheden til en enkelt fil, der kan bruges til at gemme data i rå tilstand uden manipulation på sektorniveau og blokniveau, det vil sige, at det giver applikationer mulighed for at bruge fil-API'en i stedet for direkte adgang til blokenheden via ioctl.
- I NFS er det som standard deaktivert at montere partitioner over UDP. Der er tilføjet support til den funktionalitet, der er defineret i NFS 4.2-specifikationen for direkte kopiering af filer mellem servere. En ny monteringsmulighed «softreval» er blevet tilføjet, hvilket gør det muligt at bruge cached attributværdier ved serverfejl. For eksempel, når denne mulighed angives, bevares muligheden for at navigere i stier i NFS-partitionen og tilgå information, der er blevet gemt i cachen, efter serveren er blevet utilgængelig.
- optimering af ydeevnen i fs-verity-mekanismen, der anvendes til at kontrollere integriteten og autenticiteten af enkelte filer. Læsehastigheden i sekvens er øget takket være brugen af Merkle-hashtræet. Ydeevnen for FS_IOC_ENABLE_VERITY er optimeret under forhold med manglende cachedata (forudsigende læsning af datablade er anvendt).
- Virtualisering og sikkerhed
- Muligheden for at deaktivere SELinux-modulet under drift er erklæret forældet, og i fremtiden vil det blive forbudt at afbryde allerede aktiveret SELinux. For at deaktivere SELinux vil det være nødvendigt at overføre parameteren «selinux=0» til kernelens kommandolinje.
- understøttelse af tidsnavner (time namespaces), der gør det muligt at knytte systemklokkens tilstand (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME) til containeren, bruge sin egen tid i containeren og sikre uændret CLOCK_MONOTONIC og CLOCK_BOOTTIME målinger ved containerens migration til en anden værtsmaskine (tage tiden efter opstart i betragtning med eller uden inaktivitet). - Den blokerede pulje /dev/random er fjernet. Adfærden af /dev/random er gjort nærmere lig /dev/urandom med hensyn til at undgå blokering af entropi efter initialisering af puljen.
- En driver er inkluderet i kernepakken, der gør det muligt for gæstesystemer, der kører under VirtualBox, at montere kataloger, der eksporteres af værtsmiljøet (VirtualBox Shared Folder).
- Et sæt patches er tilføjet til BPF-subsystemet (), der under anvendelse af Retpoline-mekanismen til beskyttelse mod Spectre V2-angreb muliggør en mere effektiv kald af BPF-programmer ved at opfylde relaterede hændelser (for eksempel giver det mulighed for at fremskynde kald af XDP-behandlere ved modtagelse af netværkspakker).
- En driver til støtte for AMD's indbyggede miljøer TEE (Trusted Execution Environment) er tilføjet.
- Hukommelse og systemtjenester
- BPF har fået støtte til globale funktioner. Udviklingen foregår som en del af initiativet til at tilføje støtte til funktionsbiblioteker, der kan knyttes til BPF-programmer. Næste skridt bliver at støtte dynamiske udvidelser, der muliggør indlæsning af globale funktioner, herunder udskiftning af eksisterende globale funktioner under brug. BPF-subsystemet har også fået støtte til en variant af map-operationen (der bruges til at gemme permanente data), der understøtter batch-mode udførelse.
- Enheden «cpu_cooling», der muliggør køling af en overophedet CPU ved at sætte den i tilstand af inaktivitet (idle) i korte perioder.
- Systemopkaldet er tilføjet , som tilbyder et sæt af ekstra flag til at begrænse filstien (forhindring af krydsning af monteringspunkter, symbolske links, magic-links (//proc/PID/fd), komponenter «..»).
- For heterogene systemer baseret på big.LITTLE-arkitekturen, der kombinerer kraftfulde og mindre effektive energieffektive CPU-kerner på en chip, er der sikret indstilling af parameteren uclamp_min ( i kernen 5.3, en mekanisme til belastningsaflastning). Den angivne parameter sikrer, at opgaven vil blive planlagt af scheduler på en CPU-kerne, der har tilstrækkelig ydeevne.
- Kerney er blevet befriet for . De sidste resterende behandlere, der anvendte en 32-bit (signed int) type time_t til epoch-tælleren, som i forhold til rapporten fra 1970, vil løbe over i 2038.
- Forbedringen af grænsefladen for asynkron input/output er fortsat , hvori support for nye operationer: IORING_OP_FALLOCATE (reservering af tomme områder), IORING_OP_OPENAT,
IORING_OP_OPENAT2,
IORING_OP_CLOSE (åbning og lukning af filer),
IORING_OP_FILES_UPDATE (tilføjelse og sletning af filer fra cachelisten),
IORING_OP_STATX (forespørgsel om filinformation),
IORING_OP_READ,
IORING_OP_WRITE (forenklede varianter af IORING_OP_READV og IORING_OP_WRITEV),
IORING_OP_FADVISE,
IORING_OP_MADVISE (asynkrone varianter af opkaldene posix_fadvise og madvise), IORING_OP_SEND,
IORING_OP_RECV (afsendelse og modtagelse af netværksdata),
IORING_OP_EPOLL_CTL (udførelse af operationer vedrørende epoll filbeskriverne). - Systemopkaldet er tilføjet , som giver processen mulighed for at udtrække et filbeskriver fra en anden proces vedrørende en åben fil.
- Mekanismen «bootconfig», der gør det muligt, udover kommandolinjeparametre, at definere kernen parametre via en konfigurationsfil. For at tilføje sådanne filer til initramfs-billedet er værktøjet bootconfig blevet foreslået. Denne mulighed kan f.eks. anvendes til at konfigurere kprobes under opstart.
- mekanismen til at vente på skrivning og læsning af data i unavngivne kanaler (pipe). Ændringen har gjort det muligt at accelerere udførelsen af opgaver som parallel samling af store projekter. Denne optimering kan dog føre til en racebetingelse i GNU make på grund af en fejl i version 4.2.1, som er blevet rettet i version 4.3.
- Flagget PR_SET_IO_FLUSHER er blevet tilføjet til prctl(), som kan anvendes til at markere processer, der håndterer frigivelse af hukommelse, for hvilke begrænsninger ikke bør anvendes i tilfælde af mangel på hukommelse i systemet.
- Baseret på det hukommelsesfordelingssystem, der anvendes i Android, er ION underafdelingen blevet implementeret. , der muliggør styring af tildeling af DMA-buffere til deling af hukommelsesområder mellem drivere, applikationer og forskellige underafdelinger.
- Hardwarearkitekturer
- Støtte til udvidelsen E0PD, der blev introduceret i ARMv8.5, er blevet tilføjet og muliggør implementeringen af beskyttelse mod angreb relateret til spekulativ udførelse af instruktioner i CPU'en. Beskyttelse baseret på E0PD medfører lavere overhead end KPTI (Kernel Page Table Isolation).
- Til systemer baseret på ARMv8.5-arkitekturen er der blevet tilføjet støtte til instruktionen RNG, der giver adgang til den hardwarebaserede generator af pseudotilfældige tal. I kernen bruges RNG-instruktionen til at generere entropi ved initialisering af den pseudotilfældige talgenerator, der leveres af kernen.
- Støtten til MPX (Memory Protection Extensions) er blevet fjernet fra kernen. Denne teknologi gjorde det muligt at organisere kontrol af pegere for at overholde grænserne for hukommelsesområder. Den nævnte teknologi har ikke fundet udbredelse i kompilatorer og er blevet fjernet fra GCC.
- Støtten til KASan (Kernel address sanitizer), et værktøj til debugging, der muliggør påvisning af hukommelsesfejl, er blevet implementeret for RISC-V-arkitekturen.
- Udstyr
- Støtte til specifikationen , som er baseret på Thunderbolt 3-protokollen og muliggør en båndbredde på op til 40 Gbit/s, samtidig med at der opretholdes bagudkompatibilitet med USB 2.0 og USB 3.2. Tilsvarende med muliggør USB 4.0-interfacet tunneling af forskellige protokoller over et enkelt kabel med en , inklusive PCIe, Display Port og USB 3.x, samt softwareimplementeringer af protokoller, f.eks. til organisering af netværkslinks mellem værter. Implementeringen er baseret på den allerede indbyggede Thunderbolt-driver i Linux-kernen og tilpasser den til brug med værter og enheder, der er kompatible med USB4. Ændringerne tilføjer også understøttelse af Thunderbolt 3-enheder i softwareimplementeringen af forbindelsehåndteringssystemet (Connection Manager), som er ansvarlig for at oprette tunneler til tilslutning af flere enheder via en enkelt port.
- I amdgpu-driveren er der tilføjet indledende understøttelse af HDCP 2.x (High-bandwidth Digital Content Protection). Understøttelse af AMD Pollock ASIC-chip, der er baseret på Raven 2, er tilføjet. Mulighed for at nulstille GPU'er til familierne Renoir og Navi er implementeret.
- I Intel's DRM-driver der er DSI VDSC-understøttelse for chips baseret på mikroarkitekturen Ice Lake og Tiger Lake, LMEM mmap (device local memory) er implementeret, parsing af VBT (Video BIOS Table) er forbedret, og HDCP 2.2-understøttelse for Coffee Lake-chips er blevet implementeret.
- Arbejdet med at forene koden i amdkfd-driveren (til diskrete GPU'er som Fiji, Tonga, Polaris) med amdgpu-driveren er fortsat.
- K10temp-driveren er blevet omarbejdet, hvilket har tilføjet understøttelse af udlæsning af spænding og strøm for AMD Zen CPU'er samt udvidede oplysninger fra temperaturfølere, der anvendes i Zen og Zen 2 CPU'er.
- I nouveau-driveren er der tilføjet understøttelse af verificeret firmwareboot-mode for NVIDIA GPU'er baseret på Turing-mikroarkitekturen (GeForce RTX 2000), hvilket har gjort det muligt at aktivere 3D-acceleration for disse kort (officielle firmwares med NVIDIA's digitale signatur er nødvendige). Understøttelse af grafikmotoren TU10x er tilføjet. Problemer med HD Audio er løst.
- Understøttelse af datakomprimering ved overførsel via DisplayPort MST (Multi-Stream Transport) er blevet tilføjet.
- En ny driver «» til Qualcomm's trådløse chips med understøttelse af 802.11ax er blevet tilføjet.
Driveren er baseret på mac80211-stakken og understøtter adgangspunkt, arbejdsstation og Mesh-netværksløsninger. - Gennem sysfs gives der adgang til aflæselige målinger fra temperaturfølere, der bruges på moderne harddiske og SSD'er.
- væsentlige ændringer i ALSA-lydsystemet, der sigter mod at eliminere kode fra (afvikling af brugen af 32-bit type time_t i grænsefladerne snd_pcm_mmap_status og snd_pcm_mmap_control). Understøttelse af nye lydkodecs
Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770. - drivere til LCD-paneler Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
BOE NV140FHM-N49,
Satoz SAT050AT40H12R2,
Sharp LS020B1DD01D. - understøttelse af ARM-platforme og Gen1 Amazon Echo-platforme (OMAP3630-baseret), Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
Tolino Shine 3 eBook-læser,
Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX og HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM
ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Tilføjet understøttelse af PCIe-controlleren, der anvendes i Raspberry Pi 4.
Samtidig oprettede den Latinamerikanske Free Software Foundation
variant — , renset for elementer fra firmware og drivere, der indeholder ikke-fri komponenter eller kodeområder, hvis anvendelse er begrænset af producenten. I den nye version er opstart af blobs i drivere for AMD TEE, ATH11K og Mediatek SCP deaktiveret. Koden til rensning af blobs i drivere og AMD PSP, amdgpu og nouveau subsystems er blevet opdateret.
Kilde: opennet.ru
