Vydání jádra Linux 5.17

Po dvou měsících vývoje uvedl Linus Torvalds vydání jádra Linux 5.17. Mezi nejvýznamnější změny patří: nový systém řízení výkonu pro procesory AMD, možnost rekurzivního mapování identifikátorů uživatelů ve souborových systémech, podpora přenositelných zkompilovaných BPF programů, přechod generátoru pseudonáhodných čísel na algoritmus BLAKE2s, nástroj RTLA pro analýzu provádění v reálném čase, nový backend fscache pro kešování síťových FS, možnost přiřazení jmen anonymním operacím mmap.

Nová verze zahrnuje 14203 oprav od 1995 vývojářů, velikost patchu je 37 MB (změny se dotkly 11366 souborů, přidáno 506043 řádků kódu, odstraněno 250954 řádků). Přibližně 44 % všech změn v 5.17 souvisí s ovladači zařízení, asi 16 % změn se týká aktualizace kódu specifického pro hardwarové architektury, 15 % se týká síťového zásobníku, 4 % se týká souborových systémů a 4 % s interními podsystémy jádra.

Hlavní novinky v jádře 5.17:

  • Diskový subsystém, vstup/výstup a souborové systémy
    • Byla implementována možnost vnořeného mapování identifikátorů uživatelů připojených souborových systémů, použitého pro mapování souborů určitého uživatele na připojeném cizím oddílu s jiným uživatelem v aktuálním systému. Přidaná možnost umožňuje rekurzivně používat mapování nad souborovými systémy, pro které již bylo mapování použito.
    • Podsystem fscache byl kompletně přepsán, používaný pro organizaci kešování v místním souborovém systému dat přenášených přes síťové souborové systémy. Nová implementace se vyznačuje výrazným zjednodušením kódu a nahrazením složitých operací plánování a sledování stavů objektů jednoduššími mechanizmy. Podpora nového fscache byla implementována v souborovém systému CIFS.
    • V subsystému sledování událostí ve FS fanotify byl implementován nový typ události FAN_RENAME, který umožňuje jednorázové zachycení operace přejmenování souborů nebo adresářů (dříve byly pro zpracování přejmenování používány dva samostatné události FAN_MOVED_FROM a FAN_MOVED_TO).
    • V souborovém systému Btrfs byla optimalizována operace logování a fsync pro velké adresáře, realizováno prostřednictvím kopírování pouze indexových klíčů a snížení objemu logovaných metadat. Byla zajištěna podpora indexace a vyhledávání podle velikosti záznamů o volném prostoru, což vedlo k přibližně 30% snížení latence a zkrácení doby vyhledávání. Bylo povoleno přerušit defragmentační operace. Byla zahrnuta možnost přidávat zařízení při vypnuté vyvážení mezi úložišti, tj. při montování FS s možností skip_balance.
    • Navržen nový syntax montování souborového systému Ceph, který řeší existující problémy se svázáním s IP adresami. Kromě IP adress pro určení serveru lze nyní použít identifikátor klastru (FSID): mount -t ceph user@fsid.fs_name=\/[subdir] mnt -o mon_addr=monip1[:port][\/monip2[:port]]
    • Souborový systém Ext4 byl převeden na nové API pro montování, které odděluje fáze analýzy montovacích možností a nastavení superbloku. Podpora montovacích možností lazytime a nolazytime byla ukončena, které byly přidány jako dočasná změna pro usnadnění přechodu util-linux na použití příznaku MS_LAZYTIME. Byla přidána podpora pro nastavování a čtení značek v FS (ioctl FS_IOC_GETFSLABEL a FS_IOC_SETFSLABEL).
    • NFSv4 byla přidána podpora pro práci v souborových systémech bez rozdělení registrů symbolů v názvech souborů a adresářů. V NFSv4.1+ byla přidána podpora pro definici agregovaných sezení (trunking).
  • Paměť a systémové služby
    • Byl přidán ovladač amd-pstate, který zajišťuje dynamické řízení frekvence pro dosažení optimálního výkonu. Ovladač podporuje CPU a APU AMD počínaje generací Zen 2, byl vyvíjen ve spolupráci se společností Valve a je zaměřen na zlepšení účinnosti řízení spotřeby energie. Pro adaptivní změnu frekvence se používá mechanismus CPPC (Collaborative Processor Performance Control), který umožňuje přesnější změny výkonových ukazatelů (není omezen na tři úrovně výkonu) a operativnější reakci na změnu stavu než dříve používané ovladače P-state založené na ACPI (CPUFreq).
    • V podsystemu eBPF byl navržen zpracovatel bpf_loop(), který poskytuje alternativní způsob organizace smyček v eBPF programech, rychlejší a snadnější pro kontrolu ověřovatelem.
    • Na úrovni jádra byl implementován mechanismus CO-RE (Compile Once — Run Everywhere), který umožňuje sbírat kód eBPF programů pouze jednou a používat speciální univerzální načítač, který přizpůsobí načítaný program aktuálnímu jádru a typům BTF (BPF Type Format).
    • Byla poskytnuta možnost pojmenovávat oblasti privátní anonymní (alokované přes malloc) paměti, což může usnadnit ladění a optimalizaci spotřeby paměti v aplikacích. Jména se přiřazují prostřednictvím prctl s příznakem PR_SET_VMA_ANON_NAME a zobrazují se v /proc/pid/maps a /proc/pid/smaps ve formě „[anon:]“.
    • V plánovači úloh bylo zajištěno sledování a zobrazování v /proc/PID/sched času, stráveného procesy v stavu nuceného nečinnosti (forced-idle), používaného například pro snížení zátěže při přehřívání procesoru.
    • Byl přidán modul gpio-sim, určený pro simulaci čipů GPIO pro účely testování.
    • Do příkazu „perf ftrace“ byla přidána podpora „latency“ pro generování histogramů s informacemi o zpožděních.
    • Byl přidán soubor nástrojů „RTLA“ pro analýzu práce v reálném čase. Obsahuje nástroje jako osnoise (určuje vliv operačního systému na provádění úkolu) a timerlat (mění zpoždění spojená s časovačem).
    • Byla integrována druhá série patchů s implementací konceptu foliantu stránek paměti (page folios), které připomínají sloučené stránky paměti (compound pages), ale liší se vylepšenou sémantikou a srozumitelnější organizací práce. Použití foliantu umožňuje urychlit správu paměti v některých subsystémech jádra. V navržených patchech byl dokončen převod stránkového cache na používání foliantu a byla přidána počáteční podpora foliantu ve FS XFS.
    • Byl přidán režim kompilace „make mod2noconfig“, při kterém je generována konfigurace zkompilující všechny deaktivované subsystémy ve formě modulů jádra.
    • Byly zvýšeny požadavky na verzi LLVM/Clang, kterou lze použít pro kompilaci jádra. Pro kompilaci je nyní vyžadována minimálně verze LLVM 11.
  • Virtualizace a bezpečnost
    • Byla navržena aktualizovaná implementace generátoru pseudonáhodných čísel RDRAND, která zajišťuje funkci zařízení /dev/random a /dev/urandom. Tato verze se vyznačuje přechodem na použití hashovací funkce BLAKE2s místo SHA1 pro operace míchání entropie. Tato změna zvýšila bezpečnost generátoru pseudonáhodných čísel tím, že odstranila problematický algoritmus SHA1 a vyloučila přepisování iniciačního vektoru RNG. Vzhledem k tomu, že BLAKE2s překonává SHA1 v oblasti výkonu, mělo jeho použití také pozitivní vliv na výkonnost.
    • Byla přidána ochrana před zranitelnostmi v procesorech, které vznikají spekulativním prováděním instrukcí po operacích bezpodmínečného přímého skoku. Tento problém nastává kvůli předběžnému zpracování instrukcí, které následují v paměti bezprostředně za příkazem skoku (SLS, Straight Line Speculation). K aktivaci ochrany je třeba sestavení s použitím verze GCC 12, která je v testovací fázi.
    • Byl přidán mechanismus sledování počtu referencí (refcount, reference-count), zaměřený na snížení počtu chyb při počítání referencí, které vedou k přístupu do paměti po jejím uvolnění. Tento mechanismus je zatím omezen na síťový subsystém, ale v budoucnu by mohl být přizpůsoben i pro další části jádra.
    • Byly implementovány rozšířené kontroly nových záznamů v tabulce stránek paměti procesu, které umožňují odhalit některé typy poškození a zastavit systém blokováním útoků v rané fázi.
    • Byla přidána možnost dekomprese modulů jádra přímo jádrem, namísto obsluhy v uživatelském prostoru, což umožňuje pomocí LSM modulu LoadPin zajistit, že moduly jádra jsou načteny do paměti z důvěryhodného úložného zařízení.
    • Byla zajištěna sestava s flagem „-Wcast-function-type“, který zahrnuje výstup varování o převodu ukazatelů funkcí na neslučitelný typ.
    • Byl přidán virtuální hostitelský ovladač pvUSB pro hypervizor Xen, který poskytuje přístup k USB zařízením, která jsou průchozí do hostitelských systémů (umožňuje hostitelským systémům přistupovat k fyzickým USB zařízením, která jsou přiřazena hostitelskému systému).
    • Byl přidán modul, který umožňuje komunikaci přes Wi-Fi se subsystémem IME (Intel Management Engine), který je dodáván v drtivé většině moderních základních desek s procesory Intel a je implementován jako samostatný mikroprocesor, který pracuje nezávisle na CPU.
    • Byla implementována podpora ladicího nástroje KCSAN (Kernel Concurrency Sanitizer) pro architekturu ARM64, určeného k dynamickému odhalování stavu závodů uvnitř jádra.
    • Pro 32bitové systémy ARM byla přidána možnost využití mechanismu KFENCE k odhalování chyb při práci s pamětí.
    • Do hypervizoru KVM byla přidána podpora instrukcí AMX (Advanced Matrix Extensions), které budou realizovány v nadcházejících serverových procesorech Intel Xeon Scalable.
  • Síťová subsystém
    • Byla přidána podpora offloading na straně síťových zařízení pro operace spojené s řízením provozu.
    • Byla přidána možnost využití protokolu MCTP (Management Component Transport Protocol) nad zařízeními se sériovým rozhraním. MCTP může být použit pro interakci mezi řídícími kontroléry a souvisejícími zařízeními (host procesory, periferní zařízení atd.).
    • Byla optimalizována TCP zásobník, například pro zlepšení výkonu volání recvmsg byla realizována odložená uvolnění zásobníků soketů.
    • Na úrovni oprávnění CAP_NET_RAW bylo povoleno nastavení režimů SO_PRIORITY a SO_MARK pomocí funkce setsockopt.
    • Pro IPv4 bylo povoleno přiřazení raw soketů k nestandardním IP adresám s využitím možností IP_FREEBIND a IP_TRANSPARENT.
    • Byl přidán sysctl arp_missed_max pro nastavení prahového počtu selhání během kontroly ARP monitoru, po kterém bude síťové rozhraní převedeno do stavu vypnutí.
    • Byla poskytnuta možnost nastavení jednotlivých hodnot sysctl min_pmtu a mtu_expires pro síťové prostory názvů.
    • Do API ethtool byla přidána možnost nastavení a určení velikosti bufferů příchozích a odchozích paketů.
    • Do Netfilter byla přidána podpora filtrování tranzitního pppoe provozu v síťovém mostě.
    • Do modulu ksmbd, který implementuje souborový serveru, využívající protokol SMB3, byla přidána podpora výměny klíčů, byl použit síťový port 445 pro smbdirect a byla přidána podpora parametru „smb2 max credit.
  • Hardware
    • Do subsystému drm (Direct Rendering Manager) a ovladače i915 byla přidána podpora obrazovek pro zobrazení citlivých informací. Například některé notebooky jsou dodávány s obrazovkami s vestavěným režimem soukromého zobrazení, který ztěžuje prohlížení zvenčí. Přidané změny umožňují připojení specialized ovladačů pro takové obrazovky a správu režimů soukromého zobrazení prostřednictvím nastavení vlastností v běžných KMS ovladačích.
    • V ovladači amdgpu byla přidána podpora ladicí technologie STB (Smart Trace Buffer) pro všechny podporující GPU AMD. STB usnadňuje analýzu selhání a identifikaci zdroje problémů prostřednictvím ukládání informací o funkcích prováděných před posledním selháním do speciálního bufferu.
    • V ovladači i915 byla přidána podpora čipů Intel Raptor Lake S a byla povolena podpora grafického subsystému čipů Intel Alder Lake P. Byla poskytnuta možnost řízení podsvícení obrazovky prostřednictvím DPCD rozhraní VESA.
    • V ovladačích fbcon/fbdev byla obnovena podpora hardwarového zrychlení posouvání v konzole.
    • Byla pokračována integrace změn pro podporu čipů Apple M1. Byla implementována možnost využití ovladače simpledrm na systémech s čipem Apple M1 pro zobrazení prostřednictvím framebufferu poskytovaného firmwarem.
    • Byla přidána podpora ARM SoC, zařízení a desek Snapdragon 7c, 845 a 888 (Sony Xperia XZ2/XZ2C/XZ3, Xperia 1 III/5 III, Samsung J5, Microsoft Surface Duo 2), Mediatek MT6589 (Fairphone FP1), Mediatek MT8183 (Acer Chromebook 314), Mediatek MT7986a/b (používá se v Wi-fi routerech), Broadcom BCM4908 (Netgear RAXE500), Qualcomm SDX65, Samsung Exynos7885, Renesas R-Car S4-8, TI J721s2, TI SPEAr320s, NXP i.MX8 ULP8, Aspeed AST2500/AST2600, Engicam i.Core STM32MP1, Allwinner Tanix TX6, Facebook Bletchley BMC, Goramo MultiLink, JOZ Access Point, Y Soft IOTA Crux/Crux+, t6000/t6001 MacBook Pro 14/16.
    • Byla přidána podpora procesorů ARM Cortex-M55 a Cortex-M33.
    • Byla přidána podpora zařízení založených na CPU MIPS: Linksys WRT320N v1, Netgear R6300 v1, Netgear WN2500RP v1/v2.
    • Byla přidána podpora SoC StarFive JH7100 založeného na architektuře RISC-V.
    • Byl přidán ovladač lenovo-yogabook-wmi pro řízení podsvícení klávesnice a přístup k různým senzorům v Lenovo Yoga Book.
    • Byl přidán ovladač asus_wmi_sensors pro přístup k senzorům používaným na základních deskách Asus X370, X470, B450, B550 a X399 s procesory AMD Ryzen.
    • Byl přidán ovladač x86-android-tablets pro tablety na bázi architektury x86 dodávané s platformou Android.
    • Byla přidána podpora pro dotykové obrazovky TrekStor SurfTab duo W1 a elektronické pero pro tablety Chuwi Hi10 Plus a Pro.
    • Do ovladačů pro SoC Tegra 20/30 byla přidána podpora správy napájení a napětí. Byla zajištěna možnost zavádění na starých 32bitových zařízeních založených na SoC Tegra, jako jsou ASUS Prime TF201, Pad TF701T, Pad TF300T, Infinity TF700T, EeePad TF101 a Pad TF300TG.
    • Byly přidány ovladače pro průmyslové počítače Siemens.
    • Byla přidána podpora LCD panelů Sony Tulip Truly NT35521, Vivax TPC-9150, Innolux G070Y2-T02, BOE BF060Y8M-AJ0, JDI R63452, Novatek NT35950, Wanchanglong W552946ABA a Team Source Display TST043015CMHX.
    • Byla přidána podpora zvukových systémů a kodeků AMD Renoir ACP, Asahi Kasei Microdevices AKM4375, Intel systémy používající NAU8825/MAX98390, Mediatek MT8915, nVidia Tegra20 S/P-DIF, Qualcomm ALC5682I-VS, Texas Instruments TLV320ADC3xxx. Byly vyřešeny problémy s Tegra194 HD-audio. Přidána podpora HDA pro kodeky CS35L41. Byla zlepšena podpora zvukových systémů pro notebooky Lenovo a HP, stejně jako základní desky Gigabyte.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster