Vydanie jadra Linux 5.2

Po dvoch mesiacoch vývoja Linus Torvalds predložené vydanie jadra Linux 5.2. Medzi najvýraznejšie zmeny: operačný režim Ext4 nerozlišuje veľké a malé písmená, samostatné systémové volania na pripojenie súborového systému, ovládače pre GPU Mali 4xx/ 6xx/7xx, schopnosť zvládnuť zmeny hodnôt sysctl v programoch BPF, mapovač zariadení modul dm-dust, ochrana proti útokom MDS, podpora Sound Open Firmware pre DSP, optimalizácia výkonu BFQ, privedenie subsystému PSI (Pressure Stall Information) k možnosti použitia v Androide.

Nová verzia obsahuje 15100 1882 opráv od XNUMX XNUMX vývojárov,
veľkosť opravy - 62 MB (zmeny ovplyvnili 30889 súborov, 625094 riadkov kódu bolo pridaných, 531864 riadkov bolo odstránených). Asi 45 % zo všetkých prezentovaných v 5.2
zmeny sa týkajú ovládačov zariadení, približne 21 % zmien
postoj k aktualizácii kódu špecifického pre hardvérové ​​architektúry, 12 %
súvisiaci so sieťovým zásobníkom, 3 % so súborovými systémami a 3 % s internými
podsystémy jadra. 12.4 % všetkých zmien pripravil Intel, 6.3 % Red Hat, 5.4 % Google, 4.0 % AMD, 3.1 % SUSE, 3 % IBM, 2.7 % Huawei, 2.7 % Linaro, 2.2 % ARM , 1.6 % - Oracle.

Hlavné inovácie:

  • Diskový subsystém, I/O a súborové systémy
    • Pridané pre Ext4 podpora pracovať bez rozlišovania malých a veľkých písmen v názvoch súborov, čo sa aktivuje len vo vzťahu k jednotlivým prázdnym adresárom pomocou nového atribútu „+F“ (EXT4_CASEFOLD_FL). Keď je tento atribút nastavený v adresári, všetky operácie so súbormi a podadresármi vo vnútri sa vykonajú bez zohľadnenia veľkosti písmen, vrátane malých a veľkých písmen sa budú pri vyhľadávaní a otváraní súborov ignorovať (napríklad súbory Test.txt, test.txt a test.TXT v takýchto adresároch budú považované za rovnaké). V predvolenom nastavení systém súborov naďalej rozlišuje veľké a malé písmená, s výnimkou adresárov s atribútom „chattr +F“;
    • Zjednotili sa funkcie na spracovanie znakov UTF-8 v názvoch súborov, ktoré sa používajú pri vykonávaní operácií porovnávania reťazcov a normalizácie;
    • XFS pridáva infraštruktúru na monitorovanie stavu súborového systému a nový ioctl na zisťovanie zdravotného stavu. Bola implementovaná experimentálna funkcia na online kontrolu počítadiel superblokov.
    • Pridaný nový modul mapovač zariadení "dm-prach“, ktorý umožňuje simulovať výskyt zlých blokov na médiu alebo chyby pri čítaní z disku. Modul vám umožňuje zjednodušiť ladenie a testovanie aplikácií a rôznych úložných systémov v prípade možných porúch;
    • Vykonané Významné optimalizácie výkonu pre plánovač I/O BFQ. V podmienkach vysokej I/O záťaže sa vykonali optimalizácie povoliť Skráťte čas operácií, ako je spúšťanie aplikácií, až o 80 %.
    • Pridaná séria systémových volaní na pripojenie súborových systémov: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Tieto systémové volania vám umožňujú oddelene spracovať rôzne fázy pripojenia (spracovať superblok, získať informácie o súborovom systéme, pripojiť, pripojiť k bodu pripojenia), ktoré sa predtým vykonávali pomocou bežného systémového volania mount(). Samostatné volania poskytujú možnosť vykonávať zložitejšie scenáre pripojenia a vykonávať samostatné operácie, ako je rekonfigurácia superbloku, povolenie možností, zmena bodu pripojenia a presun do iného priestoru názvov. Okrem toho vám samostatné spracovanie umožňuje presne určiť dôvody výstupu chybových kódov a nastaviť viacero zdrojov pre viacvrstvové súborové systémy, ako napríklad overlayf;
    • Do rozhrania pre asynchrónne I/O io_uring bola pridaná nová operácia IORING_OP_SYNC_FILE_RANGE, ktorá vykonáva akcie ekvivalentné systémovému volaniu rozsah_synchronizovaných_súborov()a tiež implementovala možnosť registrovať eventfd pomocou io_uring a dostávať upozornenia o dokončení operácií;
    • Pre súborový systém CIFS bol pridaný FIEMAP ioctl, ktorý poskytuje efektívne mapovanie rozsahu, ako aj podporu pre režimy SEEK_DATA a SEEK_HOLE;
    • V podsystéme FUSE navrhované API na správu ukladania údajov do vyrovnávacej pamäte;
    • Btrfs optimalizoval implementáciu qgroups a zlepšil rýchlosť vykonávania fsync pre súbory s viacerými pevnými odkazmi. Vylepšený bol kód kontroly integrity údajov, ktorý teraz zohľadňuje možné poškodenie informácií v pamäti RAM pred vyprázdnením údajov na disk;
    • CEPH pridal podporu pre export snímok cez NFS;
    • Implementácia pripájania NFSv4 v „mäkkom“ režime bola vylepšená (ak sa vyskytne chyba pri prístupe na server v „mäkkom“ režime, volanie na okamžite vráti chybový kód a v „pevnom“ režime sa ovládanie neuskutoční, kým FS dostupnosť alebo časový limit sa obnoví). Nové vydanie poskytuje presnejšie spracovanie časového limitu, rýchlejšiu obnovu po zlyhaní a novú možnosť pripojenia „softerr“, ktorá vám umožňuje zmeniť chybový kód (ETIMEDOUT), ktorý sa vráti, keď nastane časový limit;
    • nfsdcld API, navrhnuté na sledovanie stavu klientov NFS, umožňuje serveru NFS správne sledovať stav klienta po reštarte. Démon nfsdcld teda môže teraz fungovať ako obsluha nfsdcltrack;
    • Pre AFS pridané emulácia zámkov bajtového rozsahu v súboroch (Uzamknutie rozsahu bajtov);
  • Virtualizácia a bezpečnosť
    • Pracovalo sa na odstránení miest v jadre, ktoré umožňujú spustenie kódu zo zapisovateľných oblastí pamäte, čo umožňuje blokovať potenciálne diery, ktoré by mohli byť zneužité počas útoku;
    • Bol pridaný nový parameter príkazového riadku jadra "mitigations=", ktorý poskytuje zjednodušený spôsob kontroly aktivácie určitých techník na ochranu pred zraniteľnosťami spojenými so špekulatívnym vykonávaním pokynov na CPU. Odovzdanie "mitigations=off" zakáže všetky existujúce metódy a predvolený režim "mitigations=auto" povolí ochranu, ale neovplyvní používanie Hyper Threading. Režim „mitigations=auto,nosmt“ navyše zakáže funkciu Hyper Threading, ak to vyžaduje metóda ochrany.
    • Pridané podpora elektronického digitálneho podpisu podľa GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), vyvinutý Vitalij Čikunov z Basalt SPO. Do natívnej implementácie TLS bola pridaná podpora pre AES128-CCM. Pridaná podpora pre algoritmy AEAD do modulu crypto_simd;
    • V Kconfig pridané samostatnú časť „spevnenie jadra“ s možnosťami na zvýšenie ochrany jadra. V súčasnosti nová sekcia obsahuje iba nastavenia na povolenie doplnkov GCC na zvýšenie kontroly;
    • Kód jadra je takmer doručené z nerozdeliteľných príkazov v prepínači (bez návratu alebo prerušenia po každom bloku veľkých písmen). Zostáva opraviť 32 z 2311 prípadov takéhoto použitia prepínača, po ktorom bude možné pri zostavovaní jadra použiť režim „-Wimplicit-fallthrough“;
    • Pre architektúru PowerPC bola implementovaná podpora hardvérových mechanizmov na obmedzenie nežiaducich prístupových ciest jadra k údajom v užívateľskom priestore;
    • Pridaný blokovací kód útokov Trieda MDS (Microarchitectural Data Sampling) v procesoroch Intel. Pomocou premennej SysFS „/sys/devices/system/cpu/vulnerabilities/mds“ môžete skontrolovať, či je systém zraniteľný voči zraniteľnostiam. k dispozícii dva ochranné režimy: plný, ktorý vyžaduje aktualizovaný mikrokód, a bypass, ktorý úplne nezaručuje vyčistenie vyrovnávacích pamätí CPU pri prenose riadenia do užívateľského priestoru alebo hosťujúceho systému. Na ovládanie režimov ochrany bol do jadra pridaný parameter „mds=“, ktorý môže nadobúdať hodnoty „full“, „full,nosmt“ (+ deaktivovať Hyper-Threads) a „off“;
    • Na systémoch x86-64 bola pridaná ochrana „stack guard-page“ pre IRQ, ladiace mechanizmy a obslužné programy výnimiek, ktorých podstatou je nahradenie pamäťových stránok na hranici zásobníka, čo vedie k vygenerovaniu výnimka (chyba stránky);
    • Pridané nastavenie sysctl vm.unprivileged_userfaultfd, ktoré riadi schopnosť neprivilegovaných procesov používať systémové volanie userfaultfd();
  • Sieťový subsystém
    • Pridané Podpora brány IPv6 pre trasy IPv4. Teraz môžete napríklad zadať pravidlá smerovania ako „ip ro pridať 172.16.1.0/24 cez inet6 2001:db8::1 dev eth0“;
    • Pre ICMPv6 sú implementované volania ioctl icmp_echo_ignore_anycast a icmp_echo_ignore_multicast na ignorovanie ICMP ECHO pre anycast a
      multicast adresy. Pridané schopnosť obmedziť intenzitu spracovania paketov ICMPv6;

    • Pre mesh protokol BATMAN (Better Approach To Mobile Adhoc Networking), ktorý umožňuje vytváranie decentralizovaných sietí, v ktorých je každý uzol pripojený cez susedné uzly, pridané podpora vysielania z multicastu na unicast, ako aj možnosť ovládania cez sysfs;
    • V ettool dodal nový parameter Fast Link Down, ktorý umožňuje skrátiť čas potrebný na prijatie informácie o udalosti prerušenia linky pre 1000BaseT (za normálnych podmienok je oneskorenie až 750 ms);
    • Objavil sa príležitosť viazanie tunelov Foo-Over-UDP na konkrétnu adresu, sieťové rozhranie alebo soket (predtým sa viazanie robilo iba spoločnou maskou);
    • V bezdrôtovom stohu zabezpečené možnosť implementácie handlerov
      OWE (Opportunistic Wireless Encryption) v užívateľskom priestore;

    • V Netfilteri bola do reťazcov nat pridaná podpora pre rodinu adries inet (napríklad teraz môžete použiť jedno prekladové pravidlo na spracovanie ipv4 a ipv6 bez oddeľovania pravidiel pre ipv4 a ipv6);
    • V sieti netlink dodal spôsob prísne pre prísne overovanie správnosti všetkých správ a atribútov, v ktorých nie je dovolené prekročiť očakávanú veľkosť atribútov a je zakázané pridávať ďalšie údaje na koniec správ;
  • Pamäťové a systémové služby
    • Príznak CLONE_PIDFD bol pridaný do systémového volania clone(), keď je špecifikovaný, deskriptor súboru „pidfd“ identifikovaný s vytvoreným podriadeným procesom sa vráti rodičovskému procesu. Tento deskriptor súboru môže byť napríklad použitý na odosielanie signálov bez strachu, že sa dostane do race condition (ihneď po odoslaní signálu môže byť cieľový PID uvoľnený v dôsledku ukončenia procesu a obsadený iným procesom);
    • Pre druhú verziu cgroups bola pridaná funkcionalita ovládača mrazničky, pomocou ktorej môžete zastaviť prácu v cgroup a dočasne uvoľniť niektoré zdroje (CPU, I/O a potenciálne aj pamäť) na vykonávanie iných úloh. Správa sa vykonáva prostredníctvom riadiacich súborov cgroup.freeze a cgroup.events v strome cgroup. Záznam 1 v cgroup.freeze zmrazí procesy v aktuálnej cgroup a vo všetkých podradených skupinách. Keďže zmrazenie trvá nejaký čas, poskytuje sa ďalší súbor cgroup.events, prostredníctvom ktorého sa môžete dozvedieť o dokončení operácie;
    • Zabezpečené export pamäťových atribútov pripojených ku každému uzlu v sysfs, čo vám umožňuje z užívateľského priestoru určiť povahu spracovania pamäťových bánk v systémoch s heterogénnou pamäťou;
    • Vylepšený bol subsystém PSI (Pressure Stall Information), ktorý vám umožňuje analyzovať informácie o dobe čakania na príjem rôznych zdrojov (CPU, pamäť, I/O) pre určité úlohy alebo množiny procesov v cgroup. Pomocou PSI môžu manipulátory používateľského priestoru presnejšie odhadnúť úroveň zaťaženia systému a vzory spomalenia v porovnaní s priemerom zaťaženia. Nová verzia poskytuje podporu pre nastavenie prahov citlivosti a možnosť použiť volanie poll() na prijatie upozornenia, že nastavené prahy boli spustené na určitý čas. Táto funkcia umožňuje systému Android monitorovať nedostatok pamäte v počiatočnom štádiu, identifikovať zdroj problémov a ukončiť nedôležité aplikácie bez toho, aby spôsobil problémy, ktoré si používateľ všimne. Pri záťažovom testovaní nástroje na monitorovanie spotreby pamäte založené na PSI preukázali 10-krát menej falošných pozitív v porovnaní so štatistikami vmpressure;
    • Kód na kontrolu programov BPF bol optimalizovaný, čo umožňuje až 20-krát rýchlejšiu kontrolu veľkých programov. Optimalizácia umožnila zvýšiť limit veľkosti BPF programov zo 4096 na milión inštrukcií;
    • Pre programy BPF udelené možnosť prístupu ku globálnym údajom, čo umožňuje definovať globálne premenné a konštanty v programoch;
    • Pridané API, ktorý umožňuje ovládať zmeny parametrov sysctl z programov BPF;
    • Pre architektúru MIPS32 bol implementovaný JIT kompilátor pre virtuálny stroj eBPF;
    • Pre 32-bitovú architektúru PowerPC bola pridaná podpora pre ladiaci nástroj KASan (Kernel address sanitizer), ktorý pomáha identifikovať chyby pri práci s pamäťou;
    • Na systémoch x86-64 bolo odstránené obmedzenie umiestňovania výpisov stavu počas zlyhania jadra (crash-dump) do pamäťových oblastí nad 896 MB;
    • Pre architektúru s390 je implementovaná podpora pre randomizáciu adresného priestoru jadra (KASLR) a možnosť overovania digitálnych podpisov pri načítavaní jadra cez kexec_file_load();
    • Pre architektúru PA-RISC bola pridaná podpora pre ladiaci program jadra (KGDB), skokové značky a ksondy;
  • Оборудование
    • Vrátane ovládača Lima pre GPU Mali 400/450, ktorý sa používa v mnohých starších čipoch založených na architektúre ARM. Pre novšie GPU Mali bol pridaný ovládač Panfrost podporujúci čipy založené na mikroarchitektúrach Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) a Bifrost (Mali G3x, G5x, G7x);
    • Pridaná podpora pre zvukové zariadenia využívajúce otvorený firmvér Zvuk Otvorte firmvér (OFS). Napriek dostupnosti otvorených ovládačov zostal firmvérový kód pre zvukové čipy stále uzavretý a bol dodávaný v binárnej forme. Projekt Sound Open Firmware bol vyvinutý spoločnosťou Intel na vytvorenie otvoreného firmvéru pre DSP čipy súvisiace so spracovaním zvuku (neskôr sa k vývoju pridal aj Google). Aktuálne má projekt už pripravený objav firmvéru pre zvukové čipy platforiem Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake a IceLake;
    • Ovládač Intel DRM (i915) pridáva podporu pre čipy
      Elkhartlake (Gen11). Pridané PCI ID pre čipy Comet Lake (Gen9). Stabilizovaná bola podpora čipov Icelake, pre ktoré boli pridané aj ďalšie identifikátory PCI zariadení.
      Zapnuté
      režim asynchrónneho prepínania medzi dvoma vyrovnávacími pamäťami vo videopamäti (async flip) pri vykonávaní operácií zápisu cez mmio, čo výrazne zvýšilo výkon niektorých 3D aplikácií (napríklad výkon v teste 3DMark Ice Storm vzrástol o 300 – 400 %). Pridaná technologická podpora HDCP2.2 (High-bandwidth Digital Content Protection) na šifrovanie video signálov prenášaných cez HDMI;

    • Ovládač amdgpu pre GPU Vega20 pridané podpora RAS (Reliability, Availability, Serviceability) a experimentálna podpora pre subsystém SMU 11, ktorý nahradil technológiu Powerplay. Pre GPU Vega12 pridané podpora režimu BACO (Bus Active, Chip Off). Pridaná počiatočná podpora pre XGMI, vysokorýchlostnú zbernicu (PCIe 4.0) na prepojenie GPU. Pridané chýbajúce identifikátory pre karty založené na GPU Polaris10 do ovládača amdkfd;
    • Ovládač Nouveau pridal podporu pre dosky založené na čipsete NVIDIA Turing 117 (TU117, použitý v GeForce GTX 1650). IN
      kconfig pridané nastavenie na deaktiváciu zastaraných funkcií, ktoré sa už nepoužívajú v aktuálnych vydaniach libdrm;

    • Do DRM API a ovládača amdgpu bola pridaná podpora pre synchronizačné objekty “timeline”, vďaka čomu sa zaobídete bez klasického blokovania.
    • Ovládač vboxvideo pre virtuálny GPU VirtualBox bol presunutý z pracovnej vetvy do hlavnej štruktúry;
    • Pridaný ovládač aspeed pre čip GFX SoC ASPEED;
    • Pridaná podpora pre ARM SoC a Intel Agilex (SoCFPGA), NXP i.MX8MM, Allwinner (RerVision H3-DVK (H3), Oceanic 5205 5inMFD, ,Beelink GS2 (H6), Orange Pi 3 (H6)), Rockchip (Orange Pi ) dosky RK3399, Nanopi NEO4, Veyron-Mighty Chromebook), Amlogic: SEI Robotics SEI510,
      ST Micro (stm32mp157a, stm32mp157c), NXP (
      Eckelmann ci4x10 (i.MX6DL),

      i.MX8MM EVK (i.MX8MM),

      ZII i.MX7 RPU2 (i.MX7),

      ZII SPB4 (VF610),

      Zii Ultra (i.MX8M),

      TQ TQMa7S (i.MX7Solo),

      TQ TQMa7D (i.MX7Dual),

      Kobo Aura (i.MX50),

      Menlosystems M53 (i.MX53)), NVIDIA Jetson Nano (Tegra T210).

Zároveň Latinskoamerická nadácia pre slobodný softvér tvorené
voľba úplne bezplatné jadro 5.2 - Linux-libre 5.2-gnu, zbavený prvkov firmvéru a ovládačov obsahujúcich neslobodné komponenty alebo časti kódu, ktorých rozsah je obmedzený výrobcom. Nové vydanie zahŕňa nahrávanie súborov
Zvuk Otvorte firmvér. Načítanie blobov v ovládačoch je zakázané
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp a ucsi_ccg. Bol aktualizovaný kód čistenia blob v ovládačoch a podsystémoch ixp4xx, imx-sdma, amdgpu, nouveau a goya, ako aj v dokumentácii k mikrokódu. Zastavilo sa čistenie kvapôčok v ovládači r8822be z dôvodu jeho odstránenia.

Zdroj: opennet.ru

Pridať komentár