Vydanie jadra Linux 5.1

Po dvoch mesiacoch vývoja Linus Torvalds predstavil uvoľnenie jadra Linux 5.1. Medzi najvýznamnejšie zmeny patrí nový rozhranie pre asynchrónny vstup/výstup io_uring, možnosť využívania NVDIMM ako RAM, podpora zdieľanej virtuálnej pamäte v Nouveau, podpora škálovateľného sledovania veľmi veľkých FS cez fanotify, možnosť nastavenia úrovní kompresie Zstd v Btrfs, nový správca cpuidle TEO, implementácia systémových volaní na riešenie problému roku 2038, možnosť zavádzania z zariadení device-mapper bez initramfs, LSM modul SafeSetID, podpora kombinovaných live-patchov.

Hlavné novinky:

  • Diskový subsystém, I/O a súborové systémy
    • Bol zavedený nový rozhranie pre asynchrónny vstup/výstup — io_uring, ktoré vyniká podporou polling vstup/výstup a možnosťou práce ako s bufferovaním, tak aj bez bufferovania. Pripomíname, že predtým navrhnutý mechanizmus asynchrónneho vstup/výstupu „aio“ nepodporoval bufferovaný vstup/výstup, mohol pracovať iba v režime O_DIRECT (bez bufferovania a obchádzania cache), mal problémy s výskytom zámkov kvôli čakaniu na dostupnosť metadát a vykazoval veľké náklady kvôli kopírovaniu dát v pamäti.

      V rámci API
      io_uring sa vývojári snažili odstrániť nedostatky starého rozhrania aio. Podľa výkonu io_uring je veľmi blízko SPDK a významne predbehne libaio pri práci s povoleným pollingom. Na použitie io_uring v konečných aplikáciách, ktoré pracujú v užívateľskom priestore, bola pripravená knižnica liburing, ktorá poskytuje vysokú úroveň obalenia nad rozhraním jadra;

    • V mechanizme sledovania udalostí v FS fanotify() bola pridaná podpora sledovania situácií zmeny superbloku a štruktúry dirent (udalosti vytvárania, mazania a presúvania adresárov). Predstavené možnosti pomáhajú riešiť problémy so škálovateľnosťou, ktoré vznikajú pri vytváraní rekurzívneho sledovania zmien vo veľmi veľkých FS pomocou mechanizmu inotify (zmeny dirent sa predtým dali sledovať len cez inotify, ale
      efektivita v podmienkach rekurzívneho sledovania veľkých vnorených adresárov zanechávala prianie). Teraz je možné takéto monitorovanie efektívne vykonávať cez fanotify;
    • Vo súborovom systéme Btrfs bola pridaná možnosť nastavenia úrovne kompresie pre algoritmus zstd, ktorý môže byť považovaný za optimálny kompromis medzi rýchlym, ale neefektívnym lz4 a pomalým, ale dobre kompresným xz. Podobne ako predtým, keď bolo možné nastaviť úroveň kompresie pri použití zlib, pre zstd bola pridaná podpora montovacej možnosti „-o compress=zstd:level“. Pri testovaní zabezpečil minimálny prvý level kompresiu dát 2,658-krát pri rýchlosti kompresie 438,47 MB/s, rýchlosti rozbalenia 910,51 MB/s a spotrebe pamäte 780 MB, zatiaľ čo maximálny 15. level dosiahol 3,126-krát, ale pri rýchlosti kompresie 37,30 MB/s, rozbalenia 878,84 MB/s a spotrebe pamäte 2547 MB;
    • Pridaná možnosť spustenia zo súborového systému umiestneného na zariadení device-mapper, bez použitia initramfs. Začínajúc aktuálnym vydaním jadra, zariadenie device-mapper môže byť priamo použité v procese spustenia, napríklad ako oddiel s koreňovým FS. Nastavenie oddielu sa vykonáva pomocou boot parametra „dm-mod.create“. Medzi povolené moduly device-mapper pre spustenie patrí: „crypt“, „delay“, „linear“, „snapshot-origin“ a „verity“;
    • Do flash-optimálnej súborovej sústavy F2FS bol pridaný flag F2FS_NOCOW_FL, ktorý umožňuje vypnúť režim copy-on-write pre požadovaný súbor;
    • Z jadra bola odstránená súborová sústava Exofs, ktorá predstavuje variant ext2 prispôsobený na prácu so skladovacími zariadeniami OSD (Object-based Storage Device). Tiež bola odstránená podpora SCSI protokolu pre takéto objektoé uloženie;
  • Virtualizácia a bezpečnosť
    • Do prctl() bola pridaná možnosť PR_SPEC_DISABLE_NOEXEC na riadenie špekulatívneho vykonávania inštrukcií pre vybraný proces. Nová možnosť umožňuje selektívne vypnúť špekulatívne vykonávanie pre procesy, ktoré môžu byť potenciálne napadnuté útokom typu Spectre. Zablokovanie platí až do prvého volania exec();
    • Bol implementovaný LSM modul SafeSetID, ktorý umožňuje systémovým službám bezpečne spravovať používateľov bez zvyšovania oprávnení (CAP_SETUID) a bez získania práv používateľa root. Priradenie oprávnení sa realizuje cez definovanie v securityfs pravidiel na základe bieleho zoznamu povolených viazaní (vo forme „UID1:UID2“);
    • Boli pridané nízkoúrovňové zmeny potrebné na stohovú organizáciu načítania bezpečnostných modulov (LSM). Bol predstavený parameter načítania jadra „lsm“, ktorý umožňuje spravovať, ktoré moduly sa načítavajú a v akom poradí;
    • Do subsystému auditu bola pridaná podpora menných priestorov súborov;
    • Rozšírené možnosti GCC pluginu structleak, ktorý umožňuje blokovať potenciálne úniky obsahu pamäte. Zabezpečená inicializácia akýchkoľvek premenných, ktoré sa používajú v kóde cez odkaz v zásobníku;
  • Sieťový subsystém
    • Pre sokety bola implementovaná nová možnosť „SO_BINDTOIFINDEX“, podobná
      „SO_BINDTODEVICE“, ale prijímajúca ako argument indexové číslo sieťového rozhrania namiesto názvu rozhrania;
    • Do stohu mac80211 bola pridaná možnosť priradiť jednému zariadeniu viacero BSSID (MAC adries). V rámci projektu na optimalizáciu výkonu WiFi do stohu mac80211 bola pridaná podpora rozdelenia vzdušného času a možnosť rozdeľovať vzdušný čas medzi viaceré stanice (pri práci v režime prístupového bodu zabezpečuje menšie vyhradenie času na prenos pomalým bezdrôtovým stanicám namiesto rovnomerného rozdelenia času medzi všetky stanice);
    • Bol pridaný mechanizmus „devlink health„, poskytujúci upozornenia pri vzniku problémov so sieťovým rozhraním;
  • Pamäť a systémové služby
    • Realizovaná bezpečné doručovanie signálov, berúce do úvahy možnosť opätovného použitia PID. Napríklad pri vykonávaní volania kill mohla predtým vzniknúť situácia, kedy hneď po odoslaní signálu mohol byť cieľový PID uvoľnený kvôli ukončeniu procesu a znovu obsadený iným procesom, pričom signál bol nakoniec odoslaný inému procesu. Aby sa predišlo podobným situáciám, bol pridaný nový systémový volací pidfd_send_signal, ktorý používa súborové deskriptory z /proc/pid na zabezpečenie stabilnej viazanosti na proces. Aj keby bol PID znova použitý počas spracovania systémového volania, súborový deskriptor sa nezmení a môže sa bezpečne použiť na odoslanie signálu procesu;
    • Pridaná možnosť použiť zariadenia trvalej pamäte (persistent-memory, napríklad NVDIMM) ako RAM. Doteraz sa podobné zariadenia v jadre využívali ako úložné zariadenia, no teraz ich je možné použiť aj ako dodatočnú operačnú pamäť. Možnosť bola zavedená na základe požiadaviek používateľov, ktorí sú pripravení znášať pokles výkonu a chcú využiť štandardné API na správu pamäte jadra Linux namiesto používania existujúcich systémov rozdeľovania pamäte v užívateľskom priestore, ktoré pracujú nad mmap pre dax súbor;
    • Bol pridaný nový spracovateľ idle CPU (cpuidle, rozhoduje, kedy je možné prepnúť CPU do hlbokých režimov úspory energie, čím hlbší režim — tým väčšia úspora, ale aj dlhší čas potrebný na návrat z režimu) — TEO (Governor orientovaný na časové udalosti). Doteraz boli k dispozícii dva spracovatele cpuidle — „menu“ a „ladder“, ktoré sa líšia heuristikou. V spracovateľovi „menu“ existujú známe problémy s prijímaním heuristických rozhodnutí, pre ktoré bolo rozhodnuté pripraviť nový spracovateľ. TEO je prezentovaný ako alternatíva k spracovateľovi „menu“, ktorá umožňuje dosiahnuť vyšší výkon pri zachovaní rovnakej úrovne spotreby energie.
      Nový spracovateľ je možné aktivovať pomocou boot parametra „cpuidle.governor=teo“;
    • V rámci práce na odstránení problémov roku 2038, spôsobeného prekročením 32-bitového typu time_t, sú súčasťou zahrnuté systémové volania ponúkajúce pre 32-bitové architektúry 64-bitové časové počítadlá. Výsledkom je, že 64-bitová štruktúra time_t je teraz použiteľná na všetkých architektúrach. Podobné zmeny boli tiež implementované v sieťovom subsystéme pre možnosti timestamp sieťových soketov;
    • Do systému horúceho aplikačného patchovania jadra (live patching) bola pridaná možnosť „Atomic Replace“ na atomárne použitie série zmien na jednej funkcii. Táto funkcia umožňuje šíriť súhrnné záplaty, ktoré pokrývajú niekoľko zmien naraz, namiesto dosť zložitých procesov, ktoré musia byť vykonané v striktne určenom poradí. Ak predtým každá nasledujúca zmena musela vychádzať zo stavu funkcie po predchádzajúcej zmene, teraz je možné šíriť niekoľko zmien viazaných na jeden počiatočný stav (t.j. správcovia môžu udržiavať jeden súhrnný patch vo vzťahu k základnému jadru namiesto reťazca závislých patchov);
    • Ohlásená zastaraná podpora formátu spustiteľných súborov a.out a
      bol odstránený kód na generovanie core súborov vo formáte a.out, ktorý je v zanedbanom stave. Formát a.out sa už dávno nepoužíva na systémoch s Linuxom a generovanie súborov a.out už dávno nie je podporované súčasnými nástrojmi vo výchozích konfiguráciách pre Linux. Okrem toho môže byť načítač pre súbory a.out implementovaný úplne v užívateľskom priestore;
    • Do mechanizmu overovania programov BPF bola pridaná možnosť identifikácie a odstránenia nepoužívaného kódu. Do jadra sú tiež zahrnuté patche s podporou spinlock pre subsystém BPF, poskytujúce ďalšie možnosti pre správu paralelného vykonávania programov BPF;
  • Zariadenie
    • V ovládači Nouveau bola pridaná podpora heterogénneho spravovania pamäte, ktorá umožňuje prístup CPU a GPU k zdieľaným synchronizovaným oblastiam pamäte. Systém zdieľanej virtuálnej pamäte (SVM, shared virtual memory) je realizovaný na báze subsystému HMM (Heterogeneous memory management), čo umožňuje používať zariadenia s vlastnými blokmi správy pamäte (MMU, memory management unit), ktoré môžu získať prístup k hlavnej pamäti. Pomocou HMM je možné organizovať spoločný adresný priestor medzi GPU a CPU, v ktorom môže GPU získať prístup k hlavnej pamäti procesu. Podpora SVM je zatiaľ zapnutá len pre GPU rodiny Pascal, hoci podpora je zabezpečená aj pre GPU Volta a Turing. Okrem toho v Nouveau bol pridaný nový ioctl na správu migrácie oblastí pamäte procesov do pamäte GPU;
    • V DRM ovládači Intel pre GPU Skylake a novšie (gen9+) je zapnutý predvolené nastavenie fastboot, ktoré vylučuje zbytočné prepínanie režimov počas spustenia. Boli pridané nové identifikátory zariadení založené na mikroarchitektúrach Coffelake a Ice Lake. Pre čipy Coffelake bola pridaná podpora GVT (virtualizácia GPU). Pre virtuálne GPU bola implementovaná podpora VFIO EDID. Pre LCD panely MIPI/DSI bola pridaná podpora prvkov ACPI/PMIC. Realizované nové TV režimy 1080p30/50/60 TV;
    • V ovládači amdgpu bola pridaná podpora GPU Vega10/20 BACO. Realizované prostriedky správy energie pre Vega 10/20 a tabuľky správy ventilátora pre Vega 10. Pridané nové PCI identifikátory zariadení pre GPU Picasso. Pridané rozhranie na správu plánovaných závislostí na vylúčenie vzájomných zablokovaní;
    • Pridané DRM/KMS ovládač pre akcelerátory obrazových operácií ARM Komeda (Mali D71);
    • Pridaná podpora obrazových panelov Toppoly TPG110, Sitronix ST7701, PDA 91-00156-A0, LeMaker BL035-RGB-002 3.5 a Kingdisplay kd097d04;
    • Pridaná podpora zvukových kodekov Rockchip RK3328, Cirrus Logic CS4341 a CS35L36, MediaTek MT6358, Qualcomm WCD9335 a Ingenic JZ4725B, ako aj zvukovej platformy Mediatek MT8183;
    • Pridaná podpora NAND ovládačov Flash STMicroelectronics FMC2, Amlogic Meson;
    • Pridaná podpora akcelerátorov pre systémy strojového učenia Habana AI;
    • Pridaná podpora gigabitových Ethernet ovládačov NXP ENETC a bezdrôtových rozhraní MediaTek MT7603E (PCIe) a MT76x8.

Zároveň Latinskoamerická nadácia slobodného softvéru vytvorila
variantu úplne slobodného jadra 5.1 — Linux-libre 5.1-gnu, vyčisteného od prvkov firmvéru a ovládačov, ktoré obsahujú neslobodné komponenty alebo fragmenty kódu, ktorých použitie je obmedzené výrobcom. V novej verzii bola vypnutá načítanie blobov v ovládačoch mt7603 a goya. Aktuálny kód na čistenie blobov v ovládačoch a subsystémoch wilc1000, iwlwifi, soc-acpi-intel, brcmfmac, mwifiex, btmrvl, btmtk a touchscreen_dmi. Čistenie blobov v bootloaderi firmvéru lantiq xrx200 bolo zastavené, pretože bol odstránený z jadra.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster