Pas dy muajsh zhvillimi, Linus Torvalds prezantoi versionin e bërthamës Linux 6.11. Ndër ndryshimet më të dukshme janë: mbështetje për operacione atomike shkrimi në nivel blloku, mbështetje për operacionet bind() dhe listen() në io_uring, një mekanizëm i ri bllokimi për trajtuesit e ndërprerjeve, mundësia e shkrimit në skedarët e ekzekutueshëm të mbështetur në memorje, mbështetje për zhvillimin e drejtorive të pajisjeve bllokuese në gjuhën Rust, optimizimi i thirrjes getrandom(), dhe një realizim i ri AES-GCM.
Në versionin e ri janë pranuar 15130 rregullime nga 2078 zhvillues, madhësia e patch-it është 85 MB (ndryshimet prekin 13282 skedarë, janë shtuar 985857 rreshta kodi, eliminuar 268915 rreshta). Në versionin e fundit kishte 14564 rregullime nga 1989 zhvillues, madhësia e patch-it ishte 41 MB (dy herë më e vogël se patch-i për bërthamën 6.11). Rreth 46% e të gjitha ndryshimeve të paraqitura në 6.11 lidhen me drejtoritë e pajisjeve, rreth 17% e ndryshimeve lidhen me përmirësimin e kodit të veçantë për arkitekturë harduerike, 10% lidhur me stakun e rrjetit, 5% me sistemet e skedarëve dhe 3% me nën-sistemat e brendshme të bërthamës.
Risi kryesore në bërthamën 6.11:
- Sistemi i diskut, hyrja/ dalje dhe sistemet e skedarëve
- ĂshtĂ« realizuar mbĂ«shtetje pĂ«r operacione atomike shkrimi nĂ« nivel blloku, ku tĂ« dhĂ«nat shkruhen nĂ« disk si njĂ« grup tĂ« plotĂ« tĂ« bllokesh ose asnjĂ« nga blloket, duke mbrojtur kĂ«shtu nga situatat kur pas njĂ« dĂ«shtimi tĂ« pajisjes shkruhet vetĂ«m njĂ« pjesĂ« e bllokesh, ndĂ«rsa pjesa tjetĂ«r ruan informacionin e vjetĂ«r. PĂ«r tĂ« aktivizuar modalitetin atomik tĂ« shkrimit nĂ« thirrjen e sistemeve pwritev(), Ă«shtĂ« shtuar flagu RWF_ATOMIC. Informacionin mbi mbĂ«shtetje pĂ«r shkrim atomik (atomic_write_unit_min, atomic_write_unit_max dhe atomic_write_segments_max) pĂ«r skedarĂ«t e veçantĂ« mund ta merrni pĂ«rmes funksionit statx().
- ĂshtĂ« ofruar mbĂ«shtetje pĂ«r shkrimin nĂ« skedarĂ« ekzekutivĂ« tĂ« lidhur me proceset aktive. MĂ« parĂ«, si nĂ« sistemet e tjera Unix, bĂ«rthama jepte njĂ« gabim kur pĂ«rpiqej tĂ« shkruante nĂ« njĂ« skedar ekzekutiv tĂ« njĂ« procesi tĂ« shtyrĂ«. Ky kufizim Ă«shtĂ« hequr, pasi ishte pa kuptim praktike.
- ĂshtĂ« realizuar mundĂ«sia pĂ«r zhvillimin e drejtorive tĂ« pajisjeve bllokuese nĂ« gjuhĂ«n Rust. Si shembull, nĂ« bĂ«rthamĂ« Ă«shtĂ« shtuar drejtori rnull, qĂ« Ă«shtĂ« njĂ« analog i drejtori null_blk, i shkruar nĂ« gjuhĂ«n Rust.
- Në sistemin e skedarëve Btrfs në opsionet e montimit "rescue=" është realizuar mbështetje për modet e reja "ignoremetacsums" dhe "ignoresuperflags", të cilat mund të përdoren për të zhvendosur disa kontrollime në hapësirën e përdoruesit gjatë rikuperimit të FS pas dështimit. Realizimi i operacionit të rikthimit dinamik të grupeve të bllokëve është ri-konstruktuar për të eliminuar situatën e mungesës së hapësirës së lirë nën kushte të mbushjes jo të plotë të FS.
- Në sistemin e skedarëve ntfs3 është realizuar mbështetje për atributet "compressed" dhe "immutable", që përcaktojnë skedarë të kompresuar dhe të paprekshëm.
- Në FSH F2FS dhe Ext4, trajtimi i emrave të skedarëve pa marrë parasysh regjistrimin e karaktereve (casefold) është lehtësuar përmes ruajtjes së emrave në formën e qstr-stringjeve pa transformime të panevojshme të regjistrit.
- Në sistemin e skedarëve Ext4, realizimi i funksionit jbd2_transaction_committed është optimizuar për të rritur performancën në disket shumë të shpejtë (në testime është vërejtur rritje e operacioneve të përpunuara në sekondë që arrin deri në 20%).
- Në thirrjen e sistemit statx() është lejuar kalimi i një treguesi NULL në vend të një vargu bosh me rrugën e skedarit, në rast se është vendosur flagu AT_EMPTY_PATH.
- Në thirrjen e sistemit open_by_handle_at() janë zbutur kontrollet e të drejtave të aksesit në skedar, në rast se mungojnë autorizimet CAP_DAC_READ_SEARCH për kërkimin në hapësirën fillestare të emrave. Më parë, nevoja për të pasur autorizimet CAP_DAC_READ_SEARCH në hapësirën fillestare të emrave nuk lejonte përdorimin e thirrjes së sistemit open_by_handle_at() në kontejnerë.
- Janë zgjeruar mundësitë e thirrjeve të sistemeve listmount() dhe statmount(). Në listmount() është shtuar flagu LISTMOUNT_REVERSE për të shfaqur përmbajtjen e tabelës së pikave të montimit në rend të kundërt (shënimet më të reja në krye). Në statmount() është realizuar shfaqja e opsioneve të vendosura gjatë montimit të FS. Në të dy thirrjet e sistemeve është lejuar funksionimi në mungesë të qasjes në hapësirën fillestare të emrave (kur ka vetëm qasje në hapësirën lokale ose të jashtme).
- Në sistemin e skedarëve Bcachefs është realizuar mbështetje për rivendosjen automatike dhe transparente të të dhënave problematike, duke përdorur kodet e rikuperimit të gabimeve - nëse gjatë leximit ndodh një gabim input/output ose është llogaritur një përputhje e pakonsistent, blloku problematik i të dhënave automatikisht ribëhet në prani të tepricës për rikuperimin e tij.
- Kujtesa dhe shërbimet sistemore
- Në përbërje janë pranuar patches me implementimin e një mekanizmi të ri për bllokimin e përpunuesve të ndërprerjeve programuese (BH, bottom-half), i cili siguron bllokimin e strukturave të dhënash të përdorura, por pa bllokuar ekzekutimin paralel të kodit të pa lidhur me to. Vërehet se ndryshimi ka lejuar jo vetëm uljen e vonesave për bërthamat që punojnë në modin realtime, por gjithashtu ka rritur performancën e bërthamave të zakonshme (për shembull, për disa lloje ngarkesash, vërehet një rritje e performancës së nënstrukturës rrjetore prej 14.5%).
- Në nënstrukturën e hyrjes asinkrone/io_uring është shtuar mbështetje për operacionet për implementimin e funksioneve bind() dhe listen(), të cilat përdoren për krijimin e socket-eve rrjetë që pranojnë lidhjet.
- Shtuar një grup ioctl operacionesh për pseudo-FS NSFS (NameSpace FS), e cila përdoret për punën me hapësirat e emrave. Ioctlet e rinj lejojnë transformimin e identifikatorëve të proceseve dhe grupeve të rrjedhave midis hapësirave të emrave të identifikatorëve të proceseve (PID namespace). Ioctlet e ngjashme, të cilat lejojnë përcaktimin e descriptorëve të skedarëve të proceseve në hapësira të ndryshme emrash duke përdorur identifikatorët pidfd, janë shtuar gjithashtu në pseudo-FS pidfd.
- PĂ«r programet BPF Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r njĂ« iterator tĂ« ri pĂ«r punĂ«n me maska bitore, i cili mund tĂ« pĂ«rdoret, pĂ«r shembull, pĂ«r tĂ« kaluar nĂ«pĂ«r bitet e veçanta nĂ« zonat e memorjes, si cpumask. ĂshtĂ« krijuar njĂ« mekanizĂ«m pĂ«r dĂ«rgimin e njoftimeve nĂ« proceset nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit pĂ«r shkĂ«putjen (detach/unregister) e objektit struct_ops. JanĂ« zgjeruar llojet qĂ« mund tĂ« pĂ«rdoren nĂ« array (pĂ«r shembull, tani mund tĂ« shpallen array me elemente qĂ« kanĂ« lloje kptr, bpf_rb_root dhe bpf_list_head). ĂshtĂ« propozuar njĂ« mekanizĂ«m mĂ« i besueshĂ«m Split BTF (BPF Type Format), i pĂ«rdorur pĂ«r verifikimin e llojeve nĂ« pseudokodin BPF.
- Shtuar një nënstrukturë që lejon organizimin e furnizimit me energji për pajisjet në një rend të caktuar, në rast se një pajisje duhet të aktivizohet përpara një tjetër (për shembull, gjatë aktivizimit të çipave wireless në platformat Qualcomm).
- Shtuar moduli 'Sloppy logic analyzer', që lejon krijimin e analizuesve të thjeshtë logjikë të sinjalit, duke përdorur GPIO dhe që punon në një bërthamë të veçantë CPU.
- Shtuar mbështetje për konstanta runtime, që mund të përdoren në vend të variablave që inicializohen një herë. Për shembull, konstantat runtime mund të aplikohen në vend të variablave që ruajnë një pointer dhe madhësinë për cache-n e dentry. Këto variabla detyrohen gjatë ngarkimit dhe më pas kurrë nuk ndryshojnë. Ideja është të zëvendësohen vlerat e tilla të variablave drejtpërdrejt në instruktionet në kod, duke përjashtuar shpenzimet e lidhura me manipulimet me pointera.
- Vazhdon transferimin e ndryshimeve nga dega Rust-for-Linux, të lidhura me përdorimin e gjuhës Rust si gjuhë e dytë për zhvillimin e driver-ave dhe moduleve të bërthamës (mbështetje për Rust nuk është aktive siç është nga të dhënat bazë dhe nuk çon në përfshirjen e Rust-it në varësitë për ndërtimin e bërthamës). Shtuar mbështetje për lëshimin e Rust 1.80 (si version minimal vazhdon të mbështetet Rust 1.78). Përveç mjeteve të mëparshme për zhvillimin e driver-ave të pajisjeve bllokuese, në versionin e ri janë shtuar abstraksione për ngarkimin e firmware-it, qasjen në hapësirën e përdoruesit (uaccess) dhe punën me strukturën 'page'.
- Për sistemet x86-64 është realizuar një thirrje të re sistemike uretprobe(), që optimizon punën e mekanizmit të ndjekjes uretprobe, i cili lejon ndjekjen e vlerave të kthimit të funksioneve në aplikacione të hapësirës së përdoruesit.
- Shtuar parametra të linjës së komandës së bërthamës: 'reserve_mem' për rezervimin e një zone të emërtuar të memories gjatë ngarkimit dhe 'ramoops.mem_name' për përdorim në hapësirën e memories pstore, e krijuar përmes reserve_mem.
- Në kontrolluesin e memories bazuar në cgroup, në skedarin memory.reclaim, përmes të cilit përcaktohen cilësimet e zëvendësimit të memories, është shtuar parametri 'swappiness', i cili lejon ndryshimin e balancit midis zëvendësimit të faqeve të anomizuara të memories në seksionin swap dhe lirimin e faqeve të memories, të zëna nga cache-i i skedarëve.
- Shtuar një ndërfaqe ioctl PROCMAP_QUERY për kërkimin më efikas të zonave virtuale të memories (Virtual Memory Area) në /proc/PID/maps.
- Në thirrjen sistemike mmap() është shtuar një flamur MAP_DROPPABLE për kërkesën e memories, e cila kurrë nuk do të derdhet në seksionin swap, dhe në rast të mungesës së memories mund të fshihet.
- Për arkitekturën ARM64 është realizuar mbështetje për lidhjen e nxehtë (kalimi në modet online/offline) të CPU-ve fizike dhe virtuale në sistemet me ACPI.
- Për arkitekturën RISC-V është siguruar mbështetje për lidhjen e nxehtë të memories dhe është shtuar mbështetje për plugin-in GCC STACKLEAK (i cili inicializon të gjitha variablat e ruajtur në stack për të parandaluar rrjedhjen e informacionit nga bërthama përmes variablave të pa inicializuar që mund të përmbajnë mbetje të të dhënave të ruajtura më parë në stack).
- Mekanizmi i Mappimit të Memorjes EFI (fake EFI memory map) është eliminuar gjatë ngarkimit. Ky mekanizëm nuk është përdorur në praktikë dhe pengonte zhvillimin në fushën e ekzekutimit konfidencial. makinave virtuale.
- Mbështetje për platformën PowerPC 40x është ndërprerë.
- Kërkesat për versionin e GNU Make janë rritur - për ndërtimin e bërthamës kërkohet të paktën një version i GNU Make i publikuar në vitin 2013.
- Virtualizimi dhe siguria
- Janë integruar patch-e që shpejtojnë ndjeshëm (deri në 15 herë) marrjen e numrave të rastësishëm përmes thirrjes së sistemit getrandom(). Optimizimi është i bazuar në përdorimin e mekanizmit vDSO (virtual dynamic shared object), i cili lejon transferimin e trajtuesit të thirrjes së sistemit nga bërthama në hapësirën e përdoruesit dhe shmang kalimet e kontekstit. Ngarkimi i zbatimit të thirrjes së sistemit në hapësirën adresuese të procesit direkt nga bërthama.
- Për sistemet x86-64 është përfshirë një zbatim i ri i algoritmit AES-GCM, që mbështet përdorimin e instrukcioneve vektoriale VAES, VPCLMULQDQ dhe AVX512/AVX10 për të përshpejtuar llogaritjet. Në testet e kryera, rritja e performancës pas kalimit në zbatimin e ri arrin deri në 156%. Zbatimi në assembler i AES-GCM është shkruar plotësisht në mënyrë që të merret parasysh saktësia, performanca, madhësia dhe dokumentimi i plotë i kodit.
- ĂshtĂ« realizuar mundĂ«sia e ekzekutimit tĂ« bĂ«rthamĂ«s si njĂ« sistem mik pĂ«r ambientet e virtualizuara qĂ« pĂ«rdorin zgjerimin e procesorit AMD SEV-SNP (Secure Nested Paging), i dedikuar pĂ«r tĂ« siguruar funksionimin e sigurt me tabelat e ngulitura tĂ« memorjes. PĂ«r izolimin shtesĂ« tĂ« aksesit ndaj burimeve nga makinat virtuale mund tĂ« pĂ«rdoret moduli SVSM (Linux Secure VM Service Module). KVM I Ă«shtĂ« shtuar hipervizorit mbĂ«shtetje fillestare pĂ«r ekzekutimin e sistemeve mik, tĂ« mbrojtur me AMD SEV-SNP.
- është shtuar një alokator i veçantë i bucket slab, i cili aktivizohet përmes parametrave CONFIG_SLAB_BUCKETS dhe ofron mbrojtje nga sulmet që përdorin teknikën e «heap spraying».
- Në hipervizorin KVM është shtuar një thirrje ioctl për ndarjen e parashikuar të memories për sistemin mik para se të fillojë.
- Sistemi i rrjetit
- Ă«shtĂ« shtuar паŃĐ°ĐŒĐ”Ńri sysctl net.tcp_rto_min_us, pĂ«rmes tĂ« cilit mund tĂ« konfigurohet koha minimale pĂ«r ri-aktualizimin (retransmission timeout) pĂ«r soketet TCP.
- Në utilitarin ethtool është shtuar mundësia e përmirësimit të konfigurimit të trajtuesve të ndërprerjeve për ndërfaqet rrjetërore që përdorin ndërfaqen Net DIM.
- Pajisjet
- NĂ« driverin AMDGPU Ă«shtĂ« pĂ«rfshirĂ« mbĂ«shtetje fillestare pĂ«r GPU-nĂ« AMD RDNA4 («GFX12»). ĂshtĂ« shtuar mbĂ«shtetje pĂ«r teknologjitĂ« DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 dhe MMHUB 4.1.
- Punimet mbi driver-in drm (Direct Rendering Manager) Xe për GPU-të bazuar në arkitekturën Intel Xe, e cila përdoret në kartat grafike Intel të familjes Arc dhe grafika e integruar, duke filluar nga procesorët Tiger Lake, janë vazhduar. Mbështetje për GPU-të që bazohen në mikroarkitekturën Battlemage, Arrow Lake dhe Lunar Lake është përmirësuar.
- Në nëndisendrën DRM (Direct Rendering Manager) është riparuar trajtuesi i parametrave EDID (Extended Display Identification Data) të paraqitur nga monitori.
- Në driverin i915 është shtuar mbështetje për GPU-në Battlemage Xe2 dhe është aktivizuar si parazgjedhje moda CMRR (Content Match Refresh Rate).
- Në driverin DRM msm (GPU Qualcomm Adreno) është shtuar mbështetje për platformën SM7150 dhe GPU-në X185 dhe a505.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r panelĂ«t ekran Lincoln Tech Sol LCD185-101CT, Microtips Technology 13-101HIEBCAF0-C, Microtips Technology MF-103HIEB0GA0, BOE nv110wum-l60, IVO t109nw41, WL-355608-A8, PrimeView PM070WL4, Lincoln Technologies LCD197, Ortustech COM35H3P70ULC, AUO G104STN01, K&d kd101ne3-40ti.
- Në nëndisendrën audio është shtuar mbështetje për çipat dhe kodekët Intel Panther Lake, Asahi Kasei AK4619, Cirrus Logic CS530x, Everest Semiconductors ES8311, NXP i.MX95, LPC32xx, Qualcomm LPASS v2.5, WCD937x, Realtek RT1318, RT1320 dhe Texas Instruments PCM5242.
- ĂshtĂ« bĂ«rĂ« njĂ« sĂ«rĂ« pĂ«rfundimtare e ndryshimeve qĂ« sigurojnĂ« mbĂ«shtetje pĂ«r ARM SoC Snapdragon X Elite, i cili pĂ«rdor CPU-nĂ« Qualcomm Oryon me 12 bĂ«rtha dhe GPU-nĂ« Qualcomm Adreno. Ăipi Ă«shtĂ« targetuar pĂ«r pĂ«rdorim nĂ« laptopĂ« dhe PC, dhe e tejkalon nĂ« shumĂ« testime performancĂ«n e çipave Apple M3 dhe Intel Core Ultra 155H. Ndryshimet e pĂ«rfshira nĂ« bĂ«rthamĂ«n 6.11 lidhen me mbĂ«shtetje pĂ«r GPU-nĂ« Adreno X1-85 dhe menaxhimin e konsumit tĂ« energjisĂ«. Nga pajisjet qĂ« bazohen nĂ« SoC Snapdragon X Elite Ă«shtĂ« deklaruar mbĂ«shtetje pĂ«r laptopĂ«t ASUS Vivobook S15 dhe Lenovo Yoga Slim7x.
NĂ« tĂ« njĂ«jtĂ«n kohĂ«, Fondi Latino-amerikan pĂ«r Softin e LirĂ« ka formuar variantin plotĂ«sisht tĂ« lirĂ« tĂ« kernelit 6.11 â Linux-libre 6.10-gnu, i pastruar nga elementi i firmuerave dhe drejtuesve qĂ« pĂ«rmbajnĂ« komponente ose kode tĂ« papranuara, tĂ« cilat janĂ« tĂ« kufizuara nga prodhuesi. NĂ« lĂ«shimin 6.11, Ă«shtĂ« pĂ«rmirĂ«suar kodi i pastrimit tĂ« blob-Ă«ve nĂ« drejtuesit mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth dhe tas2781. ĂshtĂ« kryer pastrimi i drejtuesve tĂ« rinj amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 dhe pcie-rcar-gen4. ĂshtĂ« realizuar pastrimi i emrave tĂ« blob-Ă«ve nĂ« skedarĂ«t dts (devicetree) pĂ«r arkitekturĂ«n Aarch64. ĂshtĂ« shtuar njĂ« version primitiv i ngarkesĂ«s sĂ« firmuerave qĂ« nuk jep paralajmĂ«rime dhe kĂ«rkesa (nowait-nowarn). ĂshtĂ« shtuar kodi pĂ«r identifikimin e primitiveve tĂ« ngarkesĂ«s sĂ« firmuerave nĂ« kodin e shkruar nĂ« gjuhĂ«n Rust.
Burimi: opennet.ru
