Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds kÀrnlansering . Bland de mest anmÀrkningsvÀrda förÀndringarna: ett nytt grÀnssnitt för asynkron in- och utmatning io_uring, möjlighet att anvÀnda NVDIMM som RAM, stöd för delad virtuell minne i Nouveau, stöd för skalbar övervakning av mycket stora FS via fanotify, möjlighet att konfigurera Zstd kompressionsnivÄer i Btrfs, en ny cpuidle-behandlare TEO, implementering av systemanrop för att lösa problem med Är 2038, möjlighet att starta frÄn enheter i device-mapper utan initramfs, LSM-modul SafeSetID och stöd för kombinerade live-patchar.
:
- Disksubsystem, in- och utmatning och filsystem
- Ett nytt grĂ€nssnitt för asynkron in- och utmatning har implementerats â , vilket utmĂ€rker sig genom att stödja polling för in- och utmatning samt möjligheten att arbeta bĂ„de med och utan buffring. Observera att den tidigare föreslagna mekanismen för asynkron in- och utmatning "aio" inte stödde buffrad in- och utmatning, kunde endast arbeta i O_DIRECT-lĂ€get (utan buffring och bypass cache), hade problem med lĂ„sning pĂ„ grund av vĂ€ntan pĂ„ tillgĂ„ng till metadata och visade stora overheadkostnader pĂ„ grund av kopiering av data i minnet.
Inom API:et
io_uring har utvecklarna försökt ÄtgÀrda bristerna i det gamla aio-grÀnssnittet. Enligt io_uring Àr vÀldigt nÀra och övertrÀffar klart libaio nÀr det gÀller att arbeta med aktiverad polling. För att anvÀnda io_uring i slutapplikationer som körs i anvÀndarutrymmet har ett bibliotek förberetts , som tillhandahÄller ett högre nivÄgrÀnssnitt över kÀrnans API; - I hÀndelsespÄrningsmekanismen i FS fanotify() stöds spÄrning av situationer dÀr superblocket och strukturen Àndras (hÀndelser för skapande, borttagning och flytt av kataloger). De presenterade funktionerna hjÀlper till att lösa skalbarhetsproblem som uppstÄr vid skapande av rekursiv spÄrning av förÀndringar i mycket stora FS med hjÀlp av inotify-mekanismen (tidigare kunde Àndringar i dirent endast spÄras via inotify, men
effektiviteten för rekursiv spÄrning av stora, nÀstlade kataloger lÀmnade mycket att önska). Nu kan sÄdan övervakning göras effektivt genom fanotify; - I filsystemet Btrfs möjlighet att konfigurera komprimeringsnivÄ för zstd-algoritmen, som kan ses som en optimal kompromiss mellan det snabba men ineffektiva lz4 och det lÄngsamma men högkomprimerande xz. PÄ samma sÀtt som det tidigare var möjligt att stÀlla in komprimeringsnivÄn vid anvÀndning av zlib för zstd har stöd för monteringsalternativet "-o compress=zstd:level" lagts till. Vid testning sÀkerstÀllde den minimi första nivÄn en komprimering av data med 2,658 gÄnger vid en komprimeringshastighet av 438,47 MB/s, uppackningshastighet av 910,51 MB/s och minnesanvÀndning av 780 MB, medan den maximala 15:e nivÄn gav 3,126 gÄnger, men med en komprimeringshastighet pÄ 37,30 MB/s, uppackningshastighet av 878,84 MB/s och minnesanvÀndning av 2547 MB;
- möjlighet att starta frÄn ett filsystem som finns pÄ device-mapper-enheten utan att anvÀnda initramfs. FrÄn och med den aktuella versionen av kÀrnan kan device-mapper-enheten anvÀndas direkt under startprocessen, exempelvis som partition med rotfilsystemet. InstÀllning av partitionen görs med startparametern "dm-mod.create". Bland de tillÄtna modulerna för start frÄn device-mapper finns: "crypt", "delay", "linear", "snapshot-origin" och "verity";
- Flaggan F2FS_NOCOW_FL har lagts till i F2FS-filsystemet, som Àr inriktat pÄ Flash-lagringsenheter och tillÄter att copy-on-write-lÀget stÀngs av för en specificerad fil;
- Filsystemet har tagits bort frÄn kÀrnan , som Àr en variant av ext2, anpassad för att fungera med objektbaserade lagringsenheter OSD (Object-based Storage Device). Stödet för SCSI-protokollet för sÄdana objektlagringsenheter har ocksÄ tagits bort;
- Ett nytt grĂ€nssnitt för asynkron in- och utmatning har implementerats â , vilket utmĂ€rker sig genom att stödja polling för in- och utmatning samt möjligheten att arbeta bĂ„de med och utan buffring. Observera att den tidigare föreslagna mekanismen för asynkron in- och utmatning "aio" inte stödde buffrad in- och utmatning, kunde endast arbeta i O_DIRECT-lĂ€get (utan buffring och bypass cache), hade problem med lĂ„sning pĂ„ grund av vĂ€ntan pĂ„ tillgĂ„ng till metadata och visade stora overheadkostnader pĂ„ grund av kopiering av data i minnet.
- Virtualisering och sÀkerhet
- Ett alternativ PR_SPEC_DISABLE_NOEXEC har lagts till i prctl() för att styra spekulativ exekvering av instruktioner för den valda processen. Det nya alternativet gör det möjligt att selektivt stÀnga av spekulativ exekvering för processer som potentiellt kan attackeras med Spectre-typens attacker. Blockeringen gÀller tills den första exec()-anropet görs;
- LSM-modulen har implementerats , vilket gör det möjligt för systemtjÀnster att sÀkert hantera anvÀndare utan att höja privilegierna (CAP_SETUID) och utan att fÄ root-anvÀndarens behörigheter. Tildelning av privilegier görs genom att definiera regler i securityfs baserat pÄ en vitlista med tillÄtna bindningar i formen "UID1:UID2";
- LÄg-nivÄ Àndringar har lagts till som krÀvs för den staplade organisationen av sÀkerhetsmoduler (LSM). En kÀrnladdningsparameter "lsm" har introducerats för att styra vilka moduler som laddas och i vilken ordning;
- Stödet för filsystemets namespaces har lagts till i auditsystemet;
- möjligheterna hos GCC-pluginen structleak, som tillÄter att blockera potentiella minnesinnehÄllslÀckor. Initiell behandling av alla variabler som anvÀnds i koden via referensÄtkomst pÄ stacken har sÀkerstÀllts;
- NĂ€tverkssystemet
- För sockets nytt alternativ "SO_BINDTOIFINDEX", liknande
"SO_BINDTODEVICE", men accepterar indexnumret för nÀtverksgrÀnssnittet som argument istÀllet för grÀnssnittens namn; - I mac80211-stacken har möjligheten att tilldela flera BSSID (MAC-adresser) till en enhet lagts till. Inom projektet för optimering av WiFi-prestanda har mac80211-stacken inkluderat hÀnsyn till fördelning av sÀndningstid och möjligheten att fördela sÀndningstid mellan flera stationer (vid drift i ÄtkomstpunktslÀge tilldelas mindre tid för överföring till lÄngsamma trÄdlösa stationer istÀllet för en jÀmn fördelning av tid mellan alla stationer);
- En mekanism för 'som ger notifieringar vid problem med nÀtverksgrÀnssnitt;
- För sockets nytt alternativ "SO_BINDTOIFINDEX", liknande
- Minne och systemtjÀnster
- sĂ€ker signalöverföring med hĂ€nsyn till Ă„teranvĂ€ndning av PID. Till exempel kunde en situation uppstĂ„ vid anrop av kill, dĂ€r den mĂ„l-PID omedelbart efter att signalen skickats kunde ha frigjorts pĂ„ grund av processens avslut och tagits av en annan process, vilket resulterade i att signalen överfördes till en annan process. För att utesluta sĂ„dana situationer har ett nytt systemanrop pidfd_send_signal lagts till, vilket anvĂ€nder filbeskrivare frĂ„n /proc/pid för att sĂ€kerstĂ€lla stabil bindning till processen. Ăven om PID Ă„teranvĂ€nds under behandlingen av systemanropet, kommer filbeskrivaren att förbli oförĂ€ndrad och kan tryggt anvĂ€ndas för att skicka signalen till processen;
- möjlighet att anvÀnda persistent-minnesenheter (persistent-memory, till exempel ) som RAM. Tidigare har liknande enheter stöttats som lagringsenheter, men nu kan de Àven anvÀndas som ytterligare RAM. Möjligheten har implementerats som svar pÄ anvÀndarnas önskemÄl, som Àr villiga att acceptera prestandaförluster och som vill anvÀnda den inbyggda API-funktionen för hantering av minne i Linux-kÀrnan istÀllet för befintliga minnesfördelningssystem som arbetar ovanpÄ mmap för dax-filen;
- En ny cpu-idle-hanterare har lagts till (cpuidle, bestĂ€mmer nĂ€r CPU kan gĂ„ in i djupa energisparlĂ€gen; ju djupare lĂ€ge â desto större besparingar, men ocksĂ„ lĂ€ngre tid krĂ€vs för att Ă„tervĂ€nda frĂ„n lĂ€get) â TEO (Timer Events Oriented Governor). Tidigare har tvĂ„ cpuidle-hanterare föreslagits â 'menu' och 'ladder', som skiljer sig Ă„t i sin heuristik. Hanteraren 'menu' har kĂ€nda problem med att ta heuristiska beslut, och för att Ă„tgĂ€rda detta har vi beslutat att utveckla en ny hanterare. TEO positioneras som ett alternativ till 'menu'-hanteraren, vilket möjliggör högre prestanda med samma energiförbrukning.
Den nya hanteraren kan aktiveras med hjÀlp av startparametern 'cpuidle.governor=teo'; - Som en del av arbetet med att ÄtgÀrda , orsakad av överflödet av 32-bitars time_t-typen, har systemanrop inkluderats som erbjuder 64-bitars tidsrÀknare för 32-bitars arkitekturer. Som ett resultat kan 64-bitars time_t-strukturen nu anvÀndas pÄ alla arkitekturer. Liknande förÀndringar har ocksÄ genomförts i nÀtverksunderlaget för alternativ nÀtverksanslutningar;
- I systemet för live patching av kÀrnor (live patching) möjligheten "Atomic Replace" för atomÀr tillÀmpning av en serie Àndringar pÄ en funktion. Denna möjlighet gör det möjligt att distribuera sammanstÀllda patchar som omfattar flera Àndringar samtidigt, istÀllet för den ganska komplicerade processen med gradvis applicering av live-patchar i en strikt definierad ordning. Tidigare mÄste varje följande Àndring utgÄ frÄn tillstÄndet för funktionen efter den föregÄende Àndringen, men nu Àr det möjligt att distribuera flera Àndringar kopplade till ett och samma ursprungliga tillstÄnd (dvs. stödjande kan underhÄlla en sammanstÀlld patch i förhÄllande till grundkÀrnan istÀllet för en kedja av ömsesidigt beroende patchar);
- förÄldrad stöd för a.out körbarhetsformat och
kod för att generera core-filer i a.out format, som nu Àr obsolet. Formatet a.out anvÀnds lÀnge inte pÄ system med Linux, och genereringen av a.out-filer stöds inte lÀngre av moderna verktyg i Linux-konfigurationer som standard. Dessutom kan laddaren för a.out-filer implementeras helt i anvÀndarutrymmet; - Mekanismen för verifiering av BPF-program har lagts till möjligheten att identifiera och ta bort oanvÀnd kod. I kÀrnan ingÄr dessutom patchar med stöd för spinlock för BPF-subsystemet, som ger ytterligare möjligheter för hantering av parallell körning av BPF-program;
- Utrustning
- I Nouveau-drivrutinen stöd för heterogen minneshantering, som möjliggör tillgÄng för CPU och GPU till gemensamma synkroniserade minnesomrÄden. Systemet för delat virtuellt minne (SVM, shared virtual memory) implementeras baserat pÄ HMM-subsystemet (heterogen minneshantering), vilket gör det möjligt att anvÀnda enheter med egna minneshanteringsenheter (MMU, memory management unit) som kan fÄ tillgÄng till huvudminnet. Dessutom kan HMM anvÀndas för att organisera ett gemensamt adressutrymme mellan GPU och CPU, dÀr GPU kan fÄ tillgÄng till huvudminnet för processen. Stödet för SVM Àr för nÀrvarande aktiverat endast för GPU-modeller av Pascal-familjen, Àven om stöd ocksÄ ges för Volta och Turing GPU:er. Dessutom, i Nouveau ny ioctl för hantering av migrering av minnesomrÄden för processer till GPU-minne;
- I DRM-drivrutinen för Intel för GPU Skylake och nyare (gen9+) standardlÀget för snabbstart, vilket utesluter onödiga lÀgenÀndringar vid uppstart. enhetsidentifierare baserade pÄ mikroarkitekturerna Coffelake och Ice Lake. För Coffelake-chips stöd för GVT (). För virtuella GPU:er stöd för VFIO EDID. För LCD-paneler MIPI/DSI stöd för ACPI/PMIC-element. nya TV-lÀgen 1080p30/50/60 TV;
- I amdgpu-drivrutinen har stöd lagts till för GPU Vega10/20 BACO. Strömstyrning för Vega 10/20 och kylartabeller för Vega 10 har implementerats. Nya PCI-enhetsidentifierare har lagts till för GPU Picasso. grÀnssnitt för hantering av planerade beroenden för att utesluta dödlÀgen;
- DRM/KMS-drivrutin för accelererade skÀrmhÀndelser (Mali D71);
- Stöd för skÀrmpaneler frÄn Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 och Kingdisplay kd097d04 har lagts till;
- Stöd för ljudkodekar Rockchip RK3328, Cirrus Logic CS4341 och CS35L36, MediaTek MT6358, Qualcomm WCD9335 och Ingenic JZ4725B, samt ljudplattformen Mediatek MT8183;
- Stöd för NAND-kontroller Flash STMicroelectronics FMC2, Amlogic Meson har lagts till;
- Stöd för acceleratorer för maskininlÀrningssystem Habana AI har lagts till;
- Stöd för gigabit Ethernet-kontroller NXP ENETC och trÄdlösa grÀnssnitt MediaTek MT7603E (PCIe) och MT76x8 har lagts till.
Samtidig Latinamerikansk Stiftelse för Fritt Programvara
en variant â , avlĂ€gsnat frĂ„n firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodstycken vars anvĂ€ndningsomrĂ„de Ă€r begrĂ€nsat av tillverkaren. I den nya versionen har laddning av blobs i drivrutinerna mt7603 och goya inaktiverats. Kod för borttagning av blobs i drivrutiner och subsystemen wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk och touchscreen_dmi har uppdaterats. Rensningen av blobs i bootloadern för lantiq xrx200 har upphört pĂ„ grund av att den har tagits bort frĂ„n kĂ€rnan.
KĂ€lla: opennet.ru
