UtgÄvan av Linux-kÀrnan 6.18

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds version 6.18 av Linux-kÀrnan. Bland de mest anmÀrkningsvÀrda förÀndringarna finns: dm-pcache för diskcache i icke-flyktigt minne (PMEM), borttagning av Bcachefs, online-kontrolllÀge för XFS, drivrutiner för Binder (Android IPC) och Tyr (GPU Mali) pÄ Rust, möjlighet att skapa USB-drivrutiner pÄ Rust, optimering av cachehantering i SLUB-minnesallokeraren, adressering av namespaces via filbeskrivare, pÄskyndad vÀxling (swap), verifiering av BPF-program genom digital signering, Intel CET virtualisering i KVM och nÀtverksprotokollet PSP (hybrid av TLS och IPsec), stöd för IP-tillÀgget AccECN samt optimering av UDP-stacken.

I den nya versionen har 15035 fixar tagits emot frÄn 2217 utvecklare, patchens storlek Àr 45 MB (Àndringar har pÄverkat 13142 filer, 601897 kodrader har lagts till och 355006 kodrader har tagits bort). I det förra slÀppet var det 14334 fixar frÄn 2118 utvecklare, patchens storlek var 46 MB. UngefÀr 40% av alla förÀndringar i 6.18 Àr relaterade till enhetsdrivrutiner, cirka 16% handlar om uppdatering av kod som Àr specifik för hÄrdvaruarkitekturer, 12% Àr relaterade till nÀtverksstacken, 5% handlar om filsystem och 3% om interna subsystem i kÀrnan.

Huvudnyheterna i kÀrnan 6.18 (1, 2, 3):

  • Disksubsystem, in- och utmatning och filsystem
    • I Device Mapper har en hanterare dm-pcache lagts till för att anvĂ€nda permanent minne (CXL-minne adresserat via DAX-enhet) som en extra högpresterande cache före de lĂ„ngsammare traditionella disk- eller flash-enheterna. Dm-pcache sĂ€kerstĂ€ller att cacheinnehĂ„llet bevaras vid krasch (crash-safe) genom att anvĂ€nda icke-flyktigt minne, duplikering av metadata samt verifiering av dataintegritet och metadata med CRC32-kontrollsummor. För nĂ€rvarande stöds endast caching i skriv-back-lĂ€ge (write-back).
    • Koden för filsystemet Bcachefs har tagits bort frĂ„n kĂ€rnan och kommer nu att distribueras som en extern modul som kompileras med hjĂ€lp av DKMS (Dynamic Kernel Module Support). Koden för Bcachefs kan Ă„terföras till kĂ€rnan efter att Kent Overstreet faktiskt bevisar möjlighet att korrekt samarbeta med andra kĂ€rnutvecklare och förmĂ„ga att följa etablerade utvecklingsregler.
    • I systemanropet pwritev2() har flaggan RWF_NOSIGNAL lagts till, vilket inaktiverar sĂ€ndning av signalen SIGPIPE vid skrivning till brutna namnlösa rör eller sockets.
    • I Procfs har monteringens alternativ „pidns” lagts till för att ange processidentifieringsnamnrum (PID namespace). Till exempel: „mount -t proc -o pidns=\/proc\/self\/ns\/pid proc \/tmp\/proc”.
    • I XFS har möjligheten att anvĂ€nda verktyget fsck för att kontrollera och Ă„tgĂ€rda upptĂ€ckta problem i online-lĂ€ge, utan att avmontera filsystemet, tillagts och gjorts standard. Systemanropen file_getattr och file_setattr har lagts till för att Ă€ndra attribut för speciella filer (alla inode). I KConfig har alternativen XFS_SUPPORT_V4 (version 4 av XFS) och XFS_SUPPORT_ASCII_CI (icke skiftlĂ€geskĂ€nsligt lĂ€ge för ASCII) inaktiverats som standard, efter att ha blivit förĂ„ldrade. FörĂ„ldrade monteringsalternativ som attr2, noattr2, ikeep och noikeep har tagits bort.
    • I MD RAID har en ny typ av bitkartor — llbitmap (lockless bitmap) implementerats, som fungerar utan lĂ„s och ger högre prestanda.
    • FrĂ„n den allmĂ€nna strukturen „inode” har information relaterad till kryptering och verifiering (pekare till i_crypt_info och i_verity_info) tagits bort. Ändringen minskar minnesanvĂ€ndningen i filsystem som inte stöder kryptering och verifiering.
    • I FUSE-subsystemet har stöd för systemanropet copy_file_range() och direkt kopiering av omrĂ„den med 64-bitars storlek lagts till (tidigare stöddes endast 32-bitarsstorlek). Stöd för initiering i synkront lĂ€ge under montering (FUSE_DEV_IOC_SYNC_INIT) har lagts till.
    • I ext4-filsystemet har möjligheten att anvĂ€nda 32-bitars anvĂ€ndar-ID (uid) och grupp-ID (gid) vid Ă„tkomst till reserverade block implementerats. Ioctl-operationer för att stĂ€lla in och lĂ€sa superblock-parametrar för monterade filsystem har lagts till (tune2fs kan Ă€ndra parametrar i superblocket utan skrivbehörighet pĂ„ blockenheten). FörĂ„ldrade instĂ€llningar specifika för ext3 har helt tagits bort.
    • I f2fs har det lagts till en monteringsoption "lookup_mode" för att vĂ€lja söklĂ€ge: perf — sökning med hash, compat — linjĂ€r sökning, auto — automatisk val. Ändring av lĂ€get Ă€r relevant för konfigurationer med kataloger dĂ€r stor bokstav inte beaktas. Det aktuella söklĂ€get kan kontrolleras via filen "/sys/fs/f2fs//effective_lookup_mode". Möjlighet att reservera inode har lagts till, som endast Ă€r tillgĂ€nglig för privilegierade anvĂ€ndare.
    • I Overlayfs har ett lĂ€ge utan hĂ€nsyn till stor bokstav lagts till, som aktiveras pĂ„ filsystemsnivĂ„ (instĂ€llning för specifika kataloger stöds för nĂ€rvarande inte).
    • I BTRFS har parallelliseringen av operationer förbĂ€ttrats under hög lĂ€sbelastning och lĂ„g skrivbelastning, transaktionsfixeringstiden har minskat och synkroniseringstiden har avsevĂ€rt kortats ned (frĂ„n minuter till tiotals sekunder). Möjlighet att anvĂ€nda block (bs) större Ă€n minnessidstorlek (ps) har lagts till.
    • I ksmbd (som arbetar pĂ„ kĂ€rnnivĂ„, SMB-server) har en parameter lagts till för att begrĂ€nsa det maximala antalet anslutningar frĂ„n en IP-adresser. smbdirect, smbclient och smbserver har omvandlats till att anvĂ€nda standardkĂ€rnstrukturer.
    • I SQUASHFS har möjligheten att anvĂ€nda i systemanropet lseek() med alternativen SEEK_DATA och SEEK_HOLE för att söka efter data och luckor i glest befolkade filer lagts till. I vissa tester har en ökning av prestandan för kopiering av glest befolkade filer registrerats upp till 150 gĂ„nger.
    • I EXFAT har stöd för ioctl FS_IOC_GETFSLABEL och FS_IOC_SETFSLABEL lagts till för att lĂ€sa och skriva partitionsetiketter. Möjlighet att Ă€ndra monteringsalternativ under Ă„termontering har lagts till. InlĂ€sning av bitkartor har pĂ„skyndats.
    • I NTFS3 har stöd för ioctl FS_IOC_GETFSLABEL och FS_IOC_SETFSLABEL lagts till för att lĂ€sa och stĂ€lla in partitionsetiketter.
  • Minne och systemtjĂ€nster
    • Implementeringen av mekanismen för mellanprocesskommunikation Binder, skriven i Rust, har antagits. Binder anvĂ€nds i Android för att organisera interprocesskommunikation och fjĂ€rranrop av metoder (ett Android-process kan anropa en metod eller funktion i en annan Android-process, och anvĂ€nda Binder för att identifiera, anropa och överföra argument mellan processerna). Binder-koden har skrivits om pĂ„ Rusts sprĂ„k som en del av Googles initiativ för att stĂ€rka sĂ€kerheten i Android.
    • I SLUB, kĂ€rnminnesallokatorn, har en valfri cachelagringsnivĂ„ "sheaves" implementerats, som anvĂ€nder flera cacher, dĂ€r varje Ă€r kopplad till en separat CPU-kĂ€rna, vilket gör det möjligt för en kĂ€rna att lokalisera operationerna vid allokering eller frigöring av minne. Denna cache har ökat prestandan vid allokering och frigöring av minne i kĂ€rnan, tack vare avskaffandet av onödiga synkroniseringsprimitive som krĂ€vs nĂ€r olika CPU-kĂ€rnor Ă€r involverade. I genomförda tester var prestandaförbĂ€ttringen mellan 6.3% och 31% beroende pĂ„ belastningstypen.
    • Möjligheten att skapa filbeskrivare kopplade till ett specifikt namnrymde (namespace) har lagts till. Till skillnad frĂ„n att rikta sig mot namnrymden via identifierare (/proc//ns/), Ă€r filbeskrivaren kopplad till en specifik instans av namnrymden och utesluter situationen dĂ€r identifieraren Ă„terigen tilldelas och pekar pĂ„ ett annat objekt. PĂ„ samma sĂ€tt som med anvĂ€ndningen av pidfds, öppnas filbeskrivare som refererar till namnrymden via funktionerna open_by_handle_at() och name_to_handle_at().
    • En mekanism för "Swap Table" har implementerats för att öka prestandan för sidbyte. Accelerationen uppnĂ„s genom att minska konkurrensen om Ă„tkomst till swap-cachen, effektivare sökningar i cachen och minskad fragmentering. Backend-baserat pĂ„ Swap Table anvĂ€nds för cachning av sidbyte istĂ€llet för backend XArray, vilket genomsnittligen har ökat prestandan med 5-20%. I usemem-testet ökade genomströmningen med 17-28%, i testet för flerkĂ€rnig omkompilering av kĂ€rnan minskade kompilerings tiden med 1.12-3.19%, och redis-benchmark-testet med BGSAVE visade en ökning av antalet hanterade förfrĂ„gningar med 6-7%.
    • Zswap-subsystemet har övergĂ„tt till direkt anvĂ€ndning av zsmalloc minnesallokeringssystemet istĂ€llet för zpool-lagret, som inte lĂ€ngre anvĂ€nds och nu har tagits bort frĂ„n kĂ€rnan.
    • För att styra beteendet hos mikrokodsldaren pĂ„ x86-system har en kommandoradsoption "microcode=flaggslista" implementerats. I sin nuvarande form har den nya optionen ersatt "microcode.force_minrev" och gör det ocksĂ„ möjligt att stĂ€lla in den minimalt acceptabla versionen av mikrokoden för uppstart.
    • Arbetet med att omstrukturera den överdrivet komplexa strukturen "page", som anvĂ€nds för att hantera sidor i det operativa minnet, har inletts. En typ 'memdesc_flags_t' har lagts till för fĂ€lt med universella flaggor som kan anvĂ€ndas efter den förvĂ€ntade framtida separeringen av strukturen "page" till separata strukturer för slab och folio.
    • För nios2-arkitekturen, som anvĂ€nds i Altera Nios II-processorer (en mjukvaruprocessor baserad pĂ„ FPGA), har stöd för systemanropet clone3() implementerats.
    • I kĂ€rnkonfigurationen (KConfig) har attributet "transitional" lagts till, vilket kan anvĂ€ndas för att markera instĂ€llningar som inte visas i anvĂ€ndargrĂ€nssnitt sĂ„som "make menuconfig" och inte inkluderas i de genererade konfigurationsfilerna. Huvudsyftet med attributet Ă€r att underlĂ€tta omdöpning av alternativ med bibehĂ„llen bakĂ„tkompatibilitet.
    • Den minimi version av Clang-kompilatorn som kan anvĂ€ndas för att bygga kĂ€rnan har höjts till LLVM 15-verktygen. I Debian 12 och Ubuntu 22.04 levereras LLVM 14.
    • Överföringen av Ă€ndringar frĂ„n Rust-for-Linux-grenen, relaterade till anvĂ€ndning av sprĂ„ket Rust som det andra sprĂ„ket för att utveckla drivrutiner och kĂ€rnmoduler, har fortsatt (stöd för Rust Ă€r inte aktiverat som standard och innebĂ€r inte att Rust inkluderas bland obligatoriska byggberoenden för kĂ€rnan). I den nya versionen har atomĂ€ra operationer med minne, maple tree-strukturen, möjligheten att skapa DebugFS-filer och funktioner för att manipulera bitkartor implementerats för koden i Rust-sprĂ„ket. Åtkomsten till API:er för utveckling av drivrutiner har utökats. En fullstĂ€ndig uppsĂ€ttning abstraheringar för utveckling av USB-enhetsdrivrutiner har lagts till (exempel pĂ„ USB-drivrutin). I verktyget perf har stöd för debug-symboler som genereras av kompilatorn rustc lagts till.
  • Virtualisering och sĂ€kerhet
    • Stöd för kryptografisk verifiering av laddade BPF-program via digital signatur har lagts till. I framtiden kommer denna funktionalitet att utökas med verktyg för att definiera regler för inladdning av signerade BPF-program och ge icke-privilegierade anvĂ€ndare möjlighet att anvĂ€nda verifierade BPF-program.
    • I hypervisorn KVM har stöd för virtualisering av Intels CET (Control-flow Enforcement Technology), som anvĂ€nds för att skydda mot exploateringar som utnyttjar tekniker för returorienterad programmering (ROP — Return-Oriented Programming). Skyddets kĂ€rna Ă€r att efter överföringen av kontroll till en funktion sparas returadressen av processorn, inte bara i vanliga stacken, utan ocksĂ„ i en separat skugga stack som inte kan Ă€ndras direkt.
    • Möjligheten att anvĂ€nda mer Ă€n 255 CPU:er i gĂ€stsystem som körs under hypervisorn Bhyve pĂ„ vĂ€rdar med FreeBSD 15 har lagts till.
    • Ett lager av dibs (Direct Internal Buffer Sharing) har lagts till för hanterad delning av buffertar inom en isolerad miljö, sĂ„som en hypervisor eller en kĂ€rninstans.
    • Stödet för att arbeta med flera samtidigt aktiverade LSM-moduler (Linux Security Module) har lagts till i revisionssystemet.
    • En virtio-drivrutin för spi-virtio har lagts till för Ă„tkomst till SPI-enheter (Serial Peripheral Interface) frĂ„n virtuella maskiner.
    • Stödet för SEV-SNP CipherText Hiding-lĂ€get har lagts till i hypervisorn KVM, vilket blockerar lĂ€sning av krypterad minnesdata frĂ„n skyddade gĂ€stsystem i obehörig CPU.
    • En qtee-drivrutin för TEE-miljöer (Trusted Execution Environment) frĂ„n Qualcomm har lagts till.
  • NĂ€tverkssystemet
    • Stödet för kryptering av TCP-anslutningar med hjĂ€lp av PSP-protokollet (PSP Security Protocol), utvecklat av Google för kryptering av trafik mellan datacenter, har lagts till. PSP tillhandahĂ„ller kryptering, kryptografisk integritetskontroll och autentisering av kĂ€llan, vilket realiserar en unik kombination av funktioner frĂ„n TLS- och IPsec-protokollen. PSP tillĂ€mpar kryptering pĂ„ nivĂ„n av enskilda nĂ€tverksanslutningar snarare Ă€n hela kommunikationskanalen. PSP anvĂ€nder separata krypteringsnycklar för olika tunnelerade TCP-anslutningar för strikt isolering av trafik frĂ„n olika applikationer och handhavare. För att minska belastningen pĂ„ CPU stöds avlastning av krypterings- och dekrypteringsoperationer till nĂ€tverkskortens sida (offload). Protokollet UDP anvĂ€nds som transport för dataöverföring, ovanpĂ„ vilket innehĂ„llet i det ursprungliga TCP-paketet vidarebefordras.

      UtgÄvan av Linux-kÀrnan 6.18
    • Stöd för AccECN (Accurate Explicit Congestion Notification) har lagts till. Detta Ă€r en förbĂ€ttrad version av ECN-förlĂ€ngningen som gör det möjligt för vĂ€rdar att mĂ€rka IP-paket istĂ€llet för att kassera dem vid överbelastning. Detta ger möjlighet att identifiera det inledande skedet av trĂ€ngsel i kommunikationskanaler utan att förlora paket. Den ursprungliga ECN-förlĂ€ngningen har en begrĂ€nsning som tillĂ„ter endast en överbelastningssignal under en enda TCP-överföringscykel (RTT, Round-Trip Time, skicka begĂ€ran och ta emot svar). AccECN tar bort denna begrĂ€nsning och ger mottagaren möjlighet att skicka fler Ă€n en överbelastningstĂ€mpel till avsĂ€ndaren i TCP-paketets rubrik. Algoritmer för överbelastningshantering kan anvĂ€nda den mottagna informationen för en mer exakt reaktion pĂ„ överbelastningar utan att behöva kraftigt minska paketutsĂ€ndningen vid en liten överbelastning.
    • Bearbetningen av inkommande paket inom UDP-stacken har optimerats under DDoS-attacker, vilket leder till en stor mĂ€ngd paket som anlĂ€nder till en eller flera UDP-sockets. De optimeringar som gjorts, sĂ„som minskning av konkurrerande lĂ„s, optimering av datauppbyggnadernas placering i minnet och anvĂ€ndning av lĂ„s med hĂ€nsyn till NUMA-arkitektur (Non-Uniform Memory Access), har ökat prestandan vid mottagning av UDP-paket med 47 % och mer under extremt förhĂ„llanden.
    • Möjligheten att stĂ€nga av I/O-caching pĂ„ NFS-servern har införts, vilket möjliggör anvĂ€ndning av NFS-servern i system med begrĂ€nsat minne (t.ex. skalade molnmiljöer). Att stĂ€nga av cachen kan ocksĂ„ vara anvĂ€ndbart pĂ„ belastade NFS-servrar för att undvika att data relaterade till lokala lagringselement skjuts ut ur cachen nĂ€r minnet frigörs för NFS-cachen.
    • Den maximala storleken pĂ„ buffrar för inkommande och utgĂ„ende paket för nĂ€tverksockets (net.core.rmem_max och net.core.wmem_max) har ökat frĂ„n 2 MB till 4 MB. Standardstorleken har förblivit oförĂ€ndrad (net.core.rmem_default och net.core.wmem_default = 2 MB).
    • En drivrutin för Qualcomm PPE (Packet Processing Engine), som anvĂ€nds i SoC Qualcomm IPQ9574, har lagts till för att pĂ„skynda nĂ€tverksoperationer.
  • Utrustning
    • KĂ€rnan har antagit drivrutinen Tyr, skriven i Rust, som möjliggör arbete med GPU:er frĂ„n ARM Mali, dĂ€r teknologin CSF (Command Stream Frontend) tillĂ€mpas, sĂ„som Mali G310, G510 och G710. Drivrutinen Ă€r Ă€nnu inte redo för permanent anvĂ€ndning av vanliga anvĂ€ndare och betraktas som en experimentell prototyp för testning av abstraktioner för utveckling av drivrutiner i Rust.
    • Drivrutiner för HID-enheter (Human Interface Device) har fĂ„tt stöd för pekplattor med taktil feedback och trycksensorer.
    • Arbetet med drm-drivrutinen (Direct Rendering Manager) Xe för GPU:er baserade pĂ„ Intel Xe-arkitekturen har fortsatt, vilken anvĂ€nds i Intel-grafikkort av Arc-familjen och i integrerad grafik, som börjar med Tiger Lake-processorer. I den nya versionen har grĂ€nssnittet madvise lagts till, stöd för SR-IOV PF (Single Root I/O Virtualization Physical Function) har aktiverats, stöd för Intel PSMI-lĂ€get för hĂ„rdvaruvalidering har införts, bearbetning av överförd firmware-information om fel har sĂ€kerstĂ€llts, energiförbrukningsprofilen SLPC har implementerats och stöd för laddning av sekundĂ€r firmware (till exempel till kylkontrollen och spĂ€nningsregulatorn) under drivrutinskontroll har lagts till.
    • I AMDGPU-drivrutinen har stöd för enheter med APU Cyan Skillfish lagts till, stödet för AMD GCN 1.0 har förbĂ€ttrats och kompatibilitet med verktyget criu har realiserats, i sysfs har temperaturmetrik lagts till, och remapping-förfrĂ„gningar för MMIO frĂ„n anvĂ€ndarutrymmet har godkĂ€nts.
    • I i915-drivrutinen har stöd för Wildcat Lake-chipseten lagts till och arbetet med GPU:er frĂ„n Jasper Lake, Elkhart Lake, Gen7 och Gen6 har förbĂ€ttrats.
    • I Nouveau-drivrutinen anvĂ€nds som standard GSP-firmware frĂ„n NVIDIA och felhanteringen har förbĂ€ttrats.
    • Integrationen av komponenterna i Nova-drivrutinen för NVIDIA GPU:er, utrustade med GSP-firmware som anvĂ€nds frĂ„n NVIDIA GeForce RTX 2000-serien baserad pĂ„ Turing-mikroarkitekturen, har fortsatt. Drivrutinen Ă€r skriven i Rust. I den nya versionen har stödet för GSP-firmware utökats, implementeringen av makrot "register!" har förbĂ€ttrats, stöd för PCI-enhetsklasser och tillverkaridentifierare har lagts till.
    • En rocket-drivrutin för NPU-acceleratorer, som anvĂ€nds i SoC Rockchip RK3588, har lagts till.
    • En kĂ€rnparameter "boot_display" har lagts till för att vĂ€lja utgĂ„ngsenhet för att visa laddningsprocessen pĂ„ system med flera GPU:er.
    • I vesadrm-drivrutinen har stöd för 8-bitars paletter realiserats.
    • I msm-drivrutinen har stöd lagts till för GPU Adreno 663 och stöd för energibesparande teknik IFPC (Inter Frame Power Collapse) har implementerats.
    • I panthor-drivrutinen har stöd lagts till för GPU Mali-G710, Mali-G510, Mali-G310, Mali-Gx15, Mali-Gx20 och Mali-Gx25.
    • Stöd har lagts till för ljudsystemen ASoC Qualcomm Glymur och PM4125, Realtek RT1321, Shanghai FourSemi FS2104/5S, Texas Instruments PCM1754 och TAS2783A, qcs615, CS35L56 B2, tas2118, tas2x20, tas5825. Stöd har lagts till för ljud USB-kort Tascam US-144mkII och Presonus S1824c.
    • Stöd har lagts till för ARM CPU Cortex-A320/A520AE/A720AE och C1-Nano/Pro/Premium/Ultra.
    • Stöd har lagts till för ARM-plattformar, SoC och enheter: Apple M2 Pro, M2 Max och M2 Ultra, Sony Xperia SP, Samsung Galaxy S22, Samsung Galaxy S20 FE, ASUS Eee Pad Slider SL101, Lenovo ThinkBook 16, HP Omnibook X14 X1P42100, Dell Inspiron 7441 / Latitude 7455, Sige1, NanoPi Zero2, Axis Artpec8, NXP i.MX91, ROCK 2A/2F, Qualcomm Lemans Auto, Renesas RZ/T2H, RZ/N2H, RZ/T2H och RZ/N2H, Aspeed AST27xx, Meta Clemente BMC, Netcube Nagami som, Tqma91xx, Ultratronik i.MX8MP Ultra-MACH, i.MX8ULP EVK9, Buffalo WXR-1750DHP.

Samtidigt har den latinamerikanska stiftelsen för fri programvara skapat en version av det helt fria kĂ€rnan 6.18 — Linux-libre 6.18-gnu, rensad frĂ„n firmware och drivrutiner som innehĂ„ller icke-fria komponenter eller kodavsnitt vars anvĂ€ndning Ă€r begrĂ€nsad av tillverkaren. I version 6.18 har koden för att rensa blobbar i drivrutinerna Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP, Marvell WiFi-Ex uppdaterats. Namnen pĂ„ blobbar i dts-filer (devicetree) för ARM-chips frĂ„n Qualcomm, Mediatek och TI ARM64 har rensats. Blobbar i nya drivrutiner frĂ„n FourSemi fs2104/5s, TI TAS2783 och Qualcomm GENI har neutraliserats.

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