Efter tvÄ mÄnaders utveckling slÀppte Linus Torvalds kÀrnan. Linux 5.15. Bland de mest anmÀrkningsvÀrda Àndringarna: en ny NTFS-drivrutin med skrivstöd, ksmbd-modulen med en SMB-serverimplementering, DAMON-undersystemet för övervakning av minnesÄtkomst, lÄsningsprimitiver för realtidslÀge, stöd för fs-verity i Btrfs, systemanropet process_mrelease för system med lÄgt minnesbehov och fjÀrrattesteringsmodulen dm-ima.
Den nya versionen innehÄller 13499 1888 korrigeringar frÄn 42 10895 utvecklare, patchstorleken Àr 632522 MB (Àndringarna pÄverkade 299966 45 filer, 5.15 14 rader kod lades till, 14 6 rader raderades). Cirka 3 % av alla Àndringar som introduceras i XNUMX Àr relaterade till drivrutiner, cirka XNUMX % av Àndringarna Àr relaterade till uppdateringskod som Àr specifik för hÄrdvaruarkitekturer, XNUMX % Àr relaterade till nÀtverksstacken, XNUMX % Àr relaterade till filsystem och XNUMX % Àr relaterade till interna kÀrndelsystem.
Huvudsakliga innovationer:
- Diskundersystem, I/O och filsystem
- KÀrnan har antagit en ny implementering av filsystemet NTFS, öppnat av Paragon Software. Den nya drivrutinen kan fungera i skrivlÀge och stöder alla funktioner i den aktuella versionen av NTFS 3.1, inklusive utökade filattribut, Ätkomstlistor (ACL), datakomprimeringslÀge, effektivt arbete med tomma utrymmen i filer (glesa) och uppspelning av Àndringar frÄn loggen för att ÄterstÀlla integriteten efter fel.
- Btrfs-filsystemet implementerar stöd för fs-verity-mekanismen, som anvÀnds för att pÄ ett transparent sÀtt kontrollera integriteten och Àktheten för enskilda filer med hjÀlp av kryptografiska hash eller nycklar som Àr associerade med filerna, lagrade i metadataomrÄdet. Tidigare var fs-verity endast tillgÀngligt för filsystemen Ext4 och F2fs.
Btrfs lÀgger ocksÄ till stöd för kartlÀggning av anvÀndar-ID:n för monterade filsystem (stöddes tidigare för FAT, ext4 och XFS filsystem). Denna funktion lÄter dig jÀmföra filer för en specifik anvÀndare pÄ en monterad frÀmmande partition med en annan anvÀndare pÄ det aktuella systemet.
Andra Àndringar av Btrfs inkluderar: snabbare tillÀgg av nycklar till katalogindexet för att förbÀttra prestanda för filskapande; förmÄgan att arbeta raid0 med en enhet och raid10 med tvÄ (till exempel under processen att omkonfigurera arrayen); alternativet "rescue=ibadroots" för att ignorera ett felaktigt omfattningstrÀd; acceleration av "sÀnd"-operationen; minskning av lÄskonflikter under namnbyte; möjligheten att anvÀnda 4K-sektorer pÄ system med en sidstorlek pÄ 64K minne.
- I XFS har möjligheten att anvÀnda datum efter 2038 i filsystemet stabiliserats. Implementerat en mekanism för fördröjd inodavaktivering och stöd för försenad installation och borttagning av filattribut. För att eliminera problem har möjligheten att inaktivera diskkvoter för redan monterade partitioner tagits bort (du kan tvÄngsinaktivera kvoter, men berÀkningen associerad med dem kommer att fortsÀtta, sÄ ommontering krÀvs för att helt inaktivera dem).
- I EXT4 har man arbetat för att öka prestandan för att skriva delalloc-buffertar och bearbeta orphan-filer som fortsÀtter att existera pÄ grund av att de förblir öppna, men inte Àr associerade med en katalog. Bearbetning av kasseringsoperationer har flyttats ut frÄn jbd2 kthread-trÄden för att undvika blockering av operationer med metadata.
- F2FS lade till alternativet "discard_unit=block|segment|section" för att binda kasseringsoperationer (markera frigjorda block som kanske inte lÀngre fysiskt lagras) till anpassningen i förhÄllande till ett block, sektor, segment eller sektion. Tillagt stöd för att spÄra förÀndringar i I/O-latens.
- Filsystemet EROFS (Extendable Read-Only File System) lÀgger till direkt I/O-stöd för filer som sparats utan komprimering, samt stöd för fiemap.
- OverlayFS implementerar korrekt hantering av de "oförÀnderliga", "endast lÀgga till", "synkronisera" och "noatime" monteringsflaggor.
- NFS har förbÀttrat hanteringen av situationer dÀr NFS-servern har slutat svara pÄ förfrÄgningar. Möjligheten att montera frÄn en redan anvÀnd server har lagts till. server, men Ätkomlig via en annan nÀtverksadress.
- Förberedelser har pÄbörjats för att skriva om FSCACHE-delsystemet.
- Tillagt stöd för EFI-partitioner med icke-standardplacering av GPT-tabeller.
- Fanotify-mekanismen implementerar en ny flagga, FAN_REPORT_PIDFD, som gör att pidfd inkluderas i metadata som returneras. Pidfd hjÀlper till att hantera PID-ÄteranvÀndningssituationer för att mer exakt identifiera processer som fÄr Ätkomst till övervakade filer (en pidfd Àr associerad med en specifik process och Àndras inte, medan en PID kan associeras med en annan process efter att den aktuella processen som Àr associerad med den PID avslutas).
- Lade till möjligheten att lÀgga till monteringspunkter till befintliga delade grupper till move_mount() systemanropet, vilket löser problem med att spara och ÄterstÀlla processtillstÄnd i CRIU nÀr det finns flera monteringsutrymmen delade i isolerade behÄllare.
- Tillagt skydd mot dolda rasförhÄllanden som potentiellt kan orsaka filkorruption nÀr man utför cache-lÀsningar under bearbetning av tomrum i en fil.
- Stöd för obligatorisk (obligatorisk) fillÄsning, implementerad genom blockering av systemanrop som leder till filÀndring, har upphört. PÄ grund av möjliga tÀvlingsförhÄllanden ansÄgs dessa lÄs vara opÄlitliga och avskaffades för mÄnga Är sedan.
- LightNVM-undersystemet har tagits bort, vilket tillÀt direkt Ätkomst till SSD-enheten och kringgÄ emuleringsskiktet. LightNVM förlorade sin betydelse efter tillkomsten av NVMe-standarder som tillhandahÄller zonindelning (ZNS, Zoned Namespace).
- Minnes- och systemtjÀnster
- Delsystemet DAMON (Data Access MONitor) har implementerats, vilket gör att du kan övervaka aktivitet relaterad till Ätkomst av data i RAM i förhÄllande till en vald process som körs i anvÀndarutrymmet. Delsystemet lÄter dig analysera vilka minnesomrÄden som processen fick Ätkomst till under hela driften och vilka minnesomrÄden som förblev outtagna. DAMON har lÄg CPU-belastning, lÄg minnesförbrukning, hög noggrannhet och förutsÀgbar konstant overhead, oberoende av storlek. Delsystemet kan anvÀndas bÄde av kÀrnan för att optimera minneshantering och av anvÀndarutrymmesverktyg för att förstÄ vad en process gör och optimera minnesanvÀndningen, till exempel för att frigöra överflödigt minne för systemet.
- Systemanropet process_mrelease har implementerats, vilket möjliggör snabbare minnesfrigöring för en process som avslutar sin exekvering. Under normala förhÄllanden sker resursfrigöring och processavslutning inte omedelbara och kan fördröjas av olika anledningar, vilket stör driften av tidiga varningssystem för minnestryck i anvÀndarutrymmet, sÄsom oomd (tillhandahÄlls av systemd) och lmkd (anvÀnds i AndroidGenom att anropa process_mrelease kan sÄdana system mer förutsÀgbart initiera minnesÄterstÀllning frÄn tvÄngsavslutade processer.
- FrĂ„n PREEMPT_RT kĂ€rngren, som utvecklar stöd för realtidsdrift, har varianter av primitiver för att organisera lĂ„s mutex, ww_mutex, rw_semaphore, spinlock och rwlock, baserade pĂ„ RT-Mutex delsystemet, överförts. Ăndringar har lagts till i SLUB plattfördelare för att förbĂ€ttra driften i PREEMPT_RT-lĂ€ge och minska pĂ„verkan pĂ„ avbrott.
- Stöd för SCHED_IDLE uppgiftsschemalÀggarens attribut har lagts till i cgroup, vilket gör att du kan tillhandahÄlla detta attribut till alla processer i en grupp som ingÄr i en specifik cgroup. De dÀr. dessa processer kommer bara att köras nÀr det inte finns nÄgra andra uppgifter som vÀntar pÄ att utföras pÄ systemet. Till skillnad frÄn att stÀlla in SCHED_IDLE-attributet för varje process individuellt, nÀr man binder SCHED_IDLE till en cgroup, tas den relativa vikten av uppgifter inom gruppen med i berÀkningen nÀr man vÀljer en uppgift att utföra.
- Mekanismen för att ta hÀnsyn till minnesförbrukning i cgroup har utökats med möjligheten att spÄra ytterligare kÀrndatastrukturer, inklusive de som skapats för polling, signalbehandling och namnutrymmen.
- Tillagt stöd för asymmetrisk schemalÀggning av uppgiftsbindning till processorkÀrnor pÄ arkitekturer dÀr vissa processorer tillÄter exekvering av 32-bitars uppgifter, och vissa fungerar endast i 64-bitars lÀge (till exempel ARM). Det nya lÀget lÄter dig endast övervÀga processorer som stöder 32-bitars uppgifter nÀr du schemalÀgger 32-bitars uppgifter.
- Det asynkrona I/O-grÀnssnittet io_uring stöder nu öppning av filer direkt i indextabellen med fasta filer, utan att anvÀnda en fildeskriptor, vilket gör det möjligt att avsevÀrt snabba upp vissa typer av operationer, men gÄr emot den traditionella Unix-processen att anvÀnda fildeskriptorer för att öppna filer.
io_uring för delsystemet BIO (Block I/O Layer) implementerar en ny Ă„tervinningsmekanism (âBIO recyclingâ), som minskar omkostnader i processen för att hantera internminnet och ökar antalet bearbetade I/O-operationer per sekund med cirka 10 % . io_uring lĂ€gger ocksĂ„ till stöd för systemanropen mkdirat(), symlinkat() och linkat().
- För BPF-program har möjligheten att begÀra och bearbeta timerhÀndelser implementerats. En iterator för UNIX-sockets har lagts till, och möjligheten att hÀmta och stÀlla in socketalternativ för setsockopt har implementerats. BTF-dumper stöder nu typdata.
- PÄ NUMA-system med olika typer av minne som skiljer sig Ät i prestanda, nÀr ledigt utrymme Àr slut, överförs vrÀkta minnessidor frÄn dynamiskt minne (DRAM) till lÄngsammare permanent minne (Persistent Memory) istÀllet för att radera dessa sidor. Tester har visat att sÄdan taktik vanligtvis förbÀttrar prestandan pÄ sÄdana system. NUMA ger ocksÄ möjligheten att allokera minnessidor för en process frÄn en vald uppsÀttning NUMA-noder.
- För ARC-arkitekturen har stöd för tre- och fyra-nivÄs minnessidtabeller implementerats, vilket ytterligare kommer att möjliggöra stöd för 64-bitars ARC-processorer.
- För s390-arkitekturen har möjligheten att anvÀnda KFENCE-mekanismen för att upptÀcka fel nÀr man arbetar med minne implementerats, och stöd för KCSAN race condition-detektor har lagts till.
- Lade till stöd för att indexera listan över meddelanden som matas ut via printk(), vilket gör att du kan hÀmta alla sÄdana meddelanden pÄ en gÄng och spÄra Àndringar i anvÀndarutrymmet.
- mmap() har tagit bort stödet för alternativet VM_DENYWRITE, och kÀrnkoden har tagits bort frÄn att anvÀnda MAP_DENYWRITE-lÀget, vilket har minskat antalet situationer som leder till blockering av skrivningar till en fil med ETXTBSY-felet.
- En ny typ av kontroller, "HÀndelsesonder", har lagts till i spÄrningsundersystemet, som kan kopplas till befintliga spÄrningshÀndelser och definierar ditt eget utdataformat.
- NÀr du bygger kÀrnan med Clang-kompilatorn anvÀnds nu standardmonteraren frÄn LLVM-projektet.
- Som en del av ett projekt för att befria kÀrnan frÄn kod som leder till att varningar matas ut av kompilatorn, utfördes ett experiment med "-Werror"-lÀget aktiverat som standard, dÀr kompilatorvarningar behandlas som fel. Som förberedelse för 5.15-utgÄvan började Linus endast acceptera Àndringar som inte resulterade i varningar nÀr kÀrnan byggdes och aktiverade byggnad med "-Werror", men gick sedan med pÄ att ett sÄdant beslut var för tidigt och försenat och aktiverade "-Werror" som standard . Inkluderingen av "-Werror"-flaggan under montering kontrolleras med hjÀlp av parametern WERROR, som Àr instÀlld pÄ COMPILE_TEST som standard, dvs. För nÀrvarande Àr det bara aktiverat för testbyggen.
- Virtualisering och sÀkerhet
- En ny dm-ima-hanterare har lagts till i Device Mapper (DM) med implementeringen av en fjÀrrcertifieringsmekanism baserad pÄ IMA-undersystemet (Integrity Measurement Architecture), vilket gör det möjligt för en extern tjÀnst att verifiera tillstÄndet för kÀrndelsystem för att sÀkerstÀlla deras autenticitet . I praktiken lÄter dm-ima dig skapa lagringar med hjÀlp av Device Mapper som Àr lÀnkade till externa molnsystem, dÀr giltigheten av den lanserade DM-mÄlkonfigurationen kontrolleras med IMA.
- prctl() implementerar ett nytt alternativ PR_SPEC_L1D_FLUSH, som nÀr det Àr aktiverat fÄr kÀrnan att tömma innehÄllet i förstanivÄns (L1D) cache varje gÄng en kontextvÀxling intrÀffar. Detta lÀge tillÄter, selektivt för de viktigaste processerna, att implementera ytterligare skydd mot anvÀndningen av sidokanalsattacker som utförs för att faststÀlla data som har lagt sig i cachen som ett resultat av sÄrbarheter orsakade av spekulativ exekvering av instruktioner i CPU:n. Kostnaden för att aktivera PR_SPEC_L1D_FLUSH (inte aktiverad som standard) Àr en betydande prestationsstraff.
- Det Àr möjligt att bygga kÀrnan med tillÀgget av flaggan "-fzero-call-used-regs=used-gpr" till GCC, vilket sÀkerstÀller att alla register ÄterstÀlls till noll innan kontrollen ÄtergÄr frÄn funktionen. Det hÀr alternativet lÄter dig skydda mot informationslÀckage frÄn funktioner och minska antalet block som Àr lÀmpliga för att bygga ROP-prylar (Return-Oriented Programming) med 20 % i exploateringar.
- Möjligheten att bygga kÀrnor för ARM64-arkitekturen i form av klienter för Hyper-V hypervisorn har implementerats.
- Ett nytt ramverk för utveckling av drivrutiner "VDUSE" föreslÄs, som gör det möjligt att implementera virtuella blockenheter i anvÀndarutrymmet och anvÀnda Virtio som en transport för Ätkomst frÄn gÀstsystem.
- Lade till Virtio-drivrutin för I2C-bussen, vilket gör det möjligt att emulera I2C-kontroller i paravirtualiseringslÀge med hjÀlp av separata backends.
- Lade till Virtio-drivrutinen gpio-virtio för att ge gÀsterna Ätkomst till GPIO-linjer som tillhandahÄlls av vÀrdsystemet.
- Lade till möjligheten att begrÀnsa Ätkomst till minnessidor för enhetsdrivrutiner med DMA-stöd pÄ system utan en I/O MMU (minneshanteringsenhet).
- KVM-hypervisorn har förmÄgan att visa statistik i form av linjÀra och logaritmiska histogram.
- NĂ€tverksdelsystem
- Ksmbd-modulen har lagts till i kĂ€rnan med implementeringen av en filserver som anvĂ€nder SMB3-protokollet. Modulen kompletterar SMB-klientimplementeringen som tidigare var tillgĂ€nglig i kĂ€rnan och Ă€r, till skillnad frĂ„n SMB-servern som körs i anvĂ€ndarutrymme, mer effektiv vad gĂ€ller prestanda, minnesförbrukning och integration med avancerade kĂ€rnfunktioner. Ksmbd utses som en högpresterande, inbĂ€ddad Samba-förlĂ€ngning som integreras med Samba-verktyg och -bibliotek efter behov. ksmbds möjligheter inkluderar förbĂ€ttrat stöd för distribuerad filcacheteknik (SMB-leasing) pĂ„ lokala system, vilket avsevĂ€rt kan minska trafiken. I framtiden planerar de att lĂ€gga till stöd för RDMA (âsmbdirectâ) och protokolltillĂ€gg relaterade till att förbĂ€ttra tillförlitligheten för kryptering och verifiering med hjĂ€lp av digitala signaturer.
- CIFS-klienten stöder inte lÀngre NTLM och de svagare DES-baserade autentiseringsalgoritmerna som anvÀnds i SMB1-protokollet.
- Multicast-stöd implementeras i implementeringen av nÀtverksbryggor för vlans.
- Bonding-drivrutinen, som anvÀnds för att aggregera nÀtverksgrÀnssnitt, har uppdaterats för att stödja XDP-undersystemet (eXpress Data Path), vilket möjliggör manipulation av nÀtverkspaket innan de bearbetas av kÀrnans nÀtverksstack. Linux.
- Den trÄdlösa mac80211-stacken stöder 6GHZ STA (Special Temporary Authorization) i LPI-, SP- och VLP-lÀgen, samt möjligheten att stÀlla in individuell TWT (Target Wake Time) i ÄtkomstpunktslÀge.
- Tillagt stöd för MCTP (Management Component Transport Protocol), som anvÀnds för interaktion mellan hanteringskontroller och tillhörande enheter (vÀrdprocessorer, kringutrustning, etc.).
- Integrering i kÀrnan av MPTCP (MultiPath TCP), en förlÀngning av TCP-protokollet för att organisera driften av en TCP-anslutning med leverans av paket samtidigt lÀngs flera rutter genom olika nÀtverksgrÀnssnitt associerade med olika IP-adresser. Den nya versionen lÀgger till stöd för adresser i fullmesh-lÀge.
- Hanterare för nÀtverksströmmar inkapslade i SRv6-protokollet (Segment Routing IPv6) har lagts till i netfilter.
- Lade till sockmap-stöd för Unix-streaming-sockets.
- ĐĐ±ĐŸŃŃĐŽĐŸĐČĐ°ĐœĐžĐ”
- Amdgpu-drivrutinen stöder Cyan Skillfish APU (utrustad med Navi 1x GPU). Yellow Carp APU stöder nu videocodecs. FörbÀttrat Aldebaran GPU-stöd. Lade till nya kartidentifierare baserade pÄ GPU Navi 24 "Beige Goby" och RDNA2. En förbÀttrad implementering av virtuella skÀrmar (VKMS) föreslÄs. Stöd för övervakning av temperaturen pÄ AMD Zen 3-chips har implementerats.
- Amdkfd-drivrutinen (för diskreta GPU:er, som Polaris) implementerar en delad virtuellt minneshanterare (SVM, delat virtuellt minne) baserad pÄ HMM (Heterogen minneshantering) undersystemet, som tillÄter anvÀndning av enheter med sina egna minneshanteringsenheter (MMU) , minneshanteringsenhet), som kan komma Ät huvudminnet. I synnerhet, med hjÀlp av HMM, kan du organisera ett delat adressutrymme mellan GPU:n och CPU:n, dÀr GPU:n kan komma Ät processens huvudminne.
- i915-drivrutinen för Intel-grafikkort utökar anvÀndningen av TTM-videominneshanteraren och inkluderar möjligheten att hantera strömförbrukning baserat pÄ GuC (Graphics micro Controller). Förberedelser har pÄbörjats för implementering av stöd för Intel ARC Alchemist-grafikkortet och Intel Xe-HP GPU.
- Nouveau-drivrutinen implementerar bakgrundsbelysningskontroll för eDP-paneler med hjÀlp av DPCD (DisplayPort Configuration Data).
- Lade till stöd för Adreno 7c Gen 3 och Adreno 680 GPU:er till msm-drivrutinen.
- IOMMU-drivrutinen Àr implementerad för Apple M1-chippet.
- Tillagd ljuddrivrutin för system baserade pÄ AMD Van Gogh APU:er.
- Realtek R8188EU-drivrutinen har lagts till i staging-grenen, som ersatte den gamla versionen av drivrutinen (rtl8188eu) för Realtek RTL8188EU 802.11 b/g/n trÄdlösa chips.
- Drivrutinen ocp_pt har anvÀnts för ett PCIe-kort utvecklat av Meta (Facebook) med implementeringen av en miniatyratomur och en GNSS-mottagare, som kan anvÀndas för att organisera driften av separata ... servrar synkronisering av exakt tid.
- Lade till stöd för Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle smartphones.
- Lade till stöd för ARM SoĐĄ och NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, ualcomm Snapdragon SDM636C, HSM8150C/Renes kort -3G/M2e-3G, Marvell CN2x, ASpeed ââââAST913 (Facebook Cloudripper, Elbert och Fuji serverkort), 2600KOpen STiH4-b418.
- Tillagt stöd för Gopher 2b LCD-paneler, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, Innolux EJ9341NA 3300, Innolux EJ33NA 20, Innolux EJ7430NA 2401 XCXNUMX, Samsung DBXNUMX, WideChips WSXNUMX.
- Lade till LiteETH-drivrutin med stöd för Ethernet-kontroller som anvÀnds i LiteX-programvara SoCs (för FPGA).
- Ett alternativ för lÄg latens har lagts till i usb-ljuddrivrutinen för att styra införandet av drift i lÀget för minimal latens. Lade ocksÄ till quirk_flags-alternativet för att skicka enhetsspecifika instÀllningar.
Samtidigt skapade Latin American Free Software Foundation en version av den helt fria kÀrnan 5.15 - Linux-libre 5.15-gnu, rensat frÄn firmware- och drivrutinselement som innehÄller icke-fria komponenter eller kodavsnitt med begrÀnsat omfÄng. Den nya utgÄvan visar nu ett loggmeddelande om att rensningen Àr klar. Problem med mkspec-paketering har ÄtgÀrdats och stöd för snap-paket har förbÀttrats. Vissa varningar som genereras vid bearbetning av firmware.h-headerfilen har tagits bort. Vissa varningar (format-extra-args, kommentarer, oanvÀnda funktioner och variabler) fÄr nu visas vid byggnation i -Werror-lÀge. Rengöring av gehc-achc-drivrutiner har lagts till. Uppdaterad kod för att rensa blobbar i adreno-, btusb-, btintel-, brcmfmac-, aarch64- och qcom-drivrutiner och delsystem. Rensning av prism54- och rtl8188eu-drivrutiner (ersatta med r8188eu) har upphört.
KĂ€lla: opennet.ru
