UtgÄvan av Linux-kÀrnan 6.15

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

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster