Pas dy muaj zhvillimi, Linus Torvalds prezantoi versionin e kernel-it Linux 5.12. Ndër ndryshimet më të dukshme janë: mbështetje për pajisjet e zonuara bllok në Btrfs, mundësia e mapimit të identifikatorëve të përdoruesve për FS, pastrimi i arkitekturave të vjetra ARM, modaliteti "i paduruar" i shkruarjes në NFS, mekanizmi LOOKUP_CACHED për përcaktimin e rrugëve të skedarëve nga cache, mbështetje për instruksionet atomike në BPF, sistemi i debuggimit KFENCE për identifikimin e gabimeve gjatë përdorimit të memories, një modalitet NAPI polling në rrjetin e kernel-it që punon në një thread të ndarë, hipervizori ACRN, mundësia për të ndryshuar në fluks modelin e preemption në planifikuesin e detyrave dhe mbështetje për optimizime LTO gjatë ndërtimit në Clang.
Në versionin e ri janë pranuar 14,170 (në versionin e kaluar 15,480) korrigjime nga 1,946 (1991) zhvillues, madhësia e patch-it është 38 MB (ndryshimet prekin 12,102 (12,090) skedarë, shtuar 538,599 (868,025) rreshta kodi, fshirë 333,377 (261,456) rreshta). Rreth 43% e të gjitha ndryshimeve në 5.12 lidhen me driverat e pajisjeve, afërsisht 17% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturë hardueri, 12% lidhen me rrjetin, 5% me sistemet e skedareve dhe 4% me nën-sistemet e brendshme të kernel-it.
Novitetet kryesore:
- Sistemi i disqeve, hyrja/ dalje dhe sistemet e skedarëve
- ĂshtĂ« implementuar mundĂ«sia e mapimit tĂ« identifikatorĂ«ve tĂ« pĂ«rdoruesve pĂ«r sistemet e skedarĂ«ve tĂ« montuara (mund tĂ« mapohen skedarĂ«t e njĂ« pĂ«rdoruesi nĂ« njĂ« pjesĂ« tĂ« huaj tĂ« montuar me njĂ« tjetĂ«r pĂ«rdorues nĂ« sistemin aktual). Mapimi mbĂ«shtetet pĂ«r FS FAT, ext4 dhe XFS. Funksionaliteti i propozuar lehtĂ«son ndarjen e skedarĂ«ve nga pĂ«rdorues tĂ« ndryshĂ«m dhe nĂ« kompjuterĂ« tĂ« ndryshĂ«m, pĂ«rfshirĂ« se mapimi do tĂ« aplikohet nĂ« mekanizmin pĂ«r katalogĂ« tĂ« shtĂ«pisĂ« portable systemd-homed, duke i mundĂ«suar pĂ«rdoruesve tĂ« zhvendosin katalogĂ«t e shtĂ«pisĂ« sĂ« tyre nĂ« pajisje tĂ« jashtme dhe t'i pĂ«rdorin ata nĂ« kompjuterĂ« tĂ« ndryshĂ«m, ku shpjegimi i identifikatorĂ«ve tĂ« pĂ«rdoruesve nuk pĂ«rputhet. NjĂ« pĂ«rdorim tjetĂ«r tĂ« dobishĂ«m Ă«shtĂ« organizimi i ofrimit tĂ« aksesit tĂ« pĂ«rbashkĂ«t nĂ« skedarĂ« nga njĂ« host i jashtĂ«m, pa ndryshuar faktikisht tĂ« dhĂ«nat mbi pronarĂ«t e skedarĂ«ve nĂ« FS.
- Në thelb janë pranuar patch-e LOOKUP_CACHED, që lejojnë, nga hapësira e përdoruesit, të kryhen operacione për identifikimin e rrugëve të skedarëve pa bllokim, vetëm mbi bazën e të dhënave të disponueshme në cache. Mënyra LOOKUP_CACHED aktivizohet në thirrjen openat2() duke kaluar flamurin RESOLVE_CACHED, ku të dhënat jepen vetëm nga cache dhe nëse identifikimi i rrugës kërkon qasje në magazinë, kthehet gabimi EAGAIN.
- Në sistemin e skedarëve Btrfs është shtuar mbështetje fillestare për pajisje bllokuese të zonuar (pajisje mbi disqe magnetike ose NVMe SSD, hapësira e ruajtjes së të cilave është e ndarë në zona, që përbëjnë grupe bllokesh ose sektorësh, në të cilat lejohet vetëm shtim të dhënash në mënyrë të njëpasnjëshme me azhurnimin e plotë të të gjithë grupit të bllokesh). Në mënyrën e vetëm për lexim është realizuar mbështetje për blloqet me metadata dhe të dhëna, që janë më të vogla se faqja (subpage).
- NĂ« sistemin e skedarĂ«ve F2FS Ă«shtĂ« shtuar mundĂ«sia pĂ«r tĂ« zgjedhur algoritmin dhe nivelin e kompresimit. ĂshtĂ« shtuar mbĂ«shtetje e nivelit tĂ« lartĂ« tĂ« kompresimit pĂ«r algoritmin LZ4. ĂshtĂ« realizuar opsioni i montimit checkpoint_merge.
- ĂshtĂ« realizuar njĂ« komandĂ« e re ioctl FS_IOC_READ_VERITY_METADATA pĂ«r tĂ« lexuar metadat e skedareve tĂ« mbrojtura me fs-verity.
- Në klientin NFS është realizuar mënyra 'e padurueshme' e shkruarjeve (writes=eager), kur aktivizohet, operacionet e shkruarjeve në skedar dërgohen menjëherë në server, duke kaluar përmes caches për faqe. Kjo mënyrë lejon të reduktohet konsumi i memories, siguron marrjen e menjëhershme të informacionit mbi përfundimin e hapësirës së lirë në FSh dhe në disa situata mund të çojë në rritjen e performancës.
- Në CIFS (SMB) janë shtuar opsione të reja montimi: acregmax për menaxhimin e caching-ut të skedarëve dhe acdirmax për menaxhimin e caching-ut të metadatuar të katalogëve.
- Në XFS është përfshirë mënyra e verifikimit të shumta të kuotave, është përshpejtuar ekzekutimi i fsync, dhe është bërë përgatitja e kodit growfs për realizimin e funksionit të zvogëlimit të madhësisë së FSh.
- Memorie dhe shërbime sistemike
- ĂshtĂ« shtuar nĂ«n-sistemi DTMP (Dynamic Thermal Power Management), qĂ« lejon rregullimin dinamik tĂ« konsumit tĂ« energjisĂ« sĂ« pajisjeve tĂ« ndryshme mbi bazĂ«n e kufizimeve tĂ« pĂ«rgjithshme tĂ« temperaturĂ«s.
- Ka është realizuar mundësia për ndërtimin e një bërthame nga kompileri Clang me përfshirjen e optimizimeve në fazën e lidhjes (LTO, Link Time Optimization). Optimizimet LTO karakterizohen nga marrëdhënia e gjendjes së të gjitha skedave pjesëmarrëse në procesin e ndërtimit, ndërsa modet tradicionale të optimizimit optimizojnë çdo skedë veçmas dhe nuk marrin parasysh kushtet e thirrjeve të funksioneve të përcaktuara në skedat e tjera. Për shembull, me LTO, për funksionet nga skedat e tjera është e mundur zhvillimi i inlinës, kodi i pa përdorur nuk përfshihet në skedarin ekzekutiv, bëhet verifikimi i tipave dhe optimizimi i përgjithshëm në nivel projekti. Mbështetje LTO aktualisht është e kufizuar në arkitekturat x86 dhe ARM64.
- ĂshtĂ« krijuar mundĂ«sia pĂ«r zgjedhjen e modove tĂ« ndĂ«rlidhjes (PREEMPT) nĂ« planifikuesin e detyrave nĂ« fazĂ«n e ngarkimit (preempt=none/voluntary/full) ose gjatĂ« punĂ«s pĂ«rmes debugfs (/debug/sched_debug), nĂ« rast se Ă«shtĂ« pĂ«rcaktuar gjatĂ« ndĂ«rtimit tĂ« bĂ«rthames se parameteri PREEMPT_DYNAMIC Ă«shtĂ« aktiv. MĂ« parĂ«, modelet e prekjes mund tĂ« vendoseshin vetĂ«m nĂ« nivelin e parametrave tĂ« ndĂ«rtimit. Ky ndryshim lejon distro-in tĂ« ofrojnĂ« bĂ«rthama me modin PREEMPT tĂ« aktivizuar, qĂ« siguron vonesa minimale pĂ«r desktop-et, nĂ« kembim tĂ« njĂ« zvogĂ«limi tĂ« vogĂ«l tĂ« kapacitetit, dhe nĂ« rast nevoje tĂ« rikthehen nĂ« modet PREEMPT_VOLUNTARY (modi ndĂ«rmjetĂ«s pĂ«r desktop-et) ose PREEMPT_NONE (siguron kapacitetin maksimal pĂ«r) serverĂ«sh).
- Në nësistemin BPF është shtuar mbështetje për operacione atomike BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG dhe BPF_CMPXCHG.
- Programeve BPF u është dhënë mundësia për qasje në të dhënat në stek duke përdorur tregues me zhvendosje variabël. Për shembull, nëse më parë për qasje në një masë në stek mund të përdorej vetëm një indeks konstant, tani mund të përdoret një indeks i ndryshueshëm. Kontrolli mbi aksesin bëhet vetëm brenda kufijve ekzistues nga verifikuesi BPF. Kjo mundësi është e disponueshme vetëm për programet me privilegje për shkak të shqetësimeve për shfrytëzimin e dobësive të lidhura me ekzekutimin spekulativ të kodit.
- ĂshtĂ« shtuar mundĂ«sia pĂ«r ngjitjen e programeve BPF nĂ« 'pikĂ«t e thjeshta' tĂ« gjurmimit (bare tracepoints), tĂ« lidhura me ngjarjet e gjurmimit tĂ« dukshme nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit (pĂ«r kĂ«to pika gjurmimi nuk garantohen konservimi i ABI).
- Suporti për autobusin CXL 2.0 (Compute Express Link) është realizuar, i cili përdoret për organizimin e ndërveprimit me shpejtësi të lartë midis CPU-së dhe pajisjeve të memories (lejon përdorimin e pajisjeve të jashtme të memories si një pjesë e RAM-it ose memories së përhershme, ashtu si nëse kjo memorie ishte lidhur përmes një kontrolluesi memories në CPU).
- ĂshtĂ« shtuar driveri nvmem pĂ«r tĂ« marrĂ« tĂ« dhĂ«na nga zonat e memories tĂ« rezervuara nga firmware, tĂ« cilat nuk janĂ« drejtpĂ«rdrejt tĂ« aksesueshme nga Linux (pĂ«r shembull, memoria EEPROM, e cila Ă«shtĂ« fizike vetĂ«m pĂ«r firmware, ose tĂ« dhĂ«na tĂ« cilat janĂ« tĂ« aksesueshme vetĂ«m nĂ« njĂ« fazĂ« tĂ« hershme tĂ« ngarkimit).
- ĂshtĂ« hequr mbĂ«shtetje pĂ«r sistemin e profilizimit «oprofile», i cili nuk fitoi pĂ«rhapje tĂ« duhur dhe u zĂ«vendsua nga mekanizmi mĂ« modern perf.
- Në ndërfaqen e hyrjes/asnjë dalje io_uring është siguruar integrimi me cgroup, që kontrollon përdorimin e memories.
- Për arkitekturën RISC-V është realizuar mbështetje për sistemet NUMA, si dhe mekanizmat kprobes dhe uprobes.
- ĂshtĂ« shtuar mundĂ«sia e pĂ«rdorimit tĂ« thirrjes sĂ« sistemit kcmp() pa marrĂ« parasysh funksionalitetin e kopjave tĂ« gjendjeve tĂ« proceseve (checkpoint/restore).
- Janë hequr makros EXPORT_UNUSED_SYMBOL() dhe EXPORT_SYMBOL_GPL_FUTURE(), të cilat nuk janë përdorur praktikisht për shumë vite.
- Virtualizimi dhe siguria
- ĂshtĂ« shtuar mekanizmi i mbrojtjes KFence (Kernel Electric Fence), i cili kap gabimet gjatĂ« punĂ«s me memorien, siç janĂ« daljet pĂ«rtej kufijve tĂ« buferĂ«ve dhe qasjet pas çlirimit tĂ« memories. Ndryshe nga mekanizmi i ndihmĂ«s KASAN, nĂ«n-sistemi KFence pĂ«rshkruhet me shpejtĂ«si tĂ« lartĂ« dhe kosto tĂ« ulĂ«ta, çka lejon kapjen e gabimeve tĂ« punĂ«s me memorien, tĂ« cilat shfaqen vetĂ«m nĂ« sistemet e punĂ«s ose gjatĂ« punĂ«s sĂ« gjatĂ«.
- ĂshtĂ« realizuar mbĂ«shtetje pĂ«r hipervizorin ACRN, i shkruar me vĂ«mendje pĂ«r pĂ«rgatitjen pĂ«r kryerjen e detyrave nĂ« kohĂ« reale dhe pĂ«rshtatshmĂ«rinĂ« pĂ«r pĂ«rdorim nĂ« sisteme kritike. ACRN siguron kosto minimale, garanton vonesa tĂ« ulta dhe reagim tĂ« pĂ«rshtatshĂ«m gjatĂ« ndĂ«rveprimit me pajisjet. MbĂ«shtetet virtualizimi i burimeve tĂ« CPU-sĂ«, hyrjes/daljes, nĂ«n-sistemit rrjetĂ«sor, operacioneve me grafikĂ« dhe zĂ«. ACRN mund tĂ« pĂ«rdoret pĂ«r tĂ« drejtuar disa sisteme tĂ« izoluara. makinat virtuale n bloket elektronike tĂ« menaxhimit, paneleve tĂ« instrumenteve, sistemeve informative tĂ« automjeteve, pajisjeve IoT pĂ«r konsumatorĂ«t dhe teknologjive tĂ« tjera tĂ« instaluara. ACRN mbĂ«shtet dy lloje sistemesh miqĂ«sore - VM tĂ« ShĂ«rbimit me privilegje, tĂ« cilat pĂ«rdoren pĂ«r menaxhimin e burimeve tĂ« sistemit (CPU, memorie, input/output, etj.), dhe VM tĂ« PĂ«rdoruesit, nĂ« tĂ« cilat mund tĂ« funksionojnĂ« distribuime Linux, Android dhe Windows.
- Në nënstrukturën IMA (Arkitektura e Masave të Integritetit), e cila siguron ruajtjen e një baze hash për verifikimin e integritetit të skedarëve dhe metadaten e tyre të lidhura, është shtuar mundësia për verifikimin e integritetit të të dhënave të vetë kernelit, për shembull, për të ndjekur ndryshimet në rregullat SELinux.
- Në hypervizorin KVM është shtuar mundësia e kapjes së thirrjeve hyper dhe kalimi i tyre në emulatorin që punon në hapësirën e përdoruesit.
- ĂshtĂ« shtuar mundĂ«sia pĂ«r tĂ« pĂ«rdorur Linux si ambient rrĂ«njĂ« pĂ«r hypervizorin Hyper-V. Ambienti rrĂ«njĂ« ka qasje tĂ« drejtpĂ«rdrejtĂ« nĂ« pajisje dhe pĂ«rdoret pĂ«r tĂ« nisur sistemet mikpritĂ«se (analog tĂ« Dom0 nĂ« Xen). Deri tani, Hyper-V (Microsoft Hypervisor) ka mbĂ«shtetur Linux vetĂ«m nĂ« ambientet mikpritĂ«se, por vetĂ« hypervizori Ă«shtĂ« menaxhuar nga njĂ« ambient i bazuar nĂ« Windows.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r kriptimin inline pĂ«r kartat e eMMC, e cila lejon pĂ«rdorimin e mekanizmave tĂ« integruar nĂ« kontrolluesin e diskut pĂ«r kriptim, tĂ« cilĂ«t kryejnĂ« kriptimin dhe dekriptimin transparent tĂ« input/output.
- Nga nënstruktura kriptografike është hequr mbështetje për hash-et RIPE-MD 128/256/320 dhe Tiger 128/160/192 që nuk përdoren në kernel, si dhe për algoritmin e rrjedhës Salsa20, i cili është zëvendësuar nga algoritmi ChaCha20. Algoritmi blake2 është përditësuar në implementimin blake2s.
- Sistemi rrjetor
- ĂshtĂ« shtuar mundĂ«sia e ndarjes sĂ« manipuluesit tĂ« polingut NAPI tĂ« pajisjeve rrjet nĂ« njĂ« thread tĂ« veçantĂ« tĂ« kernelit, qĂ« lejon pĂ«rmirĂ«simin e performancĂ«s pĂ«r disa lloje ngarkesash. Deri tani, polingu Ă«shtĂ« kryer nĂ« kontekstin e softirq dhe nuk Ă«shtĂ« mbuluar nga planifikuesi i detyrave, dhe kjo e ka vĂ«shtirĂ«suar optimizimin e hollĂ«sishĂ«m pĂ«r tĂ« arritur performancĂ«n maksimale. Kryerja nĂ« njĂ« thread tĂ« veçantĂ« tĂ« kernelit lejon mbikĂ«qyrjen e manipuluesit tĂ« polingut nga hapĂ«sira e pĂ«rdoruesit, lidhjen me bĂ«rthama tĂ« veçanta tĂ« CPU dhe pĂ«rfshirjen nĂ« planifikimin e kalimeve tĂ« detyrave. PĂ«r tĂ« aktivizuar modin e ri, nĂ« sysfs Ă«shtĂ« propozuar parametri /sys/class/net//threaded.
- Integrimi në thelbin e MPTCP (MultiPath TCP) është vazhduar, një zgjerim i protokollit TCP për organizimin e punës së lidhjes TCP me shpërndarjen e paketave në mënyrë të njëkohshme përmes disa rrugëve përmes ndërfaqeve të ndryshme të rrjetit, të lidhura me adresat e ndryshme IP. Në versionin e ri është shtuar mundësia e lidhjes së prioritetit me rrjedha të caktuara, që lejon, për shembull, organizimin e punës së rrjedhave rezervë, të cilat aktivizohen vetëm në rast probleme me rrjedhën kryesore.
- Në IGMPv3 është shtuar mbështetje për mekanizmin EHT (Explicit Host Tracking).
- Në mekanizmin e filtrimit të paketave netfilter është realizuar mundësia e zotërimit të tabelave të caktuara për të marrë kontroll ekskluziv (për shembull, një proces i prapambetur i firewall-it mund të lidhë tabelat e caktuara për të ndaluar dikë tjetër të ndërhyjë në to).
- Pajisje
- ĂshtĂ« bĂ«rĂ« pastrimi i platformave ARM qĂ« kanĂ« dalĂ« nga pĂ«rdorimi dhe qĂ« nuk kanĂ« mbĂ«shtetje. ĂshtĂ« hequr kodi pĂ«r platforma tĂ« tilla si efm32, picoxcell, prima2, tango, u300, zx dhe c6x, si dhe pĂ«r driverat e lidhur me to.
- NĂ« driverin amdgpu Ă«shtĂ« realizuar mundĂ«sia e overclocking (OverDrive) pĂ«r kartat e bazuara nĂ« GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). ĂshtĂ« shtuar mbĂ«shtetja pĂ«r formatin e pikselit FP16 pĂ«r DCE (display controller engine) nga gjenerata e 8 deri nĂ« 11. PĂ«r GPU Navy Flounder (Navi 21) dhe APU Van Gogh Ă«shtĂ« realizuar mundĂ«sia e rikthimit tĂ« GPU-sĂ«.
- NĂ« driverin i915 pĂ«r kartat grafike Intel Ă«shtĂ« realizuar parametri i915.mitigations pĂ«r çaktivizimin e mekanizmave tĂ« izolimit dhe mbrojtjes nĂ« favor tĂ« rritjes sĂ« performancĂ«s. PĂ«r çipat nga Tiger Lake e tutje Ă«shtĂ« aktivizuar mbĂ«shtetja pĂ«r mekanizmin VRR (Variable Rate Refresh), qĂ« lejon ndryshimin adaptiv tĂ« frekuencĂ«s sĂ« rifreskimit tĂ« monitorit pĂ«r tĂ« siguruar fluiditet dhe tĂ« mos ketĂ« ndĂ«rrime gjatĂ« lojĂ«rave. ĂshtĂ« aktivizuar mbĂ«shtetje pĂ«r teknologjinĂ« Intel Clear Color pĂ«r rritjen e saktĂ«sisĂ« sĂ« pĂ«rçimit tĂ« ngjyrave. ĂshtĂ« shtuar mbĂ«shtetje pĂ«r DP-HDMI 2.1. ĂshtĂ« realizuar mundĂ«sia e menaxhimit tĂ« ndriçimit tĂ« paneleve eDP. PĂ«r GPU Gen9 me mbĂ«shtetje pĂ«r LSPCON (Level Shifter and Protocol Converter) Ă«shtĂ« aktivizuar mbĂ«shtetje pĂ«r HDR.
- Në driverin nouveau është shtuar mbështetje fillestare për GPU NVIDIA të bazuar në arkitekturën GA100 (Ampere).
- Në driverin msm është shtuar mbështetje për GPU Adreno 508, 509 dhe 512, të përdorura në çipat SDM (Snapdragon) 630, 636 dhe 660.
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r kartat zanore Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s dhe Pioneer DJM-750. ĂshtĂ« shtuar mbĂ«shtetje pĂ«r nĂ«nshkrimin e sistemit zanor Intel Alder Lake PCH-P. ĂshtĂ« realizuar mbĂ«shtetje pĂ«r simulimin e softuerit pĂ«r lidhjen dhe çlidhjen e lidhĂ«sit tĂ« audios pĂ«r debugging tĂ« trajtuesve nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit.
- Shtohet mbështetje për konsolat e lojërave Nintendo 64, të prodhuara nga viti 1996 deri në vitin 2003 (përpjekjet e kaluara për të portuar Linux për Nintendo 64 nuk u përfunduan dhe kishin statusin Vaporware). Si motiv për krijimin e një porti të ri për një platformë të vjetër, e cila nuk prodhohet më për pothuajse njëzet vjet, përmendet dëshira për të stimuluar zhvillimin e emulatoreve dhe për të lehtësuar kalimin e lojërave.
- Shtohet një drejtues për kontrollorin e lojërave Sony PlayStation 5 DualSense.
- Shtohet mbështetje për platformat, pajisjet dhe platformat ARM: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
- Shtohet mbështetje për smartfonët Purism Librem5 Evergreen, Xperia Z3+ / Z4 / Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
- Shtohet drejtuesi bcm-vk për platformat e përshpejtuesve Broadcom VK (p.sh., kartat PCIe Valkyrie dhe Viper), të cilat mund të përdoren për ndarjen në një pajisje të veçantë të operacioneve përpunuese të zërit, videos dhe imazheve, si dhe veprimeve të lidhura me enkriptimin.
- Shtohet mbështetje për platformën Lenovo IdeaPad me aftësi për menaxhimin e mbushjes së vazhdueshme dhe ndriçimit të tastierës. Po ashtu, sigurohet mbështetje për profilin ACPI të platformës ThinkPad me mundësi për menaxhimin e mënyrave të konsumit të energjisë. Shtohet një drejtues për nën sistemin HID të Lenovo ThinkPad X1 Tablet Gen 2.
- Shtohet drejtuesi ov5647 me mbështetje për modul kamerash për Raspberry Pi.
- Shtohet mbështetje për RISC-V SoC FU740 dhe plakat HiFive Unleashed. Po ashtu, shtohet një drejtues i ri për çipin Kendryte K210.
Burimi: opennet.ru
