Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds kÀrnlansering . Bland de mest framtrÀdande förÀndringarna: integration av VPN-grÀnssnittet WireGuard, stöd för USB4, namnrymder för tid, möjlighet att skapa TCP-överladdningshandlÀggare med hjÀlp av BPF, initialt stöd för MultiPath TCP, lösning av kÀrnproblemet 2038, mekanismen "bootconfig", filsystemet ZoneFS.
I den nya versionen har 13702 korrigeringar införts av 1810 utvecklare,
patchens storlek Àr 40 MB (Àndringarna berörde 11577 filer, 610012 rader kod har lagts till,
294828 rader har tagits bort). UngefÀr 45% av alla förÀndringar i 5.6
Àndringar Àr relaterade till enhetsdrivrutiner, cirka 15% av Àndringarna har
gÀller koduppdateringar som Àr specifika för hÄrdvaruarkitekturer, 12%
Ă€r relaterade till nĂ€tverksstacken, 4% â till filsystemen och 3% till interna
kÀrnunderavdelningar.
:
- NĂ€tverkssystemet
- implementering av VPN-grÀnssnittet , som baseras pÄ moderna krypteringsmetoder (ChaCha20, Poly1305, Curve25519, BLAKE2s), Àr lÀtt att anvÀnda, utan kompliceringar, har visat sig framgÄngsrik i flera stora tillÀmpningar och erbjuder mycket hög prestanda (3,9 gÄnger snabbare Àn OpenVPN med avseende pÄ genomströmning). WireGuard anvÀnder en nyckelbaserad routning som innebÀr att varje nÀtverksgrÀnssnitt Àr kopplat till en privat nyckel och öppna nycklar anvÀnds för att upprÀtta kontakt. Utbytet av öppna nycklar för att upprÀtta en anslutning sker pÄ liknande sÀtt som i SSH. De kryptografiska primitiva metoder som krÀvs för att WireGuard ska fungera frÄn biblioteket till standard Crypto API och till kÀrnan .
- integrering av komponenter som behövs för att stödja MPTCP (MultiPath TCP), en utvidgning av TCP-protokollet för att möjliggöra drift av en TCP-anslutning med paketleverans över flera rutter samtidigt genom olika nÀtverksgrÀnssnitt kopplade till olika IP-adresser. För nÀtverksapplikationer ser den hÀr aggregerade anslutningen ut som en vanlig TCP-anslutning, och hela logiken för strömindelning hanteras av MPTCP. Multipath TCP kan anvÀndas bÄde för att öka bandbredden och för att förbÀttra tillförlitligheten. Till exempel kan MPTCP anvÀndas för att organisera dataöverföring pÄ en smartphone med bÄde WiFi- och 4G-anslutningar samtidigt eller för att minska kostnaderna genom att koppla en server med flera billiga linjer istÀllet för en dyr.
- stöd för hantering av nĂ€tverksköer sch_ets (, IEEE 802.1Qaz), som ger möjlighet att fördela bandbredd mellan olika trafikklasser. Om belastningen pĂ„ en viss trafikklass Ă€r lĂ€gre Ă€n den tilldelade bandbredden, lĂ„ter ETS andra trafikklasser anvĂ€nda den tillgĂ€ngliga (oanvĂ€nda) bandbredden. Qdisc sch_ets konfigureras som PRIO-disciplin och anvĂ€nder trafikklasser för att bestĂ€mma strikta och delade bandbreddsbegrĂ€nsningar. ETS fungerar som en kombination av discipliner och â nĂ€r det finns hĂ„rt begrĂ€nsade trafikklasser anvĂ€nds PRIO, men om det inte finns nĂ„gon trafik i kön fungerar det som DRR.
- En ny typ av BPF-program har lagts till , som möjliggör implementering av kÀrnfunktionshanterare via BPF. För nÀrvarande kan denna funktionalitet redan anvÀndas för att implementera TCP-överbelastningskontrollalgoritmer i form av BPF-program. Som exempel BPF-program med implementering av algoritmen .
- Har accepterats i kÀrnan , som översÀtter verktyg frÄn ioctl() till anvÀndning av . Det nya grÀnssnittet förenklar tillÀgg av utvidgningar, förbÀttrar felhantering, möjliggör att skicka notifieringar vid förÀndringar i tillstÄnd, underlÀttar interaktionen mellan kÀrnan och anvÀndarutrymmet och minskar antalet synkroniserade namngivna listor.
- En implementation av algoritmen för hantering av nÀtverksköer FQ-PIE (Flow Queue PIE) har lagts till, inriktad pÄ att minska den negativa pÄverkan av mellanspÀnningar av paket pÄ grÀnsnÀtverksutrustning (bufferbloat). FQ-PIE visar hög effektivitet vid anvÀndning i system med kabelmodem.
- Disksubsystem, in- och utmatning och filsystem
- För filsystemet Btrfs har den asynkrona implementeringen av DISCARD-operationen (markering av frigjorda block som inte lÀngre behöver lagras fysiskt) lagts till. Ursprungligen utfördes DISCARD-operationer synkront, vilket kunde leda till prestandaförsÀmring pÄ grund av vÀntan pÄ att motsvarande kommandon skulle slutföras av lagringsenheterna. Den asynkrona implementeringen möjliggör att vÀnta inte pÄ att DISCARD slutförs av lagringsenheten och utföra denna operation i bakgrunden.
- I XFS rensning av kod som anvÀnde gamla 32-bitars tidsrÀknare (typ time_t har ersatts med time64_t), vilket ledde till problem med Är 2038. Fel och minnesskador som uppstod pÄ 32-bitars plattformar har ÄtgÀrdats. Koden har omarbetats för att fungera med utökade attribut.
- I filsystemet ext4 prestandaoptimeringar som rör hantering av inode-lÄs under lÀs- och skrivoperationer. Prestandan vid skrivningar i direkt I/O-lÀge har förbÀttrats. För att förenkla felsökning har de första och sista felkoderna sparats i superblocket.
- I filsystemet F2FS möjligheten att lagra data i komprimerad form. För enskilda filer eller kataloger kan komprimering aktiveras med kommandot "chattr +c file" eller "chattr +c dir; touch dir/file". För att komprimera hela partitionen kan alternativet "-o compress_extension=ext" anvÀndas i mount-verktyget.
- Den filsystemet som har antagits i kÀrnan , som förenklar lÄgnivÄarbete med zonerade lagringsenheter. Med zonerade lagringsenheter avses anordningar pÄ hÄrddiskar eller NVMe SSD:er, dÀr lagringsutrymmet Àr uppdelat i zoner som utgör grupper av block eller sektorer, dÀr endast sekventiell tillÀgg av data tillÄts med uppdatering av hela gruppen av block. Filsystemet ZoneFS har utvecklats av Western Digital och kopplar varje zon i lagringsenheten till en separat fil som kan anvÀndas för att lagra data i raw-lÀge utan manipulation pÄ sektorns och blockens nivÄ, det vill sÀga möjliggör för applikationer att anvÀnda fil-API istÀllet för direkt Ätkomst till blockenheten via ioctl.
- I NFS Àr monteringen av partitioner ovanpÄ UDP som standard avstÀngd. Stöd för en funktion definierad i specifikationen NFS 4.2 för direkt kopiering av filer mellan servrar har lagts till. En ny monteringsalternativ "softreval" har lagts till, vilket vid serverfel tillÄter anvÀndning av cachade attributvÀrden. Till exempel, om detta alternativ anges efter att servern blivit otillgÀnglig, kvarstÄr möjligheten att navigera lÀngs vÀgar i NFS-partitionen och fÄ tillgÄng till information som har lagrats i cachen.
- optimering av prestandan hos fs-verity-mekanismen, som anvÀnds för integritetskontroll och autentisering av enskilda filer. Hastigheten för sekventiell lÀsning har ökad tack vare anvÀndning av ett Merkle-hashtrÀd. Prestandan för FS_IOC_ENABLE_VERITY har optimerats under förutsÀttning av att det inte finns nÄgra data i cacheminnet (förekomsten av förhandslÀsning av sidor med data tillÀmpas).
- Virtualisering och sÀkerhet
- Möjligheten att inaktivera SELinux-modulen under drift har förklarats som förÄldrad, och i framtiden kommer avlastning av redan aktiverad SELinux att förbjudas. För att stÀnga av SELinux krÀvs att parametern "selinux=0" överförs i kÀrnans kommandorad.
- stöd för tidsnamn (time namespaces) som gör det möjligt att binda systemklockans tillstÄnd (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME) till containern, anvÀnda sin egen tid i containern och se till att vÀrdena för CLOCK_MONOTONIC och CLOCK_BOOTTIME förblir oförÀndrade vid migration av containern till en annan vÀrd (ta hÀnsyn till tiden efter uppstart, med eller utan sömnlÀge). - Den blockerade poolen /dev/random har tagits bort. Beteendet hos /dev/random har nÀrmat sig /dev/urandom nÀr det gÀller att förhindra blockering av entropi efter initialisering av poolen.
- En drivrutin har lagts till kÀrnans huvudkomponent som gör det möjligt för gÀstsysten som körs pÄ VirtualBox att montera kataloger som exporteras av vÀrdmiljön (VirtualBox Shared Folder).
- En uppsÀttning patchar har lagts till BPF-subsystemet (), i förhÄllande till tillÀmpningen av Retpoline-mekanismen för skydd mot Spectre V2-attacker, vilket möjliggör ökad effektivitet vid anrop av BPF-program vid hÀndelser kopplade till dem (till exempel ger möjlighet att pÄskynda anropet av XDP-behandlare vid mottagande av nÀtverkspaket).
- En drivrutin har lagts till för att stödja TEE (Trusted Execution Environment) miljöer inbyggda i AMD:s APU.
- Minne och systemtjÀnster
- Stöd för globala funktioner har lagts till BPF. Utvecklingen sker inom ramen för initiativet att lÀgga till stöd för funktionsbibliotek som kan integreras i BPF-program. NÀsta steg kommer att vara att stödja dynamiska tillÀgg som möjliggör laddning av globala funktioner, inklusive möjligheten att ersÀtta befintliga globala funktioner under anvÀndning. Stöd för en variant av operationen map (som anvÀnds för att spara permanenta data) har ocksÄ lagts till BPF, vilket stöder körning i batchlÀge.
- Enheten «cpu_cooling» som möjliggör kylning av en överhettad CPU genom att sÀtta den i ett vilolÀge (idle) under korta intervaller.
- Ett systemanrop har lagts till , vilket erbjuder en uppsÀttning ytterligare flaggor för att begrÀnsa behörigheten för filvÀgar (förbjuder korsning av monteringspunkter, symboliska lÀnkar, magiska lÀnkar (/proc/PID/fd), komponenter «..»).
- För heterogena system baserade pÄ big.LITTLE-arkitekturen, som kombinerar kraftfulla och mindre effektiva energisparande CPU-kÀrnor pÄ samma chip, ges parametern uclamp_min vid realtidsuppgifter ( i kÀrnan 5.3 för att lÄsa belastningen). Den angivna parametern garanterar att en uppgift kommer att placeras av schemalÀggaren pÄ en CPU-kÀrna som har tillrÀcklig prestanda.
- KÀrnan har blivit av med . De sista kvarvarande hanterarna dÀr en 32-bitars (signed int) typ av time_t anvÀndes för tidsrÀknaren, som med hÀnsyn till rapporten frÄn 1970, mÄste överfyllas Är 2038.
- Fortsatt förbÀttring av grÀnssnittet för asynkron in- och utmatning , dÀr stöd för nya operationer: IORING_OP_FALLOCATE (reserv av tomma omrÄden), IORING_OP_OPENAT,
IORING_OP_OPENAT2,
IORING_OP_CLOSE (öppna och stÀnga filer),
IORING_OP_FILES_UPDATE (lÀgga till och ta bort filer frÄn snabbÄtkomstlistan),
IORING_OP_STATX (begÀra information om en fil),
IORING_OP_READ,
IORING_OP_WRITE (förenklade versioner av IORING_OP_READV och IORING_OP_WRITEV),
IORING_OP_FADVISE,
IORING_OP_MADVISE (asynkrona varianter av posix_fadvise och madvise-anrop), IORING_OP_SEND,
IORING_OP_RECV (skicka och ta emot nÀtverksdata),
IORING_OP_EPOLL_CTL (utföra operationer pÄ epoll-fildeskriptorer). - Ett systemanrop har lagts till , som ger en process möjlighet att extrahera en öppen filbeskrivare frÄn en annan process.
- Mekanismen «bootconfig», som förutom kommandoradsalternativ kan definiera kÀrninstÀllningar via en konfigurationsfil. För att lÀgga till sÄdana filer i initramfs-bilden har verktyget bootconfig föreslagits. Den angivna möjligheten kan till exempel anvÀndas för att konfigurera kprobes under uppstart.
- En mekanism för vĂ€ntan pĂ„ skriv- och lĂ€soperationer i namnlösa kanaler (pipe). Ăndringen har möjliggjort en snabbare genomförande av uppgifter som parallell byggen av stora projekt. Samtidigt kan optimeringen leda till en race condition i GNU make pĂ„ grund av ett fel i version 4.2.1, vilket har Ă„tgĂ€rdats i version 4.3.
- I prctl() har flaggan PR_SET_IO_FLUSHER lagts till, som kan anvÀndas för att mÀrka processer som hanterar minnesfrisÀttning, för vilka begrÀnsningar inte ska tillÀmpas i situationer med minnesbrist i systemet.
- Baserat pÄ det minneshanteringssystem som anvÀnds i Android, har en subsystems , implementerats för att hantera tilldelningen av DMA-buffertar för delning av minnesomrÄden mellan drivrutiner, program och olika subsystems.
- HÄrdvaruarkitekturer
- Stödet för E0PD-tillÀgget, som förekom i ARMv8.5, har lagts till, vilket möjliggör skydd mot attacker relaterade till spekulativ exekvering av instruktioner i CPU:n. Skydd baserat pÄ E0PD innebÀr lÀgre overhead Àn skyddet KPTI (Kernel Page Table Isolation).
- För system baserade pÄ ARMv8.5-arkitekturen har stöd för instruktionen RNG lagts till, vilket ger tillgÄng till en hÄrdvaru baserad pseudorandom generator. I kÀrnan anvÀnds instruktionen RNG för att generera entropi vid initialiseringen av den pseudorandom generator som tillhandahÄlls av kÀrnan.
- Stödet för MPX (Memory Protection Extensions), som lades till i kÀrnan, har tagits bort och möjliggjorde verifiering av pekare för att sÀkerstÀlla att de följer grÀnserna för minnesomrÄdena. Denna teknologi fick inget genomslag i kompilatorer och har tagits bort frÄn GCC.
- För RISC-V-arkitekturen har stöd för verktyget KASan (Kernel address sanitizer) implementerats, vilket möjliggör identifiering av minnesfel.
- Utrustning
- Stödet för specifikationen , som baseras pÄ Thunderbolt 3-protokollet och erbjuder en bandbredd pÄ upp till 40 Gbit/s, vilket behÄller bakÄtkompatibilitet med USB 2.0 och USB 3.2. PÄ samma sÀtt som lÄter USB 4.0-grÀnssnittet tunnla olika protokoll över en enda kabel med en , inklusive PCIe, Display Port och USB 3.x, samt programimplementeringar av protokoll, till exempel för att skapa nÀtverkslÀnkar mellan vÀrdar. Implementeringen baseras pÄ den befintliga Thunderbolt-drivrutinen i Linux-kÀrnan och anpassar den för att fungera med vÀrdar och enheter som Àr kompatibla med USB4. FörÀndringarna lÀgger ocksÄ till stöd för Thunderbolt 3-enheter i programimplementeringen av anslutningshanteraren (Connection Manager), som ansvarar för att skapa tunnlar för att ansluta flera enheter via en enda port.
- I amdgpu-drivrutinen finns initialt stöd för HDCP 2.x-teknologin (High-bandwidth Digital Content Protection). Stöd för AMD Pollock ASIC-chipet, baserat pÄ Raven 2, har lagts till. Funktionen för att ÄterstÀlla GPU:er har implementerats för Renoir- och Navi-familjerna.
- I DRM-drivrutinen för Intel-grafikkort lÀggs stöd för DSI VDSC till för chip baserade pÄ mikroarkitekturen Ice Lake och Tiger Lake, LMEM mmap (enhetslokal minne) har implementerats, VBT (Video BIOS Table) parsing har förbÀttrats, och HDCP 2.2-stöd har lagts till för Coffee Lake-chip.
- Arbetet med att enhetliggöra amdkfd-drivrutinskoden (för diskreta GPU:er som Fiji, Tonga, Polaris) med amdgpu-drivrutinen har fortsatt.
- K10temp-drivrutinen har omarbetats och erbjuder nu stöd för att visa spÀnnings- och strömparametrar för AMD Zen CPU:er, samt utökad information frÄn temperaturgivare som anvÀnds i Zen och Zen 2 CPU:er.
- I nouveau-drivrutinen lÀggs stöd för pÄlitlig uppstart av firmware för NVIDIA GPU:er baserade pÄ mikroarkitekturen Turing (GeForce RTX 2000), vilket möjliggör 3D-accelerering för dessa kort (krÀver att officiella firmware laddas ner med digitalt signatur frÄn NVIDIA). Stöd för grafisk motor TU10x har lagts till. Problem med HD Audio har lösts.
- Stöd för datakomprimering vid överföring över DisplayPort MST (Multi-Stream Transport) har lagts till.
- En ny drivrutin "" för Qualcomm trÄdlösa chip med stöd för 802.11ax har lagts till.
Drivrutinen baseras pÄ mac80211-stacken och stöder lÀgen för Ätkomstpunkt, arbetsstation och Mesh-noder. - Genom sysfs tillhandahÄlls Ätkomst till lÀsbara temperaturavlÀsningar frÄn sensorer som anvÀnds i moderna hÄrddiskar och SSD:er.
- betydande förÀndringar i ljudsystemet ALSA, riktade mot att befriade koden frÄn (övergÄng frÄn anvÀndningen av 32-bits time_t-typ i grÀnssnitten snd_pcm_mmap_status och snd_pcm_mmap_control). Stöd för nya ljudkodekar har lagts till
Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770. - drivrutiner för 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öd för ARM-plattformar och plattformar Gen1 Amazon Echo (OMAP3630-baserad), 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 e-bokslÀsare,
Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX och 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öd för PCIe-kontroller har lagts till, som anvÀnds i Raspberry Pi 4.
Samtidigt har den Latinamerikanska stiftelsen för fri programvara
en variant â , frigjord frĂ„n firmware- och drivrutinskomponenter som innehĂ„ller icke-fria komponenter eller kodavsnitt vilkas anvĂ€ndningsomrĂ„de Ă€r begrĂ€nsat av tillverkaren. I den nya utgĂ„van har laddningen av blobbar inaktiverats i drivrutiner för AMD TEE, ATH11K och Mediatek SCP. Koden för rensning av blobbar i drivrutiner och AMD PSP, amdgpu och nouveau delsystem har uppdaterats.
KĂ€lla: opennet.ru
