Vydání jádra Linux 5.2

Po dvou měsících vývoje Linus Torvalds představen vydání jádra Linux 5.2. Mezi nejpatrnější změny: Operační režim Ext4 nerozlišuje velká a malá písmena, samostatná systémová volání pro připojení souborového systému, ovladače pro GPU Mali 4xx/ 6xx/7xx, schopnost zpracovat změny hodnot sysctl v programech BPF, mapovač zařízení modul dm-dust, ochrana proti útokům MDS, podpora Sound Open Firmware pro DSP, optimalizace výkonu BFQ, přivedení subsystému PSI (Pressure Stall Information) k možnosti použití v Androidu.

Nová verze obsahuje 15100 1882 oprav od XNUMX XNUMX vývojářů,
velikost opravy - 62 MB (změny ovlivnily 30889 souborů, bylo přidáno 625094 řádků kódu, smazáno 531864 řádků). Asi 45 % všech prezentovaných v 5.2
změny se týkají ovladačů zařízení, přibližně 21 % změn se týká
postoj k aktualizaci kódu specifického pro hardwarové architektury, 12 %
související se síťovým zásobníkem, 3 % na souborové systémy a 3 % na interní
subsystémy jádra. 12.4 % všech změn připravil 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í inovace:

  • Diskový subsystém, I/O a souborové systémy
    • Přidáno pro Ext4 podpora pracovat bez rozlišení velkých a malých písmen ve jménech souborů, což se aktivuje pouze ve vztahu k jednotlivým prázdným adresářům pomocí nového atributu „+F“ (EXT4_CASEFOLD_FL). Je-li tento atribut nastaven na adresář, všechny operace se soubory a podadresáři uvnitř budou prováděny bez zohlednění velikosti písmen, včetně velkých a malých písmen budou při vyhledávání a otevírání souborů ignorovány (například soubory Test.txt, test.txt a test.TXT v těchto adresářích budou považovány za stejné). Ve výchozím nastavení systém souborů nadále rozlišuje malá a velká písmena, s výjimkou adresářů s atributem „chattr +F“;
    • Funkce pro zpracování znaků UTF-8 v názvech souborů, které se používají při provádění operací porovnávání řetězců a normalizace, byly sjednoceny;
    • XFS přidává infrastrukturu pro monitorování stavu souborového systému a nový ioctl pro dotazování na zdravotní stav. Byla implementována experimentální funkce pro online kontrolu počítadel superbloků.
    • Přidán nový modul mapovač zařízení "dm-prach“, který umožňuje simulovat výskyt špatných bloků na médiu nebo chyby při čtení z disku. Modul umožňuje zjednodušit ladění a testování aplikací a různých úložných systémů tváří v tvář možným poruchám;
    • Odneseno Významné optimalizace výkonu pro plánovač BFQ I/O. V podmínkách vysoké I/O zátěže byly provedeny optimalizace povolit Zkraťte dobu operací, jako je spouštění aplikací, až o 80 %.
    • Byla přidána řada systémových volání pro připojení souborových systémů: fsopen(), open_tree(), fspick(), fsmount(), fsconfig() и move_mount(). Tato systémová volání umožňují samostatně zpracovávat různé fáze připojení (zpracovat superblok, získat informace o souborovém systému, připojit, připojit k bodu připojení), které byly dříve prováděny pomocí společného systémového volání mount(). Samostatná volání poskytují možnost provádět složitější scénáře připojení a provádět samostatné operace, jako je překonfigurování superbloku, povolení voleb, změna bodu připojení a přesun do jiného jmenného prostoru. Kromě toho vám samostatné zpracování umožňuje přesně určit důvody pro výstup chybových kódů a nastavit více zdrojů pro vícevrstvé systémy souborů, jako jsou overlayf;
    • Do rozhraní pro asynchronní I/O io_uring byla přidána nová operace IORING_OP_SYNC_FILE_RANGE, která provádí akce ekvivalentní systémovému volání. rozsah_synchronních_souborů()a také implementovala možnost registrovat eventfd pomocí io_uring a přijímat oznámení o dokončení operací;
    • Pro souborový systém CIFS byl přidán FIEMAP ioctl, který poskytuje efektivní mapování rozsahu a také podporu pro režimy SEEK_DATA a SEEK_HOLE;
    • V subsystému FUSE navržený API pro správu ukládání dat do mezipaměti;
    • Btrfs optimalizoval implementaci qgroups a zlepšil rychlost provádění fsync pro soubory s více pevnými odkazy. Byl vylepšen kód kontroly integrity dat, který nyní zohledňuje možné poškození informací v paměti RAM před vyprázdněním dat na disk;
    • CEPH přidal podporu pro export snímků přes NFS;
    • Implementace připojování NFSv4 v „měkkém“ režimu byla vylepšena (pokud dojde k chybě při přístupu k serveru v „měkkém“ režimu, volání na okamžitě vrátí chybový kód a v „tvrdém“ režimu není řízení poskytnuto, dokud FS dostupnost nebo časový limit je obnoven). Nové vydání poskytuje přesnější zacházení s časovým limitem, rychlejší zotavení z havárie a novou možnost připojení „softerr“, která vám umožňuje změnit chybový kód (ETIMEDOUT) vrácený při vypršení časového limitu;
    • Rozhraní nfsdcld API, navržené ke sledování stavu klientů NFS, umožňuje serveru NFS správně sledovat stav klienta po restartu. Démon nfsdcld tedy nyní může fungovat jako obsluha nfsdcltrack;
    • Pro AFS přidal emulace zámků bajtového rozsahu v souborech (Uzamčení rozsahu bajtů);
  • Virtualizace a bezpečnost
    • Pracovalo se na odstranění míst v jádře, která umožňují spouštění kódu ze zapisovatelných odražených paměťových oblastí, což umožňuje blokování potenciálních děr, které by mohly být zneužity během útoku;
    • Byl přidán nový parametr příkazového řádku jádra "mitigations=", který poskytuje zjednodušený způsob ovládání aktivace určitých technik k ochraně proti zranitelnostem spojeným se spekulativním prováděním instrukcí na CPU. Předání "mitigations=off" zakáže všechny existující metody a výchozí režim "mitigations=auto" povolí ochranu, ale neovlivní použití Hyper Threading. Režim „mitigations=auto,nosmt“ navíc zakáže Hyper Threading, pokud to metoda ochrany vyžaduje.
    • Přidal podpora elektronického digitálního podpisu podle GOST R 34.10-2012 (RFC 7091, ISO/IEC 14888-3), vyvinutý uživatelem Vitalij Čikunov z Basalt SPO. Do nativní implementace TLS byla přidána podpora pro AES128-CCM. Přidána podpora pro algoritmy AEAD do modulu crypto_simd;
    • V Kconfig přidal samostatná část „zpevnění jádra“ s možnostmi pro zvýšení ochrany jádra. Aktuálně nová sekce obsahuje pouze nastavení pro povolení zásuvných modulů pro kontrolu GCC;
    • Kód jádra je téměř doručeno z nerozlomitelných příkazů typu case v přepínači (bez návratu nebo přerušení po každém bloku případu). Zbývá opravit 32 z 2311 případů takového použití přepínače, po kterém bude možné při sestavování jádra použít režim „-Wimplicit-fallthrough“;
    • Pro architekturu PowerPC byla implementována podpora hardwarových mechanismů pro omezení nechtěných přístupových cest jádra k datům v uživatelském prostoru;
    • Přidán blokovací kód útoky Třída MDS (Microarchitectural Data Sampling) v procesorech Intel. Zda je systém zranitelný vůči zranitelnosti, můžete zkontrolovat pomocí proměnné SysFS „/sys/devices/system/cpu/vulnerabilities/mds“. K dispozici dva režimy ochrany: plný, který vyžaduje aktualizovaný mikrokód, a bypass, který zcela nezaručuje vymazání vyrovnávacích pamětí CPU, když je řízení přeneseno do uživatelského prostoru nebo hostovaného systému. Pro ovládání ochranných režimů byl do jádra přidán parametr „mds=“, který může nabývat hodnot „full“, „full,nosmt“ (+ deaktivovat Hyper-Threads) a „off“;
    • Na systémech x86-64 byla přidána ochrana „stack guard-page“ pro IRQ, ladicí mechanismy a obslužné rutiny výjimek, jejichž podstatou je nahrazení paměťových stránek na hranici zásobníku, což vede ke generování výjimka (chyba stránky);
    • Přidáno nastavení sysctl vm.unprivileged_userfaultfd, které řídí schopnost neprivilegovaných procesů používat systémové volání userfaultfd();
  • Síťový subsystém
    • Přidal Podpora brány IPv6 pro trasy IPv4. Nyní můžete například zadat pravidla směrování jako „ip ro přidat 172.16.1.0/24 přes inet6 2001:db8::1 dev eth0“;
    • Pro ICMPv6 jsou implementována volání ioctl icmp_echo_ignore_anycast a icmp_echo_ignore_multicast k ignorování ICMP ECHO pro anycast a
      vícesměrové adresy. Přidal schopnost omezit intenzitu zpracování paketů ICMPv6;

    • Pro mesh protokol BATMAN (Better Approach To Mobile Adhoc Networking), který umožňuje vytváření decentralizovaných sítí, ve kterých je každý uzel připojen přes sousední uzly, přidal podpora vysílání z multicastu na unicast, stejně jako možnost ovládání přes sysfs;
    • V ethtool přidal nový parametr Fast Link Down, který umožňuje zkrátit dobu potřebnou k přijetí informace o události link down pro 1000BaseT (za normálních podmínek je zpoždění až 750 ms);
    • Objevil se příležitost vazba Foo-Over-UDP tunelů na konkrétní adresu, síťové rozhraní nebo soket (dříve byla vazba prováděna pouze společnou maskou);
    • V bezdrátovém zásobníku zajištěno možnost implementace handlerů
      OWE (Opportunistic Wireless Encryption) v uživatelském prostoru;

    • V Netfilteru byla do řetězců nat přidána podpora pro rodinu adres inet (například nyní můžete použít jedno překladové pravidlo pro zpracování ipv4 a ipv6, aniž byste oddělovali pravidla pro ipv4 a ipv6);
    • V netlinku přidal způsob přísné pro přísné ověřování správnosti všech zpráv a atributů, ve kterých není dovoleno překročit očekávanou velikost atributů a je zakázáno přidávání dalších údajů na konec zpráv;
  • Paměťové a systémové služby
    • Do systémového volání clone() byl přidán příznak CLONE_PIDFD, pokud je zadán, deskriptor souboru „pidfd“ identifikovaný s vytvořeným podřízeným procesem se vrátí nadřazenému procesu. Tento deskriptor souboru lze například použít k odesílání signálů bez obav, že se dostaneme do konfliktního stavu (ihned po odeslání signálu může být cílové PID uvolněno kvůli ukončení procesu a obsazeno jiným procesem);
    • Pro druhou verzi cgroups byla přidána funkcionalita řadiče mrazáku, se kterou můžete zastavit práci v cgroup a dočasně uvolnit některé zdroje (CPU, I/O a potenciálně i paměť) pro provádění jiných úkolů. Správa se provádí pomocí řídicích souborů cgroup.freeze a cgroup.events ve stromu cgroup. Záznam 1 v cgroup.freeze zmrazí procesy v aktuální cgroup a všech podřízených skupinách. Protože zmrazení nějakou dobu trvá, je k dispozici další soubor cgroup.events, jehož prostřednictvím se můžete dozvědět o dokončení operace;
    • Zajištěno export paměťových atributů připojených ke každému uzlu v sysfs, což umožňuje určit z uživatelského prostoru povahu zpracování paměťových bank v systémech s heterogenní pamětí;
    • Byl vylepšen subsystém PSI (Pressure Stall Information), který umožňuje analyzovat informace o době čekání na příjem různých zdrojů (CPU, paměť, I/O) pro určité úlohy nebo sady procesů v cgroup. Pomocí PSI mohou manipulátory uživatelského prostoru přesněji odhadnout úroveň zatížení systému a vzory zpomalení ve srovnání s průměrem zatížení. Nová verze poskytuje podporu pro nastavení prahů citlivosti a možnost použít volání poll() k obdržení upozornění, že nastavené prahové hodnoty byly po určitou dobu spuštěny. Tato funkce umožňuje systému Android monitorovat nedostatek paměti v rané fázi, identifikovat zdroj problémů a ukončit nedůležité aplikace, aniž by způsoboval problémy, které si uživatel všimne. Při zátěžovém testování nástroje pro monitorování spotřeby paměti založené na PSI prokázaly 10krát méně falešných pozitivních výsledků ve srovnání se statistikami vmpressure;
    • Kód pro kontrolu programů BPF byl optimalizován, což umožňuje až 20krát rychlejší kontrolu u velkých programů. Optimalizace umožnila zvýšit limit velikosti BPF programů z 4096 na milion instrukcí;
    • Pro programy BPF uděleno možnost přístupu ke globálním datům, což umožňuje definovat globální proměnné a konstanty v programech;
    • Přidat API, který umožňuje řídit změny parametrů sysctl z programů BPF;
    • Pro architekturu MIPS32 byl implementován JIT kompilátor pro virtuální stroj eBPF;
    • Pro 32bitovou architekturu PowerPC byla přidána podpora ladícího nástroje KASan (Kernel address sanitizer), který pomáhá identifikovat chyby při práci s pamětí;
    • Na systémech x86-64 bylo odstraněno omezení umístění stavových výpisů během pádu jádra (crash-dump) do oblastí paměti nad 896 MB;
    • Pro architekturu s390 je implementována podpora pro randomizaci adresového prostoru jádra (KASLR) a možnost ověřovat digitální podpisy při načítání jádra pomocí kexec_file_load();
    • Pro architekturu PA-RISC přidána podpora pro ladicí program jádra (KGDB), skokové značky a kprobe;
  • Оборудование
    • Včetně ovladače Lima pro Mali 400/450 GPU, používaný v mnoha starších čipech založených na architektuře ARM. Pro novější GPU Mali byl přidán ovladač Panfrost podporující čipy založené na mikroarchitekturách Midgard (Mali-T6xx, Mali-T7xx, Mali-T8xx) a Bifrost (Mali G3x, G5x, G7x);
    • Přidána podpora pro zvuková zařízení využívající otevřený firmware Zvuk Otevřete firmware (SOF). Navzdory dostupnosti otevřených ovladačů zůstal firmware pro zvukové čipy stále uzavřený a byl dodáván v binární formě. Projekt Sound Open Firmware byl vyvinut společností Intel za účelem vytvoření otevřeného firmwaru pro DSP čipy související se zpracováním zvuku (později se k vývoji přidal i Google). Aktuálně má projekt již připravený objev firmwaru pro zvukové čipy platforem Intel Baytrail, CherryTrail, Broadwell, ApolloLake, GeminiLake, CannonLake a IceLake;
    • Ovladač Intel DRM (i915) přidává podporu pro čipy
      Elkhartlake (Gen11). Přidána PCI ID pro čipy Comet Lake (Gen9). Byla stabilizována podpora čipů Icelake, pro které byly přidány i další identifikátory PCI zařízení.
      Zapnutý
      režim asynchronního přepínání mezi dvěma buffery ve video paměti (async flip) při provádění operací zápisu přes mmio, což výrazně zvýšilo výkon některých 3D aplikací (např. výkon v testu 3DMark Ice Storm vzrostl o 300-400 %). Přidána technologická podpora HDCP2.2 (High-bandwidth Digital Content Protection) pro šifrování video signálů přenášených přes HDMI;

    • Ovladač amdgpu pro GPU Vega20 přidal podpora RAS (Reliability, Availability, Serviceability) a experimentální podpora subsystému SMU 11, který nahradil technologii Powerplay. Pro GPU Vega12 přidal podpora režimu BACO (Bus Active, Chip Off). Přidána počáteční podpora pro XGMI, vysokorychlostní sběrnici (PCIe 4.0) pro propojení GPU. Do ovladače amdkfd přidány chybějící identifikátory pro karty založené na GPU Polaris10;
    • Ovladač Nouveau přidal podporu pro desky založené na čipsetu NVIDIA Turing 117 (TU117, použitý v GeForce GTX 1650). V
      kconfig přidal nastavení pro deaktivaci zastaralých funkcí, které se již nepoužívají v aktuálních vydáních libdrm;

    • Do DRM API a ovladače amdgpu byla přidána podpora pro synchronizační objekty „timeline“, takže se obejdete bez klasického blokování.
    • Ovladač vboxvideo pro virtuální GPU VirtualBox byl přesunut z pracovní větve do hlavní struktury;
    • Přidán ovladač aspeed pro čip GFX SoC ASPEED;
    • Přidána podpora pro 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 ) desky 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).

Ve stejné době Latinská Amerika Free Software Foundation vytvořený
вариант zcela bezplatné jádro 5.2 - Linux-libre 5.2-gnu, zbavený prvků firmwaru a ovladače obsahujících nesvobodné komponenty nebo části kódu, jejichž rozsah je omezen výrobcem. Nová verze zahrnuje nahrávání souborů
Zvuk Otevřít firmware. Načítání objektů blob v ovladačích je zakázáno
mt7615, rtw88, rtw8822b, rtw8822c, btmtksdio, iqs5xx, ishtp a ucsi_ccg. Byl aktualizován kód čištění blobu v ovladačích a subsystémech ixp4xx, imx-sdma, amdgpu, nouveau a goya a také v dokumentaci mikrokódu. Čištění kapek v ovladači r8822be bylo zastaveno kvůli jeho odstranění.

Zdroj: opennet.ru

Přidat komentář