Pas dy muaj zhvillimi, Linus Torvalds prezantoi versionin e kernelit Linux 6.11. Ndër ndryshimet më të dukshme janë: mbështetja për operacione atomike shkrimi në nivelin e bllokut, mbështetje për operacionet bind() dhe listen() në io_uring, një mekanizëm të ri bllokimi për procesorët e ndërprerjeve, mundësia për të shkruar në skedarët ekzekutivë të pasqyruar në memorie, mbështetje për zhvillimin e drejtuesve të pajisjeve bllok në gjuhën Rust, optimizimi i thirrjes getrandom(), dhe një zbatim i ri i AES-GCM.
Në versionin e ri janë pranuar 15130 korrigjime nga 2078 zhvillues, madhësia e patch-it është 85 MB (ndryshimet prekin 13282 skedarë, janë shtuar 985857 rreshta kodi, janë fshirë 268915 rreshta). Në botimin e kaluar ishin 14564 korrigjime nga 1989 zhvillues, madhësia e patch-it ishte 41 MB (dyfish më e vogël se patch-i për kernelin 6.11). Rreth 46% e të gjitha ndryshimeve të paraqitura në 6.11 lidhen me drejtuesit e pajisjeve, rreth 17% e ndryshimeve kanë të bëjnë me përmirësimin e kodit të spesifik për arkitekturën harduerike, 10% lidhen me pilën rrjet, 5% me sistemet e skedarëve dhe 3% me sistemet e brendshme të kernelit.
Novitet kryesor në kernelin 6.11:
- Sistemi i disqeve, hyrja/ dalje dhe sistemet e skedarëve
- ĂshtĂ« realizuar mbĂ«shtetje pĂ«r operacionet atomike tĂ« shkrimit nĂ« nivelin e bllokut, ku ose i gjithĂ« seti i bllokĂ«ve tĂ« specifikuar shkruhet nĂ« ruajtĂ«s, ose asnjĂ« nga blloqet, gjĂ« qĂ« lejon mbrojtjen nga situatat kur pas njĂ« dĂ«shtimi tĂ« pajisjes shkruhet vetĂ«m njĂ« pjesĂ« e blloqeve, ndĂ«rsa nĂ« pjesĂ«n tjetĂ«r mbetet informacioni i vjetĂ«r. PĂ«r tĂ« aktivizuar modin atomik tĂ« shkrimit, nĂ« thirrjen sistemike pwritev() Ă«shtĂ« shtuar flaka RWF_ATOMIC. Informacionin mbi mbĂ«shtetjen pĂ«r shkrimin atomik (atomic_write_unit_min, atomic_write_unit_max dhe atomic_write_segments_max) nĂ« lidhje me skedarĂ«t e veçantĂ« mund ta merrni pĂ«rmes funksionit statx().
- ĂshtĂ« ofruar mbĂ«shtetje pĂ«r shkrimin nĂ« skedarĂ«t ekzekutivĂ« tĂ« lidhur me proceset nĂ« funksion. MĂ« parĂ«, si nĂ« sistemet tjera Unix-podobe, kernel-i jepte njĂ« gabim gjatĂ« pĂ«rpjekjes pĂ«r tĂ« shkruar nĂ« njĂ« skedar ekzekutiv tĂ« njĂ« procesi tĂ« nisur. Ky kufizim Ă«shtĂ« hequr, sepse Ă«shtĂ« i paarsyeshĂ«m nĂ« praktikĂ«.
- ĂshtĂ« realizuar mundĂ«sia e zhvillimit tĂ« drejtuesve tĂ« pajisjeve bllok nĂ« gjuhĂ«n Rust. Si shembull, nĂ« kernel Ă«shtĂ« shtuar drejtuesi rnull, i cili Ă«shtĂ« njĂ« ekuivalent i drejtuesit null_blk, i shkruar nĂ« gjuhĂ«n Rust.
- Në sistemin e skedarëve Btrfs, opsioni i montimit "rescue=" implementon mbështetje për modet e reja "ignoremetacsums" dhe "ignoresuperflags", të cilat mund të përdoren për të transferuar disa verifikime në hapësirën e përdoruesit gjatë rikuperimit të sistemit të skedarëve pas dështimit. Realizimi i operacionit të kthimit dinamik të grupeve të bllokimeve është rishikuar për të përjashtuar situatën e mungesës së hapësirës së lirë në kushte të mbushjes së pjesshme të sistemit të skedarëve.
- Në sistemin e skedarëve ntfs3, është implementuar mbështetje për atributet "compressed" dhe "immutable", të cilat përcaktojnë skedarë të kompresuar dhe të papërshtatshëm.
- Në FSh F2FS dhe Ext4, përpunimi i emrave të skedarëve pa marrë parasysh regjistrin e simboleve (casefold) është përmirësuar përmes ruajtjes së emrave në formën e vargjeve qstr pa konvertime të panevojshme të regjistrit.
- Në FSh Ext4, realizimi i funksionit jbd2_transaction_committed është optimizuar për të rritur performancën në ruajtësit shumë të shpejtë (në teste është vërejtur një rritje e operacioneve të përpunuara për sekondë duke arritur deri në 20%).
- Në thirrjen e sistemit statx() është lejuar kalimi i treguesit NULL në vend të një vargu të zbrazët me rrugën e skedarit, në rast se është vendosur flagu AT_EMPTY_PATH.
- Në thirrjen e sistemit open_by_handle_at() janë lehtësuar kontrollet e të drejtave të aksesit në skedar, kur mungojnë autorizimet CAP_DAC_READ_SEARCH për të kërkuar në hapësirën e emrave fillestar. Më parë, nevoja për të pasur autorizimet CAP_DAC_READ_SEARCH në hapësirën e emrave fillestar nuk lejonte përdorimin e thirrjes së sistemit open_by_handle_at() në kontenierë.
- Janë zgjeruar mundësitë e thirrjeve të sistemit listmount() dhe statmount(). Në listmount() është shtuar flagu LISTMOUNT_REVERSE për të shfaqur përmbajtjen e tabelës së pikave të montimit në rendin e kundërt (shënimet më të reja në maj). Në statmount() është implementuar dalja e opsioneve të vendosura gjatë montimit të FSh. Në të dy thirrjet e sistemit është lejuar operimi në mungesë të aksesit në hapësirën e emrave fillestar (kur ka vetëm akses në hapësirën lokale ose të jashtme të emrave).
- NĂ« FSh Bcachefs Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r rikuperimin automatik dhe tĂ« transparencĂ«s tĂ« tĂ« dhĂ«nave problematike, duke pĂ«rdorur kodet e rikthimit tĂ« gabimeve â nĂ«se gjatĂ« leximit ndodh njĂ« gabim input/output ose Ă«shtĂ« llogaritur njĂ« mosmbetje e kontrolit tĂ« shumĂ«s, blloku problematik i tĂ« dhĂ«nave do tĂ« rishkruhet automatikisht nĂ«se ka tepĂ«rt pĂ«r rikuperimin e tij.
- Memorie dhe shërbime sistemike
- NĂ« pĂ«rbĂ«rje janĂ« pranuar patch-e me implementimin e mekanizmit tĂ« ri tĂ« bllokimit tĂ« trajtuesve tĂ« ndĂ«rprerjeve programore (BH, bottom-half), i cili siguron bllokimin e strukturave tĂ« tĂ« dhĂ«nave tĂ« pĂ«rdorura, por nĂ« tĂ« njĂ«jtĂ«n kohĂ« nuk shkakton bllokimin e ekzekutimit paralel tĂ« kodit qĂ« nuk lidhet me to. ĂshtĂ« vĂ«nĂ« re se ky ndryshim ka lejuar jo vetĂ«m reduktimin e vonesave pĂ«r bĂ«rthamĂ«t qĂ« punojnĂ« nĂ« modin realtime, por gjithashtu ka rritur performancĂ«n e bĂ«rthamave tĂ« zakonshme (pĂ«r shembull, pĂ«r disa lloje ngarkesash, Ă«shtĂ« vĂ«rejtur njĂ« rritje prej 14.5% nĂ« performancĂ«n e nĂ«nĂ«s sĂ« rrjetit).
- Në nën sistemin e hyrjes/daljes asinkrone io_uring është shtuar mbështetje për operacione për implementimin e funksioneve bind() dhe listen(), të përdorura për krijimin e soketeve rrjetë që pranojnë lidhje.
- Shtuar një grup operacionesh ioctl për FS-në pseudo NSFS (NameSpace FS), e cila përdoret për të punuar me hapësirat e emrave. Nën grupet e reja ioctl lejojnë transformimin e identifikuesve të proceseve dhe grupeve të rrjedhave midis hapësirave të ndryshme të identifikuesve të proceseve (PID namespace). Operacione të ngjashme ioctl, të cilat lejojnë përcaktimin e përshkruesve të skedarëve të proceseve në hapësirat e veçanta të emrave në bazë të identifikuesve pidfd, gjithashtu janë shtuar në pseudo-FS-në pidfd.
- PĂ«r BPF-programet Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r njĂ« iterator tĂ« ri pĂ«r tĂ« punuar me maskat e bajtĂ«ve, i cili mund tĂ« pĂ«rdoret, pĂ«r shembull, pĂ«r tĂ« shkuar pĂ«rmes bajtĂ«ve tĂ« veçantĂ« nĂ« hapĂ«sirat e memories, siç Ă«shtĂ« cpumask. ĂshtĂ« shtuar njĂ« mekanizĂ«m pĂ«r dĂ«rgimin e njoftimeve pĂ«r proceset nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit pĂ«r shkĂ«putjen (detach/unregister) e objektit struct_ops. Klasat e reja tĂ« tipave qĂ« mund tĂ« pĂ«rdoren nĂ« Arrays janĂ« zgjatur (pĂ«r shembull, mund tĂ« shpallim Arrays me elemente me tipe kptr, bpf_rb_root dhe bpf_list_head). Ă«shtĂ« propozuar njĂ« mekanizĂ«m mĂ« tĂ« besueshĂ«m Split BTF (BPF Type Format), qĂ« pĂ«rdoret pĂ«r verifikimin e tipeve nĂ« pseudo-kod BPF.
- Shtuar një nën sistem që lejon organizimin e furnizimit me energji për pajisjet në një rend të caktuar, në rast se një pajisje duhet të aktivizohet para një tjetre (për shembull, gjatë aktivizimit të çipeve wireless në platformat Qualcomm).
- Shtuar moduli 'Sloppy logic analyzer', i cili lejon krijimin e analizatorëve të thjeshtë logjik të sinjalit, që përdorin GPIO dhe punojnë në një bërthamë të veçantë të CPU.
- E shtuar mbështetje për konstantet në kohë ekzekutimi, të cilat mund të përdoren në vend të variablave, të inicializuar një herë. Për shembull, konstantet në kohë ekzekutimi mund të aplikohen në vend të variablave që ruajnë treguesin dhe madhësinë për cache-in e dentry. Këto variabla vendosen gjatë ngarkimit dhe më pas kurrë nuk ndryshojnë. Ideja është të zëvendësohen vlerat e këtyre variablave drejtpërdrejt në instruksionet në kod, duke eliminuar kostot lidhur me manipulimet e treguesve.
- Vijon transferimi i ndryshimeve nga dega Rust-for-Linux, në lidhje me përdorimin e gjuhës Rust si gjuhë të dytë për zhvillimin e drejtuesve dhe moduleve të bërthamës (mbështetje për Rust nuk është aktive nga e drejta dhe nuk rezulton në përfshirjen e Rust në varësitë e detyrueshme të ndërtimit të bërthamës). Shtuar mbështetje për lëshimin e Rust 1.80 (si version minimal vazhdon të mbetet Rust 1.78). Përveç mjeteve të mëparshme për zhvillimin e drejtuesve të pajisjeve bllokuese, në versionin e ri janë shtuar abtraksione për ngarkimin e firmware, aksesin në hapësirën e përdoruesit (uaccess) dhe punën me strukturën "page".
- Për sistemet x86-64 është realizuar një thirrje e re sistematike uretprobe(), e cila optimizon funksionimin e mekanizmit të gjurmimit uretprobe, i cili lejon të monitorohet vlera e kthyere nga funksionet në aplikacionet e hapësirës së përdoruesit.
- Shtuar parametra të komandës së bërthamës: "reserve_mem" për rezervimin e një zone të emëruar të memories gjatë ngarkimit dhe "ramoops.mem_name" për t'u përdorur në pstore-in e memories, e krijuar përmes reserve_mem.
- Në kontrollorin e memories bazuar në cgroup, në skedarin memory.reclaim, përmes të cilit përcaktohen cilësimet e derdhjes së memories, është shtuar parametri "swappiness", që lejon ndryshimin e balansit midis derdhjes së faqeve të anonime të memories në seksionin e ndihmës dhe çlirimin e faqeve të memories, të zënë për cache-in e skedarëve.
- Shtuar një ndërfaqe ioctl PROCMAP_QUERY për një kërkim më efikas të zonave virtuale të memories (Virtual Memory Area) në /proc/PID/maps.
- Në thirrjen sistematike mmap() është shtuar një flamur MAP_DROPPABLE për të kërkuar memorien që kurrë nuk do të ishte hequr në seksionin e ndihmës, ndërsa në rast të mungesës së memories mund të hiqet.
- Për arkitekturën ARM64 është realizuar mbështetje për lidhje të nxehtë (kalimin në mënyrat online/offline) të CPU-ve fizike dhe virtuale në sisteme 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 plug-in-in GCC STACKLEAK (i cili ekzekuton inicializimin e të gjitha variablave të ruajtur në stack për të parandaluar rrjedhjen e informacionit nga bërthama përmes variablave të pa-inicializuar, të cilat mund të përmbajnë mbetje të të dhënave të ruajtura më parë në stack).
- Shtesa e mekanizmit të hartës së fikshme të memories EFI u eliminua gjatë fazës së ngarkimit. Ky mekanizëm nuk është përdorur në praktikë dhe pengonte zhvillimin në fushën e ekzekutimit sekret. makinat virtuale.
- Mbështetje për platformën PowerPC 40x është ndërprerë.
- KĂ«rkesat pĂ«r versionin e GNU Make janĂ« rritur â pĂ«r tĂ« ndĂ«rtuar bĂ«rthamĂ«n kĂ«rkohet sĂ« paku njĂ« version i lĂ«shuar i GNU Make, i publikuar nĂ« vitin 2013.
- Virtualizimi dhe siguria
- Janë integruar patches që shpejtësisht (deri në 15 herë) përshpejtojnë marrjen e numrave të rastësishëm përmes thirrjes së sistemit getrandom(). Optimizimi bazohet në përdorimin e mekanizmit vDSO (objekti dinamik ndarës virtual), që lejon që trajtimi i thirrjes së sistemit të kalojë nga bërthama në hapësirën e përdoruesit dhe të shmangë kalimet e kontekstit. Ngarkimi i realizimit të thirrjes së sistemit në hapësirën adresore të procesit direkt nga bërthama.
- Për sistemet x86-64 është përfshirë një realizim i ri i algoritmit të enkriptimit AES-GCM, që mbështet përdorimin e instruksioneve vektoriale VAES, VPCLMULQDQ dhe AVX512/AVX10 për të përshpejtuar llogaritjet. Në testet e kryera, rritja e performancës pas kalimit në realizimin e ri arrin në 156%. Realizimi assembler i AES-GCM është rishkruar plotësisht me përfaqësimin e korrektësisë, performancës, madhësisë dhe dokumentimit të plotë të kodit.
- ĂshtĂ« realizuar mundĂ«sia e ekzekutimit tĂ« bĂ«rthamĂ«s si njĂ« sistem mysafir nĂ« mjedise tĂ« virtualizuara qĂ« pĂ«rdorin zgjerimin e procesorĂ«ve AMD SEV-SNP (PĂ«rshpjegimi i SigurisĂ« sĂ« Struktures sĂ« Paktu tĂ« Ndarjes), i cili Ă«shtĂ« i dedikuar pĂ«r tĂ« siguruar punĂ« tĂ« sigurt me tabelat e brendshme tĂ« pagesave tĂ« memories. PĂ«r izolimin e shtuar tĂ« qasjes nĂ« burime nga makinat virtuale, mund tĂ« pĂ«rdoret moduli SVSM (Moduli i ShĂ«rbimeve tĂ« VM tĂ« Sigurta Linux). NĂ« hipervizor KVM Ă«shtĂ« shtuar mbĂ«shtetje fillestare pĂ«r ekzekutimin e sistemeve mysafire, tĂ« mbrojtura me AMD SEV-SNP.
- ĂshtĂ« shtuar njĂ« alokator i veçantĂ« pĂ«r bucket slab, i aktivizuar pĂ«rmes parametrave CONFIG_SLAB_BUCKETS dhe qĂ« siguron mbrojtje nga sulmet qĂ« pĂ«rdorin teknikĂ«n "heap spraying."
- Në hipervizorin KVM u shtua thirrja ioctl për rezervimin e parakohshëm të memories për sistemin e mirëpritës deri në nisjen e tij efektive.
- Sistemi rrjetor
- U shtua parametri sysctl net.tcp_rto_min_us, i cili mundëson konfigurimin e kohës minimale të ripërsëritjes për soket TCP.
- Në utilitarin ethtool u shtua mundësia për optimizimin e konfigurations së trajtuesve të ndërprerjeve për ndërfaqet rrjetërore që përdorin ndërfaqen Net DIM.
- Pajisje
- Në driverin AMDGPU u aktivizua mbështetje fillestare për GPU-në AMD RDNA4 ("GFX12"). U shtua mbështetje për teknologjitë DCN 4.0.x, GC 12.0, GMC 12.0, SDMA 7.0, MES12 dhe MMHUB 4.1.
- Punimet po vazhdojnë mbi driverin drm (Direct Rendering Manager) Xe për GPU-të e bazuara në arkitekturën Intel Xe, e cila përdoret në kartat grafike Intel të familjes Arc dhe grafikën e integruar që fillon nga procesorët Tiger Lake. U përmirësua mbështetja për GPU-të e bazuara në mikroarkitekturën Battlemage, Arrow Lake dhe Lunar Lake.
- Në subsistemin DRM (Direct Rendering Manager) u ri-shkrua trajtuesi i parametrave EDID (Extended Display Identification Data) të paraqitur nga monitori.
- Në driverin i915 u shtua mbështetje për GPU-në Battlemage Xe2 dhe u aktivizua në mënyrë të paracaktuar moda CMRR (Content Match Refresh Rate).
- Në driverin DRM msm (GPU Qualcomm Adreno) u shtua mbështetje për platformën SM7150 dhe GPU-në X185 dhe a505.
- U shtua mbështetje për panelet ekranore 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ë subsistemin audio u shtua 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.
- U futĂ«n njĂ« sĂ«rĂ« pĂ«rmirĂ«simesh pĂ«r mbĂ«shtetje tĂ« ARM SoC Snapdragon X Elite, i cili pĂ«rdor CPU-nĂ« e vet 12-bĂ«rthamore Qualcomm Oryon dhe GPU-nĂ« Qualcomm Adreno. Ăipi ka pĂ«r qĂ«llim pĂ«rdorimin nĂ« laptopĂ« dhe PC, dhe e tejkalon nĂ« shumĂ« teste performancĂ«n e çipĂ«ve Apple M3 dhe Intel Core Ultra 155H. Ndryshimet e pĂ«rfshira nĂ« kernelin 6.11 lidhen me mbĂ«shtetje pĂ«r GPU-nĂ« Adreno X1-85 dhe menaxhimin e 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.
NjĂ«kohĂ«sisht, Fondi Latinoamerikan pĂ«r Softin e LirĂ« formoi variantin plotĂ«sisht tĂ« lirĂ« tĂ« bĂ«rthamĂ«s 6.11 â Linux-libre 6.10-gnu, i pastruar nga elementet e firmave dhe drejtuesve qĂ« pĂ«rmbajnĂ« komponentĂ« tĂ« pa lirĂ« ose pjesĂ« kodi, pĂ«rdorimi i tĂ« cilave Ă«shtĂ« i kufizuar nga prodhuesi. NĂ« publikimin 6.11, kodi pĂ«r pastrimin e blob-eve nĂ« drejtuesit mdgpu, adreno, vgxy61, atomisp, btnxpuart, prueth dhe tas2781 Ă«shtĂ« pĂ«rmirĂ«suar. ĂshtĂ« kryer pastrimi i drejtuesve tĂ« rinj amdgpu isp, tn40, rtl8192du, cs40l50, rt1320 dhe pcie-rcar-gen4. ĂshtĂ« kryer pastrimi i emrave tĂ« blob-eve nĂ« skedarĂ«t dts (devicetree) pĂ«r arkitekturĂ«n Aarch64. ĂshtĂ« shtuar njĂ« version primitiv pĂ«r ngarkimin e firmave qĂ« nuk jep paralajmĂ«rime dhe kĂ«rkesa (nowait-nowarn). ĂshtĂ« shtuar kodi pĂ«r identifikimin e primitivĂ«ve tĂ« ngarkimit tĂ« firmave nĂ« kodin e shkruar nĂ« gjuhĂ«n Rust.
Burimi: opennet.ru
