UtgÄvan av Linux-kÀrnan 5.6

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds Är kÀrnlansering Linux 5.6. 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.

Huvud nyheter:

  • NĂ€tverkssystemet
    • Tillagd implementering av VPN-grĂ€nssnittet WireGuard, 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 funnits har överförts frĂ„n biblioteket Zinc till standard Crypto API och Rust-bindningar för till kĂ€rnan 5.5.
    • Arbetet har pĂ„börjats 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.
    • Tillagd stöd för hantering av nĂ€tverksköer sch_ets (Enhanced Transmission Selection, 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 PRIO och DRR — 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 BPF_PROG_TYPE_STRUCT_OPS, 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 en liknande teknik för att Ă€ndra förfrĂ„gningar, som möjliggör att Ă€ndra data i cacherade proxy (Tomcat, squid, mod_proxy) eller kringgĂ„ brandvĂ€ggar genom att ange flera "GET"- eller "POST"-förfrĂ„gningar inom ett och samma HTTP-session. BPF-program med implementering av algoritmen DCTCP.
    • Har accepterats i kĂ€rnan för, som översĂ€tter verktyg ethtool frĂ„n ioctl() till anvĂ€ndning av netlink-grĂ€nssnittet. 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 lagts till 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 genomförd 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 har 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 har möjligheten 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 ZoneFS, 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.
    • Genomfört 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.
    • Tillagd 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 (BPF-dispatcher), 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.
    • TillĂ€gg 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 openat2(), 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 (som introducerades 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 2038-problemet. 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 io_uring, dĂ€r Ă€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 pidfd_getfd(), som ger en process möjlighet att extrahera en öppen filbeskrivare frĂ„n en annan process.
    • Implementerad 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.
    • Omarbetad 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 dma-buf heaps, 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 3.19 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 USB 4.0, 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 Thunderbolt lĂ„ter USB 4.0-grĂ€nssnittet tunnla olika protokoll över en enda kabel med en Type-C, 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 har lagts till 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 har lagts till 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 har lagts till 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 "ath11k" 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.
    • Ändringar har gjorts betydande förĂ€ndringar i ljudsystemet ALSA, riktade mot att befriade koden frĂ„n 2038-problemet (ö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.
    • Tillagda 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.
    • Tillagd 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 skapat
en variant helt fri kĂ€rna 5.6 — Linux-libre 5.6-gnu, 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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster