Po dvoch mesiacoch vývoja Linus Torvalds uvoľnenie jadra . Medzi najvýraznejšie zmeny patrí: integrácia VPN rozhrania WireGuard, podpora USB4, menné priestory pre čas, možnosť vytvárania handlerov preťaženia TCP pomocou BPF, počiatočná podpora MultiPath TCP, zbavenie jadra problému roku 2038, mechanizmus „bootconfig“, FS ZoneFS.
Do novej verzie bolo zahrnutých 13702 opráv od 1810 vývojárov,
veľkosť patchu je 40 MB (zmeny zasiahli 11577 súborov, pridaných 610012 riadkov kódu,
vykonaných 294828 riadkov). Približne 45% všetkých predložených v 5.6
zmien sa týka ovládačov zariadení, približne 15% zmien má
sa týkalo aktualizácie kódu špecifického pre hardvérové architektúry, 12%
bolo spojených so sieťovým zásobníkom, 4% — s súborovými systémami a 3% s internými
pod systémami jadra.
:
- Sieťový subsystém
- implementácia VPN rozhrania , ktoré je postavené na moderných metódach šifrovania (ChaCha20, Poly1305, Curve25519, BLAKE2s), je jednoduché na používanie, bez zložitostí, dobre sa osvedčilo v mnohých veľkých nasadeniach a poskytuje veľmi vysoký výkon (3,9-krát prevyšuje OpenVPN z hľadiska priepustnosti). Vo WireGuard je použitá koncepcia smerovania na základe šifrovacích kľúčov, ktorá predpokladá priradenie k každý sieťovému rozhraniu súkromného kľúča a jeho použitie na viazanie verejných kľúčov. Výmena verejných kľúčov na nadviazanie spojenia prebieha na podobnom princípe ako pri SSH. Potrebné pre prácu WireGuard kryptografické primitíva z knižnice v rámci štandardného Crypto API a v rámci jadra .
- integrácia komponentov potrebných na podporu MPTCP (MultiPath TCP), rozšírenia protokolu TCP na organizáciu prevádzky TCP spojenia s doručovaním paketov súčasne prostredníctvom viacerých trás cez rôzne sieťové rozhrania viazané na rôzne IP adresy. Pre sieťové aplikácie sa podobné agregované spojenie javí ako bežné TCP spojenie, pričom celá logika delenia tokov je vykonávaná silami MPTCP. Multipath TCP môže byť použitý ako na zvýšenie priepustnosti, tak aj na zvýšenie spoľahlivosti. Napríklad, MPTCP môže byť použitý na organizáciu prenosu údajov na smartfóne pomocou súčasného využitia liniek WiFi a 4G alebo na zníženie nákladov pripojením servera pomocou viacerých lacných liniek namiesto jedného drahého.
- podpora disciplíny správy sieťových front sch_ets (, IEEE 802.1Qaz), ktorá umožňuje rozdelenie priepustnosti medzi rôzne triedy prevádzky. Ak je zaťaženie určitej triedy prevádzky nižšie ako predpísaná priepustnosť, ETS umožňuje iným triedam prevádzky využiť dostupnú (nevyužitú) priepustnosť. Qdisc sch_ets sa nastavuje ako disciplína PRIO a používa triedy prevádzky na určenie prísnych a zdieľaných obmedzení priepustnosti. ETS funguje ako kombinácia disciplín a — pri existencii prísne obmedzených Tried prevádzky sa používa PRIO, ale ak nie je v rade prevádzky žiadna, funguje ako DRR.
- Bol pridaný nový typ BPF programov , ktorý umožňuje realizáciu spracovateľov funkcií jadra cez BPF. V súčasnosti je táto možnosť už dostupná na realizáciu algoritmov riadenia preťaženia TCP vo forme BPF programov. Ako príklad BPF program s implementáciou algoritmu .
- Bol prijatý do jadra , ktorý prevádza nástroje z ioctl() na použitie . Nový interface uľahčuje pridávanie rozšírení, zlepšuje spracovanie chýb, umožňuje posielať notifikácie o zmenách stavu, uľahčuje interakciu medzi jadrom a užívateľským priestorom a znižuje počet synchronizovaných pomenovaných zoznamov.
- Pridaná implementácia algoritmu riadenia sieťových radov FQ-PIE (Flow Queue PIE), zameraného na zníženie negatívneho vplyvu mediálnej vyrovnávacej pamäte paketov na okrajovom sieťovom zariadení (bufferbloat). FQ-PIE preukazuje vysokú efektívnosť pri použití v systémoch s káblovými modemmi.
- Diskový subsystém, I/O a súborové systémy
- Pre súborový systém Btrfs asynchrónna implementácia operácie DISCARD (označenie uvoľnených blokov, ktoré už je možné fyzicky neuchovávať). Pôvodne sa operácie DISCARD vykonávali synchronne, čo mohlo viesť k poklesu výkonu z dôvodu čakania na dokončenie príslušných príkazov úložným zariadením. Asynchrónna implementácia umožňuje nečakať na dokončenie DISCARD úložným zariadením a vykonávať túto operáciu na pozadí.
- V XFS čistenie kódu, v ktorom sa používali staré 32-bitové časové počítadlá (typ time_t bol nahradený time64_t), čo viedlo k problému roku 2038. Boli odstránené chyby a poškodenia pamäte, ktoré sa objavovali na 32-bitových platformách. Kód bol prepracovaný na prácu s rozšírenými atribútmi.
- do súborového systému ext4 optimalizácie výkonu súvisiace s spracovaním zámku inode pri operáciách čítania a zápisu. Výkon prepisovania v režime priameho vstupu/výstupu (Direct I/O) bol zvýšený. Pre zjednodušenie diagnostiky problémov bolo zabezpečené uchovávanie prvých a posledných chybových kódov v superbloku.
- V súborovom systéme F2FS možnosť uchovávať dáta v stlačenej forme. Pre jednotlivý súbor alebo adresár môže byť kompresia aktivovaná pomocou príkazu „chattr +c file“ alebo „chattr +c dir; touch dir/file“. Pre kompresiu celého oddielu v utilite mount možno použiť možnosť „-o compress_extension=ext“.
- Do jadra bola prijatá súborový systém , uľahčujúci nízkoúrovňovú prácu so zónovanými úložnými zariadeniami. Pod zónovanými zariadeniami sa rozumejú zariadenia na pevných diskoch alebo NVMe SSD, ktorých úložný priestor je rozdelený na zóny, ktoré tvoria skupiny blokov alebo sektorov, do ktorých je povolené iba sekvenčné pridávanie údajov s aktualizáciou celej skupiny blokov. FS ZoneFS bola vyvinutá spoločnosťou Western Digital a prepája každú zónu v úložisku s oddeleným súborom, ktorý možno použiť na uchovávanie údajov v surovom režime bez manipulácie na úrovni sektorov a blokov, t. j. umožňuje aplikáciám využívať súborové API namiesto priameho oslovovania blokového zariadenia pomocou ioctl.
- Vo NFS je predvolene vypnuté montovanie oddielov na UDP. Bola pridaná podpora možností priamych kopírovaní súborov medzi servermi, určených v špecifikácii NFS 4.2. Pridaná nová montážna možnosť „softreval“, ktorá pri zlyhaní servera umožňuje použitie cachovaných hodnôt atribútov. Napríklad pri uvedení tejto možnosti po nedostupnosti servera zostáva možnosť pohybovať sa po cestách v NFS oddiele a pristupovať k informáciám, ktoré boli uložené v cache.
- optimalizácia výkonu mechanizmu fs-verity, používaného na kontrolu integrity a overenie pravosti jednotlivých súborov. Rýchlosť sekvenčného čítania sa zvýšila vďaka použitiu Merkleho hash-stromu. Optimalizovaný výkon FS_IOC_ENABLE_VERITY v podmienkach chýbajúcich údajov v cache (aplikované predpokladané čítanie stránok s údajmi).
- Virtualizácia a bezpečnosť
- Možnosť vypnutia modulu SELinux počas prevádzky bola označená za zastaranú, a v budúcnosti bude zakázané odoberať už aktivovaný SELinux. Na vypnutie SELinux bude potrebné odovzdať parameter „selinux=0“ do príkazového riadku jadra.
- podpora priestorov názvov pre čas (time namespaces), ktoré umožňujú viazať na kontajner stav systémových hodín (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME), používať v kontajneri svoj čas a pri migrácii kontajnera na iný hostiteľ zabezpečiť nemennosť hodnôt CLOCK_MONOTONIC a CLOCK_BOOTTIME (zohľadniť čas po nahratí s ohľadom alebo bez ohľadu na pobyt v spánkovom režime). - Bol odstránený blokovaný pool /dev/random. Správanie /dev/random sa priblížilo k /dev/urandom pokiaľ ide o prevenciu blokovania entropie po inicializácii poolu.
- Do hlavného jadra bol zahrnutý ovládač, ktorý umožňuje hosťujúcim systémom bežiacim pod VirtualBoxom montovať adresáre exportované hostiteľským prostredím (VirtualBox Shared Folder).
- Do subsystému BPF bol pridaný súbor patchov (), v podmienkach aplikácie mechanizmu Retpoline na ochranu proti útokom triedy Spectre V2, ktorý umožňuje zvýšiť efektivitu volania BPF programov pri nastaní udalostí s nimi spojených (napríklad umožňuje urýchliť volanie XDP spracovateľov pri prijatí sieťového balíka).
- Bol pridaný ovládač na podporu zabudovaných prostredí TEE (Trusted Execution Environment) v APU AMD.
- Pamäť a systémové služby
- Do BPF bola pridaná podpora globálnych funkcií. Vývoj sa realizuje v rámci iniciatívy na pridanie podpory knižníc funkcií, ktoré je možné pripojiť v programoch BPF. Nasledujúcim krokom bude podpora dynamických rozšírení, ktoré umožnia načítať globálne funkcie, vrátane nahradenia existujúcich globálnych funkcií počas ich používania. Do subsystému BPF bola tiež pridaná podpora variantu operácie map (používa sa na uchovávanie trvalých údajov), ktorý podporuje vykonávanie v dávkovom režime.
- zariadenie «cpu_cooling», ktoré umožňuje chladenie prehriateho CPU prechodom do stavu nečinnosti (idle) na krátke časové obdobia.
- Pridaný systémový volanie , ponúkajúce sada dodatočných príznakov na obmedzenie povolenia súborovej cesty (zákaz prechádzania bodov pripojenia, symbolických odkazov, magic-odkazov (\proc\PID\fd), komponentov «..\/»).
- Pre rôznorodé systémy založené na architektúre big.LITTLE, kombinujúce na jednom čipe výkonné a menej výkonné energeticky efektívne jadrá CPU, pri vykonávaní úloh reálneho času je zabezpečené nastavenie parametra uclamp_min ( v jadre 5.3 mechanizmus odovzdávania záťaže). Uvedený parameter zaručuje, že úloha bude umiestnená plánovačom na jadre CPU, ktoré má dostatočný výkon.
- Jadro je zbavené . Nahradené posledné zostávajúce spracovatelia, v ktorých pre čítač epochálneho času bol použitý 32-bitový (signed int) typ time_t, ktorý s ohľadom na správu od roku 1970 by mal pretekať v roku 2038.
- Pokračovala vylepšovanie rozhrania asynchrónneho vstupu/výstupu prvý dodatok podpora nových operácií: IORING_OP_FALLOCATE (rezervácia prázdnych oblastí), IORING_OP_OPENAT,
IORING_OP_OPENAT2,
IORING_OP_CLOSE (otvorenie a uzavretie súborov),
IORING_OP_FILES_UPDATE (pridanie a odstránenie súborov zo zoznamu rýchleho prístupu),
IORING_OP_STATX (žiadosť o informácie o súbore),
IORING_OP_READ,
IORING_OP_WRITE (zjednodušené ekvivalenty IORING_OP_READV a IORING_OP_WRITEV),
IORING_OP_FADVISE,
IORING_OP_MADVISE (asynchrónne varianty volaní posix_fadvise a madvise), IORING_OP_SEND,
IORING_OP_RECV (odosielanie a prijímanie sieťových údajov),
IORING_OP_EPOLL_CTL (vykonávanie operácií s deskriptorom súborov epoll). - Pridaný systémový volanie , umožňujúce procesu extrahovať z iného procesu súborový deskriptor otvoreného súboru.
- mechanizmus «bootconfig», ktorý umožňuje okrem možností príkazového riadku určovať parametre fungovania jadra prostredníctvom konfiguračného súboru. Na pridanie takýchto súborov do obrazu initramfs bola navrhnutá utilita bootconfig. Uvedená možnosť môže byť použitá, napríklad na nastavenie kprobes počas spúšťania.
- mechanizmus čakania na zápis a čítanie údajov v anonymných kanáloch (pipe). Zmena umožnila zrýchliť vykonávanie úloh, ako je paralelné zostavovanie veľkých projektov. Pri tom môže optimalizácia viesť k pretekaniu v GNU make kvôli chybe vo verzii 4.2.1, ktorá bola odstránená vo verzii 4.3.
- Do prctl() bol pridaný príznak PR_SET_IO_FLUSHER, ktorý sa môže aplikovať na označenie procesov, ktoré sa zaoberajú oslobodzovaním pamäte, pre ktoré by nemali byť uplatnené obmedzenia v situáciách nedostatku pamäte v systéme.
- Na základe systému správy pamäte ION používaného v Androide bola implementovaná pod-system , ktorý umožňuje spravovať prideľovanie DMA-bufferov na zdieľanie oblastí pamäte ovládačmi, aplikáciami a rôznymi pod-systémami.
- Hardvérové architektúry
- Pridaná podpora rozšírenia E0PD, ktoré sa objavilo v ARMv8.5 a umožňuje realizáciu ochrany pred útokmi spojenými so špekulatívnym vykonávaním inštrukcií v CPU. Ochrana založená na E0PD vedie k menším nákladom ako ochrana KPTI (Izolácia tabuliek strán jadra).
- Pre systémy založené na architektúre ARMv8.5 bola pridaná podpora inštrukcie RNG, ktorá poskytuje prístup k hardvérovému generátoru pseudo-náhodných čísel. V jadre je inštrukcia RNG využívaná na generovanie entropie pri inicializácii generátora pseudo-náhodných čísel poskytovaného jadrom.
- Odstránená podpora rozšírení MPX (Rozšírenia ochrany pamäte), ktoré boli pridané do jadra a umožňovali organizovať kontrolu ukazovateľov na dodržanie hraníc pamäťových oblastí. Technológia sa nepresadila v kompilátoroch a bola odstránená z GCC.
- Pre architektúru RISC-V bola implementovaná podpora debuggovacieho nástroja KASan (Kernel address sanitizer), ktorý zabezpečuje odhaľovanie chýb pri práci s pamäťou.
- Zariadenie
- Bola implementovaná podpora špecifikácie , ktorá je založená na protokole Thunderbolt 3 a poskytuje priepustnosť až 40 Gbit/s, pričom si zachováva spätnú kompatibilitu s USB 2.0 a USB 3.2. Rovnako ako , rozhranie USB 4.0 umožňuje tunelovanie rôznych protokolov cez jeden kábel s konektorom , vrátane PCIe, Display Port a USB 3.x, ako aj softvérových realizácií protokolov, napríklad na organizovanie sieťových spojení medzi hostiteľmi. Realizácia je založená na už dostupnom ovládači Thunderbolt v jadre Linux a prispôsobuje ho na prácu s hostiteľmi a zariadeniami kompatibilnými s USB4. Zmeny tiež pridávajú podporu zariadení Thunderbolt 3 do softvérovej realizácie manažéra pripojení (Connection Manager), ktorý je zodpovedný za vytváranie tunelov na pripojenie viacerých zariadení cez jeden konektor.
- V ovládači amdgpu je pridaná počiatočná podpora technológie ochrany proti kopírovaniu HDCP 2.x (High-bandwidth Digital Content Protection). Pridaná podpora ASIC čipu AMD Pollock, založeného na Raven 2. Implementovaná možnosť resetovania GPU pre rodiny Renoir a Navi.
- V DRM ovládači pre grafické karty Intel je podpora DSI VDSC pre čipy založené na mikroarchitektúre Ice Lake a Tiger Lake, realizované LMEM mmap (lokálna pamäť zariadenia), vylepšené analýzy VBT (Video BIOS Table), implementovaná podpora HDCP 2.2 pre čipy Coffee Lake.
- Pokračuje práca na unifikácii kódu ovládača amdkfd (pre diskrétne GPU, ako sú Fiji, Tonga, Polaris) s ovládačom amdgpu.
- Prepracovaný ovládač k10temp, v ktorom sa objavila podpora výstupu parametrov napätia a prúdu pre CPU AMD Zen, ako aj rozšírené informácie z teplotných senzorov používaných v CPU Zen a Zen 2.
- V ovládači nouveau je podpora režimu verifikovanej načítania firmvéru pre GPU NVIDIA založené na mikroarchitektúre Turing (GeForce RTX 2000), čo umožnilo zapnúť podporu 3D akcelerácie pre tieto karty (je potrebné nahrať oficiálne firmvéry s digitálnym podpisom NVIDIA). Pridaná podpora grafického enginu TU10x. Riešené problémy s HD Audio.
- Pridaná podpora kompresie dát pri prenose cez DisplayPort MST (Multi-Stream Transport).
- Pridaný nový ovládač „“ pre bezdrôtové čipy Qualcomm s podporou 802.11ax.
Ovládač je založený na stacku mac80211 a podporuje režimy prístupového bodu, pracovnej stanice a uzla Mesh siete. - Cez sysfs je sprístupnený prístup k čitateľným hodnotám teplotných senzorov používaných na moderných pevný diskoch a SSD.
- významné zmeny v zvukovom systéme ALSA, zamerané na odstránenie kódu z (odchod od používania 32-bitového typu time_t v rozhraní snd_pcm_mmap_status a snd_pcm_mmap_control). Pridaná podpora nových zvukových kodekov
Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770. - ovládače pre LCD panely Logic PD 28, Jimax8729d MIPI-DSI, igenic JZ4770, Sony acx424AKP, Leadtek LTK500HD1829, Xinpeng XPP055C272, AUO B116XAK01, GiantPlus GPM940B0,
BOE NV140FHM-N49,
Satoz SAT050AT40H12R2,
Sharp LS020B1DD01D. - podpora ARM platforiem a platforiem Gen1 Amazon Echo (OMAP3630) , Samsung Galaxy S III mini (GT-I8190), Allwinner Emlid Neutis, Libre Computer ALL-H3-IT, PineH64 Model B, Aibretech Amlogic GX PC,
Armada SolidRun Clearfog GTR, NXPGateworks GW59xx,
Tolino Shine 3 eBook reader,
Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX a HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
Rockchip Radxa Dalang Carrier, Radxa Rock Pi N10, VMARC RK3399Pro SOM
ST Ericsson HREF520, Inforce 6640, SC7180 IDP, Atmel/Microchip AM9X60 (ARM926 SoC, Kizboxmini), ST stm32mp15, AM3703/AM3715/DM3725, ST Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Pridaná podpora PCIe ovládača, používaného v Raspberry Pi 4.
Zároveň latinskoamerická Nadácia slobodného softvéru
variantu — , zbaveného prvkov firmvérov a ovládačov obsahujúcich nevlastné komponenty alebo časti kódu, ktorých použitie je obmedzené výrobcom. V novej verzii je deaktivované nahrávanie blobov v ovládačoch pre AMD TEE, ATH11K a Mediatek SCP. Aktualizovaný kód čistenia blobov v ovládačoch a subsystémoch AMD PSP, amdgpu a nouveau.
Zdroj: opennet.ru
