Uppdatering av Linux-kÀrna 6.17

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds lanseringen av kÀrnan Linux 6.17. Bland de mest anmÀrkningsvÀrda Àndringarna finns: förbÀttrad prestanda för Btrfs, systemanropen file_getattr() och file_setattr(), enhetliggöring av en- och flerkÀrniga konfigurationer i schemalÀggaren, modulen DAMON_STAT med statistik över minnesÄtkomst, stöd för live-patching pÄ ARM64-system, skickande av core-dumpar via socket AF_UNIX, begrÀnsning av SCHED_EXT via cgroup, förenklad konfiguration av skydd mot sÄrbarheter i CPU, byggnation i Clang med initialisering av variabler pÄ stacken, skydd mot manipulering av /proc, utvidgning av RV (Runtime Verification) undergruppen, begrÀnsning av sockets AF_UNIX via AppArmor och algoritmen för TCP-överbelastningskontroll DualPI2.

I den nya versionen har 14334 correctioner accepterats frÄn 2118 utvecklare, patchens storlek Àr 46 MB (Àndringarna berörde 12841 filer, 646654 kodrader lades till, 398782 kodrader togs bort). I den föregÄende versionen fanns det 15924 correctioner frÄn 2145 utvecklare, patchens storlek var 50 MB. UngefÀr 43% av alla Àndringar i 6.17 rör enhetsdrivrutiner, cirka 12% av Àndringarna handlar om uppdatering av arkitektur-specifik kod, 14% avser nÀtverksstacken, 4% rör filsystem och 3% interna kÀrnunder system.

De huvudsakliga nyheterna i kÀrnan 6.17 (1, 2, 3):

  • Disksubsystem, in- och utmatning och filsystem
    • I Btrfs har stöd för stora sidblads minnen (large folios) lagts till pĂ„ experimentell basis, vilket minskar overhead och förbĂ€ttrar prestanda för flera operationer. Cache-lagring av begĂ€rningar till bitmap-kartor för ledigt utrymme har implementerats, vilket har ökat prestanda vid skapande av tomma filer med 20%. FörbĂ€ttrad funktionalitet för förhandslĂ€sning i system som anvĂ€nder datakomprimering. Nycklar i strukturen XArray placeras tĂ€tare, vilket har ökat kompaktiteten i lagring av extens-noder och minskat antalet terminalnoder med 50-70%. Ytterligare instĂ€llningar för anvĂ€ndning av komprimering i defragmenterade extens har tillhandahĂ„llits.
    • I ext4-filsystemet har stöd för buffrad I/O med flaggan RWF_DONTCACHE lagts till, dĂ€r data tas bort frĂ„n sidcache direkt efter att operationen har avslutats.
    • I EROFS-filsystemet har stöd för komprimering av metadata implementerats.
    • NFS-servern kan nu delegera skrivoperationer till klienter som öppnar filer i skrivskyddat lĂ€ge.
    • I systemanropet fallocate() har flaggan FALLOC_FL_WRITE_ZEROES lagts till, vilket gör det möjligt att fylla ett angivet omrĂ„de i filen med nollor, genom att anvĂ€nda kommandot WRITE_ZERO som stöds av vissa SSD-enheter, vilket möjliggör nollstĂ€llning utan in- och utdataoperationer. Alternativet Ă€r för nĂ€rvarande endast tillgĂ€ngligt i filsystemet ext4.
    • Systemanropen file_getattr() och file_setattr() har lagts till för att manipulera attributen för inode i en angiven fil.
    • Drivern "pktcdvd" för arbete med optiska medier i paketlĂ€ge har tagits bort, vilket markerats som förĂ„ldrat sedan 2016.
    • Filsystemet Bcachefs i Linux-kĂ€rnan har övergĂ„tt till extern underhĂ„llsmodus, vilket innebĂ€r att inga fler Ă€ndringar kommer att tas in i den primĂ€ra kĂ€rnan för Bcachefs, samtidigt som detta filsystem behĂ„lls i kĂ€llkoden för kĂ€rnan. Utvecklingen av Bcachefs kommer att fortsĂ€tta utanför kĂ€rnkodbasen tills Kent Overstreet kan bevisa korrekt samarbete med andra kĂ€rnutvecklare och förmĂ„gan att följa etablerade utvecklingsregler.
  • Minne och systemtjĂ€nster
    • Stödet för ensprĂ„kiga konfigurationer har tagits bort frĂ„n schemalĂ€ggaren. PĂ„ system med en processor bör nu kĂ€rnor som Ă€r byggda för multiprocessorsystem (SMP) anvĂ€ndas. Koden för ensprĂ„kiga och multiprocessorsystem har enhetliggjorts och befriats frĂ„n onödiga bindningar till kĂ€rnparametern CONFIG_SMP.
    • KĂ€rnmodulen DAMON_STAT (Data Access Monitoring Results Stat) har lagts till, vilket gör det möjligt att övervaka Ă„tkomst till det operativa minnet med hjĂ€lp av DAMON (Data Access MONitor) underhĂ„llssystemet. Modulen ger statistik om inaktivitet (memory_idle_ms_percentiles) och förvĂ€ntad minnesbandbredd (estimated_memory_bandwidth).
    • Stöd för Live-patchar, vilket gör det möjligt att tillĂ€mpa korrigeringar pĂ„ Linux-kĂ€rnan i realtid, utan omstart och nedstĂ€ngning av systemet, har implementerats pĂ„ system med ARM64-arkitektur.
    • I det minimalistiska C-biblioteket nolibc, som levereras med kĂ€llkoden för Linux-kĂ€rnan och tillhandahĂ„ller ett grĂ€nssnitt över grundlĂ€ggande systemanrop, har stöd för SuperH-, x32-, MIPS n32- och MIPS n34-arkitekturer lagts till.
    • Möjligheten att skicka innehĂ„llet i core-dumpar via socket AF_UNIX har utökats, vilket gör det möjligt att skapa mer sĂ€kra core-dumpbehandlare i anvĂ€ndarutrymmet, oberoende av att kĂ€rnan anropar privilegierade processer. Den nya versionen inkluderar ett protokoll för att skapa servrar, som kan hantera behandlingen av core-dumps pĂ„ nivĂ„n av individuella uppgifter. Till exempel kan core-dumps ignoreras för vissa processer, medan de för andra kan överföras via socket. En prototyp av servern för hantering av core-dumps har förberetts sĂ€rskilt.
    • Ett nytt alternativ för kommandoraden i kĂ€rnan "crashkernel=size,cma" har lagts till för att reservera minne genom CMA (Contiguous Memory Allocator) för att spara kĂ€rnans crash-dump.
    • Möjligheterna hos pidfd-mekanismen har utvidgats, vilket gör det möjligt att anvĂ€nda identifierare kopplade till specifika processer och som, till skillnad frĂ„n pid, inte kan tilldelas om. Det har lagts till möjlighet att binda utökade attribut till pidfd frĂ„n anvĂ€ndarrummet. Öppning av filbeskrivare för pidfd tillĂ„ts genom funktionen open_by_handle_at() utan att binda till filsystemet. Intern information som skapats av kĂ€rnan tillsammans med pidfd kopplas nu till processen snarare Ă€n pidfd och sparas mellan Ă„teröppningar av samma process.
    • BPF-subsystemet har fĂ„tt funktionen bpf_cgroup_read_xattr() för att lĂ€sa utökade filattribut. Möjligheten att anvĂ€nda typiska strĂ€ngoperationer i BPF-program, sĂ„som bpf_strcmp, bpf_strnchr, bpf_strchrnul, bpf_strlen och bpf_strspn, som arbetar i lĂ€slĂ€ge har tillhandahĂ„llits. Det har Ă€ven lagts till möjlighet att anvĂ€nda standard strömmarna stdout och stderr för interaktion med komponenter i anvĂ€ndarrummet. För system baserade pĂ„ LoongArch-arkitekturen har BPF implementerat möjlighet för dynamisk kodmodifiering, mekanismen "BPF trampoline" (som minskar overhead vid samtal mellan kĂ€rnan och BPF-program) och körning av program som anvĂ€nder struct_ops för att skapa funktionhandlers för kĂ€rnan via BPF.
    • I tidshanteringssystemet har stöd för hjĂ€lptimmar (auxiliary) införts, som inte Ă€r kopplade till de vanliga systemtimmarna och gĂ„r i sin egen takt (tidigare gick alla klockor med samma takt och skilde sig endast Ă„t i offset).
    • Initialt stöd för proxy-körning (Proxy Execution) har lagts till för att mildra problem med prioriteringsinversion. Proxy-körning tillĂ„ter en uppgift som vĂ€ntar pĂ„ att en lĂ„s ska slĂ€ppas att överföra sin körkontext till uppgiften som hĂ„ller lĂ„sen för att snabba pĂ„ frigörandet av denna lĂ„s.
    • Fortsatt överföring av Ă€ndringar frĂ„n Rust-for-Linux-grenen relaterade till anvĂ€ndningen av Rust som andrasprĂ„k för utveckling av drivrutiner och kĂ€rnmoduler (Stödet för Rust Ă€r inte aktiverat som standard och gör inte Rust till ett obligatoriskt byggberoende för kĂ€rnan). Abstraktioner för hantering av spĂ€nnings- och strömregulatorer, firmwareegenskaper, I/O-resurser och I/O-minne har lagts till. Makrot "warn_on!()" har implementerats. UserPtr-typ för pekare i anvĂ€ndarutrymme har lagts till. Funktionaliteten hos modulerna workqueue, uaccess, dma, time och list har utvidgats. En ny modul ‘bits’ med funktionerna ‘bit’ och ‘genmask’ har lagts till.
    • Koden för berĂ€kning av CRC-kontrollsummor har omarbetats och nya anrop för att generera SHA-1- och SHA-2-hashar har lagts till. Arkitekturspecifika optimeringar har lagts till. Prestandan för funktionen crc32c() har förbĂ€ttrats pĂ„ nya x86_64 CPU:er som stöder VPCLMULQDQ-tillĂ€gget (Vector Carry-Less Multiplication of Quadwords).
    • För S390-system har stöd för utslagning till vĂ€xlingsutrymme och migration av stora minnessidor (transparent huge page) implementerats.
    • Möjlighet att justera aggressiviteten vid frigöring av minnessidor (proactive-reclaim) vid brist pĂ„ minne kopplad till specifika NUMA-noder har lagts till, vilket gör det möjligt att tilldela NUMA-noder dĂ€r mer aktiv frigöring av minne ska tillĂ€mpas. Till exempel, "echo "512M swappiness=10" > /sys/devices/system/node/node1/reclaim".
    • I SCHED_EXT-mechanismen, som möjliggör anvĂ€ndning av BPF för att skapa CPU-schemalĂ€ggare, har möjligheten att styra bandbredd genom cgroup lagts till. Till exempel kan parametern cpu.max anvĂ€ndas för att begrĂ€nsa belastningen pĂ„ CPU.
    • Automatisk montering av den virtuella filsystemet tracefs i katalogen /sys/kernel/debug/tracing har förklarats som förĂ„ldrad, och istĂ€llet bör /sys/kernel/tracing anvĂ€ndas.
  • Virtualisering och sĂ€kerhet
    • Möjlighet till aktivering har lagts till. skydd mot sĂ„rbarheter i CPU genom val av blockerade attackvektorer. i stĂ€llet för att ange specifika sĂ„rbarheter i instĂ€llningarna. Blockeringsmetoder vĂ€ljs beroende pĂ„ typen av isoleringsbrott: mellan anvĂ€ndaren och kĂ€rnan (user-kernel), mellan anvĂ€ndaren och en annan anvĂ€ndare (user-user), mellan gĂ€stsystemet och vĂ€rdmiljön (guest-host), mellan olika gĂ€stsystem (guest-guest) och mellan olika trĂ„dar (cross-thread). Den föreslagna metoden gör det möjligt att aktivera skydd endast mot de klasser av sĂ„rbarheter som verkligen oroar anvĂ€ndaren. Till exempel kan Ă€gare av molnmiljöer aktivera lĂ€gena guest-host och guest-guest, varefter metoder för skydd mot sĂ„rbarheterna BHI, GD, L1TF, MDS, MMIO, Retbleed, RFDS, Spectre_v2, SRBDS, SRSO och TAA aktiveras.
    • Stöd för kompilatorn Clang har lagts till med aktivering av lĂ€get för att spĂ„ra stackdjup, dĂ€r alla variabler som lagras pĂ„ stacken initieras. Initieringen görs för att förhindra informationslĂ€ckor frĂ„n kĂ€rnan genom icke-initierade variabler som kan innehĂ„lla rester av tidigare lagrade data pĂ„ stacken. Tidigare stödde liknande funktionalitet anvĂ€ndningen av GCC-plugin STACKLEAK.
    • Skydd mot attacker som manipulerar filsystemet /proc genom montering i "bind"-lĂ€ge har lagts till. Inode-nummer för roten av /proc Ă€r nu fast (PROCFS_ROOT_INO) och kan kontrolleras av processen i anvĂ€ndarutrymmet.
    • I RV (Runtime Verification) subsystemet, som Ă€r avsett för att verifiera korrekt drift av högpĂ„litliga system, har en komponent för övervakning av rtapp (Real-time application monitor) lagts till för att spĂ„ra typiska problem i applikationer som körs i realtid, samt komponenterna rp, sssw och opid för att testa schemalĂ€ggaren. Möjligheten att skapa övervakningskomponenter som anvĂ€nder linjĂ€r tidslogik för att bestĂ€mma beteendemodellen istĂ€llet för en deterministisk automat har implementerats. Verifieringen sker under körning genom att koppla handler till spĂ„rningspunkter som jĂ€mför den faktiska körningen med en fördefinierad referensmodell som definierar det förvĂ€ntade beteendet hos systemet.
    • Stöd för Ă„tkomstkontroll av AF_UNIX-sockets har lagts till i AppArmor-systemet.
    • I KVM-hypervisorn pĂ„ ARM-system har stöd för GICv5 avbrottskontroller implementerats.
    • InstĂ€llningen CONFIG_KVM_IOAPIC har lagts till, vilket möjliggör avstĂ€ngning av stödet för emulering av APIC, PIC och PIT i KVM.
    • Skydd mot sĂ„rbarheten VMSCAPE har lagts till.
    • Ioctl-kommandot FS_IOC_GETLBMD_CAP har lagts till för att hĂ€mta information om anvĂ€ndningen av integritetsskydd för filer frĂ„n anvĂ€ndarrummet.
    • GrĂ€nssnittet /sys/fs/selinux/user har förklarats som förĂ„ldrat, och en fem sekunders fördröjning införs med en varning i loggen vid Ă„tkomst.
  • NĂ€tverkssystemet
    • I implementationen av PSE-teknologin (Power Sourcing Equipment), som anvĂ€nds för att ge ström över Ethernet till enheter som IP-kameror och trĂ„dlösa Ă„tkomstpunkter, har stöd för anpassningsbara strategier för kraftbudgetbedömning lagts till (total tillgĂ€nglig ström). SĂ„dana strategier gör det möjligt att bestĂ€mma vilka portar som bör stĂ€ngas av först för att undvika överbelastning.
    • I implementationen av MCTP-protokollet (Management Component Transport Protocol) har stöd för routing av paket till externa noder via mellanliggande noder (gateway-routing) lagts till. Till exempel kan nedanstĂ„ende regler anvĂ€ndas för att styra paket till noden med ID 10 (Endpoint ID 10) via enhet mctpi2c0, som anvĂ€nder adressen 0x1d, direkt ansluten till noden med ID 9. mctp route add 9 via mctpi2c0 mctp neigh add 9 dev mctpi2c0 lladdr 0x1d mctp route add 10 gw 9
    • För UNIX-sockets (AF_UNIX) har alternativet SO_INC implementerats, och för VSOCK-adressfamiljen alternativet SIOCINQ. Implementerade alternativ Ă€r liknande alternativet TCP_INQ för TCP och gör det möjligt att fĂ„ information om antalet byte som Ă€r tillgĂ€ngliga för lĂ€sning i socket genom en styrmeddelande.
    • För TCP har strikt efterlevnad av den deklarerade fönsterstorleken för mottagning införts, vilket definierar storleken pĂ„ de data som fĂ„r skickas innan ACK-bekrĂ€ftelse frĂ„n den andra sidan mottas. Tidigare fortsatte kĂ€rnan att bearbeta data som kom in över den deklarerade mottagningsfönsterstorleken, men kommer nu att sluta med detta.
    • I MPTCP (Multipath TCP) har möjligheten att anvĂ€nda socketalternativet TCP_MAXSEG för att begrĂ€nsa den maximala storleken pĂ„ skickade segment lagts till. MPTCP Ă€r en utvidgning av TCP-protokollet för att möjliggöra paketleverans över flera vĂ€gar samtidigt via olika nĂ€tverksgrĂ€nssnitt knutna till olika IP-adresser.
    • Stöd för TCP DualPI2 överbelastningskontrollalgoritmen (RFC 9332) har lagts till, vilket möjliggör anvĂ€ndning av skalbara överbelastningskontrollörer för trafik med höga krav pĂ„ kvaliteten (t.ex. TCP-Prague och DCTCP) utan att pĂ„verka prestandan för klassisk trafik, dĂ€r sĂ„dana överbelastningskontrollörer som Reno och Cubic anvĂ€nds.
    • Sysctl "force_forwarding" har lagts till, genom vilket trafikdirigering kan aktiveras pĂ„ valda nĂ€tverksgrĂ€nssnitt med IPv6.
    • Stödet för SACK (Selective Acknowledgment) algoritmen för paketförlust, som beskrivs i RFC 6675, har tagits bort. Denna algoritm förklarades som förĂ„ldrad 2018. För att faststĂ€lla TCP-paketförlust rekommenderas att anvĂ€nda RACK-TLP-algoritmen.
  • Utrustning
    • Arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU baserade pĂ„ Intel Xe-arkitekturen, som anvĂ€nds i Intel Arc-grafikkort och integrerad grafik med start frĂ„n Tiger Lake-processorer, har fortsatt. Den nya versionen har nu som standard stöd för chip baserade pĂ„ Panther Lake mikroarkitektur och stöd för WildCat Lake mikroarkitektur har lagts till.
    • I AMDGPU-drivrutinen för GPU GFX9.x Ă€r stöd för Cleaner Shader-mekanismen implementerad, vilket sĂ€kerstĂ€ller att GPU-minnet rensas innan det Ă„teranvĂ€nds för att förhindra datalĂ€ckage frĂ„n andra processer. Stödet för vilolĂ€ge har förbĂ€ttrats. Möjligheten att övergĂ„ till vilotillstĂ„nd i miljöer med AMD SR-IOV har lagts till. Belysningshanteringen har ocksĂ„ förbĂ€ttrats.
    • I i915-drivrutinen har stöd för drm_panic-mekanismen implementerats, som vid fel visar en liknande "blĂ„ skĂ€rm av död". Stöd har lagts till för bildskĂ€rmskontrollern som anvĂ€nds i Wildcat Lake-familjens chip.
    • Integration av Nova-drivrutinens komponenter för NVIDIA GPU:er med GSP-firmware, som anvĂ€nds frĂ„n NVIDIA GeForce RTX 2000-serien baserad pĂ„ Turing-arkitekturen, har fortsatt. Drivrutinen Ă€r skriven i Rust. Den nya versionen innehĂ„ller en abstraheringsnivĂ„ för DMA-arbete, en VBIOS-parser har implementerats, kod för att konfigurera framebuffer har lagts till, och stöd för snabbstart i Falcon-lĂ€get har sĂ€kerstĂ€llts.
    • I adreno-drivrutinen har stöd för Qualcomm Adreno x1-45 och x1-85 GPU lagts till.
    • I msm-drivrutinen har stöd för Adreno SM8750 GPU och minnesmappning (VM_BIND) lagts till.
    • I panfrost-drivrutinen har stöd för Mali GPU:er, som anvĂ€nds i Mediatek mt8370 SoC, lagts till.
    • I drivrutinen lima har stöd för GPU:er som anvĂ€nds i SoC Rockchip RK3528 lagts till.
    • Drivrutinen mtd (Memory Technology Devices) för Ă„tkomst till NVM-minnet som Ă€r integrerat i Intel GPU:er har lagts till.
    • Stöd för ljudsystem ASoC IMX WM8524, AMD ACP7.2, SoundWire ACP 7.1, Fairphone 4 & 5, Qualcomm QCS8275, Framework Laptop 13 (AMD Ryzen AI 300), CS35L41 HDA (anvĂ€nds i ASUS-laptops), Richtek RTQ9124, TI TAS5753, HP EliteBook x360 830 G6, EliteBook 830 G6, LG 16Z90R-A, HP 15-fc000 har lagts till. Koden för HD-ljud har omorganiserats.
    • Stöd för ARM-plattformar, SoC och enheter har lagts till: NVIDIA Tegra264, Marvell PXA1908 (den första 64-bitarschipet frĂ„n Marvell för smartphones), CIX P1, Axiado AX3000, Sophgo SG2000 (kombinerar ARM- och RISC-V-kĂ€rnor), Mediatek mt6572, exynos2200 (anvĂ€nds i Samsung Galaxy S22), Renesas R-Car V4M-7, TI am62d2 och Sophgo sg2042, laptops baserade pĂ„ Mediatek mt8186 och Qualcomm Snapdragon X1, smartphones och surfplattor baserade pĂ„ SoC mt6572, tegra30 och msm8976.

Samtidigt har den latinamerikanska stiftelsen för fri programvara skapat en version av det helt fria kĂ€rnet 6.17 — Linux-libre 6.17-gnu, rensat frĂ„n firmware och drivrutiner som innehĂ„ller oberoende komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I version 6.17 har koden för rensning av blobbar i drivrutinerna amdgpu, prueth, iwlwifi, btusb, pci mhi host, adreno a6xx, nova-core och Intel AVS uppdaterats. Blobbenamn har rensats i dts-filer (devicetree) för ARM-chips och Intel IPU7. Laddning av blobbar i nya pci hda-drivrutiner har neutraliserats. Rensningen av blobbar i QLogic infiniband-drivrutinen, som tagits bort frĂ„n kĂ€rnan, har upphört.

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