Lëshimi i kernelit Linux 5.11

Pas dy muajsh zhvillimi, Linus Torvalds prezantoi lëshimin e kernelit Linux 5.11. Ndër ndryshimet më të dukshme: mbështetja për enklavat Intel SGX, një mekanizëm i ri për përgjimin e thirrjeve të sistemit, një autobus ndihmës virtual, një ndalim për montimin e moduleve pa MODULE_LICENSE(), një modalitet i shpejtë filtrimi për thirrjet e sistemit në seccomp, përfundimi i mbështetjes për Arkitektura ia64, transferimi i teknologjisë WiMAX në degën "instage", aftësia për të inkapsuluar SCTP në UDP.

Versioni i ri përfshin 15480 rregullime nga 1991 zhvillues, madhësia e patch-it është 72 MB (ndryshimet prekën 12090 skedarë, u shtuan 868025 rreshta kodi, u fshinë 261456 rreshta). Rreth 46% e të gjitha ndryshimeve të paraqitura në 5.11 lidhen me drejtuesit e pajisjes, afërsisht 16% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturat e harduerit, 13% janë të lidhura me grupin e rrjetit, 3% kanë të bëjnë me sistemet e skedarëve dhe 4% janë të lidhura me nënsistemet e brendshme të kernelit.

Risitë kryesore:

  • Nënsistemi i diskut, I/O dhe sistemet e skedarëve
    • Disa opsione montimi janë shtuar në Btrfs për t'u përdorur gjatë rivendosjes së të dhënave nga një sistem skedari i dëmtuar: "rescue=ignorebadroots" për montim, pavarësisht dëmtimit të disa pemëve rrënjësore (shtrirja, uuid, zhvendosja e të dhënave, pajisja, csum, hapësira e lirë), " rescue=ignoredatacsums” për të çaktivizuar kontrollin e shumës së kontrollit për të dhëna dhe "rescue=all" për të aktivizuar njëkohësisht modalitetet "ignorebadroots", "ignoredatacsums" dhe "nologreplay". Opsioni i montimit "inode_cache", i cili më parë ishte i vjetëruar, është ndërprerë. Kodi është përgatitur për të zbatuar mbështetje për blloqe me meta të dhëna dhe të dhëna më të vogla se madhësia e faqes (PAGE_SIZE), si dhe mbështetje për mënyrën e ndarjes së hapësirës së zonës. Kërkesat e pabuferuara (IO direkte) janë zhvendosur në infrastrukturën iomap. Performanca e një numri operacionesh është optimizuar; në disa raste, nxitimi mund të arrijë dhjetëra përqind.
    • XFS zbaton flamurin "needsrepair", i cili sinjalizon nevojën për riparim. Kur vendoset ky flamur, sistemi i skedarëve nuk mund të montohet derisa flamuri të rivendoset nga programi xfs_repair.
    • Ext4 ofron vetëm rregullime dhe optimizime të gabimeve, si dhe pastrim kodi.
    • Rieksporti i sistemeve të skedarëve të montuar mbi NFS lejohet (d.m.th., një ndarje e montuar nëpërmjet NFS tani mund të eksportohet nëpërmjet NFS dhe të përdoret si një cache e ndërmjetme).
    • Thirrja e sistemit close_range(), e cila lejon një proces të mbyllë një gamë të tërë të përshkruesve të skedarëve të hapur menjëherë, ka shtuar një opsion CLOSE_RANGE_CLOEXEC për të mbyllur përshkruesit në modalitetin mbyllje-në-ekzekutim.
    • Sistemi i skedarëve F2FS shton thirrje të reja ioctl() për të lejuar kontrollin e hapësirës së përdoruesit se cilët skedarë ruhen në formë të ngjeshur. U shtua opsioni i montimit "compress_mode=" për të zgjedhur nëse do të vendoset mbajtësi i kompresimit në anën e kernelit ose në hapësirën e përdoruesit.
    • Ofron mundësinë për të montuar Overlayfs nga procese të paprivilegjuara duke përdorur një hapësirë ​​emri të veçantë të përdoruesit. Për të verifikuar përputhshmërinë me zbatimin e modelit të sigurisë, u krye një auditim i plotë i kodit. Overlayfs shton gjithashtu aftësinë për të ekzekutuar duke përdorur kopje të imazheve të sistemit të skedarëve duke çaktivizuar opsionalisht kontrollin UUID.
    • Sistemi i skedarëve Ceph ka shtuar mbështetje për protokollin msgr2.1, i cili lejon përdorimin e algoritmit AES-GCM gjatë transmetimit të të dhënave në formë të koduar.
    • Moduli dm-multipath implementon aftësinë për të marrë parasysh afinitetin e CPU-së (“Afiniteti IO”) kur zgjedh rrugën për kërkesat I/O.
  • Shërbimet e kujtesës dhe sistemit
    • Është shtuar një mekanizëm i ri i përgjimit të thirrjeve të sistemit, bazuar në prctl(), i cili ju lejon të gjeneroni përjashtime nga hapësira e përdoruesit kur hyni në një thirrje specifike të sistemit dhe të imitoni ekzekutimin e tij. Ky funksionalitet kërkohet në Wine dhe Proton për të imituar thirrjet e sistemit të Windows, gjë që është e nevojshme për të siguruar përputhshmëri me lojërat dhe programet që kryejnë drejtpërdrejt thirrjet e sistemit duke anashkaluar API-në e Windows (për shembull, për t'u mbrojtur nga përdorimi i paautorizuar).
    • Thirrja e sistemit userfaultfd(), e krijuar për të trajtuar gabimet e faqeve (qasja në faqet e memories së paalokuar) në hapësirën e përdoruesit, tani ka aftësinë të çaktivizojë trajtimin e përjashtimeve që ndodhin në nivelin e kernelit për ta bërë më të vështirë shfrytëzimin e disa dobësive.
    • Nënsistemi BPF ka shtuar mbështetje për ruajtjen lokale të detyrave, e cila siguron lidhjen e të dhënave me një mbajtës specifik BPF.
    • Llogaritja e konsumit të memories nga programet BPF është ridizajnuar plotësisht - një kontrollues cgroup është propozuar në vend të kufirit të memlock për të menaxhuar përdorimin e memories në objektet BPF.
    • Mekanizmi BTF (BPF Type Format), i cili ofron informacione të kontrollit të tipit në pseudokodin BPF, ofron mbështetje për modulet e kernelit.
    • Mbështetje e shtuar për thirrjet e sistemit shutdown(), renameat2() dhe unlinkat() në ndërfaqen asinkrone I/O io_uring. Kur thërrisni io_uring_enter(), është shtuar aftësia për të specifikuar një afat kohor (mund të kontrolloni mbështetjen për argumentin për të specifikuar një afat duke përdorur flamurin IORING_FEAT_EXT_ARG).
    • Arkitektura ia64 e përdorur në procesorët Intel Itanium është zhvendosur në kategorinë jetimë, që do të thotë se testimi ka pushuar. Hewlett Packard Enterprise ndaloi pranimin e porosive për pajisje të reja Itanium dhe Intel e bëri këtë vitin e kaluar.
    • Mbështetja për sistemet e bazuara në arkitekturën MicroBlaze që nuk përfshijnë një njësi të menaxhimit të memories (MMU) është ndërprerë. Sisteme të tilla nuk janë parë në jetën e përditshme për një kohë të gjatë.
    • Për arkitekturën MIPS, mbështetja për testimin e mbulimit të kodit është shtuar duke përdorur mjetin gcov.
    • Mbështetje e shtuar për autobusin ndihmës virtual për ndërlidhjen me pajisje shumëfunksionale që kombinojnë funksionalitet që kërkojnë drejtues të ndryshëm (për shembull, kartat e rrjetit me mbështetje Ethernet dhe RDMA). Autobusi mund të përdoret për të caktuar një drejtues primar dhe dytësor në një pajisje, në situatat kur përdorimi i nënsistemit MFD (Pajisje me shumë funksione) është problematik.
    • Për arkitekturën RISC-V, është shtuar mbështetje për sistemin e shpërndarjes së memories CMA (Contiguous Memory Alocator), i cili është optimizuar për ndarjen e zonave të mëdha të memories së afërt duke përdorur teknikat e lëvizjes së faqeve të kujtesës. Për RISC-V, mjetet janë zbatuar gjithashtu për të kufizuar aksesin në /dev/mem dhe për të marrë parasysh kohën e përpunimit të ndërprerjes.
    • Për sistemet ARM 32-bitësh, është shtuar mbështetje për mjetin e korrigjimit të KASan (Kernel address sanitizer), i cili ndihmon në identifikimin e gabimeve gjatë punës me memorie. Për ARM 64-bit, zbatimi KASan është konvertuar për të përdorur etiketat MTE (MemTag).
    • Thirrja e sistemit epoll_pwait2() u shtua për të lejuar ndërprerje kohore me saktësi nanosekonda (telefonata epoll_wait manipulon milisekonda).
    • Sistemi i ndërtimit tani shfaq një gabim kur përpiqet të ndërtojë module të kernelit të ngarkueshëm në të cilat licenca e kodit nuk është përcaktuar duke përdorur makron MODULE_LICENSE(). Që tani e tutje, përdorimi i makros EXPORT_SYMBOL() për funksionet statike do të shkaktojë gjithashtu një gabim ndërtimi.
    • Mbështetje e shtuar për hartëzimin e objekteve GEM nga memoria e përdorur për I/O, gjë që bëri të mundur përshpejtimin e punës me framebuffer në disa arkitektura.
    • Kconfig e ka hequr mbështetjen për Qt4 (duke ruajtur mbështetjen për Qt5, GTK dhe Ncurses).
  • Virtualizimi dhe Siguria
    • Mbështetja për modalitetin e përgjigjes së shpejtë është shtuar në thirrjen e sistemit seccomp(), e cila ju lejon të përcaktoni shumë shpejt nëse një thirrje e caktuar sistemi është e lejuar ose e ndaluar bazuar në bitmap-in me veprim të vazhdueshëm të bashkangjitur procesit, i cili nuk kërkon ekzekutim një mbajtës BPF.
    • Komponentët e integruar të kernelit për krijimin dhe menaxhimin e enklavave bazuar në teknologjinë Intel SGX (Software Guard Extensions), e cila lejon aplikacionet të ekzekutojnë kodin në zona të izoluara të koduara të memories, në të cilat pjesa tjetër e sistemit ka akses të kufizuar.
    • Si pjesë e një iniciative për të kufizuar aksesin nga hapësira e përdoruesit në MSR (regjistri specifik për modelin), duke shkruar në regjistrin MSR_IA32_ENERGY_PERF_BIAS, i cili ju lejon të ndryshoni modalitetin e efikasitetit të energjisë së procesorit ("normal", "performancë", "kursim energjie") , është i ndaluar.
    • Aftësia për të çaktivizuar migrimin e detyrave me prioritet të lartë ndërmjet CPU-ve është zhvendosur nga dega kernel-rt për sistemet në kohë reale.
    • Për sistemet ARM64, është shtuar aftësia për të përdorur etiketat MTE (MemTag, Memory Tagging Extension) për adresat e kujtesës së mbajtësit të sinjalit. Përdorimi i MTE mundësohet duke specifikuar opsionin SA_EXPOSE_TAGBITS në sigaction() dhe ju lejon të kontrolloni përdorimin e saktë të treguesve për të bllokuar shfrytëzimin e dobësive të shkaktuara nga qasja në blloqet e memories tashmë të liruara, tejmbushjet e tamponëve, akseset përpara inicializimit dhe përdorimi jashtë kontekstin aktual.
    • U shtua parametri "DM_VERITY_VERIFY_ROOTHASH_SIG_SECONDARY_KEYRING", i cili lejon nënsistemin dm-verity të kontrollojë nënshkrimet hash të certifikatave të vendosura në çelësin dytësor. Në praktikë, konfigurimi ju lejon të verifikoni jo vetëm certifikatat e integruara në kernel, por edhe certifikatat e ngarkuara gjatë funksionimit, gjë që bën të mundur përditësimin e certifikatave pa përditësuar të gjithë kernelin.
    • Linux-i i modalitetit të përdoruesit ka shtuar mbështetje për modalitetin pezullim në punë, i cili ju lejon të ngrini mjedisin dhe të përdorni sinjalin SIGUSR1 për t'u zgjuar nga modaliteti i fjetjes.
    • Mekanizmi virtio-mem, i cili ju lejon të lidhni dhe shkëputni kujtesën me makinat virtuale, ka shtuar mbështetje për Big Block Mode (BBM), i cili bën të mundur transferimin ose marrjen e memories në blloqe më të mëdha se madhësia e kujtesës së kernelit. bllok, i cili është i nevojshëm për të optimizuar VFIO në QEMU.
    • Mbështetja për shifrën CHACHA20-POLY1305 është shtuar në zbatimin e kernelit të TLS.
  • Nënsistemi i rrjetit
    • Për 802.1Q (VLAN), është zbatuar një mekanizëm i menaxhimit të dështimit të lidhjes (CFM, Connectivity Fault Management), i cili ju lejon të identifikoni, verifikoni dhe izoloni dështimet në rrjetet me ura virtuale (Virtual Bridged Networks). Për shembull, CFM mund të përdoret për të izoluar problemet në rrjetet që përfshijnë shumë organizata të pavarura, punonjësit e të cilave kanë akses vetëm në pajisjet e tyre.
    • Mbështetje e shtuar për kapsulimin e paketave të protokollit SCTP në paketat UDP (RFC 6951), e cila ju lejon të përdorni SCTP në rrjete me përkthyes të vjetër adresash që nuk mbështesin drejtpërdrejt SCTP, si dhe të zbatoni SCTP në sisteme që nuk ofrojnë qasje të drejtpërdrejtë në IP avokat.
    • Zbatimi i teknologjisë WiMAX është zhvendosur në skenë dhe është planifikuar të hiqet në të ardhmen nëse nuk ka përdorues që kërkojnë WiMAX. WiMAX nuk përdoret më në rrjetet publike dhe në kernel i vetmi drejtues me të cilin mund të përdoret WiMAX është drejtuesi i vjetër i Intel 2400m. Mbështetja WiMAX u ndërpre në konfiguruesin e rrjetit NetworkManager në 2015. Aktualisht, WiMax është zëvendësuar pothuajse plotësisht nga teknologji të tilla si LTE, HSPA+ dhe Wi-Fi 802.11n.
    • Është bërë punë për të optimizuar performancën e përpunimit të trafikut hyrës TCP në modalitetin zerokopje, d.m.th. pa kopjim shtesë në buferë të rinj. Për trafikun me përmasa mesatare, duke mbuluar dhjetëra ose disa qindra kilobajt të dhëna, përdorimi i zerocopy në vend të recvmsg() është dukshëm më efektiv. Për shembull, ndryshimet e zbatuara bënë të mundur rritjen e efikasitetit të përpunimit të trafikut të stilit RPC me mesazhe 32 KB kur përdorni zerocopy me 60-70%.
    • U shtuan thirrje të reja ioctl() për të krijuar ura rrjeti që përfshijnë lidhje të shumta PPP. Aftësia e propozuar lejon që kornizat të lëvizin nga një kanal në tjetrin, për shembull nga një sesion PPPoE në një sesion PPPoL2TP.
    • Integrimi në thelbin e MPTCP (MultiPath TCP), një zgjerim 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. Publikimi i ri prezanton mbështetjen për opsionin ADD_ADDR për të reklamuar adresat IP të disponueshme me të cilat mund të lidhen kur shtohen flukse të reja në një lidhje ekzistuese MPTCP.
    • U shtua aftësia për të konfiguruar veprimet kur tejkalohet buxheti i sondazhit të lidhjes (votimi i zënë). Modaliteti SO_BUSY_POLL i disponueshëm më parë nënkuptonte kalimin në softirq kur buxheti ishte shteruar. Për aplikacionet që duhet të vazhdojnë të përdorin sondazhin, propozohet një opsion i ri SO_PREFER_BUSY_POLL.
    • IPv6 zbaton mbështetje për modalitetet SRv6 End.DT4 dhe End.DT6, të përdorura për të krijuar VPN me shumë përdorues IPv4 L3 dhe pajisje VRF (Rutimi dhe përcjellja virtuale).
    • Netfilter unifikoi zbatimin e shprehjeve të grupeve, gjë që bëri të mundur specifikimin e shprehjeve të shumta për secilin element të listave të grupeve.
    • API-të janë shtuar në grupin me valë 802.11 për të konfiguruar kufijtë e fuqisë SAR, si dhe parametrat AE PWE dhe HE MCS. Drejtuesi i Intel iwlwifi ka shtuar mbështetje për gamën 6 GHz (Ultra High Band). Drejtuesi i Qualcomm Ath11k ka shtuar mbështetjen për teknologjinë FILS (Fast Initial Link Setup, standardizuar si IEEE 802.11ai), e cila ju lejon të shpëtoni nga vonesat në roaming gjatë migrimit nga një pikë aksesi në tjetrën.
  • Оборудование
    • Drejtuesi amdgpu ofron mbështetje për AMD "Green Sardine" APU (Ryzen 5000) dhe GPU "Dimgrey Cavefish" (Navi 2), si dhe mbështetje fillestare për AMD Van Gogh APU me bërthamën Zen 2 dhe GPU RDNA 2 (Navi 2). Mbështetje e shtuar për identifikuesit e rinj të APU-së Renoir (bazuar në CPU Zen 2 dhe GPU Vega).
    • Shoferi i915 për kartat video Intel mbështet teknologjinë IS (Shkallëzimi i numrave të plotë) me zbatimin e një filtri për rritjen e shkallës duke marrë parasysh gjendjen e pikselëve fqinjë (Interpolimi i fqinjit më të afërt) për të përcaktuar ngjyrën e pikselëve që mungojnë. Mbështetja për kartat diskrete Intel DG1 është zgjeruar. Është zbatuar mbështetja për teknologjinë "Big Joiner", e cila ka qenë e pranishme që nga çipat Ice Lake / Gen11 dhe lejon përdorimin e një transkoderi për të përpunuar dy rryma, për shembull, për dalje në një ekran 8K përmes një DisplayPort. U shtua një modalitet për kalimin asinkron midis dy buferave në kujtesën e videos (rrokullisje asinkronike).
    • Shoferi nouveau ka shtuar mbështetjen fillestare për GPU-të NVIDIA bazuar në mikroarkitekturën Ampere (GA100, GeForce RTX 30xx), deri më tani i kufizuar në mjetet për kontrollin e mënyrave të videos.
    • Mbështetje e shtuar për protokollin 3WIRE të përdorur në panelet LCD. Mbështetje e shtuar për panelet novatek nt36672a, TDO tl070wsh30, Innolux N125HCE-GN1 dhe ABT Y030XX067A 3.0. Më vete, mund të vërejmë mbështetjen për panelin e telefonave inteligjentë OnePlus 6 dhe 6T, i cili bëri të mundur organizimin e ngarkimit të një kerneli të pa modifikuar në pajisje.
    • Mbështetje e shtuar për kontrolluesin e parë diskret USB4 pritës të Intel, Maple Ridge.
    • Mbështetje e shtuar për kodekët audio Allwinner H6 I2S, Pajisjet Analoge ADAU1372, Intel Alderlake-S, GMediatek MT8192, NXP i.MX HDMI dhe XCVR, Realtek RT715 dhe Qualcomm SM8250.
    • Mbështetje e shtuar për bordet, pajisjet dhe platformat e ARM: Galaxy Note 10.1, Microsoft Lumia 950 XL, NanoPi R1, FriendlyArm ZeroPi, Elimo Initium SBC, Broadcom BCM4908, Mediatek MT8192/MT6779/MT8167, MSMPve2, MSMV730, MSMve382, MSMve98, MSMV3236, MSTar, MSTar, MSTar, MSTar, MSTar, MSTar, MSTar, MSV, MSTar , Mikrotik i bazuar në Marvell Prestera 750DX8, serverë me Nuvoton NPCM64 BMC, Kontron i.MX30M Mini, Espressobin Ultra, "Trogdor" Chromebook, Kobol HeliosXNUMX, Engicam PXXNUMX.Core.
    • Mbështetje e integruar për konsolën e lojërave Ouya bazuar në NVIDIA Tegra 3.

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ë 5.11 - Linux-libre 5.11-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ë i kufizuar. nga prodhuesi. Publikimi i ri pastron drejtuesit për qat_4xxx (kripto), lt9611uxcm (urë dsi/hdmi), ccs/smia++ (sensor), ath11k_pci, transmetuesin audio nxp dhe kontrollues mhi pci. Kodi i përditësuar i pastrimit të blobit në drejtuesit dhe nënsistemet amdgpu, btqca, btrtl, btusb, i915 csr. Njolla të reja të çaktivizuara në m3 rproc, idt82p33 ptp clock dhe qualcomm arm64.

Burimi: opennet.ru

Shto një koment