Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds slÀppet av Linux-kÀrnan 6.15. Bland de mest mÀrkbara Àndringarna: en revisionsmekanism i Landlock, en funktion för att lÄsa minnesmappning, fwctl-subsystemet, Nova-drivrutinen för NVIDIA GPU:er, implementeringen av en vÀrdsystem för hypervisorn Hyper-V, stöd för zonerade lagringsenheter i XFS, optimering av nÀtverksunderlaget, scrub-verifiering i Bcachefs, samt möjligheten att kontrollera operationer via io_uring.
I den nya versionen har 15945 korrigeringar gjorts av 2154 utvecklare, storleken pÄ patchen Àr 59 MB (Àndringar berör 13596 filer, 739608 rader kod har lagts till, 312168 rader har tagits bort). I den föregÄende versionen fanns 12115 korrigeringar av 1984 utvecklare, patchens storlek var 39 MB. UngefÀr 41% av alla som presenterats i 6.15 Àndringar relaterar till enhetsdrivrutiner, cirka 16% förÀndringar har att göra med uppdateringen av kod specifik för hÄrdvaruarkitekturer, 13% Àr relaterade till nÀtverksstacken, 5% till filsystem och 4% till interna subsystem i kÀrnan.
De viktigaste nyheterna i kÀrnan 6.15:
- Disksubsystem, in- och utmatning och filsystem
- Mekanismen fanotify har fÄtt möjligheten att övervaka hÀndelser för montering och avmontering.
- I XFS har stöd för zonerade lagringsenheter lagts till (indelning i zoner av blockgrupper eller sektorer dÀr endast sekventiell tillÀgg av data med uppdatering av hela blockgruppen Àr tillÄten). En flagga för rwf_dontcache har lagts till för att inaktivera caching vid skrivning. Mogligheten för atomÀr skrivning av flera datablokker har implementerats.
- I Btrfs har möjligheten att ange negativa komprimeringsnivÄer med zstd (frÄn -15 till -1, exempelvis 'compress=zstd:-5') vid montering införts, vilket ger högre hastighet pÄ bekostnad av lÀgre komprimeringseffektivitet. Caching av filvÀgar har förbÀttrats (vid utförd test har operationen 'send' blivit 30% snabbare). Stöd för blockstorlekar pÄ 2 KB har lagts till.
- I EXT4 har prestandan vid Äterspelning av loggar med ett mycket stort antal Äterkallade poster ökat (belastning som Àr typisk för partitioner under filsystemet Lustre). En linjÀr sökning av 'dentry' poster (interna representationer av katalogelement) har implementerats, vilket löser problem med Ätkomst till vissa filer i lÀge utan hÀnsyn till teckenens versaler. Funktionaliteten för monteringsalternativet 'errors=remount-ro' har förbÀttrats. Stabiliteten vid hantering av skadade filsystem har stÀrks.
- I F2FS har ioctl implementerats för att hÀmta information om prioriteringen av in-/utdataoperationer för en angiven fil. Arbetet med att övergÄ till anvÀndning av sidans minnessidor (page folios) har genomförts.
- I Bcachefs har lÀget "scrub" lagts till, vilket möjliggör kontroll av korrekt lÀsning av all data och metadata frÄn filsystemet. Vid upptÀckta fel inleds en ÄterstÀllningsprocedur. Bcachefs har ocksÄ fÄtt stöd för att arbeta med filsystem dÀr blockstorleken Àr större Àn sidstorleken. Formatet för diskstrukturerna i Bcachefs har stabiliserats (kommande förÀndringar av formatet kommer att genomföras som valfria tillÀgg).
- I EROFS har stöd för 48-bitars adressÀttning av block lagts till.
- I FUSE-subsystemet har sysctl default_request_timeout och max_request_timeout implementerats för att stÀlla in tidsgrÀnser för utförande av förfrÄgningar, vilket möjliggör övervakning av hÀngande FUSE-komponenter som körs i anvÀndarrummet. Den maximala filnamnslÀngden i FUSE har ökat till 1024 tecken.
- I systemanropet statmount() har möjligheten att hÀmta information om mappningen av anvÀndar-ID:n för monterade filsystem lagts till, vilket anvÀnds för att matcha filer för en specifik anvÀndare pÄ en monterad frÀmmande partition med en annan anvÀndare i det aktuella systemet.
- Möjligheten att skapa en monteringspunkt med en annan mappning av anvÀndar-ID:n Àn den ursprungliga monteringspartitionen har implementerats.
- Ăndringar har gjorts i API:t för hantering av montering för att förenkla skapandet av komplexa hierarkier av filsystem utan att avslöja vissa delar av filsystemen som mĂ„ste hĂ„llas dolda.
- I subsystemet för blockenheter har stöd för hÄrdvaruenheter för skydd av krypteringsnycklar lagts till.
- I SMB-filsystemet har alternativet is_network_name_deleted implementerats, och lÀget smb_server_kerberos5 Àr aktiverat som standard.
- För OverlayFS har monteringsalternativet "override_creds" lagts till, vilket gör att Ätkomsten till de lÀgre lagren av lagringen kommer att anvÀnda de inloggningsuppgifter som anvÀnds av den anropande anvÀndaren, istÀllet för den som utförde monteringen. Denna Àndring gör att man vid montering av OverlayFS kan krÀva en anvÀndare med CAP_SYS_ADMIN-behörighet, men anvÀnda filsystemet med inloggningsuppgifter utan denna privilegium.
- I exFAT har filborttagningsoperationer pÄskyndats. IstÀllet för att skicka "avbryt"-begÀrningar individuellt för varje frigjord kluster av den borttagna filen grupperar drivrutinen nu begÀrningarna. I ett test minskade tiden för att ta bort en fil pÄ 80 GB frÄn 286 sekunder till 1,6 sekunder.
- Alla pseudo-FS samt FS EXT2 har övergÄtt till att anvÀnda det nya API:et för montering av partitioner.
- Koden för att stödja filsystem SYSV (SystemV/386, Xenix och Coherent) har tagits bort, vilket frÄn och med 2023 har klassificerats som obsolet (orphaned).
- Minne och systemtjÀnster
- Den minimala versionen av GCC som krÀvs för att kompilera kÀrnan har höjts till 8.1, och Clang till 15.0.0.
- En underavdelning för fwctl (Firmware Control) har lagts till, som tillhandahÄller API för sÀker hantering av fastvaror och exekvering av hanterare pÄ fastvaror frÄn anvÀndarutrymmet. Drivrutiner för CXL-enheter (Compute Express Link), Ethernet-adaptrar frÄn Mellanox ConnectX (mlx5) och servicekort frÄn AMD/Pensando har utvecklats baserat pÄ fwctl.
- Möjligheterna i mekanismen pidfd har utökats, vilket möjliggör anvÀndning av identifierare kopplade till specifika processer och, till skillnad frÄn pid, inte kan Ätertilldelas. Det har blivit möjligt att extrahera data om statusen för en process, identifierad via pidfd, efter att förÀlderprocessen fÄtt bekrÀftelse pÄ att barnprocessen har avslutats (reaped) och dess resurser har frigjorts. En flagga, PIDFD_SELF, har lagts till i systemanrop, vilket gör att processen kan referera till sig sjÀlv.
- Stöd för tillÀgg för arkitekturen RISC-V har implementerats: BFloat16, Zaamo (atomÀra operationer med minne), Zalrsc (Load-Reserved/Store-conditional) och ZBKB (bitoperationer för kryptografi).
- Vid spÄrning har möjligheten att spara argumenten för anropade funktioner och deras visning i spÄrningsloggar sÀkerstÀllts.
- I det asynkrona in-/utgÄngssystemet io_uring har stöd för att lÀsa information om epoll-hÀndelser lagts till. AnvÀndningen av io_uring för att hantera epoll-hÀndelser minskar antalet kontextbyten och möjliggör hantering av flera epoll-hÀndelser samtidigt.
- I eBPF-systemen har verifiering av program med loopar förbÀttrats. Nya instruktioner "timed_may_goto", "load-acquire" och "store-release" har lagts till. Möjlighet att Àndra utökade filattribut frÄn BPF-program erbjuds. Funktionen try_alloc_pages() har lagts till, som syftar till att allokera minne nÀr det finns stor sannolikhet för att operationen misslyckas (nÀr BPF-program körs i begrÀnsade sammanhang).
En ny lÄsprimtiv, rqspinlock (Resilient Queued Spin Lock), har implementerats för att upptÀcka situationer som leder till dödlÀgen under körning. Den nya primtiven möjliggör att ladda BPF-program för vilka verifieraren inte garanterade korrekt funktion med lÄs.
- Tillförlitligheten vid allokering av stora minnessidor (huge-page) har avsevÀrt ökat.
- BerÀkningarna av CRC64-kontrollsummor pÄ x86-system har avsevÀrt accelererats. Bland annat anvÀnds nya vektoriserade instruktioner frÄn AVX-512-uppsÀttningen för att förbÀttra hastigheten. I vissa situationer har prestandan ökat 100 gÄnger.
- Ăverföringen av Ă€ndringar frĂ„n Rust-for-Linux-grenen fortsĂ€tter, som rör anvĂ€ndningen av Rust-sprĂ„ket som ett andra sprĂ„k för utveckling av drivrutiner och kĂ€rnmoduler (Rust-stödet Ă€r inte aktiverat som standard och leder inte till att Rust inkluderas som en obligatorisk byggberoende för kĂ€rnan). Möjlighet att anvĂ€nda makrot "#[kunit_tests()]" i kĂ€rnkoden för att köra enhetstester har lagts till. Stödet för ARMv7-arkitekturen har lagts till. Modulerna dma och hrtimer med Rust-bindningar för DMA (tillagda av Linus som en bypass till maintainern som sedan avgick) och högupplösta timers har implementerats. Modulerna 'list', 'str', 'sync', 'error' och 'alloc' har utökats. Stödet för den nya syntaxen '&raw' (raw_ref_op) har lagts till.
- I perf-systemet har möjligheten till profilering av fördröjningar implementerats, med information frÄn schemalÀggaren.
- En ny kÀrnkommandoradsparameter "traceoff_after_boot" har lagts till, vilket inaktiverar spÄrning efter att kÀrnan har laddats och init-processen har startat. Parametern kan anvÀndas vid diagnostik av startrelaterade problem, vilket garanterar att insamlad spÄrningsdata under uppstarten inte skrivs över.
- Stödet för 32-bitars x86-system som har mer Àn 8 CPU och 4 GB RAM har upphört. SÄdan hÄrdvara har lÀnge slutat tillverkas, och system som krÀver sÄdana resurser har övergÄtt till 64-bitars CPU.
- Ăndringar har införts i implementeringen av POSIX-timrar, vilket gör det möjligt för verktyget CRIU (Checkpoint/Restore in Userspace) att spara och Ă„terstĂ€lla timer-id.
- Virtualisering och sÀkerhet
- Möjligheten att anvÀnda Linux som rotmiljö (Dom0, root partition) för hypervisorn Hyper-V (Microsoft Hypervisor) har lagts till. VÀrdmiljön ansvarar för att hantera hypervisorn, organisera start av gÀstsystem, fördela resurser och möjliggöra interaktion virtuella maskiner med hÄrdvaran. Hantering av hypervisorn Hyper-V i Linux sker via enheten /dev/mshv.
- Modulen Landlock, som ger obehöriga program medel för att begrÀnsa anvÀndningen av objekt i Linux-kÀrnan (filhierarkier, nÀtverksocketar, ioctl m.m.), har fÄtt en revisionsmekanism. Revisionssystemet gör det möjligt att noggrant bedöma orsakerna till de Ätkomstblockeringar som görs vid anvÀndning av Landlock, samt att förstÄ nÀr och vilken operation som blockerades, varför blockeringen utfördes och vilken regel som trÀdde i kraft.
- Möjligheten att implementera hanterare i LSM-moduler (Linux Security Modules) har lagts till, vilka kontrollerar Ätkomst till asynkron I/O-systemet io_uring och möjliggör blockering av anvÀndningen av io_uring för att kringgÄ ÄtkomstbegrÀnsningar till systemanrop. En sÄdan hanterare Àr implementerad i LSM-modulen SELinux.
- I SELinux har det blivit möjligt att tillÀmpa policys pÄ alla typer av data som laddas av kÀrnan, inklusive firmware-avbilder, sÀkerhetspolicys och certifikat.
- En inneslutningslÀge (seal) för vissa minnesmappningsoperationer som utförs av kÀrnan i processens adressutrymme har lagts till. Inneslutning överför mappningen till ett skrivskyddat lÀge och förhindrar Àndringar vid utnyttjande av sÄrbarhet. à tgÀrden omfattar mappning av vDSO, vsyscall, vvar, sigpage och uprobes. StandardlÀget Àr avaktiverat eftersom det kan störa vissa applikationers funktion. En bygginstÀllning CONFIG_MSEAL_SYSTEM_MAPPINGS har lagts till för att aktivera detta.
- NĂ€tverkssystemet
- Arbetet med att bli av med den globala lÄsningen RTNL (rtnl_lock) i nÀtverksstacken och att omvandla den till lÄs kopplade till separata nÀtverksnamnrymder har fortsatt.
- Den initiala funktionen för att ta emot nÀtverkspaket via io_uring har lagts till, vilket kopierar innehÄllet direkt till programmet i anvÀndarens minnesutrymme utan mellanlagring (zero-copy). I genomförda tester tillÀt förÀndringen att hantera trafik genom en 200-gigabit-kanal med en enda CPU-kÀrna.
- Sysctl tcp_rto_max_ms och TCP-socketalternativet TCP_RTO_MAX_MS har implementerats, genom vilka den maximala tiden mellan paketÄterutsÀndningar kan stÀllas in.
- En serie callback-anrop för att fÄ information om tid frÄn olika stÀllen i nÀtverksstacken har lagts till i BPF, vilket kan anvÀndas för att diagnostisera problem med nÀtverksfördröjningar.
- PrestandaförbÀttringar av nÀtverksoperationer har lagts till:
- Optimeringen GRO (Generic Receive Offload), som kombinerar flera smÄ paket till ett stort, anvÀnds nu vid omkoppling av paketbehandling till en annan CPU (för belastningsbalansering) nÀr man anvÀnder XDP-systemet (eXpress Data Path), som möjliggör behandling av paket pÄ nÀtverksdrivrutinsnivÄ innan de skickas till nÀtverksstacken. Prestandavinsten för behandling av TCP-flöden frÄn tillÀmpningen av optimeringen kan nÄ upp till tvÄ gÄnger.
- Under kraftig belastning har prestandan hos funktionen connect() ökat med upp till tvÄ gÄnger genom att ersÀtta spin-lÄsningen med RCU-synkroniseringsmekanismen (Read-Copy-Update) vid sökning av poster med information om anslutningens parter (kÀll- och mÄl) och portar. IP-adresser Dessutom har en optimering av hashning genomförts, vilket har gett ytterligare en prestandaökning pÄ 229%.
- Implementeringen av MPTCP (Multipath TCP), en utvidgning av TCP-protokollet för att möjliggöra leverans av paket samtidigt över flera vÀgar genom olika nÀtverksgrÀnssnitt kopplade till olika IP-adresser, har pÄskyndats. MPTCP i lÀget med en ström har ökat med 29%.
- I netfilter har sökoperationer för rutter i FIB (Forwarding Information Base) avbrutits nÀr en socket finns. Tack vare denna optimering har prestandan ökat med 20%.
- Prestandan för UDP under flodförhÄllanden har ökat med 10% genom att utesluta onödiga operationer med strukturen sk_tsflags vid mottagning av paket.
- En drivrutin med implementering av protokollet MCTP-over-USB har lagts till.
- Utrustning
- En initial implementation av Nova-drivrutinen för NVIDIA GPU:er med GSP-firmware, som anvÀnds frÄn serien NVIDIA GeForce RTX 2000 baserad pÄ mikroarkitekturen Turing, har accepterats i kÀrnan. Drivrutinen Àr skriven i Rust. I första steget har endast ramverket nova-core lagts till, som omfattar ungefÀr 400 kodrader och implementerar en grundlÀggande nivÄ av abstraktioner över mjukvarugrÀnssnitten för GSP-firmware. I nÀsta steg planeras det att inkludera DRM-drivrutinen nova-drm (Direct Rendering Manager) för att interagera med GPU frÄn anvÀndarutrymmet, samt VFIO-drivrutinen med en vGPU-hanterare, som möjliggör anvÀndning av virtuella NVIDIA GPU:er i virtualiseringssystem.
- Arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU:er baserade pÄ Intel Xe-arkitekturen, som anvÀnds i Intel-grafikkort i Arc-familjen och integrerad grafik frÄn Tiger Lake-processorer, har fortsatt. Stöd för SVM (Shared Virtual Memory), en komponent i DRM-ramverket som hanterar delad minne som anvÀnds av bÄde CPU och GPU, har lagts till.
- Nya GPU-ID har lagts till i i915-drivrutinen.
- I Nouveau-drivrutinen har GSP RPC omarbetats och drm_slave_encoder-grÀnssnittet har integrerats.
- Stöd för DCN36-arkitekturen (Display Core Next) har implementerats i AMDGPU-drivrutinen. Möjligheten att stÀlla in egna ljuskurvor som anvÀnds för att korrigera ljusstyrkan pÄ skÀrmen har lagts till.
- Stöd för Qualcomm Adreno 623 GPU har lagts till i adreno-drivrutinen.
- Stöd för Apple Touch Bar pekskÀrmar har lagts till.
- Stöd för den andra versionen av eUSB2-tillĂ€gget (eUSB2V2 â Embedded USB2 Version 2.0) har lagts till, vilket möjliggör sĂ€nkning av driftsvoltage (ner till 1,2 volt) och ökar prestandan för USB 2.0. Ăverföringshastigheten i eUSB2V2 kan nĂ„ 4,8 Gbps, vilket Ă€r tio gĂ„nger snabbare Ă€n de vanliga 480 Mbps som Ă€r typiska för USB 2.0. eUSB2V2 gör det möjligt för bĂ€rbara datorstillverkare att utrusta sina enheter med högupplösta webbkameror, samtidigt som de anvĂ€nder den inbyggda USB2-bussen för att ansluta dem.
- Stöd för Intel Killer E5000 (RTL8126) Ethernet-adaptrar har lagts till.
- Stöd för skÀrmpaneler Visionox RM692E5, Rockchip w552793dba-v10, kingdisplay-kd110n11-51ie och starry-2082109qfh040022-50e har lagts till.
- En drivrutin för bÀrbara datorer Samsung Galaxy Book har lagts till.
- Stöd för ljudsystemen Presonus Studio 1824c, Jabra Evolve 65 har lagts till. Stöd har lagts till för DSP-moduler: AMD ACP 7.x, AWINC WM88166, Everest ES8388, Intel AVS PEAKVOL och GAIN. Ljudstöd pÄ bÀrbara datorer frÄn ASUS, HP och Lenovo har förbÀttrats.
- Stöd för ARM-plattformar, SoC och enheter har lagts till: Arm Morello, AMD (Xilinx) Versal NET, Google Pixel Pro 6, NetCube Kumquat, MYIR Remi Pi, Huawei Matebook E Go, Milk-V Jupiter ST STM32MP2, Mediatek MT8370, Apple T2, Skov (i.MX8MP), EVK (i.MX95), Rockchip RK35xx, Allwinner A523, 11 Toradex-kort baserade pÄ i.MX6.
Samtidigt har den Latinamerikanska Fonden för fri programvara skapat en helt fri version av kĂ€rnan 6.15 â Linux-libre 6.15-gnu, rensad frĂ„n firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller koder vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I utgĂ„van 6.15 har uppladdning av blobbar i drivrutinerna nova, Qualcomm iris v4l2, Airoha NPU, Tehuti Networks TN40xx 10G ethernet, Realtek 8814A wifi, Apple Silicon SoC touchscreen, Renesas UFS och aw88166 ljud neutraliserats. Rengöringen av drivrutinen Spider 1Gb ethernet, som har tagits bort frĂ„n kĂ€rnan, har upphört. LĂ€nkar till tivifierade binĂ€rfiler har tagits bort. Blockering av uppladdning av blobbar frĂ„n kod skriven i Rust har genomförts.
KĂ€lla: opennet.ru
