Pas dy muaj zhvillimi, Linus Torvalds prezantoi lëshimin e kernelit Linux 6.6. Disa nga ndryshimet më të dukshme përfshijnë: planifikuesin e ri EEVDF; mekanizmin e stack-ut të fshehtë për mbrojtje nga exploit-et; mbështetje për fs-verity në OverlayFS; implementimin e kuotave dhe xattr në tmpfs; përgatitjen e online fsck në XFS; forcimin e përndjekjes së eksportit të simboleve "GPL-only"; mbështetje për socketet rrjet në io_uring; rastësinë e memories në kmalloc(); shpallja e ReiserFS si e vjetruar; shtimi i primitivave për krijuesin Vulkan NVK në Nouveau.
Në versionin e ri janë përfshirë 15291 korrigjime nga 2058 zhvillues, madhësia e patch-it është 39 MB (ndryshimet prekin 14844 skedarë, janë shtuar 553359 rreshta kodi, janë eliminuar 284012 rreshta). Në lëshimin e kaluam ishin 14674 korrigjime nga 2016 zhvillues, madhësia e patch-it ishte 78 MB. Rreth 44% e të gjitha ndryshimeve të paraqitura në 6.6 lidhen me drejtuesit e pajisjeve, rreth 17% e ndryshimeve janë në lidhje me përditësimin e kodit specifik për arkitekturën e harduerit, 11% janë të lidhura me grupe të rrjetit, 4% me sistemet e skedarëve dhe 3% me nën-sistemet e brendshme të kernelit.
Kryesore risitë në kernelin 6.6:
- Kujtesa dhe shërbimet sistemore
- Është realizuar një planifikues i ri EEVDF (Earliest Eligible Virtual Deadline First), i cili zëvendëson planifikuesin CFS (Completely Fair Scheduler), i cili ishin në dispozicion që nga kernel 2.6.23. Plani i ri, në zgjedhjen e procesit të ardhshëm për të transferuar ekzekutimin, merr parasysh proceset që nuk kanë marrë burime procesori ose që kanë marrë tepër shumë kohë procesori. Në rastin e parë, forcohen transferi i kontrollit te procesi, ndërsa në rastin e dytë, përkundrazi, shtyhet. Planifikuesi i vjetër CFS përdorte heuristikë dhe atraktive të hollësishme për të përcaktuar proceset që kërkonin vëmendje të veçantë, ndërsa plani i ri i ndjek ata më qartë dhe nuk kërkon rregullim të hollë. Pritet që EEVDF të ulë vonesat në ekzekutimin e detyrave me të cilat CFS kishte probleme në planifikim.
- Janë bërë ndryshime në trajtimin e simboleve të brendshme të kategorisë "GPL-only", të fokusuara në pengimin e përdorimit nga modulat private të mbështjellësve GPL për të përshkuar kufizimet në qasjen në nën-sistemet e kernelit, të cilat lejojnë vetëm kodin nën licencën GPL. Në funksionin symbol_get() për modulat private është ndaluar kërkimi i simboleve të markuara si GPL-only, dhe përkundrazi, modulat GPL nuk do të jenë në gjendje të gjejnë simbolet e eksportuara nga modulat private.
- Janë shtuar konfigurime të reja për radhët e punës (unbound workqueue) për të përmirësuar efektivitetin e ri- përdorimit të caches së procesorit në sistemet e mëdha, që kanë disa caches të nivelit të tretë (L3). Ngjarja gjithashtu përfshin utilitarin tools/workqueue/wq_dump.py për të kontrolluar konfigurimin aktual të radhëve të punës.
- Në nën-sistemin io_uring është shtuar mbështetje fillestare për operacionet dhe komandat specifike për socketet rrjet. Është shtuar sysctl io_uring_disabled për të çaktivizuar io_uring në nivel sistemi. Në io_uring gjithashtu është përshpejtuar ndjeshëm hyrja/dalja e drejtpërdrejtë (Direct I/O) në mënyrë asinkrone. Rritja e kapaciteteve dhe ulja e vonesave gjatë ekzekutimit të operacioneve të hyrje-daljes pas ndryshimeve arrin deri në 37%.
- Për arkitekturën PA-RISC është realizuar një JIT-kompilator për BPF.
- Në konfigurimin /sys/devices/system/cpu/smt/control është shtuar mbështetje për parametrat numerikë, që përcaktojnë numrin e proceseve të disponueshme për çdo bërthamë CPU (më parë ishin mbështetur vetëm vlerat "on" dhe "off" për aktivizimin dhe çaktivizimin e mbështetjes për shumëprocesim simetrik). Kjo mundësi e re mund të aplikohet në disa procesorë PowerPC, që mbështesin modalitetin e ngrohjes "hotplug SMT", për aktivizimin selektiv të SMT në bërthama të caktuara gjatë funksionimit.
- Transferimi i ndryshimeve nga dega Rust-for-Linux vazhdon, që lidhen me përdorimin e gjuhës Rust si gjuhë e dytë për zhvillimin e drejtuesve dhe moduleve të kernelit (mbështetja për Rust nuk aktivizohet për defekt dhe nuk e çon Rust në kërkesat e detyrueshme për ndihma ndërtimi për kernelin). Ka kaluar në përdorimin e versioneve Rust 1.71.1 dhe bindgen 0.65.1. Është realizuar caracter 'Zeroable'. Janë shtuar makros procedurale ‘paste!’ dhe ‘#[derive(Zeroable)]’. Është siguruar përputhshmëria me ‘#[pin_data]’. Janë shtuar funksione inicializimi ‘{,pin_}init_array_from_fn()’ dhe metoda ‘{,pin_}chain’. Janë zgjeruar mundësitë e modulit ‘types’. Në kuadër e testimi unit në kunit është shtuar mundësia e ekzekutimit të testeve nga dokumentacioni Rust.
- Shtesa e nën-sistemit «eventfs», e cila lejon të ulni ndjeshëm konsumimin e memorisë në sistemin e gjurmimit, duke eliminuar ruajtjen e strukturave të tepruara të përdorura për paraqitjen e pikave të gjurmimit në sistemin e skedarëve. Më parë, të tilla struktura krijoheshin për të gjitha pikat e gjurmimit, pa marrë parasysh përdorimin e gjurmimit. Me ndihmën e eventfs, të tilla struktura mund të krijohen dinamikisht, vetëm në momentin që nevojiten.
- Zgjerimi i mundësive të utilitarit perf.
- Në skedarin /proc/pid/smaps është shtuar informacioni për diagnozën e efikasitetit të mekanizmit të bashkimit të faqeve të identike të memories (KSM, Kernel Samepage Merging).
- API Frontswap është hequr, e cila lejonte vendosjen e një ndarjeje swap në memorinë që nuk mund të adresohej drejtpërdrejt dhe që nuk ofronte informacion operativ mbi disponueshmërinë e hapësirës së lirë. Ky API përdorej vetëm në zswap, prandaj është vendosur të përdoret drejtpërdrejt kjo funksionalitet në zswap, duke eliminuar shtresa të tepërta.
- Për arkitekturën RISC-V është shtuar mbështetje për aksesin në numëruesit e performancës nga hapësira e përdoruesit dhe mundësia e vendosjes së një dump-i të bllokut pas dështimit në një zonë përtej 4GB.
- Është shtuar mbështetje fillestare për instruksionet ARM SME (Scalable Matrix Extension).
- Është realizuar mundësia e përdorimit të mjeteve të debugimit KDB, KGDB, kcov, KFENCE dhe KASAN në sisteme me arkitekturë LoongArch.
- Është shtuar mbështetje për skedarët për testimin e bllokut në sistemin e integrimit të vazhdueshëm GitLab, e cila përdoret gjatë zhvillimit të drejtuesve grafikë.
- Sistemi i diskut, hyrja/ dalje dhe sistemet e skedarëve
- Në sistemin e skedarëve OverlayFS është shtuar mbështetje për ruajtjen e hash-eve fs-verity në atributin e zgjeruar (xattr) overlay.verity, që mund të përdoret për verifikimin e integritetit dhe autenticitetit të skedarëve në shtresat e ulëta të OverlayFS me ndihmën e hash-eve dhe çelësave kriptografikë. Kështu, në OverlayFS tani përfshihen të gjitha ndryshimet e nevojshme për projektin Composefs për të funksionuar si një shtresë mbështetje mbi FS OverlayFS dhe EROFS.
- Në sistemin e skedarëve XFS është përgatitur realizimi i mundësisë së përdorimit të utilitarit fsck për të kontrolluar dhe rregulluar problemet e zbuluara në mënyrë online, pa shkëputjen e sistemit të skedarëve. Për më tepër, në XFS është realizuar mundësia e përdorimit të foliasve të mëdhenj (folios) në cache-në e faqeve dhe janë shtuar disa optimizime të lidhura me këtë, që kanë lejuar një rritje të dukshme të performancës për disa lloje ngarkesash.
- Në sistemin e skedarëve tmpfs është shtuar mbështetje për atributet e zgjeruara të përdoruesve (user xattrs), input/output të drejtpërdrejtë dhe kuota të lidhura me përdoruesin dhe grupin. Janë stabilizuar zhvendosjet mbi kataloget, që ka zgjidhur probleme me eksportin e tmpfs përmes NFS.
- Në API-në e menaxhimit të montimit, për të rritur sigurinë është shtuar flagu FSCONFIG_CMD_CREATE_EXCL, i cili ndalon ndarjen e superblokut në disa pika montimi (ndalon lidhjen e një ndarjeje në disa pika montimi). Në utilitarin mount, për të aktivizuar këtë flag, është propozuar opsioni «—exclusive».
- Në nën-sistemin VFS është shtuar mbështetje për ndryshimin e menjëhershëm të parametrave të kohës së aksesit dhe ndryshimit (atime, mtime). Më parë, të dhënat për kohën pasqyroheshin me një vonesë të caktuar, që pengonte ndjekjen e aktualitetit të të dhënave në cache në sisteme si NFS (për shkak të vonesës në përcaktimin e ndryshimeve në skedar, sistemi mund të kishte llogaritur gabimisht se të dhënat në cache ishin aktuale). Kjo mundësi e re është e disponueshme për Btrfs, Ext4, tmpfs dhe XFS.
- Në Btrfs është shpallur e vjetruar mekanizmi i ndërtuar për kontrollin e integritetit, i cili aktivizohej në fazën e ndërtimit me parametrin BTRFS_FS_CHECK_INTEGRITY. Ky mekanizëm ka mbetur pa mbështetje, nuk testohet më dhe krijon një ngarkesë shtesë për CPU dhe memorinë. Për më tepër, në Btrfs është optimizuar performanca e kodit të ri të kontrollit të FS (scrub).
- Në sistemin e skedarëve Ext4 janë shtuar kontrollet periodike për përditësimin e superblokut dhe janë përshpejtuar operacionet e alokimit të memories gjatë riparimit në fund të skedarit.
- Në nën-sistemin FUSE është shtuar mbështetje për atributin btime («koha e krijimit»), i cili përcakton kohën e krijimit të inode.
- Është ndaluar ndryshimi i të drejtave të aksesit për lidhjet simbolike.
- Është shtuar thirrja sistemike fchmodat2(), e cila ndryshon nga thirrja sistemike fchmodat() me një argument shtesë për të përcaktuar flagët. Nga flagët, aktualisht mbështeten vetëm AT_SYMLINK_NOFOLLOW dhe AT_EMPTY_PATH, që lejojnë implementimin pa anashkalime në funksionin libc fchmodat() të ndalimit të zgjidhjeve të lidhjeve simbolike dhe mundësinë e përdorimit të descriptorit të skedarit kur përcaktohet një rrugë e zbrazët.
- Në sistemin e skedarëve EROFS (Sistemi i Kthimit të Lexueshëm të Zgjeruar), i dizajnuar për përdorim në pjesë të aksesueshme vetëm në modalitetin e leximit, është shtuar mbështetje për algoritmin e kompresimit Deflate. Për të përshpejtuar kërkimin e atributeve të zgjeruara, është aktivizuar struktura probabiliste bloom filter.
- Është shtuar konfigurimi CONFIG_BUFFER_HEAD, i cili lejon përmbledhjen e bërthamës pa përdorur strukturën buffer_head. Në ndërtimin pa buffer_head është e mundur të përdoren pajisje bllokuese dhe disa sisteme skedarësh, për shembull, xfs, btrfs, cramfs, erofs dhe squashfs.
- Në driverin e pajisjeve bllokuese ublk, i cili lejon që logjika specifike të përcillet në anën e procesit në hapësirën e përdoruesit, është shtuar mbështetje për pajisjet e ruajtjes të zonës (ndarja në zona grupesh bllokesh ose sektorësh, në të cilat lejohet vetëm shtimi i të dhënave në mënyrë të rregullt me përditësimin e të gjithë grupit të bllokëve).
- Implementimi i sistemit të skedarëve ReiserFS është transferuar nga kategoria e mbështetur në atë të vjetruar (Obsolete). Ndërprerja e mbështetjes për ReiserFS është planifikuar për vitin 2025. Arsyetimi për transferimin e ReiserFS në kategorinë e vjetruar përfshin stagnimin në mbështetje të këtij FS, problemin e pazgjidhur të vitit 2038, mungesën e mundësive për të siguruar qëndrueshmëri dhe dëshirën për të reduktuar kostot e mbështetjes për ndryshime të zakonshme në sistemet e skedarëve, të lidhura me mbështetje të re për API për montim, iomap dhe folios.
- Në serverin NFS është implementuar një mekanizëm delegimi të operacioneve të shkruar për NFSv4, duke rritur efikasitetin e kashimit të shkruar të skedarëve për të reduktuar trafikun. Është përfshirë mbështetje për operacionin READ_PLUS, të cilin e përcakton NFS 4.2.
- Sistemiti i skedarëve Ceph është shtuar mbështetje për fscrypt.
- Virtualizimi dhe siguria
- Është shtuar implementimi i mekanizmit Shadow Stack, i cili lejon bllokimin e funksionimit të shumë eksploitëve, duke përdorur mundësitë harduerike të procesorëve Intel për të mbrojtur nga ri-shkrimi i adresës së rikthimit nga funksioni në rast të mbushjes së buffers në heap. Thelbi i mbrojtjes është që pas kalimit të kontrollit në funksion, adresa e rikthimit ruhet nga procesori jo vetëm në heapin e zakonshëm, por edhe në një 'stack' të veçantë të 'hijet', i cili nuk mund të ndryshohet drejtpërdrejt. Para daljes nga funksioni, adresa e rikthimit nxirret nga stack-u i hijes dhe krahasohet me adresën e rikthimit të stack-ut kryesor. Mospërputhja e adresave çon në gjenerimin e një përjashtimi, duke bllokuar situatat ku eksploitit arriti të ri-shkruajë adresën në stack-un kryesor. Stack-u harduerik i hijes mbështetet vetëm në ndërtimet 64-bit, ndërsa në ndërtimet 32-bit përdoret emulimi i tij programor.
- Shtuar mbështetje për ndërtimin nga kompajleri Clang me mënyrën e mbrojtjes CFI (Control Flow Integrity), e cila bllokon shkeljet e rendit të zakonshëm të realizimit (control flow) si pasojë e përdorimit të eksploitëve që ndryshojnë treguesit e funksioneve të ruajtura në memorie.
- Për arkitekturën RISC-V është përfshirë rastësia e vendosjes së bërthamës në memorie gjatë ngarkimit.
- Në sistemin e thirrjes seccomp() është shtuar flaka SECCOMP_USER_NOTIF_FD_SYNC_WAKE_UP, e cila lejon përpunimin e ngjarjeve nga proceset e përcjella në modin sinkron për një funksionim më efikas të planifikuesit të detyrave.
- Në funksionin kmalloc() është siguruar rastësia e slab caches, duke e bërë më të vështirë shfrytëzimin e dobësive në bërthamë.
- Nga opsionet e lidhura me aktivizimin e sistemit të kontrollit të detyrueshëm SELinux, është hequr përmendja e Agjencisë së Sigurisë Kombëtare të SHBA. Duke qenë se projekti është zhvilluar për 20 vjet nën mbikëqyrjen e komunitetit dhe mbahet nga mbajtës të pavarur, është vendosur të kalojmë në përdorimin e emrit 'SELinux' në vend të 'NSA SELinux' në komente dhe dokumentacion në Kconfig (për shembull, shpjegimi për parametrin e ndërtimit SECURITY_SELINUX është ndryshuar nga 'NSA SELinux Support' në 'SELinux Support').
- Në sistemin e thirrjes userfaultfd() është shtuar operacioni UFFDIO_POISON, i cili lejon etiketimin e faqeve të memories si 'të helmuara' (poisoned), që mund të përdoret për të transferuar faqet e dëmtuara të memories gjatë migrimit makinave virtuale nga një sistem në tjetrin.
- Në nën-sistemin VFIO është shtuar një ndërfaqe e re simbolike (/dev/vfio/devices/vfioX) për menaxhimin e pajisjeve VFIO, duke lejuar përdoruesin të hapë drejtpërdrejt skedarin me pajisjen, pa u drejtuar në ndërfaqen grupore të vjetruar /dev/vfio/$groupID.
- Në serveri NFS ka ndaluar mbështetje për llojet e vjetruara të enkriptimit Kerberos, të cilat përdorin algoritmet DES dhe 3DES.
- Kur starton në ambientin e hipervizorit Hyper-V, është shtuar mbështetje për sisteme gazmore të mbrojtura duke përdorur teknologjinë AMD SEV-SNP (Secure Nested Paging) dhe Intel TDX (Trusted Domain Extensions).
- Kur ndërtohet bërthama në modin 'W=1', çdo ndërtim përfshin paralajmërimet 'W=format-overflow', 'W=format-truncation', 'W=stringop-overflow' dhe 'W=restrict'. Për çdo ndërtim është aktivizuar paralajmërimi 'W=enum-conversion'.
- Sistemi i rrjetit
- Zhvillimi i familjes së adresave AF_XDP (eXpress Data Path) është zgjeruar me mundësinë e punës me paketa të ruajtura në disa bufe. Për shembull, një buf mund të përmbajë titullin e paketës dhe një tjetër të dhëna, ose në një zinxhir të disa bufesh mund të vendosen jumbo-framet të mëdha Ethernet. Programet që përdorin soket AF_XDP tani mund të pranojnë dhe dërgojnë paketa menjëherë nga disa bufe.
- Në nënskatështin BPF është shtuar mbështetje për defragmimin e paketave IPv4 dhe IPv6, si dhe mundësia për filtrimin e paketave të fragmentuara.
- Në BPF është shtuar një trajtues i ri update_socket_protocol, i cili lejon programet BPF të ndryshojnë protokollin e kërkuar për soket e rinj. Për shembull, programi BPF mund të zëvendësojë transparencërisht protokollin TCP me MPTCP (multipath TCP) për optimizimin e trafikut të aplikacioneve. Po ashtu, BPF ka fituar mbështetje për menaxhimin e rrugës së pakave nëpërmjet rrugëve të ndryshme në MPTCP.
- Shënimi eksperimental është hequr nga moduli ksmbd, që ofron një implementim të serverit të skedareve në nivelin e bërthamës mbi protokollin SMB3. është shtuar mbështetje për bashkimin e operacioneve të leximit (kërkesat "read compound").
- Pajisjet
- Në nënskatështin DRM (Direct Rendering Manager) janë bërë modifikime të nevojshme për funksionimin efikas të drejtuesit të hapur NVK me implementimin e API-së grafike Vulkan për kartat grafike NVIDIA. Fillimisht, drejtuesi DRM Nouveau ishte projektuar për implementimin e OpenGL, prandaj i mungojnë primitivët e nevojshëm për funksionimin efikas të drejtuesve Vulkan, për shembull, mbështetje për objekte të sinkronizuara dhe menaxhimin e hapësirës virtuale të adresave.
- Në drejtuesin AMDGPU është implementuar mbështetje për SDMA 6.1.0, HDP 6.1, SMUIO 14.0, PSP 14.0, IH 6.1 dhe GFX 9.4.3. është riparuar kodi i ngarkesës së firmware PSP (Platform Security Processor). Mbështetje për teknologjinë e sinkronizimit adaptiv FreeSync është zgjeruar (është shtuar mbështetje për Freesync Panel Replay V2).
- Në drejtuesin i915 është vazhduar implementimi i mbështetjes për çipat Intel Meteor Lake. është përmirësuar mbështetja për teknologjinë e mbrojtjes kundër kopjimit HDCP (High-bandwidth Digital Content Protection). është riparuar kodi për ndërveprimin me ekranin.
- Opcioni për të çaktivizuar ngarkimin e mikro-kodit në fazën e ndërtimit është hequr nga Kconfig — MICROCODE_INTEL dhe MICROCODE_AMD. Bërthama tani gjithmonë ndërtohet me kodin e ngarkesës së mikro-kodit për sistemet x86, por ngarkimi real i mikro-kodit mund të çaktivizohet duke shtuar parametrin e bërthamës 'dis_ucode_ldr'.
- Në nënskatështin audio është shtuar mundësia për menaxhimin e pajisjeve audio të lidhura nëpërmjet nënskatështit IIO (Industrial I/O).
- Është shtuar mbështetje për ndërfaqet audio Intel LunarLake, Intel ArrowLake dhe AMD ACP5x, kodekët Cirrus Logic CS42L43, Realtek RT1017 dhe TI TAS2781, si dhe amplifikatorët Cirrus Logic CS35L56 dhe winic aw88261. Është shtuar mbështetje ASoC AMD Van Gogh.
- Është shtuar drejtuesi USB MIDI 2.0 Gadget, që imiton ndërfaqen USB MIDI 2.0, të lidhur me pajisjen ALSA UMP rawmidi.
- Është shtuar mbështetje për kontrollet Ethernet të Broadcom ASP 2.0 dhe Marvell 88Q2XXX.
- Është shtuar mbështetje për panelët Visionox R66451, TDO TL050HDV35, KD070FHFID015, Inanbo T28CP45TN89 dhe EDT ET028013DMA, si dhe për drejtuesit e ekraneve të Loongson dhe drejtuesit e ekranit të prekur Azoteq IQS7222D/IQS7210A/7211A.
- Është shtuar mbështetje për ARM SoC Qualcomm SM4450 (Snapdragon 4 Gen 2), TI AM62P5, Intel Agilex5, Qualcomm ipq5018, AN400 (Amlogic T7)
- Është shtuar mbështetje për platformat ARM Samsung Galaxy Tab 3 8.0, FriendlyElec NanoPC T6, Amlogic A311D2, Khadas Vim4, Xiaomi SM7125, Facebook Yosemite 4, Orange Pi Zero 3, Radxa ROCK 4SE.
Në të njëjtën kohë, Fondi Latino-amerikan i Softuerit të Lirë ka formuar një version të plotë të lirë të bërthamës 6.6 — Linux-libre 6.6-gnu, i pastruar nga elementët e firmware dhe drejtuesve që përmbajnë komponente ose copa kodi jo të lira, ose ku fushëveprimi i tyre kufizohet nga prodhuesi. Në lëshimin 6.6, kodi i pastrimit të blobëve është azhurnuar në drejtues të ndryshëm dhe nënskatështet, për shembull, në driverët TI gigabit RU ethernet, MediaTek 792x wifi, Cirrus Logic cs42l43 mfd, cs35l56 HD-audio dhe aw88261 SoC. Është bërë pastrim i emrave të blobëve në skedarët dts për arkitekturën Aarch64. janë fshirë blobet në drejtuesit e rinj ivpu, në drejtuesit bluetooth, në drejtuesin e ekranit të prekur dhe në koduesin/dekoduesin Qualcomm Venus V4L2.
Burimi: opennet.ru
