Etter to måneder med utvikling av Linus Torvalds utgjeving av kjernen . Blant de mest merkbare endringene er: integrasjonen av WireGuard VPN-grensesnitt, støtte for USB4, tidssoner, muligheten for å lage TCP-overbelastningshåndterere ved hjelp av BPF, innledende støtte for MultiPath TCP, løsning av kjernen for problemet fra 2038, 'bootconfig'-mekanismen, og ZoneFS-filsystemet.
I den nye versjonen har 13702 rettelser blitt gjort av 1810 utviklere,
patchstørrelsen er 40 MB (endringene berørte 11577 filer, 610012 linjer med kode ble lagt til,
294828 linjer ble fjernet). Omtrent 45% av all koden i 5.6
relaterer seg til enhetsdrivere, omtrent 15 % av endringene har
har å gjøre med kodeoppdateringer spesifikke for maskinvarearkitekturer, 12%
er relatert til nettverksstakken, 4% til filsystemene og 3% til interne
kjerneundersystemer.
:
- Nettverks subsystem
- implementering av VPN-grensesnittet , som er basert på moderne krypteringsmetoder (ChaCha20, Poly1305, Curve25519, BLAKE2s), er lett å bruke, uten kompleksitet, har vist seg godt i flere store implementeringer og tilbyr svært høy ytelse (3,9 ganger bedre enn OpenVPN når det gjelder båndbredde). WireGuard bruker en nøkkelruteringskonsept, som innebærer å knytte en privat nøkkel til hvert nettverksgrensesnitt og anvende åpne nøkler for å opprette forbindelse. Utvekslingen av åpne nøkler for å sette opp forbindelsen skjer på samme måte som SSH. De nødvendige kryptografiske primitive for WireGuard fra biblioteket går inn i standard Crypto API, og inn i kjernen .
- integrasjonen av komponenter som er nødvendige for støtte av MPTCP (MultiPath TCP), en utvidelse av TCP-protokollen for å organisere TCP-forbindelser som leverer pakker samtidig over flere ruter via forskjellige nettverksgrensesnitt knyttet til forskjellige IP-adresser. For nettverksapplikasjoner ser denne aggregerte forbindelsen ut som en vanlig TCP-forbindelse, mens hele logikken for strømdeling håndteres av MPTCP. Multipath TCP kan brukes både til å utvide båndbredde og for å øke påliteligheten. For eksempel kan MPTCP brukes til å organisere datatransport på en smarttelefon ved å bruke både WiFi- og 4G-tilkoblinger samtidig, eller for å redusere kostnader ved å bruke flere billige tilkoblinger for en server i stedet for en dyr.
- støtte for nettverkskøbehandlingsdisiplinen sch_ets (, IEEE 802.1Qaz) som gir mulighet for distribusjon av båndbredde mellom ulike trafikkategorier. Hvis lasten på en bestemt trafikkategori er lavere enn den tildelte båndbredden, tillater ETS andre trafikkategorier å bruke tilgjengelig (ubrukte) båndbredde. Qdisc sch_ets konfigureres som en PRIO-disklinje og bruker trafikkategorier for å bestemme strenge og delte båndbreddebegrensninger. ETS fungerer som en kombinasjon av disipliner og — ved bruk av strengt begrensede trafikkategorier, brukes PRIO, men hvis det ikke er trafikk i køen, fungerer det som DRR.
- En ny type BPF-programmer er lagt til , som gjør det mulig å implementere kjernens funksjonsbehandlere gjennom BPF. Denne funksjonen kan nå brukes til å implementere TCP-overbelastningskontrollalgoritmer som BPF-programmer. Som et eksempel BPF-programmet med implementeringen av algoritmen .
- Er akseptert i kjernen , som oversetter verktøysettet fra ioctl() til bruk av . Det nye grensesnittet forenkler tillegg av utvidelser, forbedrer feilhåndtering, muliggjør sending av varsler ved endringer i tilstand, forenkler samhandlingen mellom kjernen og brukerrommet og reduserer antall synkroniserte navnelister.
- Implementeringen av FQ-PIE (Flow Queue PIE) nettverkskøalgoritmen er lagt til, rettet mot å redusere den negative påvirkningen av midlertidig pakke-buffering på kantnettverksutstyr (bufferbloat). FQ-PIE viser høy effektivitet når det brukes i systemer med kabelmodemer.
- Disk subsystem, I/O og filsystemer
- For Btrfs-filsystemet er den asynkrone implementeringen av DISCARD-operasjonen (merking av frigjorte blokker som ikke lenger må lagres fysisk). Opprinnelig ble DISCARD-operasjoner utført synkront, noe som kunne føre til ytelsestap på grunn av venting på fullføring av de respektive kommandoene fra lagringsenhetene. Den asynkrone implementeringen lar deg unngå å vente på at DISCARD skal fullføres av lagringsenheten og utføre denne operasjonen i bakgrunnen.
- I XFS kodeopprydding, der gamle 32-bits tidsur (type time_t er endret til time64_t) ble brukt, noe som fører til problemet i 2038. Feil og minnekorrupsjon som oppstod på 32-bits plattformer er utbedret. Koden er omarbeidet for å fungere med utvidede attributter.
- til filsystemet ext4 ytelsesoptimaliseringer relatert til behandling av inode-låser under lese- og skriveoperasjoner. Ytelsen for overskrivning i direkte I/O-modus er forbedret. For å forenkle feildiagnostikk er den første og siste feilkoden lagret i superblokken.
- I filsystemet F2FS muligheten for datalagring i komprimert format. For individuelle filer eller kataloger kan komprimering aktiveres med kommandoene «chattr +c fil» eller «chattr +c dir; touch dir/fil». For å komprimere hele partisjonen kan man bruke alternativet «-o compress_extension=ext» i mount-verktøyet.
- Kjernen har tatt i bruk filsystemet , som forenkler lavnivåarbeid med zonete lagringsenheter. Zonate enheter refererer til enheter på mekaniske harddisker eller NVMe SSD-er, der lagringsplassen er delt inn i soner som består av grupper av blokker eller sektorer, hvor det kun er tillatt å legge til data sekvensielt med oppdatering av hele blokkergruppen. ZoneFS er utviklet av Western Digital og knytter hver sone i lagringsenheten til en egen fil, som kan brukes til datalagring i rå-modus uten manipulasjon på sektor- og blokk-nivå, dvs. det gjør det mulig for applikasjoner å bruke fil-API i stedet for direkte tilgang til blokk-enheten ved hjelp av ioctl.
- I NFS er standard innstilling for montering av partisjoner over UDP deaktivert. Støtte for den i spesifikasjonen NFS 4.2 definerte muligheten for direkte filkopiering mellom servere er lagt til. En ny monteringsalternativ «softreval» er lagt til, som i tilfelle serverfeil tillater bruk av bufrede attributtverdier. For eksempel, med dette alternativet tilgjengelig etter en servers nedetid, opprettholdes muligheten til å navigere i NFS-partisjonene og få tilgang til informasjon som har blitt liggende i bufret minne.
- optimalisering av ytelsen til fs-verity-mekanismen, som brukes til integritetskontroll og autentisering av individuelle filer. Hastigheten for sekvensiell lesing er forbedret takket være bruken av Merkle-hashtreet. FS_IOC_ENABLE_VERITYs ytelse er optimalisert i fravær av data i hurtigminnet (forhåndslesing av sidene med data er brukt).
- Virtualisering og sikkerhet
- Muligheten til å deaktivere SELinux-modulen under drift er nå avviklet, og i fremtiden vil det bli forbudt å avlaste allerede aktiverte SELinux. For å deaktivere SELinux må parameteren «selinux=0» sendes til kjernens kommandolinje.
- støtte for tidsnavnrom (time namespaces), som gjør det mulig å knytte systemklokkens tilstand (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME) til en container, bruke sin egen tid i containeren og sikre uforanderlighet av CLOCK_MONOTONIC og CLOCK_BOOTTIME når containeren migreres til en annen vert (ta hensyn til tiden etter oppstart, med eller uten hensyn til om den har vært i søkermodus). - Den blokkerte pulsen /dev/random er fjernet. Atferden til /dev/random er gjort lik /dev/urandom når det gjelder å forhindre blokkering av entropi etter initialisering av pulsen.
- En driver er lagt til i kjernens hovedkomponent som tillater gjestesystemer som kjører under VirtualBox å montere kataloger eksportert av vertsmiljøet (VirtualBox Shared Folder).
- BPF-subsystemet har fått et sett med patcher (), i sammenheng med bruken av Retpoline-mekanismen for beskyttelse mot Spectre V2-angrep, noe som forbedrer effektiviteten i kallet til BPF-programmer ved at relaterte hendelser inntreffer (for eksempel gir det mulighet for å akselerere kallene til XDP-behandlere ved mottak av nettverkspakker).
- En driver for å støtte innebygde TEE (Trusted Execution Environment) miljøer i AMD APU-er er lagt til.
- Minne og systemtjenester
- BPF har fått støtte for globale funksjoner. Utviklingen er i gang som en del av initiativet for å legge til støtte for funksjonsbiblioteker som kan kobles til BPF-programmer. Neste steg vil være å støtte dynamiske utvidelser, som tillater lasting av globale funksjoner, inkludert erstatning av eksisterende globale funksjoner under bruk. BPF-subsystemet har også fått støtte for en variant av operasjonen map (brukes til lagring av vedvarende data), som støtter behandling i batch-modus.
- enhet «cpu_cooling» som lar deg kjøle ned overopphetede CPU-er ved å sette dem i hviletilstand (idle) i korte tidsintervaller.
- Systemanropet er lagt til , og tilbyr et sett med ekstra flagg for å begrense filstien (hindrer kryssing av monteringspunkter, symboliske lenker, magic-lenker (\/proc\/PID\/fd), komponenter «..\/»).
- For heterogene systemer basert på big.LITTLE-arkitekturen, som kombinerer kraftige og mindre effektive energisparende CPU-kjerner på en enkelt chip, er det sikret at parameteren uclamp_min stilles inn under sanntidsoppgaver ( i kjerner 5.3 mekanismen for lastopprettelse). Den angitte parameteren garanterer at oppgaven plasseres av planleggeren på en CPU-kjerne med tilstrekkelig ytelse.
- Kjernen er frigjort fra . De siste gjenværende behandlerne som brukte en 32-bits (signed int) type time_t for epoch-telleren, som ifølge rapporten fra 1970 må overfylle i 2038.
- Forbedringen av grensesnittet for asynkron inndata\/utdata har fortsatt , der de hevder at forskriften diskriminerer leverandørene og bryter med støtte for nye operasjoner: IORING_OP_FALLOCATE (reservering av tomme områder), IORING_OP_OPENAT,
IORING_OP_OPENAT2,
IORING_OP_CLOSE (åpning og lukking av filer),
IORING_OP_FILES_UPDATE (legge til og fjerne filer fra hurtigtilgangslisten),
IORING_OP_STATX (forespørsel om filinformasjon),
IORING_OP_READ,
IORING_OP_WRITE (forenklede versjoner av IORING_OP_READV og IORING_OP_WRITEV),
IORING_OP_FADVISE,
IORING_OP_MADVISE (asynkrone varianter av posix_fadvise og madvise), IORING_OP_SEND,
IORING_OP_RECV (sending og mottak av nettverksdata),
IORING_OP_EPOLL_CTL (utføre operasjoner på epoll-filsystembeskrivere). - Systemanropet er lagt til , som gir en prosess muligheten til å hente et filbeskrivelse fra en annen prosess for en åpen fil.
- mekanismen «bootconfig», som lar deg definere kjernens driftsp parametre via en konfigurasjonsfil i tillegg til kommandolinjealternativer. For å legge til slike filer i initramfs-bildet, ble verktøyet bootconfig foreslått. Denne muligheten kan brukes, for eksempel, til å konfigurere kprobes under oppstart.
- mekanismen for venting av datareservering og -lesing i unavngitte kanaler (pipe). Endringen har gjort det mulig å akselerere utførelsen av oppgaver som parallellbygging av store prosjekter. Denne optimaliseringen kan imidlertid føre til en tilstand av kappløp i GNU make på grunn av en feil i utgivelsen 4.2.1, som er utbedret i versjon 4.3.
- Flagget PR_SET_IO_FLUSHER er lagt til i prctl(), som kan brukes til å merke prosesser som håndterer frigjøring av minne, som ikke skal påføres begrensninger i situasjoner med lavt minne i systemet.
- Basert på det minnekontrollsystemet ION som brukes i Android, er det utviklet et subsystem , som muliggjør styring av tildeling av DMA-buffere for deling av minneområder mellom drivere, applikasjoner og ulike undersystemer.
- Maskinvarearkitekturer
- Støtte for E0PD-utvidelsen som kom med ARMv8.5 er lagt til og som muliggjør beskyttelse mot angrep relatert til spekulativ instruksjonsutførelse i CPU-er. Beskyttelsen basert på E0PD medfører mindre overhead enn beskyttelsen KPTI (Kernel Page Table Isolation).
- For systemer basert på ARMv8.5-arkitekturen er støtte for RNG-instruksjonen lagt til, som gir tilgang til en maskinvare-pseudotilfeldig tallgenerator. I kjernen brukes RNG-instruksjonen til å generere entropi ved initialisering av den pseudotilfeldige tallgeneratoren som tilbys av kjernen.
- Støtte for MPX (Memory Protection Extensions) ble fjernet, noe som ble lagt til i kjernen og som gjorde det mulig å organisere sjekking av pekere mot overholdelse av minneområdegrenser. Denne teknologien fikk ikke utbredelse i kompilatorer og ble fjernet fra GCC.
- For RISC-V-arkitekturen er det implementert støtte for KASan (Kernel Address Sanitizer), som sørger for å identifisere feil ved minnehåndtering.
- Utstyr
- Støtte for spesifikasjonen , som er basert på Thunderbolt 3-protokollen og gir en båndbredde på opptil 40 Gbit/s, samtidig som den beholder bakoverkompatibilitet med USB 2.0 og USB 3.2. På samme måte som , lar USB 4.0-grensesnittet tunnellere ulike protokoller over en enkelt kabel med , inkludert PCIe, Display Port og USB 3.x, samt programvareimplementeringer av protokoller, for eksempel for å organisere nettverkslinjer mellom verter. Implementeringen er basert på den allerede eksisterende Thunderbolt-driveren i Linux-kjernen og tilpasser den for å fungere med verter og enheter som er kompatible med USB4. Endringene inkluderer også støtte for Thunderbolt 3-enheter i programvareimplementeringen av tilkoblingsadministratoren (Connection Manager), som er ansvarlig for å opprette tunneler for tilkobling av flere enheter via én port.
- I amdgpu-driveren er det lagt til tidlig støtte for HDCP 2.x-teknologi (High-bandwidth Digital Content Protection). Støtte for AMD Pollock ASIC-brikken, basert på Raven 2, er lagt til. Muligheten til å tilbakestille GPU-er for Renoir og Navi-familiene er implementert.
- I DRM-driveren for Intel-grafikkort er DSI VDSC-støtte for brikker basert på mikroarkitektur Ice Lake og Tiger Lake, LMEM mmap (enhetslokal minne) er implementert, parsing av VBT (Video BIOS Table) er forbedret, samt HDCP 2.2-støtte for Coffee Lake-brikker.
- Arbeidet med å forene amdkfd-driverens kode (for diskrete GPU-er som Fiji, Tonga, Polaris) med amdgpu-driveren er fortsatt.
- k10temp-driveren er omarbeidet for å inkludere støtte for å vise spenning og strømparameterne for CPU-ene AMD Zen, samt utvidet informasjon fra temperatursensorene brukt i CPU-ene Zen og Zen 2.
- I nouveau-driveren er det lagt til støtte for en verifisert oppstart modus for NVIDIA GPU-er basert på Turing mikroarkitektur (GeForce RTX 2000), noe som har muliggjort støtte for 3D-akselerasjon for disse kortene (offisielle fastvare med digital signatur fra NVIDIA kreves). Støtte for grafikkmotoren TU10x er lagt til. Problemer med HD Audio er løst.
- Støtte for datakomprimering ved overføring via DisplayPort MST (Multi-Stream Transport) er lagt til.
- En ny driver “” for Qualcomm trådløse brikker med støtte for 802.11ax er lagt til.
Driveren er basert på mac80211-stakken og støtter tilgangspunkt-, stasjon- og Mesh-nettverksmoduser. - Via sysfs er det gitt tilgang til lesbare målinger fra temperatursensorer som brukes i moderne harddisker og SSD-er.
- Betydelige endringer i ALSA-lydsystemet, fokusert på å fjerne koden fra (overgangen fra bruk av 32-biters time_t-typen i grensesnittene snd_pcm_mmap_status og snd_pcm_mmap_control). Støtte for nye lydkodeker
Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770. - drivere for 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. - støtte for ARM-plattformer og plattformer Gen1 Amazon Echo (OMAP3630-basert), 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 eBokleser,
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. Støtte for PCIe-kontroller lagt til, brukt i Raspberry Pi 4.
Samtidig har Latinamerikansk Stiftelse for fri programvare
variant — , renset for elementer fra fastvare og drivere som inneholder ikke-frie komponenter eller kodeformler hvis bruksområde er begrenset av produsenten. I den nye utgaven er lastingen av blobber i drivere for AMD TEE, ATH11K og Mediatek SCP deaktivert. Oppdatert koden for rensing av blobber i drivere og subsystemer AMD PSP, amdgpu og nouveau.
Kilde: opennet.ru
