Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds slÀppet av kÀrnan Linux 5.15. Bland de mest anmÀrkningsvÀrda Àndringarna finns: en ny NTFS-drivrutin med skrivstöd, modulen ksmbd med implementering av en SMB-server, subsystemet DAMON för övervakning av minnesÄtkomst, lÄsprimitive för realtidslÀgen, stöd för fs-verity i Btrfs, systemanropet process_mrelease för system som reagerar pÄ minnesbrist, och modulen för fjÀrrattestering dm-ima.
I den nya versionen har 13499 korrigeringar gjorts av 1888 utvecklare, patchstorleken Àr 42 MB (Àndringarna berör 10895 filer, 632522 kodrader har lagts till, och 299966 rader har tagits bort). UngefÀr 45 % av alla Àndringar i 5.15 Àr relaterade till enhetsdrivrutiner, omkring 14 % av Àndringarna rör uppdatering av arkitekturnÀra kod, 14 % Àr kopplade till nÀtverksstacken, 6 % till filsystem och 3 % till interna kÀrnsystem.
Huvudsakliga nyheter:
- Disksubsystem, in- och utmatning och filsystem
- En ny implementation av NTFS-filsystemet, öppen av företaget Paragon Software, har antagits i kÀrnan. Den nya drivrutinen kan fungera i skrivlÀge och stödjer alla funktioner i den aktuella versionen av NTFS 3.1, inklusive avancerade filattribut, Ätkomstlistor (ACL), datakompressionslÀge, effektiv hantering av tomrum i filer (sparse) och ÄterstÀllning av integritet genom att Äterskapa Àndringar frÄn loggen efter krascher.
- I Btrfs-filsystemet har stöd för mekanismen fs-verity implementerats, som anvÀnds för transparent kontroll av integriteten och autencitet av individuella filer baserat pÄ kryptografiska hash-vÀrden eller nycklar kopplade till filerna och som lagras i metadataomrÄdet. Tidigare var fs-verity endast tillgÀngligt för filsystemen Ext4 och F2fs.
I Btrfs har stöd för mappning av anvÀndaridentiteter för monterade filsystem ocksÄ lagts till (tidigare stöddes detta för filsystemen FAT, ext4 och XFS). Denna funktion möjliggör matchning av filer för en viss anvÀndare pÄ en monterad annan partition med en annan anvÀndare i det aktuella systemet.
Bland andra förĂ€ndringar i Btrfs: ökad hastighet för att lĂ€gga till nycklar i katalogens index för förbĂ€ttrad filskapandeprestanda; möjlighet att anvĂ€nda raid0 med en enhet och raid10 med tvĂ„ (till exempel under omkonfigurering av arrayen); alternativet ârescue=ibadrootsâ för att ignorera en ogiltig extentstrĂ€d; ökad hastighet för operationen âsendâ; minskning av lĂ„skonflikter under omdöpningar; möjlighet att anvĂ€nda 4K-sektorer pĂ„ system med sidstorlek 64K.
- I XFS har möjligheten att anvÀnda filsystemdatum efter 2038 stabiliserats. En mekanism för fördröjd inaktivering av inode har implementerats, samt stöd för fördröjd installation och borttagning av filattribut. För att undvika problem har möjligheten att inaktivera diskquota för redan monterade partitioner tagits bort (quota kan tvÄngsurea inaktiveras, men den relaterade berÀkningen kommer att fortsÀtta, sÄ fullstÀndig inaktivering krÀver en ommontering).
- I EXT4 har arbetet med att öka prestandan för skrivning till delalloc-buffertar och hantering av förÀldralösa (orphan) filer som fortsÀtter att existera eftersom de Àr öppna men saknar koppling till en katalog, genomförts. Hanteringen av discard-operationer har flyttats ut frÄn jbd2-trÄden kthread för att undvika blockeringar av metadataoperationer.
- I F2FS har alternativet âdiscard_unit=block|segment|sectionâ lagts till för att koppla discard-operationer (markera frigjorda block som inte lĂ€ngre behöver sparas fysiskt) till justering i förhĂ„llande till block, sektor, segment eller sektion. Stöd för att spĂ„ra Ă€ndringar i latens vid in- och utdata har lagts till.
- I filsystemet EROFS (Extendable Read-Only File System) har stöd för direkt in- och utdata för filer som sparats utan komprimering, samt stöd för fiemap, lagts till.
- I OverlayFS har korrekt hantering av monteringsflaggor âimmutableâ, âappend-onlyâ, âsyncâ och ânoatimeâ genomförts.
- I NFS har hanteringen av situationer dÀr NFS-servern slutade svara pÄ förfrÄgningar förbÀttrats. Möjligheten till montering via en redan anvÀnd servern, men tillgÀnglig via en annan nÀtverksadress, har lagts till.
- Förberedelser för omprogrammering av FSCACHE-underdelse har inletts.
- Stöd för EFI-partitioner med icke-standardplacering av GPT-tabeller har lagts till.
- I mekanismen fanotify har en ny flagga FAN_REPORT_PIDFD införts, vilket medför att pidfd anges i metadata som returneras. Pidfd hjÀlper till att hantera situationer med ÄteranvÀndning av PID för mer exakt identifiering av processer som interagerar med spÄrade filer (pidfd kopplas till en specifik process och Àndras inte, medan PID kan kopplas till en annan process efter att den aktuella processen kopplad till denna PID har avslutats).
- Systemanropet move_mount() har utökats med möjlighet att lÀgga till monteringspunkter i befintliga delade grupper, vilket löser problem med att bevara och ÄterstÀlla processers tillstÄnd i CRIU-verktyget nÀr det finns flera monteringsutrymmen som delas i isolerade containrar.
- Skydd mot dolda körningsillstÄnd har lagts till, som potentiellt kunde leda till korruption av filer vid lÀsning frÄn cache under hantering av luckor i filen.
- Stödet för obligatoriska (mandatory) filblockeringar, implementerade genom systemanrop som leder till Àndringar i filen, har avbrutits. PÄ grund av potentiella körningsillstÄnd ansÄgs dessa blockeringar vara opÄlitliga och avfördes för mÄnga Är sedan som förÄldrade.
- Subsystemet LightNVM, som tillÀt direkt Ätkomst till SSD-lagringsenheten utan mellanskikt av emulering, har tagits bort. LightNVM har förlorat sin betydelse efter att NVMe-standarder infördes som möjliggör zonering (ZNS, Zoned Namespace).
- Minne och systemtjÀnster
- Subsystemet DAMON (Data Access MONitor) har implementerats, vilket möjliggör spÄrning av aktivitet relaterad till dataÄtkomst i RAM kopplad till en vald process som körs i anvÀndarutrymmet. Subsystemet gör det möjligt att analysera vilka specifika minnesomrÄden processen har tillgÄtt under hela sin driftstid, och vilka minnesomrÄden som förblivit oanvÀnda. Bland egenskaperna hos DAMON finns lÄg CPU-belastning, lÄg minnesförbrukning, hög precision samt förutsÀgbara konstanta overheadkostnader, oavsett storlek. Subsystemet kan anvÀndas av bÄde kÀrnan för att optimera minneshantering och av verktyg i anvÀndarutrymmet för att förstÄ vad processen gör och optimera minnesanvÀndningen, till exempel genom att frigöra överflödigt minne till systemet.
- Systemanropet process_mrelease har implementerats, vilket möjliggör en snabbare process för att frigöra minne frÄn processer som avslutar sina körningar. Under normala omstÀndigheter sker frigörande av resurser och avslutning av processer inte omedelbart och kan försenas av olika skÀl, vilket stör arbetet hos system som verkar i anvÀndarutrymmet för tidig respons pÄ minnesbrist, sÄsom oomd (tillhandahÄlls i systemd) och lmkd (anvÀnds i Android). Genom process_mrelease-anropet kan sÄdana system mer förutsÀgbart initiera ÄterlÀmnande av minne frÄn tvÄngsavslutade processer.
- FrÄn PREEMPT_RT-grenen av kÀrnan, dÀr stödet för realtidsdrift utvecklas, har varianter av primitiva mutex-blockeringar, inklusive ww_mutex, rw_semaphore, spinlock och rwlock, som baseras pÄ RT-Mutex-subsystemet, flyttats. I SLUB slab allocator har förÀndringar lagts till för att förbÀttra prestandan i PREEMPT_RT-lÀget och minska pÄverkan pÄ avbrott.
- I cgroup har stöd för uppgiftsplaneraren SCHED_IDLE lagts till, vilket gör det möjligt att ge denna egenskap till alla processer inom en viss cgroup. Det vill sÀga att dessa processer endast kommer att startas nÀr det inte finns nÄgra andra uppgifter som vÀntar pÄ att utföras i systemet. Till skillnad frÄn att stÀlla in SCHED_IDLE-attributet för varje process individuellt, tar bindning av SCHED_IDLE till cgroup hÀnsyn till den relativa vikten av uppgifter inom gruppen vid val av uppgift för körning.
- Mekanismen för att spÄra minnesanvÀndning i cgroup har utvidgats med möjligheten att övervaka ytterligare datakonstruktioner i kÀrnan, inklusive de som skapas för polling, signalhantering och namespaces.
- Stöd för asynkron schemalÀggning av uppgiftstilldelning till processor kÀrnor har lagts till pÄ arkitekturer dÀr vissa CPU:er tillÄter körning av 32-bitarsuppgifter medan andra endast arbetar i 64-bitarslÀge (t.ex. ARM). Det nya lÀget gör det möjligt, vid schemalÀggning av 32-bitarsuppgifter, att endast beakta CPU:er som stödjer 32-bitarsuppgifter.
- I grÀnssnittet för asynkron in- och utmatning io_uring har stöd införts för att öppna filer direkt i den fasta filtabellen fixed-file utan att anvÀnda en filbeskrivare, vilket möjliggör en avsevÀrd ökning av hastigheten för vissa typer av operationer, men strider mot den traditionella Unix-processen att anvÀnda filbeskrivare för att öppna filer.
I io_uring för BIO-subsystemet (Block I/O Layer) har en ny mekanism för ÄteranvÀndning av BIO ("BIO recycling") genomförts, vilket minskar overhead i hanteringen av intern minne och ökar antalet hanterade in- och utmatningsoperationer per sekund med ungefÀr 10%. io_uring har ocksÄ fÄtt 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-socketar har ocksÄ lagts till, samt funktionen att hÀmta och stÀlla in socketalternativ för setsockopt. I BTF dumper har stöd för typade data lagts till.
- PÄ NUMA-system med olika typer av minne som skiljer sig i prestanda, har en strategi för att flytta borttrÀngda minnessidor frÄn dynamiskt minne (DRAM) till lÄngsammare icke-flyktigt minne (Persistent Memory) implementerats istÀllet för att radera dessa sidor nÀr det fria utrymmet Àr slut. Tester har visat att denna taktik vanligtvis förbÀttrar prestandan pÄ sÄdana system. För NUMA har möjligheten att tilldela minnessidor till en process frÄn ett valt antal NUMA-noder ocksÄ införts.
- För ARC-arkitekturen har stöd för tre- och fyranivÄers sidtabeller införts, vilket i framtiden möjliggör stöd för 64-bitars ARC-processorer.
- För s390-arkitekturen har möjlighet att anvÀnda KFENCE-mekanismen för att upptÀcka minnesfel implementerats, och stöd för detektionssystemet för dataracing KCSAN har lagts till.
- Stöd har lagts till för att indexera meddelandelistan som skrivs ut via printk(), vilket möjliggör att extrahera alla sÄdana meddelanden pÄ en gÄng och följa förÀndringar i anvÀndarutrymmet.
- I mmap() har stödet för VM_DENYWRITE-alternativet upphört och kÀrnkoden har befriats frÄn anvÀndningen av lÀget MAP_DENYWRITE, vilket minskade antalet situationer som leder till att skrivningar blockeras med felet ETXTBSY.
- Ett nytt typ av kontroller, "Event probes", har lagts till i spÄrningssystemet, vilket gör det möjligt att koppla dem till befintliga spÄrningsevenemang och definiera ett eget utdataformat.
- NÀr kÀrnan byggs med kompilatorn Clang anvÀnds som standard den inbyggda assemblatorn frÄn projektet LLVM.
- I samband med projektet för att ta bort kod frÄn kÀrnan som orsakar kompilatorvarningar, genomfördes ett experiment med att som standard aktivera lÀget "-Werror", dÀr kompilatorvarningar behandlas som fel. Under förberedelserna för version 5.15 började Linus endast acceptera Àndringar som inte orsakade varningar vid byggandet av kÀrnan och aktiverade byggandet med "-Werror", men han gick senare med pÄ Äsikten att detta beslut var för tidigt och sköt upp aktiveringen av "-Werror" som standard. Hanteringen av aktiveringen av flaggan "-Werror" vid byggandet görs med hjÀlp av parametern WERROR, som som standard Àr instÀlld pÄ vÀrdet COMPILE_TEST, det vill sÀga den aktiveras för nÀrvarande endast vid testbyggen.
- Virtualisering och sÀkerhet
- I Device Mapper (DM) har en ny hanterare dm-ima lagts till med implementeringen av en mekanism för fjÀrrattestering baserat pÄ IMA (Integrity Measurement Architecture)-systemet, vilket tillÄter en extern tjÀnst att verifiera tillstÄndet för kÀrnsystemen för att sÀkerstÀlla att de Àr autentiska. I praktiken gör dm-ima det möjligt att skapa lagringssystem med hjÀlp av Device Mapper som Àr kopplade till externa molnsystem, dÀr IMA anvÀnds för att verifiera autenticiteten hos den körda DM-targetkonfigurationen.
- En ny alternativ PR_SPEC_L1D_FLUSH har implementerats i prctl(), vilket gör att kÀrnan börjar rensa innehÄllet i första nivÄns cache (L1D) varje gÄng kontexten vÀxlas. Detta lÀge möjliggör en ytterligare skydd för de mest viktiga processerna mot anvÀndningen av attacker via sidokanaler, som utförs för att avgöra data som har fastnat i cachen pÄ grund av sÄrbarheter orsakade av spekulativ exekvering av instruktioner i CPU:n. Kostnaden för att aktivera PR_SPEC_L1D_FLUSH (som inte Àr aktiverad som standard) Àr en betydande minskning av prestanda.
- Möjligheten att bygga kÀrnor med tillÀgget av GCC-flaggan «-fzero-call-used-regs=used-gpr» har realiserats, vilket sÀkerstÀller att alla register nollstÀlls innan kontrollen ÄterlÀmnas till funktionen. Denna alternativ skyddar mot informationslÀckage frÄn funktioner och minskar med 20% antalet block som Àr lÀmpliga för att bygga ROP-gadgets (Return-Oriented Programming) i exploiter.
- Möjligheten att bygga kÀrnor för ARM64-arkitektur i form av kunder för Hyper-V-hypervisorn har realiserats.
- Ett nytt ramverk för utveckling av drivrutiner «VDUSE» har föreslagits, vilket möjliggör implementering av virtuella blockenheter i anvÀndarutrymmet och tillÀmpning av Virtio som transportmetod för Ätkomst frÄn gÀstsystem.
- En Virtio-drivrutin för I2C-bussen har lagts till, vilket möjliggör emulering av I2C-kontroller i para-virtualisering med anvÀndning av separata backends.
- Virtio-drivrutinen gpio-virtio har lagts till, vilket gör det möjligt för gÀstsystem att fÄ Ätkomst till GPIO-linjer som tillhandahÄlls av vÀrdsystemet.
- Möjligheten att begrÀnsa Ätkomst till minnessidor för enhetsdrivrutiner med DMA-stöd pÄ system utan I/O MMU (minneshanteringsenhet) har lagts till.
- I KVM-hypervisorn har möjligheten att presentera statistik i form av linjÀra och logarithmiska histogram implementerats.
- NĂ€tverkssystemet
- Ett modul ksmbd har lagts till kÀrnan som implementerar en filserver som anvÀnder SMB3-protokollet. Modulen kompletterar den tidigare tillgÀngliga implementeringen av SMB-klient i kÀrnan och Àr, till skillnad frÄn SMB-servern som körs i anvÀndarutrymmet, mer effektiv vad gÀller prestanda, minnesanvÀndning och integration med kÀrnans avancerade funktioner. Ksmbd presenteras som en högpresterande och tillÀmpningsklar tillÀgg för inbyggda enheter, som kan integreras med verktyg och bibliotek frÄn Samba vid behov. Av ksmbds funktioner kan nÀmnas förbÀttrat stöd för teknik för distribuerad filcache (SMB leases) pÄ lokala system, vilket avsevÀrt minskar trafiken. I framtiden planeras stöd för RDMA (»smbdirect») och protokollförlÀngningar relaterade till förbÀttrad krypteringspÄlitlighet och digital signaturverifiering.
- I CIFS-klienten har stödet för NTLM och mindre tillförlitliga autentiseringsalgoritmer baserade pÄ algoritmen DES och anvÀnda i SMB1-protokollet upphört.
- Stöd för multicast har implementerats i genomförandet av nÀtverksbroar för vlan.
- I bonding-drivrutinen, som anvÀnds för att agreggera nÀtverksgrÀnssnitt, har stöd för XDP (eXpress Data Path) lagts till, vilket möjliggör manipulering av nÀtverkspaket innan de behandlas av Linux-kÀrnans nÀtverksstack.
- I den trÄdlösa stacken mac80211 har stöd för 6GHz STA (Special Temporary Authorization) implementerats i lÀgena LPI, SP och VLP, samt möjligheten att stÀlla in separata TWT (Target Wake Time) i accesspunktlÀget.
- Stöd för protokollet MCTP (Management Component Transport Protocol) har lagts till, vilket anvÀnds för interaktion mellan styrkontroller och relaterade enheter (host-processorer, perifera enheter etc.).
- Integrationen av MPTCP (MultiPath TCP) i kÀrnan har fortsatt, ett protokollutvidgning för TCP som möjliggör drift av TCP-anslutningar med paketleverans samtidigt via flera vÀgar genom olika nÀtverksgrÀnssnitt kopplade till olika IP-adresser. I den nya utgÄvan har stöd för adresser i fullmesh-lÀget lagts till.
- Nya pakethanterare för nÀtverksflöden, inkapslade i SRv6-protokollet (Segment Routing IPv6), har lagts till i netfilter.
- Stöd för sockmap för strömmande Unix-socketar har lagts till.
- Utrustning
- I amdgpu-drivrutinen har stöd för APU Cyan Skillfish (utrustad med GPU Navi 1x) implementerats. För APU Yellow Carp har stöd för videokodekar implementerats. Stödet för GPU Aldebaran har förbÀttrats. Nya identifierare för kort baserade pÄ GPU Navi 24 "Beige Goby" och RDNA2 har lagts till. En förbÀttrad implementering av virtuella skÀrmar (VKMS) har föreslagits. Stöd för att övervaka temperaturen av AMD Zen 3-chips har implementerats.
- I amdkfd-drivrutinen (för diskreta GPU:er som Polaris) har en hanterare för delad virtuell minne (SVM, shared virtual memory) implementerats baserad pÄ HMM (Heterogeneous memory management) subsystemet, som möjliggör anvÀndning av enheter med egna minneshanteringsblock (MMU, memory management unit) som kan fÄ tillgÄng till huvudminnet. Genom HMM kan dessutom ett gemensamt adressutrymme mellan GPU och CPU skapas, dÀr GPU kan fÄ tillgÄng till huvudminnet för processen.
- I i915-drivrutinen för Intel-grafikkort har anvÀndningen av minneshanteringssystemet TTM utvidgats och möjligheten att hantera energiförbrukning baserat pÄ GuC (Graphics micro Controller) har inkluderats. Förberedelser har inletts för att implementera stöd för grafikkortet Intel ARC Alchemist och GPU Intel Xe-HP.
- I drivrutinen nouveau har stöd för att hantera bakgrundsbelysningen av eDP-paneler med hjÀlp av DPCD (DisplayPort Configuration Data).
- I drivrutinen msm har stöd lagts till för GPU Adreno 7c Gen 3 och Adreno 680.
- För Apple M1-chippet har en drivrutin för IOMMU implementerats.
- En ljuddrivrutin har lagts till för system baserade pÄ APU AMD Van Gogh.
- I staging-grenen har drivrutinen Realtek R8188EU lagts till, vilken har ersatt den gamla versionen av drivrutinen (rtl8188eu) för trÄdlösa chip frÄn Realtek RTL8188EU 802.11 b/g/n.
- Drivrutinen ocp_pt har accepterats för PCIe-kortet som utvecklas av Meta (Facebook) och inkluderar miniaturiserade atomur och GNSS-mottagare, som kan anvÀndas för att möjliggöra separat tidskoordinering. servrar synchronisering av exakt tid.
- Stöd har lagts till för smartphones Sony Xperia 10II (Snapdragon 665), Xiaomi Redmi 2 (Snapdragon MSM8916), Samsung Galaxy S3 (Snapdragon MSM8226), Samsung Gavini/Codina/Kyle.
- Stöd har lagts till för ARM SoC och plattor som NVIDIA Jetson TX2 NX Developer Kit, Sancloud BBE Lite, PicoITX, DRC02, SolidRun SolidSense, SKOV i.MX6, Nitrogen8, Traverse Ten64, GW7902, Microchip SAMA7, Qualcomm Snapdragon SDM636/SM8150, Renesas R-Car H3e-2G/M3e-2G, Marvell CN913x, ASpeed AST2600 (serverkort Facebook Cloudripper, Elbert och Fuji), 4KOpen STiH418-b2264.
- Stöd har lagts till för LCD-paneler Gopher 2b, EDT ETM0350G0DH6/ETMV570G2DHU, LOGIC Technologies LTTD800480070-L6WH-RT, Multi-Innotechnology MI1010AIT-1CP1, Innolux EJ030NA 3.0, ilitek ili9341, E Ink VB3300-KCA, Samsung ATNA33XC20, Samsung DB7430, WideChips WS2401.
- Drivrutinen LiteETH har lagts till med stöd för Ethernet-kontroller som anvÀnds i programvarubaserade SoC LiteX (för FPGA).
- I drivrutinen usb-audio har alternativet lowlatency lagts till för att hantera aktivering av arbete i lÀge med minimal fördröjning. Dessutom har alternativet quirk_flags lagts till för att överföra enheter-specifika instÀllningar.
Samtidigt har den latinska fri programvarufonden etablerat en helt fri kĂ€rna 5.15 â Linux-libre 5.15-gnu, rensad frĂ„n firmware- och drivrutinskomponenter med icke-fria delar eller kodavsnitt vars anvĂ€ndningsomrĂ„de begrĂ€nsas av tillverkaren. I den nya versionen har en loggning av avslutningen av rensningen implementerats. Problem med paketgenerering med anvĂ€ndning av mkspec har Ă„tgĂ€rdats, och stödet för snap-paket har förbĂ€ttrats. Vissa varningar som visas vid bearbetning av rubrikfilen firmware.h har avlĂ€gsnats. Vissa typer av varningar ("format-extra-args", kommentarer, oanvĂ€nda funktioner och variabler) tillĂ„ts nu att visas vid kompilering med "-Werror". Rensningen av drivrutinen gehc-achc har lagts till. Koden för rensning av blobbar i drivrutiner och delsystem som adreno, btusb, btintel, brcmfmac och aarch64 qcom har uppdaterats. Rensningen av drivrutiner för prism54 (borttagen) och rtl8188eu (ersatt med r8188eu) har avslutats.
KĂ€lla: opennet.ru
