Lëshimi i kernelit Linux 6.3

Pas dy muajsh zhvillimi, Linus Torvalds prezantoi lëshimin e kernelit Linux 6.3. Disa nga ndryshimet më të dukshme përfshijnë: pastrimin e platformave të vjetra ARM dhe drejtuesve grafikë, integrimin e vazhdueshëm të mbështetjes së gjuhës Rust, programin hwnoise, mbështetjen për strukturat e pemëve kuqezi në BPF, modalitetin BIG TCP për IPv4, standardin e integruar të Dhrystone, aftësinë për të çaktivizuar ekzekutimin në memfd, për të mbështetur krijimin e drejtuesve HID duke përdorur BPF, janë bërë ndryshime në Btrfs për të reduktuar fragmentimin e grupeve të bllokut.

Versioni i ri përfshin 15637 rregullime nga 2055 zhvillues; madhësia e patch - 76 MB (ndryshimet prekën 14296 skedarë, u shtuan 1023183 rreshta kodi, u fshinë 883103 rreshta). Për krahasim, versioni i mëparshëm ofroi 16843 rregullime nga 2178 zhvillues; Madhësia e patch-it është 62 MB. Rreth 39% e të gjitha ndryshimeve të paraqitura në kernelin 6.3 lidhen me drejtuesit e pajisjes, afërsisht 15% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturat e harduerit, 10% janë të lidhura me grupin e rrjetit, 5% kanë të bëjnë me sistemet e skedarëve dhe 3% janë të lidhura me nënsistemet e brendshme të kernelit.

Risitë kryesore në kernel 6.3:

  • Shërbimet e kujtesës dhe sistemit
    • U krye një pastrim i konsiderueshëm i kodit të lidhur me bordet e vjetra dhe të papërdorura ARM, i cili bëri të mundur zvogëlimin e madhësisë së kodit burimor të kernelit me 150 mijë rreshta. Më shumë se 40 platforma të vjetra ARM janë hequr.
    • Është zbatuar aftësia për të krijuar drejtues për pajisjet hyrëse me një ndërfaqe HID (Human Interface Device), e zbatuar në formën e programeve BPF.
    • Transferimi nga dega Rust-for-Linux i funksionalitetit shtesë në lidhje me përdorimin e gjuhës Rust si gjuhë e dytë për zhvillimin e drejtuesve dhe moduleve të kernelit ka vazhduar. Mbështetja e Rust nuk është aktivizuar si parazgjedhje dhe nuk rezulton që Rust të përfshihet si një varësi e nevojshme për ndërtimin e kernelit. Funksionaliteti i ofruar në versionet e mëparshme është zgjeruar për të mbështetur llojet Arc (zbatimi i treguesve me një numër referimi), ScopeGuard (pastrimi kur del jashtë fushëveprimit) dhe ForeignOwnable (siguron lëvizjen e treguesve midis kodit C dhe Rust). Moduli 'huaz' (lloji 'Lopë' dhe tipari 'ToOwned') është hequr nga paketa 'alloc'. Vihet re se gjendja e mbështetjes Rust në kernel është tashmë afër fillimit të pranimit të moduleve të para të shkruara në Rust në kernel.
    • Linux në modalitetin e përdoruesit (duke ekzekutuar kernelin si një proces përdoruesi) në sistemet x86-64 zbaton mbështetje për kodin e shkruar në gjuhën Rust. Mbështetje e shtuar për ndërtimin e Linux-it në modalitetin e përdoruesit duke përdorur zhurmën me aktivizimin e optimizimeve të kohës së lidhjes (LTO).
    • U shtua mjeti hwnoise për të gjurmuar vonesat e shkaktuara nga hardueri. Devijimet në kohën e ekzekutimit të operacioneve (jitter) përcaktohen kur përpunimi i ndërprerjeve është i çaktivizuar, duke kaluar një mikrosekondë për 10 minuta llogaritje.
    • U shtua një modul kernel që zbaton standardin Dhrystone, i cili mund të përdoret për të vlerësuar performancën e CPU-së në konfigurime pa komponentë të hapësirës së përdoruesit (për shembull, në fazën e portimit për SoC-të e reja që zbatojnë vetëm ngarkimin e kernelit).
    • U shtua parametri i linjës së komandës së kernelit "cgroup.memory=nobpf", i cili çaktivizon llogaritjen e konsumit të memories për programet BPF, të cilat mund të jenë të dobishme për sistemet me kontejnerë të izoluar.
    • Për programet BPF, propozohet një zbatim i strukturës së të dhënave të pemës kuqezi, e cila përdor kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) në vend të shtimit të një lloji të ri të hartës.
    • Mekanizmi i sekuencave të rifillueshme (rseq, sekuenca të rifillueshme) ka shtuar mundësinë e transferimit të identifikuesve të ekzekutimit paralel (ID-ja e bashkëkohësisë së memory-map) në procese, të identifikuara me numrin e CPU-së. Rseq siguron një mjet për të ekzekutuar shpejt operacionet në mënyrë atomike, të cilat, nëse ndërpriten nga një fije tjetër, pastrohen dhe tentohen përsëri.
    • Procesorët ARM mbështesin udhëzimet SME 2 (Scalable Matrix Extension).
    • Për arkitekturat s390x dhe RISC-V RV64, është zbatuar mbështetje për mekanizmin "BPF trampoline", i cili lejon minimizimin e shpenzimeve të përgjithshme gjatë transferimit të thirrjeve midis programeve kernel dhe BPF.
    • Në sistemet me procesorë të bazuar në arkitekturën RISC-V, përdorimi i udhëzimeve "ZBB" zbatohet për të përshpejtuar operacionet e vargut.
    • Për sistemet e bazuara në arkitekturën e grupit të instruksioneve LoongArch (të përdorura në procesorët Loongson 3 5000 dhe duke zbatuar RISC ISA të re, të ngjashme me MIPS dhe RISC-V), mbështetje për randomizimin e hapësirës së adresave të kernelit (KASLR), ndryshime në vendosjen e kujtesës së kernelit (zhvendosje ), pikat e harduerit është zbatuar mekanizmi i ndalimit dhe ksondës.
    • Mekanizmi DAMOS (Data Access Monitoring-based Operation Schemes), i cili ju lejon të lironi kujtesën bazuar në frekuencën e aksesit në kujtesë, mbështet filtra për të përjashtuar zona të caktuara të memories nga përpunimi në DAMOS.
    • Biblioteka standarde minimale C Nolibc ofron mbështetje për arkitekturën s390 dhe grupin e udhëzimeve Arm Thumb1 (përveç mbështetjes për ARM, AArch64, i386, x86_64, RISC-V dhe MIPS).
    • Objtool është optimizuar për të përshpejtuar montimin e kernelit dhe për të zvogëluar konsumin maksimal të memories gjatë montimit (kur ndërtohet kernel në modalitetin "allyesconfig", tani nuk ka probleme me ndërprerjen e detyruar të proceseve në sistemet me 32 GB RAM).
    • Mbështetja për montimin e kernelit nga përpiluesi Intel ICC është ndërprerë, i cili ka qenë jofunksional për një kohë të gjatë dhe askush nuk ka shprehur dëshirën për ta rregulluar atë.
  • Nënsistemi i diskut, I/O dhe sistemet e skedarëve
    • tmpfs zbaton mbështetje për hartimin e ID-ve të përdoruesve të sistemeve të skedarëve të montuar, të përdorura për të përputhur skedarët e një përdoruesi specifik në një ndarje të huaj të montuar me një përdorues tjetër në sistemin aktual.
    • Në Btrfs, për të reduktuar fragmentimin e grupeve të blloqeve, shtrirjet ndahen sipas madhësisë kur alokohen blloqe, d.m.th. çdo grup blloqesh tani është i kufizuar në përmasa të vogla (deri në 128 KB), të mesme (deri në 8 MB) dhe të mëdha. Zbatimi i bastisjes56 është rifaktoruar. Kodi për kontrollin e shumave të kontrollit është ripunuar. Janë bërë optimizime të performancës për të përshpejtuar operacionin e dërgimit deri në 10 herë duke ruajtur kohën në memorie për drejtoritë dhe duke ekzekutuar komanda vetëm kur është e nevojshme. Operacionet e Fiemap-it janë tani tre herë më të shpejta duke anashkaluar kontrollet e lidhjes së pasme për të dhënat e përbashkëta (fotografitë). Operacionet me metadata janë përshpejtuar me 10% duke optimizuar kërkimin e çelësave në strukturat b-tree.
    • Performanca e sistemit të skedarëve ext4 është përmirësuar duke lejuar procese të shumta që të kryejnë njëkohësisht operacione direkte I/O në blloqe të paracaktuara duke përdorur bllokime të përbashkëta inode në vend të kyçjeve ekskluzive.
    • Në f2fs, është bërë punë për të përmirësuar lexueshmërinë e kodit. Zgjidhur çështje të rëndësishme në lidhje me shkrimet atomike dhe cache-in e ri të shtrirjes.
    • Sistemi i skedarëve EROFS (Enhanced Read-Only File System), i krijuar për t'u përdorur në ndarjet vetëm për lexim, zbaton aftësinë për të lidhur operacionet e dekompresimit të përmbajtjes së skedarit të kompresuar me CPU-në për të zvogëluar vonesën kur aksesoni të dhënat.
    • Planifikuesi I/O BFQ ka shtuar mbështetje për disqet e avancuara rrotulluese, të tilla si ato që përdorin shumë disqe kokë të kontrolluar veçmas (Multi Actuators).
    • Mbështetja për enkriptimin e të dhënave duke përdorur algoritmin AES-SHA2 është shtuar në zbatimin e klientit dhe serverit NFS.
    • Mbështetja për mekanizmin e zgjerimit të pyetjes është shtuar në nënsistemin FUSE (Filesystems In User Space), duke lejuar që informacione shtesë të vendosen në pyetje. Bazuar në këtë veçori, është e mundur të shtohen identifikuesit e grupit në kërkesën FS, të cilat janë të nevojshme për të marrë parasysh të drejtat e aksesit gjatë krijimit të objekteve në FS (krijoni, mkdir, symlink, mknod).
  • Virtualizimi dhe Siguria
    • Hipervizori KVM për sistemet x86 ka shtuar mbështetje për hiper-thirrjet e zgjeruara Hyper-V dhe ka siguruar përcjelljen e tyre te një mbajtës që funksionon në mjedisin pritës në hapësirën e përdoruesit. Ndryshimi bëri të mundur zbatimin e mbështetjes për nisjen e mbivendosur të hipervizorit Hyper-V.
    • KVM e bën më të lehtë kufizimin e aksesit të vizitorëve në ngjarjet PMU (Performance Monitor Unit) që lidhen me matjen e performancës.
    • Mekanizmi memfd, i cili ju lejon të identifikoni një zonë memorie përmes një përshkruesi skedari të transferuar midis proceseve, ka shtuar mundësinë për të krijuar zona në të cilat ekzekutimi i kodit është i ndaluar (memfd jo-ekzekutues) dhe është e pamundur të vendosni të drejtat e ekzekutimit në të ardhmen. .
    • Është shtuar një operacion i ri prctl PR_SET_MDWE që bllokon përpjekjet për të mundësuar të drejtat e aksesit në kujtesë që lejojnë njëkohësisht shkrimin dhe ekzekutimin.
    • Mbrojtja kundër sulmeve të klasës Spectre është shtuar dhe aktivizuar si parazgjedhje, bazuar në modalitetin automatik IBRS (Enhanced Indirect Branch Restricted Speculation) të propozuar në procesorët AMD Zen 4, i cili lejon në mënyrë adaptive lejimin dhe çaktivizimin e ekzekutimit spekulativ të udhëzimeve gjatë përpunimit të ndërprerjeve, thirrjeve të sistemit dhe ndërruesit e kontekstit. Mbrojtja e propozuar rezulton në kosto më të ulët në krahasim me mbrojtjen Retpoline.
    • Rregulloi një dobësi që lejon anashkalimin e mbrojtjes kundër sulmeve Spectre v2 kur përdoret teknologjia e njëkohshme multi-threading (SMT ose Hyper-Threading) dhe e shkaktuar nga çaktivizimi i mekanizmit STIBP (Single Thread Indirect Branch Predictors) kur zgjidhni modalitetin e mbrojtjes IBRS.
    • Për sistemet e bazuara në arkitekturën ARM64, është shtuar një objektiv i ri i montimit "virtconfig", kur zgjidhet, aktivizohet vetëm grupi minimal i përbërësve të kernelit të kërkuar për të nisur në sistemet e virtualizimit.
    • Për arkitekturën m68k, është shtuar mbështetje për filtrimin e thirrjeve të sistemit duke përdorur mekanizmin seccomp.
    • Mbështetje e shtuar për pajisjet CRB TPM2 (Command Response Buffer) të integruara në procesorët AMD Ryzen, bazuar në teknologjinë Microsoft Pluton.
  • Nënsistemi i rrjetit
    • Një ndërfaqe netlink është shtuar për të konfiguruar nënshtresën PLCA (Physical Layer Collision Avoidance), e përcaktuar në specifikimin IEEE 802.3cg-2019 dhe e përdorur në rrjetet Ethernet 802.3cg (10Base-T1S) të optimizuara për lidhjen e pajisjeve të Internetit të Gjërave dhe sistemeve industriale. Përdorimi i PLCA përmirëson performancën në rrjetet Ethernet me media të përbashkëta.
    • Mbështetja për API-në e "zgjatjeve me valë" për menaxhimin e ndërfaqeve me valë WiFi 7 (802.11be) është ndërprerë pasi kjo API nuk mbulon të gjitha cilësimet e nevojshme. Kur përpiqeni të përdorni API-në e "zgjatjeve me valë", e cila vazhdon të mbështetet si një shtresë emuluar, tani do të shfaqet një paralajmërim për shumicën e pajisjeve aktuale.
    • Dokumentacioni i detajuar mbi netlink API është përgatitur (për zhvilluesit bazë dhe për zhvilluesit e aplikacioneve të hapësirës së përdoruesit). Shërbimi ynl-gen-c është implementuar për të gjeneruar kodin C bazuar në specifikimet YAML të protokollit Netlink.
    • Mbështetja për opsionin IP_LOCAL_PORT_RANGE është shtuar në prizat e rrjetit për të thjeshtuar konfigurimin e lidhjeve dalëse përmes përkthyesve të adresave pa përdorur SNAT. Kur përdorni një adresë IP në disa hoste, IP_LOCAL_PORT_RANGE bën të mundur përdorimin e një gamë të ndryshme portash rrjeti dalëse në çdo host dhe dërgimin e paketave bazuar në numrat e porteve në portë.
    • Për MPTCP (MultiPath TCP), është zbatuar aftësia për të përpunuar transmetime të përziera duke përdorur protokollet IPv4 dhe IPv6. MPTCP është një zgjatim i protokollit TCP për organizimin e funksionimit të një lidhjeje TCP me dërgimin e paketave njëkohësisht përgjatë disa rrugëve përmes ndërfaqeve të ndryshme të rrjetit të lidhura me adresa IP të ndryshme.
    • Për IPv4, është e mundur të përdorni zgjerimin BIG TCP, i cili ju lejon të rritni madhësinë maksimale të paketës TCP në 4 GB për të optimizuar funksionimin e rrjeteve të qendrave të brendshme të të dhënave me shpejtësi të lartë. Një rritje e ngjashme në madhësinë e paketës me një madhësi të fushës së kokës 16-bit arrihet përmes zbatimit të paketave "jumbo", madhësia në kokën IP të të cilave është vendosur në 0, dhe madhësia aktuale transmetohet në një 32-bit të veçantë. fushë në një kokë të veçantë të bashkangjitur.
    • Është shtuar një parametër i ri sysctl default_rps_mask, përmes të cilit mund të vendosni konfigurimin e paracaktuar RPS (Receive Packet Steering), i cili është përgjegjës për shpërndarjen e përpunimit të trafikut në hyrje nëpër bërthamat e CPU-së në nivelin e mbajtësit të ndërprerjeve.
    • Mbështetja për disiplinat e përpunimit të radhëve për kufizimin e trafikut CBQ (radha e bazuar në klasë), ATM (qarqet virtuale ATM), dsmark (shënues i diferencuar i shërbimit), tcindex (indeksi i kontrollit të trafikut) dhe RSVP (protokolli i rezervimit të burimeve) është ndërprerë. Këto disiplina janë braktisur për një kohë të gjatë dhe askush nuk ishte i gatshëm të vazhdonte mbështetjen e tyre.
  • Оборудование
    • U hoqën të gjithë drejtuesit e grafikës të bazuar në DRI1: i810 (kartat grafike më të vjetra të integruara Intel 8xx), mga (GPU Matrox), r128 (GPU ATI Rage 128, duke përfshirë kartat Rage Fury, XPERT 99 dhe XPERT 128), savage (GPU S3 Savage), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) dhe via (VIA IGP), të cilat u zhvlerësuan në 2016 dhe nuk janë mbështetur në Mesa që nga viti 2012.
    • U hoqën drejtuesit e vjetër të framebuffer-it (fbdev) omap1, s3c2410, tmiofb dhe w100fb.
    • Një drejtues DRM është shtuar për njësitë VPU (Versatile Processing Unit) të integruara në CPU Intel Meteor Lake (gjenerata e 14-të), e krijuar për të përshpejtuar operacionet në lidhje me vizionin kompjuterik dhe mësimin e makinerive. Drejtuesi zbatohet duke përdorur nënsistemin "accel", që synon të ofrojë mbështetje për përshpejtuesit llogaritës, të cilët mund të furnizohen ose në formën e ASIC-ve individuale ose si blloqe IP brenda SoC dhe GPU.
    • Shoferi i915 (Intel) zgjeron mbështetjen për kartat grafike diskrete Intel Arc (DG2/Alchemist), ofron mbështetje paraprake për GPU-të e Meteor Lake dhe përfshin mbështetje për GPU-të Intel Xe HP 4tile.
    • Drejtuesi amdgpu shton mbështetje për teknologjinë AdaptiveSync dhe aftësinë për të përdorur modalitetin e Ekranit të Sigurt me ekrane të shumta. Mbështetje e përditësuar për DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x dhe DP 2.1.
    • Drejtuesi i msm (GPU Qualcomm Adreno) ka shtuar mbështetje për platformat SM8350, SM8450 SM8550, SDM845 dhe SC8280XP.
    • Shoferi Nouveau nuk i mbështet më thirrjet e vjetra ioctl.
    • Mbështetja eksperimentale për NPU VerSilicon (Procesori i Rrjetit Neural VeriSilicon) është shtuar në drejtuesin e etnaviv.
    • Drejtuesi pata_parport është implementuar për disqet IDE të lidhura nëpërmjet një porti paralel. Drejtuesi i shtuar na lejoi të hiqnim drejtuesin e vjetër PARIDE nga kerneli dhe të modernizonim nënsistemin ATA. Një kufizim i drejtuesit të ri është pamundësia për të lidhur njëkohësisht një printer dhe një disk përmes portit paralel.
    • U shtua drejtuesi ath12k për kartat me valë në çipat Qualcomm që mbështesin Wi-Fi 7. U shtua mbështetje për kartat me valë në çipat RealTek RTL8188EU.
    • Mbështetje e shtuar për 46 borde me procesorë të bazuar në arkitekturën ARM64, duke përfshirë Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD dhe gjithashtu pajisje të bazuara në SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 dhe SDM632, kuti TV Rockchips RK3128, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, dhe RK3328 /AM3 642/ AM654 / AM68).

Në të njëjtën kohë, Fondacioni i Software-it të Lirë të Amerikës Latine formoi një version të kernelit plotësisht të lirë 6.3 - Linux-libre 6.3-gnu, i pastruar nga elementët e firmuerit dhe drejtuesit që përmbajnë komponentë ose seksione kodi jo të lirë, fushëveprimi i të cilit është kufizuar nga prodhuesi. Në versionin 6.3, blobs u pastruan në drejtuesit e rinj ath12k, aw88395 dhe peb2466, si dhe në skedarët e rinj të pemës së pajisjes për pajisjet qcom bazuar në arkitekturën AArch64. Kodi i përditësuar i pastrimit të blobit në drejtuesit dhe nënsistemet amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, si dhe në drejtuesit për kartat DVB me dekodim softuerësh dhe në skedarët BPF të parapërpiluara. Pastrimi i drejtuesve mga, r128, tm6000, cpia2 dhe r8188eu është ndaluar pasi janë hequr nga kerneli. Pastrim i përmirësuar i njollave të shoferit i915.

Burimi: opennet.ru

Shto një koment