Vydání jádra Linux 5.6

Po dvou měsících vývoje Linus Torvalds představen vydání jádra Linux 5.6. Mezi nejpozoruhodnější změny patří integrace rozhraní WireGuard VPN, podpora pro USB4, jmenné prostory pro čas, možnost vytvářet ovladače přetížení TCP pomocí BPF, počáteční podpora pro MultiPath TCP, zbavení jádra problému 2038, mechanismus „bootconfig“ , ZoneFS.

Nová verze obsahuje 13702 1810 oprav od XNUMX XNUMX vývojářů,
velikost opravy - 40 MB (změny ovlivnily 11577 souborů, přidáno 610012 řádků kódu,
Odebráno 294828 řádků). Asi 45 % všech prezentovaných v 5.6
změny se týkají ovladačů zařízení, přibližně 15 % 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, 4 % se souborovými systémy a 3 % s interními
subsystémy jádra.

hlavní inovace:

  • Síťový subsystém
    • Přidal implementace rozhraní VPN WireGuard, který je implementován na základě moderních šifrovacích metod (ChaCha20, Poly1305, Curve25519, BLAKE2s), je snadno použitelný, bez komplikací, osvědčil se v řadě velkých implementací a poskytuje velmi vysoký výkon (3,9krát rychlejší než OpenVPN v přepočtu na propustnosti). WireGuard využívá koncept směrování šifrovacího klíče, který zahrnuje připojení soukromého klíče ke každému síťovému rozhraní a jeho použití ke spojení veřejných klíčů. Veřejné klíče se vyměňují za účelem navázání spojení podobným způsobem jako SSH. Aby WireGuard fungoval, jsou vyžadována kryptografická primitiva bylo to přeneseno z knihovny zinek jako součást standardního Crypto API a zahrnuta do jádra 5.5.
    • Začínáme integrace komponent nezbytných pro podporu MPTCP (MultiPath TCP), rozšíření protokolu TCP pro organizaci provozu TCP spojení s doručováním paketů současně po několika trasách přes různá síťová rozhraní spojená s různými IP adresami. U síťových aplikací vypadá takové agregované připojení jako běžné připojení TCP a veškerá logika oddělení toku je prováděna pomocí MPTCP. Vícecestný TCP lze použít jak ke zvýšení propustnosti, tak ke zvýšení spolehlivosti. MPTCP lze například použít k organizaci přenosu dat na smartphonu pomocí připojení WiFi a 4G současně nebo ke snížení nákladů připojením serveru pomocí několika levných připojení namísto jednoho drahého.
    • Přidal podpora pro disciplínu zpracování síťové fronty sch_ets (Rozšířený výběr převodovky, IEEE 802.1Qaz), který poskytuje možnost distribuovat šířku pásma mezi různé třídy provozu. Pokud je zatížení konkrétní třídy provozu pod přidělenou šířkou pásma, pak ETS umožňuje ostatním třídám provozu využívat dostupnou (nevyužitou) šířku pásma. Qdisc sch_ets je nakonfigurován jako disciplína PRIO a používá třídy provozu k definování přísných a sdílených limitů šířky pásma. ETS funguje jako kombinace oborů PŘEDCHOZÍ и DRR — pokud jsou přísně omezené třídy provozu, použije se PRIO, ale pokud ve frontě není žádný provoz, funguje to jako DRR.
    • Přidán nový typ programů BPF BPF_PROG_TYPE_STRUCT_OPS, který vám umožňuje implementovat ovladače funkcí jádra prostřednictvím BPF. V současné době lze tuto funkci již použít k implementaci algoritmů řízení přetížení TCP ve formě programů BPF. Jako příklad navrženo Program BPF s implementací algoritmu DCTCP.
    • Přijato do jádra změny, překladatelské nástroje ettool s ioctl() k použití rozhraní netlink. Nové rozhraní usnadňuje přidávání rozšíření, zlepšuje zpracování chyb, umožňuje zasílání upozornění při změně stavu, zjednodušuje interakci mezi jádrem a uživatelským prostorem a snižuje počet pojmenovaných seznamů, které je třeba synchronizovat.
    • Přidána implementace FQ-PIE (Flow Queue PIE) síťového algoritmu pro správu fronty, zaměřeného na snížení negativního dopadu vyrovnávací paměti mezilehlých paketů na okrajová síťová zařízení (bufferbloat). FQ-PIE prokazuje vysokou účinnost při použití v systémech s kabelovými modemy.
  • Diskový subsystém, I/O a souborové systémy
    • Pro souborový systém Btrfs přidal asynchronní implementace operace DISCARD (označení uvolněných bloků, které již není nutné fyzicky ukládat). Zpočátku byly operace DISCARD prováděny synchronně, což mohlo vést ke snížení výkonu kvůli tomu, že disky čekají na dokončení příslušných příkazů. Asynchronní implementace vám umožňuje nečekat, až disk dokončí DISCARD a provést tuto operaci na pozadí.
    • V XFS odneseno Čištění kódu, který používal staré 32bitové čítače času (typ time_t byl nahrazen time64_t), což vedlo k problému 2038. Opraveny chyby a poškození paměti, ke kterým docházelo na 32bitových platformách. Kód byl přepracován tak, aby fungoval s rozšířenými atributy.
    • Do souborového systému ext4 vyrobeno Optimalizace výkonu související se zpracováním zamykání inodů během operací čtení a zápisu. Vylepšený výkon při přepisování v režimu přímého I/O. Pro zjednodušení diagnostiky problémů jsou první a poslední chybové kódy uloženy v superbloku.
    • Na souborovém systému F2FS implementováno schopnost ukládat data v komprimované podobě. Pro jednotlivý soubor nebo adresář lze kompresi povolit pomocí příkazu "chattr +c file" nebo "chattr +c dir; dotkněte se adresáře/souboru". Chcete-li komprimovat celý oddíl, můžete použít volbu „-o compress_extension=ext“ v obslužném programu pro připojení.
    • Jádro obsahuje souborový systém ZoneFS, který zjednodušuje nízkoúrovňovou práci se zónovými úložnými zařízeními. Zónové disky znamenají zařízení na pevných magnetických discích nebo NVMe SSD, jejichž úložný prostor je rozdělen do zón, které tvoří skupiny bloků nebo sektorů, do kterých je povoleno pouze sekvenční přidávání dat, čímž se aktualizuje celá skupina bloků. FS ZoneFS byl vyvinut společností Western Digital a přidružuje každou zónu na disku se samostatným souborem, který lze použít k ukládání dat v nezpracovaném režimu bez manipulace na úrovni sektoru a bloku, tzn. Umožňuje aplikacím používat souborové API namísto přímého přístupu k blokovému zařízení pomocí ioctl.
    • V NFS je připojování oddílů přes UDP ve výchozím nastavení zakázáno. Přidána podpora pro možnost přímého kopírování souborů mezi servery, definovanou ve specifikaci NFS 4.2. Přidána nová možnost připojení „softreval“, která umožňuje použití hodnot atributů uložených v mezipaměti v případě selhání serveru. Když například zadáte tuto volbu, poté, co je server nedostupný, je nadále možné pohybovat se po cestách v oddílu NFS a přistupovat k informacím, které se usadily v mezipaměti.
    • Odneseno optimalizace výkonu mechanismu fs-verity, používaného ke sledování integrity a autentizace jednotlivých souborů. Zvýšená rychlost sekvenčního čtení díky použití Merkleho hash tree. Výkon FS_IOC_ENABLE_VERITY byl optimalizován, když v mezipaměti nejsou žádná data (bylo použito preventivní čtení stránek s daty).
  • Virtualizace a bezpečnost
    • Možnost deaktivovat modul SELinux za běhu byla zastaralá a stahování již aktivovaného SELinuxu bude v budoucnu zakázáno. Chcete-li zakázat SELinux, budete muset předat parametr "selinux=0" na příkazovém řádku jádra.
    • Přidal podpora jmenných prostorů pro čas (časové jmenné prostory), což vám umožňuje svázat stav systémových hodin s kontejnerem (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), použijte svůj vlastní čas v kontejneru a při migraci kontejneru na jiného hostitele zajistěte, aby hodnoty CLOCK_MONOTONIC a CLOCK_BOOTTIME zůstaly nezměněny (vezměte v úvahu dobu po načtení, ať už je to v režimu spánku nebo bez něj ).

    • Fond blokování /dev/random byl odstraněn. Chování /dev/random je podobné jako /dev/urandom, pokud jde o zabránění blokování entropie po inicializaci fondu.
    • Jádro jádra obsahuje ovladač, který umožňuje hostujícím systémům s VirtualBoxem připojit adresáře exportované hostitelským prostředím (VirtualBox Shared Folder).
    • Do subsystému BPF byla přidána sada oprav (Dispečer BPF), při použití mechanismu Retpoline k ochraně před útoky třídy Spectre V2 umožňuje zvýšit efektivitu volání programů BPF, když nastanou události s nimi spojené (umožňuje například zrychlit volání XDP handlerů, když dorazí síťový paket).
    • Přidán ovladač pro podporu TEE (Trusted Execution Environment) zabudovaný do AMD APU.
  • Paměťové a systémové služby
    • BPF přidal podporu pro globální funkce. Vývoj probíhá v rámci iniciativy přidat podporu pro knihovny funkcí, které mohou být zahrnuty do programů BPF. Dalším krokem bude podpora dynamických rozšíření, která umožňují načítání globálních funkcí, včetně nahrazení stávajících globálních funkcí, když jsou používány. Subsystém BPF také přidává podporu pro variantu mapové operace (slouží k ukládání perzistentních dat), která podporuje provádění v dávkovém režimu.
    • Přidáno Zařízení „cpu_cooling“ vám umožňuje ochladit přehřátý procesor tím, že jej na krátkou dobu přepnete do klidového stavu.
    • Přidáno systémové volání openat2(), který nabízí sadu dalších příznaků pro omezení rozlišení cesty k souboru (zákaz křížení přípojných bodů, symbolické odkazy, magické odkazy (/proc/PID/fd), komponenty „../“).
    • U heterogenních systémů založených na architektuře big.LITTLE, která kombinuje výkonná a méně účinná energeticky úsporná jádra CPU v jednom čipu, se parametr uclamp_min nastavuje při provádění úloh v reálném čase (se objevil v jádře 5.3 je mechanismus pro zajištění zátěže). Tento parametr zajišťuje, že úloha bude plánovačem umístěna na jádro CPU, které má dostatečný výkon.
    • Jádro je osvobozeno od problémy roku 2038. Nahradily poslední zbývající handlery, které používaly 32bitový (signed int) typ time_t pro čítač epochálních časů, který by s přihlédnutím ke zprávě z roku 1970 měl v roce 2038 přetéct.
    • Pokračující zlepšování asynchronního I/O rozhraní io_uring, ve kterém zajištěno podpora pro nové operace: IORING_OP_FALLOCATE (rezervace prázdných oblastí), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (otevírání a zavírání souborů),
      IORING_OP_FILES_UPDATE (přidávání a odebírání souborů ze seznamu rychlého přístupu),
      IORING_OP_STATX (žádost o informace o souboru),
      IORING_OP_READ,
      IORING_OP_WRITE (zjednodušené analogy IORING_OP_READV a IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynchronní varianty volání posix_fadvise a madvise), IORING_OP_SEND,
      IORING_OP_RECV (odesílání a přijímání síťových dat),
      IORING_OP_EPOLL_CTL (provádění operací na deskriptorech souborů epoll).

    • Přidáno systémové volání pidfd_getfd(), což procesu umožňuje načíst deskriptor souboru pro otevřený soubor z jiného procesu.
    • Realizováno mechanismus „bootconfig“, který kromě možností příkazového řádku umožňuje určit parametry jádra prostřednictvím souboru nastavení. Pro přidání takových souborů do obrazu initramfs je navržen nástroj bootconfig. Tuto funkci lze použít například ke konfiguraci kprobes při bootování.
    • Předělaný mechanismus čekání na zápis a čtení dat v nepojmenovaných rourách. Změna umožnila zrychlit úkoly, jako je paralelní montáž velkých projektů. Optimalizace však může vést ke sporu v GNU make kvůli chybě ve verzi 4.2.1, která byla opravena ve verzi 4.3.
    • Do prctl() byl přidán příznak PR_SET_IO_FLUSHER, který lze použít k označení procesů bez paměti, které by neměly podléhat omezením, když má systém nedostatek paměti.
    • Na základě systému distribuce paměti ION používaného v Androidu byl implementován subsystém dma-buf hromady, který umožňuje řídit alokaci vyrovnávacích pamětí DMA pro sdílení paměťových oblastí mezi ovladači, aplikacemi a různými subsystémy.
  • Hardwarové architektury
    • Přidána podpora pro rozšíření E0PD, které se objevilo v ARMv8.5 a umožňuje ochranu před útoky souvisejícími se spekulativním prováděním instrukcí na CPU. Ochrana založená na E0PD má za následek nižší režii než ochrana KPTI (Kernel Page Table Isolation).
    • Pro systémy založené na architektuře ARMv8.5 byla přidána podpora pro instrukci RNG poskytující přístup k hardwarovému generátoru pseudonáhodných čísel. V jádře se instrukce RNG používá ke generování entropie při inicializaci generátoru pseudonáhodných čísel poskytovaného jádrem.
    • V jádře byla odstraněna podpora pro MPX (Memory Protection Extensions). 3.19 a umožňuje organizovat kontrolu ukazatelů, aby bylo zajištěno, že jsou respektovány hranice paměťových oblastí. Tato technologie nebyla široce používána v kompilátorech a byla odstraněna z GCC.
    • Pro architekturu RISC-V byla implementována podpora ladícího nástroje KASan (Kernel address sanitizer), který pomáhá identifikovat chyby při práci s pamětí.
  • Оборудование
    • Implementována podpora specifikací USB 4.0, který je založen na protokolu Thunderbolt 3 a poskytuje propustnost až 40 Gbps, při zachování zpětné kompatibility s USB 2.0 a USB 3.2. Analogicky s Blesk Rozhraní USB 4.0 umožňuje tunelovat různé protokoly přes jediný kabel s konektorem Typ C, včetně PCIe, Display Port a USB 3.x, stejně jako softwarové implementace protokolů, například pro organizaci síťových spojení mezi hostiteli. Implementace staví na ovladači Thunderbolt, který je již součástí linuxového jádra, a přizpůsobuje jej pro práci s hostiteli a zařízeními kompatibilními s USB4. Změny také přidávají podporu pro zařízení Thunderbolt 3 do softwarové implementace Connection Manager, která je zodpovědná za vytváření tunelů pro připojení více zařízení prostřednictvím jediného konektoru.
    • V ovladači amdgpu přidal počáteční podpora technologie ochrany proti kopírování HDCP 2.x (High-bandwidth Digital Content Protection). Přidána podpora pro čip AMD Pollock ASIC založený na Raven 2. Implementována možnost resetovat GPU pro rodiny Renoir a Navi.
    • Ovladač DRM pro grafické karty Intel přidal Podpora DSI VDSC pro čipy založené na mikroarchitektuře Ice Lake a Tiger Lake, byla implementována LMEM mmap (lokální paměť zařízení), vylepšena parsování VBT (Video BIOS Table), pro čipy Coffee Lake byla implementována podpora HDCP 2.2.
    • Pokračovaly práce na sjednocení kódu ovladače amdkfd (pro diskrétní GPU, jako je Fiji, Tonga, Polaris) s ovladačem amdgpu.
    • Ovladač k10temp byl přepracován a přidal podporu pro zobrazování parametrů napětí a proudu pro CPU AMD Zen a také rozšířené informace z teplotních senzorů používaných v CPU Zen a Zen 2.
    • V nouveau řidiče přidal podpora režimu načítání ověřeného firmwaru pro GPU NVIDIA na bázi mikroarchitektury Turing (GeForce RTX 2000), která umožnila u těchto karet povolit podporu 3D akcelerace (je vyžadováno stažení oficiálního firmwaru s digitálním podpisem NVIDIA). Přidána podpora pro grafický engine TU10x. Problémy se zvukem HD byly vyřešeny.
    • Přidána podpora komprese dat při přenosu přes DisplayPort MST (Multi-Stream Transport).
    • Přidán nový ovladač"ath11k» pro bezdrátové čipy Qualcomm podporující 802.11ax.
      Ovladač je založen na stacku mac80211 a podporuje režimy přístupového bodu, pracovní stanice a síťového uzlu.

    • Prostřednictvím sysfs je poskytován přístup k čitelným hodnotám teplotních senzorů používaných na moderních pevných discích a SSD.
    • Odesláno významné změny zvukového systému ALSA, zaměřené na odstranění kódu problémy roku 2038 (vyhněte se použití 32bitového typu time_t v rozhraní snd_pcm_mmap_status a snd_pcm_mmap_control). Přidána podpora pro nové zvukové kodeky
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Přidal ovladače pro 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.

    • Přidal podpora desek ARM a platforem Gen1 Amazon Echo (založené na 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,
      čtečka elektronických knih Tolino Shine 3,
      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 Qualcomm SC9863A Přidána podpora pro PCIe řadič používaný v Raspberry Pi 7180.

Ve stejné době Latinská Amerika Free Software Foundation vytvořený
вариант zcela bezplatné jádro 5.6 - Linux-libre 5.6-gnu, zbavený prvků firmwaru a ovladače obsahujících nesvobodné komponenty nebo části kódu, jejichž rozsah je omezen výrobcem. Nová verze zakazuje načítání objektů blob v ovladačích pro AMD TEE, ATH11K a Mediatek SCP. Aktualizovaný kód čištění objektů blob v ovladačích a podsystémech AMD PSP, amdgpu a nouveau.

Zdroj: opennet.ru

Přidat komentář