Pas dy muajsh zhvillimi Linus Torvalds lëshimi i bërthamës . Ndër ndryshimet më të dukshme janë: një ndërfaqe e re për hyrje/ dalje asinkrone io_uring, mundësia e përdorimit të NVDIMM si RAM, mbështetje për memorie virtuale të ndarë në Nouveau, mbështetje për monitorimin e shkallëzueshëm të sistemeve të mëdha të skedarëve përmes fanotify, mundësia e konfigurimit të niveleve të kompresionit Zstd në Btrfs, një trajtim i ri cpuidle TEO, implementimi i thirrjeve sistemike për të zgjidhur problemin e vitit 2038, mundësia e boot-it nga pajisjet device-mapper pa initramfs, moduli LSM SafeSetID, mbështetje për patch të bashkuar live.
:
- Sistemi i diskut, hyrja/ dalje dhe sistemet e skedarëve
- Krijuar njĂ« ndĂ«rfaqe tĂ« re pĂ«r hyrje/ dalje asinkrone â , e cila Ă«shtĂ« e njohur pĂ«r mbĂ«shtetje tĂ« polling-ut tĂ« hyrjes/ daljeve dhe mundĂ«sinĂ« e punĂ«s si me buferim ashtu edhe pa buferim. KujtojmĂ« se mekanizmi i propozuar mĂ« parĂ« pĂ«r hyrje/ dalje asinkrone "aio" nuk mbĂ«shteste hyrje/ dalje me buferim, mund tĂ« punonte vetĂ«m nĂ« modalitetin O_DIRECT (pa buferim dhe pĂ«r tĂ« anashkaluar cache-in), kishte probleme me bllokimin pĂ«r shkak tĂ« pritjes sĂ« disponueshmĂ«risĂ« sĂ« metadatas dhe tregonte shpenzime tĂ« larta pĂ«r shkak tĂ« kopjimit tĂ« tĂ« dhĂ«nave nĂ« memorie.
Në kuadër të API
io_uring zhvilluesit përpiqen të eliminojnë mangësitë e ndërfaqes së vjetër aio. Sipas io_uring është shumë i afërt me dhe e tejkalon ndjeshëm libaio kur punon me polling aktiv. Për përdorimin e io_uring në aplikacionet përfundimtare që punojnë në hapësirën e përdoruesit, është përgatitur një bibliotekë , e cila ofron një paketë të nivelit të lartë mbi ndërfaqen e kernelit; - Në mekanizmin e ndjekjes së ngjarjeve në FS fanotify() mbështetje për ndjekjen e situatave të ndryshimit të superblokut dhe strukturës (ngjarjet e krijimit, fshirjes dhe lëvizjes së katalogëve). Mundësitë e paraqitura ndihmojnë në zgjidhjen e problemeve me shkallëzueshmërinë, që ndodhin gjatë krijimit të ndjekjeve rekursive për ndryshime në sisteme të mëdha skedarësh përmes mekanizmit inotify (ndryshimet në dirent më parë mund të ndiqeshin vetëm përmes inotify, por
efikasiteti në kushtet e ndjekjes rekursive të katalogëve të mëdhenj la për të dëshiruar). Tani ky monitorim mund të bëhet me efikasitet përmes fanotify; - Në sistemin e skedarëve Btrfs mundësia e konfigurimit të niveleve të kompresionit për algoritmin zstd, i cili mund të konsiderohet si një kompromis optimal, midis lz4 të shpejtë por të papërshtatshëm dhe xz të ngadaltë por me kompresim të mirë. Siç ishte më parë e mundur të vendoset niveli i kompresionit kur aplikohej zlib për zstd është shtuar mbështetje për opsionin e montimit "-o compress=zstd:level". Në testimin e nivelit të parë minimal u arrit kompresimi i të dhënave me 2.658 herë me shpejtësi kompresimi 438.47 MB/s, shpejtësi shpërbërjeje 910.51 MB/s dhe konsum të memories 780 MB, ndërsa niveli maksimal 15 arriti 3.126 herë, por me shpejtësi kompresimi 37.30 MB/s, shpërbërjeje 878.84 MB/s dhe konsum të memories 2547 MB;
- mundësia e boot-it nga sistemi i skedarëve, i vendosur në pajisjen device-mapper, pa përdorimin e initramfs. Duke filluar nga lëshimi aktual i kernelit pajisjet device-mapper mund të përdoren drejtpërdrejt në procesin e boot-it, për shembull, si një ndarje me FS-në e rrënjës. Konfigurimi i ndarjes realizohet përmes parametrave të boot-it "dm-mod.create". Mes moduleve të lejuara për boot janë: "crypt", "delay", "linear", "snapshot-origin" dhe "verity";
- Në sistemin e skedarëve të orientuar drejt memorie flash F2FS është shtuar flaga F2FS_NOCOW_FL, që lejon ndalimin e modit copy-on-write për një skedar të caktuar;
- Nga kernel është hequr sistemi i skedarëve , i cili përfaqëson një variant të ext2, i adaptuar për punë me depozita objektive OSD (Object-based Storage Device). Po ashtu është hequr mbështetje për protokollin SCSI për pajisjet e tilla të ruajtjes objektive;
- Krijuar njĂ« ndĂ«rfaqe tĂ« re pĂ«r hyrje/ dalje asinkrone â , e cila Ă«shtĂ« e njohur pĂ«r mbĂ«shtetje tĂ« polling-ut tĂ« hyrjes/ daljeve dhe mundĂ«sinĂ« e punĂ«s si me buferim ashtu edhe pa buferim. KujtojmĂ« se mekanizmi i propozuar mĂ« parĂ« pĂ«r hyrje/ dalje asinkrone "aio" nuk mbĂ«shteste hyrje/ dalje me buferim, mund tĂ« punonte vetĂ«m nĂ« modalitetin O_DIRECT (pa buferim dhe pĂ«r tĂ« anashkaluar cache-in), kishte probleme me bllokimin pĂ«r shkak tĂ« pritjes sĂ« disponueshmĂ«risĂ« sĂ« metadatas dhe tregonte shpenzime tĂ« larta pĂ«r shkak tĂ« kopjimit tĂ« tĂ« dhĂ«nave nĂ« memorie.
- Virtualizimi dhe siguria
- Në prctl() është shtuar opsioni PR_SPEC_DISABLE_NOEXEC për menaxhimin e ekzekutimit spekulativ të instrukcioneve për procesin e zgjedhur. Opsioni i ri lejon përjashtimin selektiv të ekzekutimit spekulativ për proceset që potencialisht mund të sulmohen nga një sulm i tipit Spectre. Bllokimi qëndron në fuqi deri në thirrjen e parë të exec();
- Ndërhyrë është realizuar modul LSM , që i lejon shërbimeve sistemike të menaxhojnë në mënyrë të sigurt përdoruesit pa rritur privilegjet (CAP_SETUID) dhe pa fituar autoritetet e përdoruesit root. Saktësimi i privilegjeve bëhet përmes përcaktimit në securityfs të rregullave mbi bazën e listës së bardhë të lidhjeve të lejuara (në formën "UID1:UID2");
- Shtuar janë ndryshime të nivelit të ulët, të nevojshme për organizimin e ngarkesës së moduleve të sigurisë (LSM). Paraqitur është parametri i ngarkesës së kernelit "lsm", që lejon menaxhimin e atyre moduleve që ngarkohen dhe renditjen e tyre;
- Në nën sistemin e auditit është shtuar mbështetje për hapësirat e emrave të skedarëve;
- mundĂ«sitĂ« e GCC-pluginit structleak, i cili lejon bllokimin e humbjeve tĂ« mundshme tĂ« pĂ«rmbajtjes sĂ« memories. ĂshtĂ« siguruar inicializimi i çdo variabli qĂ« pĂ«rdoret nĂ« kod pĂ«rmes referencave nĂ« stack;
- Sistemi i rrjetit
- Për socketat një opsion i ri "SO_BINDTOIFINDEX", i ngjashëm me
"SO_BINDTODEVICE", por që merr si argument numrin indeks të ndërfaqes rrjetërore në vend të emrit të ndërfaqes; - Në stackun mac80211 është shtuar mundësia për t'i caktuar një pajisjeje disa BSSID (adresa MAC). Si pjesë e projektit për optimizimin e performancës WiFi, është shtuar marrja në shqyrtim e shpërndarjes së kohës së ajrit dhe mundësia për të shpërndarë kohën e ajrit midis disa stacioneve (në modalitetin e pikës së qasjeve, caktimi i një kohe më të vogël për transmetimin e stacioneve të ngadalta pa tel, në vend të shpërndarjes së barabartë të kohës midis të gjitha stacioneve);
- Shtuar mekanizmi "", i cili krijon njoftime kur ka probleme me ndërfaqen rrjetërore;
- Për socketat një opsion i ri "SO_BINDTOIFINDEX", i ngjashëm me
- Kujtesa dhe shërbimet sistemore
- dorëzimi i sigurt i sinjaleve, duke marrë parasysh mundësinë e ripërdorimit të PID. Për shembull, gjatë thirrjes së kill, më parë kishte mundësi që menjëherë pas dërgesës së sinjalit, PID-i i synuar mund të kishte qenë liroj nga përfundimi i procesit dhe të ishte marrë nga një proces tjetër, dhe për pasojë, sinjali dërgohej në një proces tjetër. Për të evituar situata të tilla, është shtuar një thirrje e re sistemike pidfd_send_signal, e cila përdor deshifrim të skedarëve nga /proc/pid për të siguruar një lidhje stabile me procesin. Edhe nëse PID-i ri do të përdorej gjatë trajtimit të thirrjes sistemike, deshifrimi i skedarëve nuk do të ndryshonte dhe mund të përdorej në mënyrë të sigurt për të dërguar sinjale te procesi;
- mundësia e përdorimit të pajisjeve të memories së përhershme (persistent-memory, për shembull ) si RAM. Deri më tani, në bërthamë këto pajisje ishin mbështetur si pajisje ruajtjeje, por tani mund të përdoren gjithashtu si RAM shtesë. Kjo mundësi është realizuar në përgjigje të dëshirave të përdoruesve që ishin të gatshëm të pranonin një vonesë në performancë dhe dëshironin të përdornin API-në e menaxhimit të memories të bërthamës së Linux në vend të sistemeve ekzistuese për shpërndarjen e memories në hapësirën e përdoruesit që funksiononin mbi mmap për skedarin dax;
- është shtuar një trajtues i ri i bllokimit të CPU (cpuidle, i cili vendos se kur mund të kalojë CPU në modulet e thella të kursimit të energjisë, sa më i thellë të jetë moduli, aq më shumë energji kursen, por gjithashtu është i nevojshëm më shumë kohë për të dalë nga moduli) - TEO (Timer Events Oriented Governor). Deri më tani, ishin ofertuar dy trajtues cpuidle - "menu" dhe "ladder", të cilët dalloheshin nga heuristika e tyre. Në trajtuesin "menu" kishte probleme të njohura me marrjen e vendimeve heuristike, për të cilat u vendos të përgatitet një trajtues i ri. TEO pozicionohet si një alternativë ndaj trajtuesit "menu", duke lejuar arritjen e performancës më të lartë me ruajtjen e po të njëjtit nivel energjie;
Aktivizimi i trajtuesit të ri mund të bëhet nëpërmjet parametrave të ngarkesës "cpuidle.governor=teo"; - Në kuadër të punës për zgjidhjen e , i shkaktuar nga mbipopullimi i llojit 32-bit time_t, janë përfshirë thirrje sistemike që ofrojnë për arkitekturën 32-bit numra të kohës 64-bit. Në rezultat, struktura 64-bit time_t tani mund të përdoret në të gjitha arkitekturën. Ndryshime të ngjashme janë realizuar gjithashtu në sistemin rrjetor për opsionet e socketave rrjetërore;
- Në sistemin e ngarkesës së nxehtë të patch-ave për bërthamën (live patching) mundësia "Atomic Replace" për aplikimin atomik të një serie ndryshimesh në një funksion. Kjo mundësi lejon shpërndarjen e patch-ave përmbledhëse që përfshijnë menjëherë disa ndryshime, në vend të një procesi mjaft të komplikuar për ndjekjen e aplikimit të patch-ave live në një rend të caktuar. Nëse më parë, çdo ndryshim i ardhshëm duhej të bazohej në gjendjen e funksionit pas ndryshimit të mëparshëm, tani mund të shpërndahen menjëherë disa ndryshime që lidhen me një gjendje të vetme fillestare (dmth. ata që ofrojnë mund të mbështesin një patch të përmbledhur në lidhje me bërthamën bazë në vend të një zinxhiri të patch-ave të varur nga njëra-tjetra);
- e vjetruar mbështetje për formatin e skedarëve ekzekutivë a.out dhe
kod për formimin e skedarëve core në formatin a.out, i cili ndodhet në një gjendje të braktisur. Formati a.out nuk aplikohet më në sistemet me Linux, dhe gjenerimi i skedarëve a.out nuk mbështetet nga mjetet moderne të konfigurimit për Linux si standard. Për më tepër, ngarkuesi për skedarët a.out mund të realizohet tërësisht në hapësirën e përdoruesit; - Mekanizmi i verifikimit të programeve BPF ka shtuar mundësinë për të identifikuar dhe eliminuar kodin e papërdorur. Në bërthamë janë përfshirë gjithashtu patch-e me mbështetje për spinlock për nën-sistemin BPF, duke ofruar mundësi të tjera për menaxhimin e ekzekutimit të paralel BPF;
- Pajisjet
- Në drejtuesin Nouveau mbështetje për menaxhimin heterogjen të memories, duke ofruar mundësinë që CPU dhe GPU të kenë qasje në zona të përbashkëta të sinkronizuara të memories. Sistemi i memories virtuale të ndarë (SVM, shared virtual memory) është realizuar mbi bazën e nën-sistemit HMM (Heterogeneous memory management), duke lejuar përdorimin e pajisjeve me bllokade vetjake të menaxhimit të memories (MMU, memory management unit), të cilat mund të kenë qasje në memorien kryesore. Gjithashtu, me anë të HMM mund të organizohet një hapësirë adresuese e përbashkët ndërmjet GPU dhe CPU, ku GPU mund të ketë qasje në memorien kryesore të procesit. Mbështetje për SVM aktualisht është e aktivizuar vetëm për GPU të familjes Pascal, megjithatë mbështetje është siguruar edhe për GPU Volta dhe Turing. Për më tepër, në Nouveau; ioctl i ri për menaxhimin e migrimit të zonave të memories së proceseve në memorien e GPU;
- Në drajverin DRM të Intel për GPU Skylake dhe më të rinjtë (gen9+) në default është moda fastboot, e cila përjashton ndryshimet e panevojshme të modave gjatë ngarkimit. identifikuesit e pajisjeve mbi bazën e mikroarkitekturave Coffelake dhe Ice Lake. Për çipat Coffelake mbështetje GVT (). Për GPU-të virtuale mbështetje VFIO EDID. Për panelet LCD MIPI/DSI mbështetje për elementët ACPI/PMIC. modet e reja TV 1080p30/50/60 TV;
- Në drajverin amdgpu është shtuar mbështetje për GPU Vega10/20 BACO. Janë realizuar mjete për menaxhimin e energjisë së Vega 10/20 dhe tabela të menaxhimit të ventilatorit të Vega 10. Janë shtuar identifikues të rinj PCI për pajisjet GPU Picasso. interfaci për menaxhimin e varësive të planifikuara për përjashtimin e bllokimeve të ndërsjellta;
- DRAJVERI DRM/KMS për akceleratorët e operacioneve ekranore (Mali D71);
- është shtuar mbështetje për panelet ekran Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 dhe Kingdisplay kd097d04;
- është shtuar mbështetje për kodekët e zërit Rockchip RK3328, Cirrus Logic CS4341 dhe CS35L36, MediaTek MT6358, Qualcomm WCD9335 dhe Ingenic JZ4725B, si dhe platformën audio të Mediatek MT8183;
- është shtuar mbështetje për kontrollorët NAND Flash STMicroelectronics FMC2, Amlogic Meson;
- është shtuar mbështetje për akceleratorët për sistemet e hardware-t Habana AI;
- është shtuar mbështetje për kontrollorët Ethernet gigabit NXP ENETC dhe ndërfaqet wireless MediaTek MT7603E (PCIe) dhe MT76x8.
Përveç kësaj, Fondi Latinoamerikan i Softuerit të Lirë
opsion â , i pastruar nga elementet e firmware dhe drajverĂ«ve qĂ« pĂ«rmbajnĂ« komponente tĂ« pa lira ose fragmente kodi, fusha e pĂ«rdorimit tĂ« tĂ« cilave Ă«shtĂ« e kufizuar nga prodhuesi. NĂ« lĂ«shimin e ri Ă«shtĂ« çaktivizuar ngarkimi i blob-ve nĂ« drajverĂ«t mt7603 dhe goya. ĂshtĂ« pĂ«rmirĂ«suar kodi pĂ«r pastrimin e blob-ve nĂ« drajverĂ«t dhe nĂ«n-sistemat wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk dhe touchscreen_dmi. Pastrimi i blob-ve nĂ« ngarkuesin e firmware-t lantiq xrx200 Ă«shtĂ« ndalur pĂ«r shkak tĂ« heqjes sĂ« tij nga bĂ«rthama.
Burimi: opennet.ru
