Pas dy muajsh zhvillimi Linus Torvalds lëshimi i bërthamës . Disa ndër ndryshimet më të dukshme janë: detektori i gjendjeve të garës KCSAN, një mekanizëm universal për dorëzimin e njoftimeve në hapësirën e përdoruesit, mbështetje për pajisje për enkriptim inline, mekanizma të zgjeruara mbrojtjeje për ARM64, mbështetje për procesorin rus Baikal-T1, mundësia e montimit të veçantë të kopjeve procfs, implementimi për ARM64 i mekanizmave të mbrojtjes Shadow Call Stack dhe BTI.
Këlli 5.8 është bërë versioni më i madh në numrin e ndryshimeve që nga fillimi i projektit. Ndryshimet nuk lidhen me një nën-sistem të vetëm, por përfshijnë pjesë të ndryshme të kernelit dhe janë kryesisht të lidhura me riparime dhe pastrime të brendshme. Ndryshimet më të mëdha janë evidentuar në drejtuesit. Në këtë version janë pranuar 17606 korrigjime nga 2081 zhvillues, të cilat kanë ndikuar në rreth 20% të të gjitha skedarëve në repozitorin e kodit të kernelit. Madhësia e patch-it është 65 MB (ndryshimet prekin 16180 skedarë, janë shtuar 1043240 rreshta kodi, dhe janë fshirë 489854 rreshta). Për krahasim, në degën 5.7 u bënë 15033 korrigjime, dhe madhësia e patch-it ishte 39 MB. Rreth 37% të të gjitha ndryshimeve të prezantuara në 5.8 janë lidhur me drejtuesit e pajisjeve, rreth 16% e ndryshimeve kanë të bëjnë me përditësimin e kodit specifik për arkitekturën harduerike, 11% lidhen me stack-un e rrjetit, 3% me sistemet e skedarëve dhe 4% me nën-sistemet e brendshme të kernelit.
:
- Virtualizimi dhe siguria
- ĂshtĂ« siguruar bllokimi i ngarkimit tĂ« moduleve tĂ« bĂ«rthamĂ«s qĂ« kanĂ« seksione me kod, nĂ« tĂ« cilat janĂ« vendosur njĂ«kohĂ«sisht bitet qĂ« lejojnĂ« ekzekutimin dhe shkruan. Ndryshimi Ă«shtĂ« realizuar si pjesĂ« e njĂ« projekti mĂ« tĂ« madh pĂ«r tĂ« eliminuar pĂ«rdorimin e faqeve tĂ« memories nga bĂ«rthama, tĂ« cilat lejojnĂ« njĂ«kohĂ«sisht ekzekutimin dhe shkruan.
- Tanishtë e mundur të krijoni ekzemplarë të veçantë të procfs, që lejojnë përdorimin e disa pikave të montimit procfs, të montuara me opsione të ndryshme, por që pasqyrojnë një hapësirë emri të identifikuesve të proceseve (pid namespace). Më parë, të gjitha pikat e montimit procfs vetëm pasqyronin një përfaqësim të brendshëm dhe çdo ndryshim në parametrat e montimit kishte ndikim në të gjitha pikat e montimit të lidhura me të njëjtën hapësirë emri të identifikuesve të proceseve. Nga fushat që mund të kërkohet montim me opsione të ndryshme është realizimi i izolimit të lehtë për sistemet e integruara me mundësinë e fshehjes në procfs të disa llojeve procesesh dhe nyjesh informacioni.
- Për platformën ARM64 është realizuar mbështetje për mekanizmin
, e ofruar nga kompilatori Clang pĂ«r mbrojtjen nga shkrimi i adresĂ«s sĂ« kthimit nga funksioni nĂ« rast tĂ« mbingarkesĂ«s sĂ« tamponit nĂ« stack. Esenca e mbrojtjes Ă«shtĂ« ruajtja e adresĂ«s sĂ« kthimit nĂ« njĂ« "stack tĂ« hijshĂ«m" pas kalimit tĂ« kontrollit nĂ« funksion dhe nxjerrja e kĂ«saj adrese para daljes nga funksioni. - PĂ«r platformĂ«n ARM64 Ă«shtĂ« shtuar pĂ«rkrahja pĂ«r instrukcione (Branch Target Indicator) pĂ«r mbrojtjen e ekzekutimit tĂ« grupeve tĂ« instruktimeve, tĂ« cilat nuk duhet tĂ« ekzekutohen nĂ« raste degjenerimi. Bloqimi i kalimeve nĂ« pjesĂ« tĂ« rastit tĂ« kodit Ă«shtĂ« implementuar pĂ«r tĂ« parandaluar krijimin e gadget-Ă«ve nĂ« eksploitat qĂ« pĂ«rdorin teknikat e programimit tĂ« orientuar pĂ«r kthim (ROP â Return-Oriented Programming, ku sulmuesi nuk pĂ«rpiqet tĂ« vendosĂ« kodin e tij nĂ« memorie, por operon me copa tĂ« ekzistuese tĂ« instruktimeve makine, duke pĂ«rfunduar me instruktionin e kthimit, nga tĂ« cilat ndĂ«rtohen zinxhirĂ« thirrjesh pĂ«r tĂ« arritur funksionalitetin e dĂ«shiruar).
- Shtuar përkrahja për pajisje për enkriptimin inline të pajisjeve bllokuese (). Pajisjet inlinep-kriptuara zakonisht janë të integruara në memorje, por logjikisht vendosen midis memories sistemike dhe diskut, duke kryer kriptimin dhe deshifrimin e input/output në bazë të çelësave dhe algoritmit të kriptimit të caktuar nga bërthama.
- Shtuar parameteri i linjës së komandës së kernelit "initrdmem", i cili lejon të specifikohet adresa fizike e vendosjes së initrd në memorie kur vendoset imazhi i fillimit në RAM.
- Shtuar kapacitet të ri: CAP_PERFMON për qasje në nënstrukturën perf dhe për të kryer monitorimin e performancës. , që lejon kryerjen e disa operacioneve me BPF (për shembull, ngarkimin e programeve BPF), të cilat më parë kërkonin të drejtat CAP_SYS_ADMIN (tani fuqitë e CAP_SYS_ADMIN janë ndarë në një kombinim të CAP_BPF, CAP_PERFMON dhe CAP_NET_ADMIN).
- një pajisje e re virtio-mem, që lejon përfshirjen dhe çfshirjen e nxehtë të memories në sistemet mik.
- Implementuar anullimin e operacioneve të mapimit në /dev/mem, nëse drejtuesi i pajisjes përdor zona të mbivendosura të memories.
- Shtuar mbrojtja kundër cenueshmërisë , që lejon rikuperimin e rezultateve të ekzekutimit të disa instruksioneve të ekzekutuara në një bërthamë tjetër CPU.
- Kujtesa dhe shërbimet sistemore
- NĂ« dokumentin qĂ« pĂ«rcakton rregullat e formĂ«simit tĂ« kodit, rekomandime pĂ«r pĂ«rdorimin e terminologjisĂ« inkluzive. Zhvilluesit nuk rekomandohet tĂ« pĂ«rdorin lidhjet âmaster / slaveâ dhe âblacklist / whitelistâ, si dhe fjalĂ«n âslaveâ veçmas. Rekomandimet prekin vetĂ«m pĂ«rdorimin e ri tĂ« kĂ«tyre termave. TĂ« dhĂ«nat ekzistuese tĂ« pĂ«rmendura nĂ« kernel do tĂ« mbeten tĂ« paprekura. NĂ« kodin e ri, pĂ«rdorimi i termave tĂ« shĂ«nuara Ă«shtĂ« i lejueshĂ«m nĂ«se kĂ«rkohet pĂ«r mirĂ«mbajtjen e API dhe ABI qĂ« jepen nĂ« hapĂ«sirĂ«n e pĂ«rdoruesit, si dhe gjatĂ« pĂ«rditĂ«simeve tĂ« kodit pĂ«r tĂ« mbĂ«shtetur pajisjet ose protokollet ekzistuese, specifikimet e tĂ« cilave detyrojnĂ« pĂ«rdorimin e terminologjive tĂ« caktuara.
- Në përbërje është përfshirë mjeti i debuggimit (Kernel Concurrency Sanitizer), i destinuar për identifikimin dinamik të në brendësi të bërthamës. Përdorimi i KCSAN mbështetet gjatë ndërtimit në GCC dhe Clang, dhe kërkon shtimin e modifikimeve të veçanta gjatë fazës së kompilimit për të ndjekur aksesin në memorie (në përdorim janë piketat e ndalimit që aktivizohen gjatë leximit ose ndryshimit të memories). Vëmendja kryesore gjatë zhvillimit të KCSAN është vënë në parandalimin e aktivizimeve të gabuara, shkallëzueshmërinë dhe lehtësinë e përdorimit.
- Shtuar njoftimet e dorëzimit nga bërthama në hapësirën e përdoruesit. Mekanizmi bazohet në një drejtor të zakonshëm dhe lejon shpërndarjen efikase të njoftimeve nga bërthama përmes kanaleve të hapura në hapësirën e përdoruesit. Pikat e pranimit të njoftimeve përbëjnë kanale të hapura në një mod të veçantë, duke lejuar grumbullimin në një tampon rrethor të mesazheve që vijnë nga bërthama. Leximi bëhet me funksionin e zakonshëm read(). Pronari i kanalit përcakton se cilat burime në bërthamë duhet të ndjekin dhe mund të përcaktojë një filtrues për të injoruar mesazhe dhe ngjarje të një tipi të caktuar. Deri tani, janë mbështetur vetëm operacionet me çelësa, si shtimi / heqja e çelësave dhe ndryshimi i atributeve të tyre. Ngjarjet e përmendura planifikohen të përdoren në GNOME.
- Ka vazhduar zhvillimi i funksionalitetit âpidfdâ, i cili ndihmon nĂ« trajtimin e situatave tĂ« ribashkimit tĂ« PID (pidfd Ă«shtĂ« i lidhur me njĂ« proces konkret dhe nuk ndryshon, ndĂ«rsa PID mund tĂ« lidhet me njĂ« proces tjetĂ«r pas pĂ«rfundimit tĂ« procesit aktual qĂ« Ă«shtĂ« i asociuar me kĂ«tĂ« PID). NĂ« versionin e ri Ă«shtĂ« shtuar mbĂ«shtetje pĂ«r pĂ«rdorimin e pidfd pĂ«r lidhjen e procesit me hapĂ«sira emrash (Ă«shtĂ« e lejuar specifikimi i pidfd gjatĂ« ekzekutimit tĂ« thirrjes sĂ« sistemit setns). PĂ«rdorimi i pidfd lejon njĂ« thirrje pĂ«r tĂ« menaxhuar lidhjen e procesit me disa lloje tĂ« hapĂ«sirave emrash, duke reduktuar ndjeshĂ«m numrin e thirrjeve tĂ« nevojshme tĂ« sistemit dhe duke realizuar lidhjen nĂ« njĂ« mĂ«nyrĂ« atomike (nĂ«se ndodhin defekte gjatĂ« lidhjes me njĂ«rĂ«n nga hapĂ«sirat emra, atĂ«herĂ« tĂ« tjerat nuk do tĂ« lidhen).
- ĂshtĂ« shtuar njĂ« thirrje e re sistemike faccessat2(), e cila ndryshon nga
me një argument të shtuar me flamujt përkatës sipas rekomandimeve POSIX (më parë këta flamuj janë emuluar në bibliotekën C, ndërsa faccessat2 e re lejon implementimin e tyre në bërthamë). - Në Cgroup konfigurimi memory.swap.high, i cili mund të përdoret për të ngadalësuar proceset që zënë shumë hapësirë në zonën e swap-it.
- Në ndërfaqen e hyrjes/ daljes asinkrone mbështetje e shtuar për thirrjen sistemore tee().
- Shtuar mekanizmi ", i cili është i destinuar për të nxjerrë përmbajtjen e strukturave të bërthamës në hapësirën e përdoruesit.
- mundësia e përdorimit të një blloku rrethor për shkëmbimin e të dhënave midis programeve BPF.
- Në mekanizmin , i dedikuar për organizimin e ekzekutimit paralel të proceseve në bërthamë, mbështetje e shtuar për proceset me shumë tematizime me barazimin e ngarkesës.
- Në mekanizmin pstore, i cili lejon ruajtjen e informacionit të treguesit rreth shkakut të crash-it në hapësirën e kujtesës, pa humbur midis rinisjeve, backend për ruajtjen e informacionit në pajisje bllok.
- Nga dega e bërthamës PREEMPT_RT implementimi i bllokimeve lokale.
- API i ri për alokimin e bufereve (AF_XDP), i targetuar për të lehtësuar shkruarjen e driver-ëve rrjetë me mbështetje për XDP (eXpress Data Path).
- Për arkitekturën RISC-V, është realizuar mbështetje për debugimin e komponentëve të bërthamës duke përdorur KGDB.
- Para versionin 4.8, janë rritur kërkesat për versionin e GCC që mund të përdoret për ndërtimin e bërthamës. Në një nga botimet e ardhshme, planifikohet që kjo kufi të rritet në GCC 4.9.
- Sistemi i diskut, hyrja/ dalje dhe sistemet e skedarëve
- Në Device Mapper u prezantua një përpunues i ri dm-ebs (emulate block size), i cili mund të përdoret për të imituar një madhësi më të vogël të bllokut logjik (për shembull, për të imituar sektore 512-bajtë në disqe me madhësi sektori 4K).
- Në sistemin e skedarëve F2FS është shtuar mbështetje për kompresimin duke përdorur algoritmin LZO-RLE.
- Në dm-crypt është shtuar mbështetje për çelësa të enkriptuar.
- Në Btrfs është përmirësuar përpunimi i operacioneve të leximit në modalitetin e hyrjes/daljes direkte. Gjatë montimit verifikimi i nënndarjeve dhe katalogeve të larguara që nuk kanë prind.
- Në CIFS është shtuar parameteri "nodelete", i cili lejon kontrollin e zakonshëm të të drejtave në server, por ndalon klientin nga fshirja e skedarëve ose katalogëve.
- Në Ext4 është përmirësuar përpunimi i gabimit në përdorimin e shumëfishta. Në xattr është shtuar mbështetje për hapësirën e emrave gnu.*, e cila përdoret në GNU Hurd.
- Për Ext4 dhe XFS është përfshirë mbështetje për operacionet DAX (qasje e drejtpërdrejtë në sistemin e skedarëve pa përdorimin e caches së faqeve pa aplikuar nivelin e pajisjeve bllok) në lidhje me skedarë dhe kataloge të veçanta.
- Në thirrjen sistemike është shtuar një flag , për të cilin informacioni nxirret duke përdorur mekanizmin DAX.
- Në EXFAT mbështetje për verifikimin e zonës së ngarkesës.
- Në FAT parazgjedhja e ngarkesave të elementeve FS. Testimi i një memorjeje USB 2TB të ngadalshme tregoi se koha e testit u shkurtua nga 383 në 51 sekonda.
- Sistemi i rrjetit
- Në kodin e kontrollit të punës së urave rrjetë mbështetje për protokollin (Protokolli i Redundancës së Mjeteve), i cili siguron qëndrueshmëri duke rrethuar disa switch-e Ethernet.
- Në sistemin e menaxhimit të trafikut (Tc) veprimi i ri "gate", i cili ofron mundësinë për të përcaktuar intervalet e përkohshme për trajtimin dhe përjashtimin e disa paketeve.
- Në bërthamën dhe utilitarin ethtool është shtuar mbështetje për funksionet e testimit të kabllit rrjet dhe vetë-diagnostikimin e pajisjeve rrjet.
- Në grumbullin IPv6 është shtuar mbështetje për algoritmin MPLS (Multiprotocol Label Switching) për ruterizimin e paketeve duke përdorur shumë protokollë për shikimin e etiketave (për IPv4 MPLS ishte mbështetur më parë).
- Shtuar mbështetje për transmetimin e paketave IKE (Internet Key Exchange) dhe IPSec mbi TCP () për të kaluar bllokadat e mundshme UDP.
- dispositiv i rrjetit të bllokut rnbd, që lejon organizimin e aksesit të largët në pajisjen e bllokut përmes transportit RDMA (InfiniBand, RoCE, iWARP) dhe protokollit RTRS.
- Në grumbullin TCP mbështetje për kompresimin e intervaleve në përgjigjet e konfirmimit selektiv (selective acknowledgment, SACK).
- Për IPv6 mbështetje për TCP-LD (, Long Connectivity Disruptions).
- Pajisjet
- Në drejtuesin DRM i915 për kartat grafike Intel është e aktivizuar prej default mbështetja për çipat Intel Tiger Lake (GEN12), për të cilët gjithashtu mundësia e përdorimit të sistemit SAGV (System Agent Geyserville) për rregullimin dinamik të frekuencës dhe tensionit në përputhje me kërkesat për konsum energjie ose performancë.
- Në drejtuesin amdgpu është shtuar mbështetje për formatin e pikselëve FP16 dhe është realizuar mundësia e punës me buferë të enkriptuar në memorien video (TMZ, Trusted Memory Zone).
- është shtuar mbështetje për sensorët e konsumit të energjisë për procesorët AMD Zen dhe Zen2, si dhe sensorët e temperaturës AMD Ryzen 4000 Renoir. Për AMD Zen dhe Zen2 është siguruar mbështetje për nxjerrjen e informacionit rreth konsumit të energjisë përmes interfesës (Running Average Power Limit).
- Një mbështetje për formatin e modifikatorëve të NVIDIA është shtuar në drayverin Nouveau. Për gv100 është realizuar mundësia e përdorimit të mënyrave të skanimit të ndërprerë. Shtimi i përcaktimit të vGPU.
- Në drayverin MSM (Qualcomm) është shtuar mbështetje për GPU Adreno A405, A640 dhe A650.
- fusha e brendshme për menaxhimin e burimeve DRM (Menaxhimi i Shfaqjes Direkte).
- Shtuar mbështetje për smartphone-t Xiaomi Redmi Note 7 dhe Samsung Galaxy S2, si dhe laptopët Elm/Hana Chromebook.
- Shtuar drayverë për panelet LCD: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
- Shtuar mbështetje për platformat ARM dhe platformat Renesas "RZ/G1H", Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMC, Check Point L-50,
, Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI. - Shtuar mbështetje për procesorin MIPS Loongson-2K (Loongson64 e shkurtuar). Për CPU Loongson 3 është shtuar mbështetje për virtualizimin duke përdorur hipervizorin KVM.
-
mbĂ«shtetje pĂ«r procesorin rus Baikal-T1 dhe sistemin e ndĂ«rtuar mbi tĂ«. . Procesori Baikal-T1 pĂ«rmban dy bĂ«rthama super-skalare P5600 MIPS 32 r5, qĂ« punojnĂ« me njĂ« frekuencĂ« prej 1.2 GHz. Ăipi ka cache L2 (1 MB), kontrolle tĂ« memories DDR3-1600 ECC, 1 port 10Gb Ethernet, 2 porte 1Gb Ethernet, kontroll tĂ« PCIe Gen.3 x4, 2 porte SATA 3.0, USB 2.0, GPIO, UART, SPI, I2C. Procesori ofron mbĂ«shtetje harduerike pĂ«r virtualizimin, instruksione SIMD dhe njĂ« akcelerator tĂ« integruar pĂ«r operacione kriptografike, duke pĂ«rkrahur GOST 28147-89. Ăipi Ă«shtĂ« zhvilluar duke pĂ«rdorur bllokun e bĂ«rthamor MIPS32 P5600 Warrior, i licencuar nga kompania Imagination Technologies.
Njëkohësisht Fondi Latino-Amerikan i Softuerit të Lirë
opsion â , e pastruar nga elemente tĂ« firmware dhe drivere qĂ« pĂ«rmbajnĂ« komponentĂ« ose segmente kodi tĂ« papĂ«rhapur, tĂ« cilat kufizohen nga prodhuesi. NĂ« kĂ«tĂ« version tĂ« ri, Ă«shtĂ« ndaluar ngarkimi i blob-Ă«ve nĂ« drivere pĂ«r Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 Speaker Amplifier, Microsemi ZL38060 Connected Home Audio Processor, dhe I2C EEPROM Slave. Kodi pĂ«r pastrimin e blob-Ă«ve nĂ« drivere dhe nĂ«n-sistemet Adreno GPU, HabanaLabs Goya, ekran prekur x86, vt6656 dhe btbcm Ă«shtĂ« pĂ«rmirĂ«suar.
Burimi: opennet.ru
