Pas dy muajsh zhvillimi, Linus Torvalds prezantoi versionin e kernel-it Linux 6.15. Ndër ndryshimet më të dukshme: mekanizmi i auditit në Landlock, moda e fiksimit të hartimit të memories, nën-sistemi fwctl, drive Nova për GPU NVIDIA, implementimi i sistemit të hostit për hipervizorin Hyper-V, mbështetje për pajisje ruajtjeje të zonuar në XFS, optimizimi i nën-sistemit rrjetë, kontrollet scrub në Bcachefs, mundësia e kontrollit mbi operacionet përmes io_uring.
Në versionin e ri janë pranuar 15945 korrigjime nga 2154 zhvillues, madhësia e patch-it është 59 MB (ndryshimet preken 13596 skedarë, janë shtuar 739608 rreshta kodi, janë fshirë 312168 rreshta). Në versionin e kaluar ishin 12115 korrigjime nga 1984 zhvillues, madhësia e patch-it ishte 39 MB. Rreth 41% e të gjitha ndryshimeve të paraqitura në 6.15 lidhen me drejtoritë e pajisjeve, rreth 16% e ndryshimeve kanë të bëjnë me azhurnimin e kodit specifik për arkitekturën harduerike, 13% lidhen me stakun rrjetë, 5% me sistemet e skedarëve dhe 4% me nën-sistemet e brendshme të kernel-it.
Novitet kryesore në kernel 6.15:
- Sistemi i diskut, hyrja/ dalje dhe sistemet e skedarëve
- Në mekanizmin fanotify është shtuar mundësia për të ndjekur ngjarjet e montimit dhe të çmontimit.
- Në XFS është shtuar mbështetje për pajisje ruajtjeje të zonuar (ndarje në zona grupesh bllokesh ose sektorësh, në të cilat lejohet vetëm shtimi i radhës i të dhënave me azhurnimin e gjithë grupit të bllokëve). Është shtuar flags rwf_dontcache për të çaktivizuar mbajtjen e cache-it gjatë shkrimit. Është realizuar mundësia e shkrimit atomik të disa blloqeve të dhënash në të njëjtën kohë.
- Në Btrfs është realizuar mundësia e specifikimit të niveleve negative të kompresionit zstd (nga -15 deri në -1, për shembull, ‘compress=zstd:-5’), që ofrojnë shpejtësi më të lartë të punës në kurriz të efikasitetit të kompresionit. Është përmirësuar mbajtja në cache e rrugëve të skedarëve (në testin e realizuar, ekzekutimi i operacionit ‘send’ u përshpejtua me 30%). Është shtuar mbështetje për blloqe me madhësi 2K.
- Në EXT4 është rritur performanca gjatë riprodhimit të jurnalit me një numër shumë të madh regjistrimesh të tërhequra (ngarkesë, që është tipike për ndarjet nën FS Lustre). Është realizuar kërkimi linear i regjistrimeve 'dentry' (paraqitja e brendshme e elementeve të katalogëve), për të zgjidhur problemet me qasjen në disa skedarë në mënyrën e ndjeshmërisë ndaj rastit. Është stabilizuar funksionimi i opsionit të montimit 'errors=remount-ro'. Është rritur qëndresa gjatë trajtimit të sistemëve të skedarëve të dëmtuar.
- Në F2FS është realizuar ioctl për të marrë informacion mbi prioritetin e operacionit të hyrjes/daljes për një skedar të caktuar. Është punuar për kalimin në përdorimin e fletëve të faqeve të memories (page folios).
- Në Bcachefs është shtuar moda 'scrub', ku verifikohet saktësia e leximit të të gjitha të dhënave dhe metadata nga FS. Në rast se zbulohet ndonjë gabim, aktivizohet procedura e rikuperimit. Në Bcachefs gjithashtu është shtuar mbështetje për punën me sistemi me blloqe që janë më të mëdhenj se madhësia e faqeve të memories. Është stabilizuar formati i strukturave diskore të Bcachefs (ndryshimet e mëtejshme në format do të realizohen në formën e shtesave opsionale).
- Në EROFS është shtuar mbështetje për adresimin e blloqeve 48-bit.
- Në nën-sistemin FUSE janë realizuar sysctl default_request_timeout dhe max_request_timeout për caktimin e skadencave për kërkesat, që lejon ndjekjen e ngecjeve të komponentëve FUSE që punojnë në hapësirën e përdoruesit. Madhësia maksimale e emrave të skedarëve në FUSE është zgjeruar në 1024 simbole.
- Në thirrjen sistemike statmount() është shtuar mundësia për të marrë informacion mbi hartimin e identifikuesve të përdoruesve të sistemeve të skedareve të montuara, e cila përdoret për të përputhur skedarët e një përdoruesi të caktuar në një ndarje të huaj të montuar me një përdorues tjetër në sistemin aktual.
- Është realizuar mundësia e krijimit të një pikë montimi me një hartim tjetër të identifikuesve të përdoruesve sesa ai i ndarjes origjinale të montuar.
- Në API-në për menaxhimin e montimit janë bërë ndryshime që thjeshtojnë grumbullimin e hierarkive komplekse të sistemeve të skedarëve pa zbuluar pjesët e veçanta të sistemeve të skedarëve që duhet të mbeten të fshehura.
- Në nën-sistemin për punën me pajisje bllok i është shtuar mbështetje pajisjeve harduerike për mbrojtjen e çelësave të kodimit.
- Në sistemin e skedarëve SMB është realizuar opsioni is_network_name_deleted dhe është aktivizuar përveç kësaj moda smb_server_kerberos5.
- Për FS OverlayFS është shtuar opsioni i montimit ‘override_creds’, me të cilin, për qasje në nivelet e poshtme të ruajtjes, do të përdoren të dhënat e identifikimit të përdoruesit që ka bërë thirrjen, e jo të atij që ka realizuar montimin. Një ndryshim, për shembull, lejon që kur montoni OverlayFS, të kërkoni përdorues me autorizimin CAP_SYS_ADMIN, por të përdorni FS me të dhënat e identifikimit pa këtë privilegj.
- Në exFAT janë përshpejtuar operacionet e fshirjes së skedarëve. Në vend të dërgimit të kërkesave "discard" për secilin klaster të liruar të skedarit të fshirë, drejtuesi tani grupon kërkesat. Në testimin e kryer, koha e fshirjes së një skedari 80 GB u reduktua nga 286 sekonda në 1.6 sekonda.
- Të gjitha pseudo-FS, si dhe FS EXT2, janë kaluar në përdorimin e API-së së re për montimin e seksioneve.
- Kodi për mbështetje të sistemeve të skedarëve SYSV (SystemV/386, Xenix dhe Coherent) është eliminuar, i cili nga viti 2023 është konsideruar si i pa mbështetur (orphaned).
- Kujtesa dhe shërbimet sistemore
- Versioni minimal i nevojshëm për ndërtimin e bërthamës GCC është rritur në 8.1, ndërsa Clang në 15.0.0.
- Sistemi i fwctl (Kontrolli i Firmware) është shtuar, duke ofruar një API për menaxhimin e sigurt të firmware dhe ekzekutimin e trajtuesve në anën e firmware nga hapësira e përdoruesit. Nga fwctl janë përgatitur drejtues për pajisjet CXL (Compute Express Link), adapterët Ethernet Mellanox ConnectX (mlx5) dhe kartat e shërbimeve AMD/Pensando.
- Janë zgjeruar mundësitë e mekanizmit pidfd, i cili lejon përdorimin e identifikuesve që lidhen me procese të posaçme dhe, ndryshe nga pid, nuk mund të ri-emërohen. Është ofruar mundësia për nxjerrjen e të dhënave mbi gjendjen e përfundimit të procesit, të identifikuar përmes pidfd pas konfirmimit të përfundimit të procesit fëmijë (reaped) dhe pas lirimit të burimeve të tij. Një flamur PIDFD_SELF është shtuar në thirrjet sistemore, me të cilin procesi mund të referohet tek vetja.
- Për arkitekturën RISC-V është realizuar mbështetje për zgjatjet BFloat16, Zaamo (operacionet atomike me memorie), Zalrsc (Load-Reserved/Store-conditional) dhe ZBKB (operacionet bitore për kriptografi).
- Gjatë ndjekjes është siguruar mundësia e ruajtjes së argumenteve të funksioneve të thirrura dhe shfaqja e tyre në logët e ndjekjes.
- Në sistemin e input-it/asinkron io_uring është shtuar mbështetje për leximin e informacionit mbi ngjarjet epoll. Përdorimi i io_uring për trajtimin e ngjarjeve epoll ndihmon në reduktimin e numrit të kalimeve të konteksteve dhe mundëson trajtimin e disa ngjarjeve epoll në të njëjtën kohë.
- Në nën-sistemin e eBPF është përmirësuar verifikimi i programeve me cikle. Janë shtuar instrukcione të reja "timed_may_goto", "load-acquire" dhe "store-release". Është ofruar mundësia për të ndryshuar atributet e zgjeruara të skedarëve nga programet BPF. Është shtuar funksioni try_alloc_pages(), i dizajnuar për alokimin e memories kur ka një probabilitet të lartë të dështimit të operacionit (në ekzekutimin e programeve BPF në kontekste të kufizuara).
Është realizuar një primitiv i ri bllokimi — rqspinlock (Resilient Queued Spin Lock), në kohën e ekzekutimit është e aftë të identifikojë situata që çojnë në bllokime mutuale. Ky primitiv lejon ngarkimin e programeve BPF, për të cilat verifikuesi nuk garantoi korrektësinë e funksionimit me bllokime.
- Ka një rritje të ndjeshme të besueshmërisë në alokimin e faqeve të mëdha të memories (huge-page).
- Është përshpejtuar në mënyrë të konsiderueshme llogaritja e kontrollit të shumave CRC64 në sistemet x86. Ndër të tjera, për përshpejtimin janë përdorur instrukcione të reja vektoriale nga grupi AVX-512. Në disa situata, performanca u rrit 100 herë.
- Për të vazhduar transferimin e ndryshimeve nga dega Rust-for-Linux, lidhur me përdorimin e gjuhës Rust si gjuhë të dytë për zhvillimin e drejtuesve dhe moduleve të bërthamës (mbështetje Rust nuk është aktivizuar automatikisht dhe nuk çon në përfshirjen e Rust në mesin e varësive të detyrueshme ndërtuese për bërthamën). Është ofruar mundësia e përdorimit në kodin e bërthamës së makrosë "#[kunit_tests()]" për ekzekutimin e testeve njësi. Është shtuar mbështetje për arkitekturën ARMv7. Janë realizuar module dma dhe hrtimer me lidhje Rust për DMA (shtuar nga Linusi në anashkalimin e mbikëqyrësit, i cili më pas u largua nga posti i tij) dhe për timerat e saktë. Janë zgjeruar modulet 'list', 'str', 'sync', 'error' dhe 'alloc'. Është shtuar mbështetje për sintaksën e re '&raw' (raw_ref_op).
- Në nën-sistemin perf është realizuar mundësia e profilizimit të vonesave, duke përdorur informacionin nga planifikuesi i detyrave.
- Është shtuar një parametër i linjës së komandës së bërthamës "traceoff_after_boot", i cili çon në çaktivizimin e ndjekjes pas ngarkimit të bërthamës dhe fillimit të procesit init. Ky parametër mund të përdoret në diagnostikimin e problemeve të lidhura me ngarkesën, duke siguruar që të dhënat e grumbulluara gjatë ngarkesës të mos riregjistrohen.
- Është ndaluar mbështetja për sistemet 32-bit x86, që kanë më shumë se 8 CPU dhe 4 GB RAM. Pajisjet e tilla nuk prodhohen më dhe sistemet që kërkojnë këto burime janë transferuar në CPU 64-bit.
- Janë bërë ndryshime në implementimin e timerëve POSIX, duke mundësuar që instrumenti CRIU (Checkpoint/Restore in Userspace) të ruajë dhe rikthejë identifikatorët e timerëve.
- Virtualizimi dhe siguria
- E shtuar mundësia e përdorimit të Linux si një ambient rrënjor (Dom0. partitioni rrënjor) për hipervizorin Hyper-V (Microsoft Hypervisor). Ambienti i hostit përgjigjet për menaxhimin e hipervizorit, organizimin e nisjes së sistemeve të ftuara, ndarjen e burimeve dhe sigurimin e ndërveprimit makinave virtuale me harduerin. Menaxhimi i hipervizorit Hyper-V në Linux realizohet përmes pajisjes /dev/mshv.
- Në modulën Landlock, e cila ofron programeve pa privilegje mjete për të kufizuar përdorimin e objekteve të kernelit Linux (hierarkitë e skedarëve, soketet rrjetësore, ioctl etj), është shtuar një mekanizëm auditimi. Auditimi lejon vlerësimin e detajuar të arsyeve të bllokimeve të aksesit që ndodhin gjatë përdorimit të Landlock, si dhe mundëson kuptimin se kur dhe cila operacion është bllokuar, pse është bërë bllokimi dhe cili rregull ka funksionuar.
- E shtuar mundësia e zbatimit në modulët LSM (Linux Security Modules) të trajtesave që kontrollojnë akseset në sistemin e hyrjes asinkrone/io_uring dhe lejojnë bllokimin e përdorimit të io_uring për të anashkaluar kufizimet e aksesit në thirrjet sistemore. Një trajtesë e tillë është realizuar në modulën LSM SELinux.
- Në SELinux është realizuar mundësia e aplikimit të politikave në çdo lloj të dhënësh që ngarkohet nga kernel, duke përfshirë imazhe të firmware-it, politika sigurie dhe certifikata.
- E shtuar një mënyrë e ngjitjes (seal) për disa operacione të hartimit të memories, që realizohen nga kernel në hapësirën adresore të procesit. Ngjitja e kalon hartimin në një modë vetëm për lexim dhe nuk lejon ndryshimin në rast të shfrytëzimin e një dobësie. Veprimi shtrihet në hartimin vDSO, vsyscall, vvar, sigpage dhe uprobes. Mënyra, me rregull të parazgjedhur, është e çaktivizuar, pasi mund të prishë funksionimin e disa aplikacioneve. Për ta aktivizuar është shtuar cilësimi i ndërtimit CONFIG_MSEAL_SYSTEM_MAPPINGS.
- Sistemi i rrjetit
- Punët janë vazhduar për të eliminuar bllokimin global RTNL (rtnl_lock) nga shtëpija rrjetore dhe për ta transformuar atë në bllokime që janë lidhur me hapësira të veçanta rrjetesh.
- E shtuar mundësia fillestare për të marrë paketa rrjetësh përmes io_uring me kopjimin e përmbajtjes direkt në memorjen e programit në hapësirën e përdoruesit pa buferizim të ndërmjetëm (zero-copy). Në testet e kryera, ky ndryshim lejonte përballjen me përpunimin e trafikut përmes një kanali 200 Gigabit, duke përdorur një bërthamë CPU.
- Realizuar sysctl tcp_rto_max_ms dhe opsioni TCP-sockets TCP_RTO_MAX_MS, përmes të cilave mund të vendosni kohën maksimale midis përpjekjeve për rikthimin e paketave.
- Në BPF është shtuar një seri thirrjesh callback për të marrë informacion mbi kohën nga vende të ndryshme të stack-ut rrjetor, që mund të përdoren për diagnostikimin e problemeve me vonesat rrjetore.
- E shtuar optimizimi i performancës së operacioneve rrjetore:
- Optimizimi GRO (Generic Receive Offload), i cili bashkon disa paketa të vogla në një të madhe, tani është angazhuar kur ndërron përpunimin e paketës në një CPU tjetër (për balancimin e ngarkesës) duke përdorur nën-sistemin XDP (eXpress Data Path), që lejon përpunimin e paketimeve në nivelin e drejtorit rrjetor para se t'i dërgojë stack-ot rrjetor. Rritja e performancës në përpunimin e rrjedhave TCP nga përdorimi i optimizimit mund të arrijë deri në dyfish.
- Në kushte ngarkese të lartë, performanca e funksionit connect() është rritur deri në dyfish përmes zëvendësimit të bllokadës spin me mekanizmin e sinkronizimit RCU (Read-Copy-Update) kur kërkohen shënime me informacionin e palëve të lidhjes (src dhe target IP të përkushtuar dhe portet). Shtesë, është realizuar optimizimi i hashing, që ka siguruar një rritje të performancës për 229%.
- Është përshpejtuar zbatimi i MPTCP (Multipath TCP), një zgjerim i protokollit TCP për organizimin e dorëzimit të paketimeve njëkohësisht përmes disa rrugëve përmes interfaceve të ndryshme rrjetore, të lidhura me adresa të ndryshme IP. MPTCP në modin me një rrjedhë është përshpejtuar me 29%.
- Në netfilter, kur ka një soket, është ndërprerë ekzekutimi i operacioneve të kërkimit të rrugëve në FIB (Forwarding Information Base). Falë këtij optimizimi, performanca është rritur me 20%.
- Performanca e UDP në kushtet e fludimit (flood) është rritur me 10% duke përjashtuar operacione të panevojshme me strukturën sk_tsflags kur merret paketa.
- E shtuar një drejtor me realizimin e protokollit MCTP-over-USB.
- Pajisjet
- Në thelb është pranuar implementimi fillestar i drejtuesit Nova për GPU-të NVIDIA, të pajisura me firmware GSP, që përdoren që nga seria NVIDIA GeForce RTX 2000, bazuar në mikroarkitekturën Turing. Drejtuesi është shkruar në gjuhën Rust. Në fazën e parë është shtuar vetëm korniza nova-core, e cila përfshin rreth 400 rreshta kodi dhe zbatuar nivelin bazë të abstraksionit mbi ndërfaqet programore të firmware-ëve GSP. Në fazën tjetër, planifikohet që në thelb të përfshihet drejtuesi DRM nova-drm (Menaxheri i Shkarkimit të Drejtë) për interaksion me GPU nga hapësira e përdoruesit, si dhe drejtuesi VFIO me menaxherin vGPU, që lejon përdorimin e GPU-ve virtuale NVIDIA në sistemet e virtualizimit.
- Në vazhdim është punuar në drejtuesin drm (Menaxheri i Shkarkimit të Drejtë) Xe për GPU-të që bazohen në arkitekturën Intel Xe, e cila përdoret në kartat grafike Intel nga familja Arc dhe në grafikën e integruar, duke filluar nga procesorët Tiger Lake. Është shtuar mbështetje për SVM (Memoria Virtuale e Ndajtur), një komponent i kornizës DRM, që menaxhon memorien e ndarë që përdoret bashkërisht nga CPU dhe GPU.
- Në drejtuesin i915 janë shtuar identifikuesit e GPU-ve të rinj.
- Në drejtuesin Nouveau është rishikuar GSP RPC dhe është integruar ndërfaqja drm_slave_encoder.
- Në drejtuesin AMDGPU është zbatuar mbështetje për arkitekturën DCN36 (Display Core Next). Është shtuar mundësia për të përcaktuar kurba të veta të ndriçimit, të cilat përdoren për rregullimin e ndriçimit të ekranit.
- Në drejtuesin adreno është shtuar mbështetje për GPU Qualcomm Adreno 623.
- Është shtuar mbështetje për panellat preke Apple Touch Bar.
- Është shtuar mbështetje për versionin e dytë të zgjerimit eUSB2 (eUSB2V2 — Embedded USB2 Version 2.0), që lejon uljen e tensionit të furnizimit (deri në 1.2 volt) dhe rritjen e performancës USB 2.0. Shpejtësia e transfertës në eUSB2V2 mund të arrijë deri në 4.8 Gbit në sekondë, që është 10 herë më e shpejtë se 480 Mbit në sekondë, tipike për USB 2.0. eUSB2V2 do të lejojë prodhuesit e laptopëve të pajisin pajisjet e tyre me kamera të internetit me për resolution më të lartë, duke vazhduar të përdorin autobusin Embedded USB2 për lidhje.
- Është shtuar mbështetje për adapterët Ethernet Intel Killer E5000 (RTL8126).
- Është shtuar mbështetje për panninat ekran Visionox RM692E5, Rockchip w552793dba-v10, kingdisplay-kd110n11-51ie dhe starry-2082109qfh040022-50e.
- Është shtuar drejtuesi për laptopët Samsung Galaxy Book.
- Është shtuar mbështetje për sistemet e zërit Presonus Studio 1824c, Jabra Evolve 65. Është shtuar mbështetje për modulet DSP të AMD ACP 7.x, AWINC WM88166, Everest ES8388, Intel AVS PEAKVOL dhe GAIN. Është përmirësuar mbështetja për zërin në laptopët ASUS, HP dhe Lenovo.
- Është shtuar mbështetje për platformat ARM, SoC dhe pajisjet: 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 platforma Toradex të bazuara në i.MX6.
Në të njëjtën kohë, Fondi Latino-amerikan i Softuerit të Lirë ka formuluar një variant të saj tërësisht të lirë të thelb 6.15 — Linux-libre 6.15-gnu, të pastruar nga elementët e firmware-ëve dhe drejtuesve që përmbanin komponente ose segmente kodi të papërputhshme, që janë të kufizuara nga prodhuesi. Në versionin 6.15 është neutralizuar ngarkimi i blobëve në drejtuesit nova, Qualcomm iris v4l2, Airoha NPU, Tehuti Networks TN40xx 10G ethernet, Realtek 8814A wifi, Apple Silicon SoC touchscreen, Renesas UFS dhe aw88166 audio. Është ndërprerë pastrimi i drejtuesit Spider 1Gb ethernet, i cili është hequr nga thelbi. Janë hequr lidhjet e skedarëve binarë të tivoizuar. Është zbatuar bllokimi i ngarkimit të blobëve nga kodi në gjuhën Rust.
Burimi: opennet.ru
