Vydanie jadra Linux 5.6

Po dvoch mesiacoch vývoja Linus Torvalds predložené vydanie jadra Linux 5.6. Medzi najvýznamnejšie zmeny: integrácia rozhrania WireGuard VPN, podpora pre USB4, menné priestory pre čas, možnosť vytvárať obslužné programy preťaženia TCP pomocou BPF, počiatočná podpora pre MultiPath TCP, zbavenie jadra problému 2038, mechanizmus „bootconfig“ , ZoneFS.

Nová verzia obsahuje 13702 1810 opráv od XNUMX XNUMX vývojárov,
veľkosť opravy - 40 MB (zmeny ovplyvnili 11577 súborov, bolo pridaných 610012 riadkov kódu,
294828 odstránených riadkov). Asi 45 % zo všetkých prezentovaných v 5.6
zmeny sa týkajú ovládačov zariadení, približne 15 % zmien
postoj k aktualizácii kódu špecifického pre hardvérové ​​architektúry, 12 %
spojené so sieťovým zásobníkom, 4 % so súborovými systémami a 3 % s internými
podsystémy jadra.

Hlavné inovácie:

  • Sieťový subsystém
    • Pridané implementácia rozhrania VPN WireGuard, ktorý je implementovaný na základe moderných metód šifrovania (ChaCha20, Poly1305, Curve25519, BLAKE2s), je ľahko použiteľný, bez komplikácií, osvedčil sa v množstve veľkých implementácií a poskytuje veľmi vysoký výkon (3,9-krát rýchlejší ako OpenVPN v zmysle priepustnosť). WireGuard využíva koncept smerovania šifrovacieho kľúča, ktorý zahŕňa pripojenie súkromného kľúča ku každému sieťovému rozhraniu a jeho použitie na viazanie verejných kľúčov. Verejné kľúče sa vymieňajú na vytvorenie spojenia podobným spôsobom ako SSH. Aby WireGuard fungoval, sú potrebné kryptografické primitívy boli prenesené z knižnice zinok ako súčasť štandardného Crypto API a zahrnuté do jadra 5.5.
    • zahájená integrácia komponentov potrebných na podporu MPTCP (MultiPath TCP), rozšírenie protokolu TCP na organizáciu prevádzky TCP spojenia s doručovaním paketov súčasne po niekoľkých trasách cez rôzne sieťové rozhrania spojené s rôznymi IP adresami. V prípade sieťových aplikácií vyzerá takéto agregované pripojenie ako bežné pripojenie TCP a všetku logiku oddelenia toku vykonáva MPPTCP. Viaccestný protokol TCP možno použiť na zvýšenie priepustnosti aj na zvýšenie spoľahlivosti. Napríklad MPTCP možno použiť na organizáciu prenosu dát na smartfóne pomocou pripojenia WiFi a 4G súčasne alebo na zníženie nákladov pripojením servera pomocou niekoľkých lacných prepojení namiesto jedného drahého.
    • Pridané podpora pre disciplínu spracovania sieťového frontu sch_ets (Vylepšený výber prevodovky, IEEE 802.1Qaz), ktorý poskytuje možnosť rozdeliť šírku pásma medzi rôzne triedy prevádzky. Ak je zaťaženie určitej triedy prevádzky pod pridelenou šírkou pásma, potom ETS umožňuje iným triedam prevádzky využívať dostupnú (nevyužitú) šírku pásma. Qdisc sch_ets je nakonfigurovaný ako disciplína PRIO a používa triedy prevádzky na definovanie prísnych a zdieľaných limitov šírky pásma. ETS funguje ako kombinácia disciplín PREDCHÁDZAJÚCI и DRR — ak existujú prísne obmedzené triedy premávky, použije sa PRIO, ale ak vo fronte nie je žiadna premávka, funguje to ako DRR.
    • Pridaný nový typ programov BPF BPF_PROG_TYPE_STRUCT_OPS, ktorý vám umožňuje implementovať obslužné nástroje funkcií jadra prostredníctvom BPF. V súčasnosti sa táto funkcia už dá použiť na implementáciu algoritmov riadenia preťaženia TCP vo forme programov BPF. Ako príklad navrhované Program BPF s implementáciou algoritmu DCTCP.
    • Prijaté do jadra zmeny, prekladateľské nástroje ettool s ioctl() na použitie rozhranie netlink. Nové rozhranie uľahčuje pridávanie rozšírení, zlepšuje spracovanie chýb, umožňuje odosielanie upozornení pri zmene stavu, zjednodušuje interakciu medzi jadrom a užívateľským priestorom a znižuje počet pomenovaných zoznamov, ktoré je potrebné synchronizovať.
    • Pridaná implementácia FQ-PIE (Flow Queue PIE) sieťového algoritmu správy frontu, zameraná na zníženie negatívneho vplyvu vyrovnávacej pamäte medzi paketmi na okrajové sieťové zariadenia (bufferbloat). FQ-PIE demonštruje vysokú účinnosť pri použití v systémoch s káblovými modemami.
  • Diskový subsystém, I/O a súborové systémy
    • Pre súborový systém Btrfs pridané asynchrónna implementácia operácie DISCARD (označenie uvoľnených blokov, ktoré už nie je potrebné fyzicky ukladať). Spočiatku sa operácie DISCARD vykonávali synchrónne, čo mohlo viesť k zníženiu výkonu v dôsledku čakania jednotiek na dokončenie príslušných príkazov. Asynchrónna implementácia vám umožňuje nečakať, kým disk dokončí DISCARD a vykonať túto operáciu na pozadí.
    • V XFS uskutočnené Čistenie kódu, ktorý používal staré 32-bitové počítadlá času (typ time_t bol nahradený time64_t), čo viedlo k problému 2038. Opravené chyby a poškodenie pamäte, ktoré sa vyskytli na 32-bitových platformách. Kód bol prepracovaný tak, aby fungoval s rozšírenými atribútmi.
    • Do súborového systému ext4 predstavený Optimalizácie výkonu súvisiace s manipuláciou so zamykaním inodov počas operácií čítania a zápisu. Vylepšený výkon prepisovania v režime priameho I/O. Na zjednodušenie diagnostiky problémov sa prvý a posledný chybový kód ukladá do superbloku.
    • Na súborovom systéme F2FS implementovaná schopnosť ukladať dáta v komprimovanej forme. Pre jednotlivý súbor alebo adresár je možné kompresiu povoliť pomocou príkazu "chattr +c file" alebo "chattr +c dir; dotknite sa adresára/súboru“. Ak chcete komprimovať celý oddiel, môžete použiť voľbu „-o compress_extension=ext“ v utilite na pripojenie.
    • Jadro obsahuje súborový systém ZoneFS, ktorý zjednodušuje nízkoúrovňovú prácu so zónovanými úložnými zariadeniami. Zónované jednotky znamenajú zariadenia na pevných magnetických diskoch alebo NVMe SSD, ktorých úložný priestor je rozdelený do zón, ktoré tvoria skupiny blokov alebo sektorov, do ktorých je povolené len postupné pridávanie údajov, čím sa aktualizuje celá skupina blokov. FS ZoneFS bol vyvinutý spoločnosťou Western Digital a spája každú zónu v jednotke so samostatným súborom, ktorý možno použiť na ukladanie údajov v nespracovanom režime bez manipulácie na úrovni sektora a bloku, t.j. Umožňuje aplikáciám používať súborové API namiesto priameho prístupu k blokovému zariadeniu pomocou ioctl.
    • V NFS je pripájanie oddielov cez UDP štandardne zakázané. Pridaná podpora pre možnosť priameho kopírovania súborov medzi servermi, definovaná v špecifikácii NFS 4.2. Pridaná nová možnosť pripojenia „softreval“, ktorá umožňuje použitie hodnôt atribútov uložených vo vyrovnávacej pamäti v prípade zlyhania servera. Napríklad pri zadávaní tejto voľby, keď je server nedostupný, je možné pohybovať sa po cestách v oddiele NFS a pristupovať k informáciám, ktoré sa usadili v cache.
    • Vykonané optimalizácia výkonu mechanizmu fs-verity, ktorý sa používa na monitorovanie integrity a autentifikácie jednotlivých súborov. Zvýšená rýchlosť sekvenčného čítania vďaka použitiu Merkleho hash tree. Výkon FS_IOC_ENABLE_VERITY bol optimalizovaný, keď vo vyrovnávacej pamäti nie sú žiadne údaje (bolo aplikované preventívne čítanie stránok s údajmi).
  • Virtualizácia a bezpečnosť
    • Možnosť deaktivovať modul SELinux počas spustenia bola zastaraná a uvoľnenie už aktivovaného SELinuxu bude v budúcnosti zakázané. Ak chcete zakázať SELinux, budete musieť zadať parameter "selinux=0" na príkazovom riadku jadra.
    • Pridané podpora menných priestorov pre čas (časové menné priestory), čo vám umožňuje spojiť stav systémových hodín s kontajnerom (CLOCK_REALTIME,
      CLOCK_MONOTONIC, CLOCK_BOOTTIME), použite svoj vlastný čas v kontajneri a pri migrácii kontajnera na iného hostiteľa sa uistite, že hodnoty CLOCK_MONOTONIC a CLOCK_BOOTTIME zostanú nezmenené (vezmite do úvahy čas po načítaní, či už v režime spánku alebo bez neho ).

    • Blok blokovania /dev/random bol odstránený. Správanie /dev/random je podobné ako /dev/urandom, pokiaľ ide o zabránenie blokovaniu entropie po inicializácii fondu.
    • Jadro jadra obsahuje ovládač, ktorý umožňuje hosťovským systémom so systémom VirtualBox pripojiť adresáre exportované hostiteľským prostredím (Zdieľaný priečinok VirtualBox).
    • Do subsystému BPF bola pridaná sada opráv (Dispečer BPF), pri použití mechanizmu Retpoline na ochranu pred útokmi triedy Spectre V2 vám umožňuje zvýšiť efektivitu volania programov BPF, keď sa vyskytnú udalosti s nimi spojené (napríklad umožňuje urýchliť volanie XDP handlerov, keď príde sieťový paket).
    • Pridaný ovládač na podporu TEE (Trusted Execution Environment) zabudovaný do AMD APU.
  • Pamäťové a systémové služby
    • BPF pridal podporu pre globálne funkcie. Vývoj prebieha ako súčasť iniciatívy na pridanie podpory pre knižnice funkcií, ktoré môžu byť zahrnuté do programov BPF. Ďalším krokom bude podpora dynamických rozšírení, ktoré umožňujú načítanie globálnych funkcií vrátane nahradenia existujúcich globálnych funkcií počas ich používania. Subsystém BPF tiež pridáva podporu pre variant operácie s mapou (používa sa na ukladanie trvalých údajov), ktorá podporuje vykonávanie v dávkovom režime.
    • Pridané Zariadenie „cpu_cooling“ vám umožňuje ochladiť prehriaty procesor tak, že ho na krátky čas uvediete do nečinného stavu.
    • Pridané systémové volanie openat2(), ktorý ponúka sadu ďalších príznakov na obmedzenie rozlíšenia cesty k súboru (zákaz kríženia pripájacích bodov, symbolické odkazy, magické odkazy (/proc/PID/fd), komponenty „../“).
    • Pre heterogénne systémy založené na architektúre big.LITTLE, ktorá kombinuje výkonné a menej efektívne energeticky efektívne jadrá CPU v jednom čipe, sa parameter uclamp_min nastavuje pri vykonávaní úloh v reálnom čase (sa vynorili v jadre 5.3 je mechanizmus na zabezpečenie záťaže). Tento parameter zabezpečuje, že plánovač umiestni úlohu na jadro CPU, ktoré má dostatočný výkon.
    • Jadro je oslobodené od problémy roku 2038. Nahradené posledné zostávajúce handlery, ktoré používali 32-bitový (signed int) typ time_t na počítadlo epochálneho času, ktorý by mal s prihliadnutím na správu z roku 1970 v roku 2038 pretekať.
    • Neustále zlepšovanie asynchrónneho I/O rozhrania io_uringv ktorom zabezpečené podpora pre nové operácie: IORING_OP_FALLOCATE (rezervácia prázdnych oblastí), IORING_OP_OPENAT,
      IORING_OP_OPENAT2,
      IORING_OP_CLOSE (otváranie a zatváranie súborov),
      IORING_OP_FILES_UPDATE (pridávanie a odstraňovanie súborov zo zoznamu rýchleho prístupu),
      IORING_OP_STATX (žiadosť o informácie o súbore),
      IORING_OP_READ,
      IORING_OP_WRITE (zjednodušené analógy IORING_OP_READV a IORING_OP_WRITEV),
      IORING_OP_FADVISE,
      IORING_OP_MADVISE (asynchrónne varianty volaní posix_fadvise a madvise), IORING_OP_SEND,
      IORING_OP_RECV (odosielanie a prijímanie sieťových údajov),
      IORING_OP_EPOLL_CTL (vykonávanie operácií s deskriptormi súborov epoll).

    • Pridané systémové volanie pidfd_getfd(), čo umožňuje procesu získať deskriptor súboru pre otvorený súbor z iného procesu.
    • Implementovaná mechanizmus „bootconfig“, ktorý umožňuje okrem možností príkazového riadku určiť parametre jadra prostredníctvom súboru nastavení. Na pridanie takýchto súborov do obrazu initramfs je navrhnutý nástroj bootconfig. Táto funkcia môže byť použitá napríklad na konfiguráciu kprobes v čase zavádzania.
    • Prerobený mechanizmus čakania na zápis a čítanie údajov v nepomenovaných kanáloch. Zmena umožnila urýchliť úlohy, ako je paralelná montáž veľkých projektov. Optimalizácia však môže viesť k konfliktu v GNU make kvôli chybe vo vydaní 4.2.1, ktorá bola opravená vo verzii 4.3.
    • Do prctl() bol pridaný príznak PR_SET_IO_FLUSHER, ktorý možno použiť na označenie procesov bez pamäte, ktoré by nemali podliehať obmedzeniam, keď je v systéme málo pamäte.
    • Na základe systému distribúcie pamäte ION používanom v systéme Android bol implementovaný subsystém dma-buf hromady, ktorý umožňuje riadiť prideľovanie vyrovnávacích pamätí DMA na zdieľanie pamäťových oblastí medzi ovládačmi, aplikáciami a rôznymi subsystémami.
  • Hardvérové ​​architektúry
    • Pridaná podpora pre rozšírenie E0PD, ktoré sa objavilo v ARMv8.5 a umožňuje ochranu pred útokmi súvisiacimi so špekulatívnym vykonávaním pokynov na CPU. Ochrana založená na E0PD má za následok nižšiu réžiu ako ochrana KPTI (Kernel Page Table Isolation).
    • Pre systémy založené na architektúre ARMv8.5 bola pridaná podpora pre inštrukciu RNG, ktorá poskytuje prístup k hardvérovému generátoru pseudonáhodných čísel. V jadre sa inštrukcia RNG používa na generovanie entropie pri inicializácii generátora pseudonáhodných čísel poskytovaného jadrom.
    • Odstránená podpora pre MPX (Memory Protection Extensions) pridaná do jadra 3.19 a umožňuje vám organizovať kontrolu ukazovateľov, aby ste sa uistili, že sú rešpektované hranice pamäťových oblastí. Táto technológia nebola široko používaná v kompilátoroch a bola odstránená z GCC.
    • Pre architektúru RISC-V bola implementovaná podpora ladiaceho nástroja KASan (Kernel address sanitizer), ktorý pomáha identifikovať chyby pri práci s pamäťou.
  • Оборудование
    • Implementovaná podpora špecifikácií USB 4.0, ktorý je založený na protokole Thunderbolt 3 a poskytuje priepustnosť až 40 Gbps, pri zachovaní spätnej kompatibility s USB 2.0 a USB 3.2. Analogicky s Blesk Rozhranie USB 4.0 umožňuje tunelovať rôzne protokoly cez jediný kábel s konektorom Type-C, vrátane PCIe, Display Port a USB 3.x, ako aj softvérové ​​implementácie protokolov, napríklad na organizovanie sieťových spojení medzi hostiteľmi. Implementácia vychádza z ovládača Thunderbolt, ktorý je už súčasťou linuxového jadra a prispôsobuje ho na prácu s hostiteľmi a zariadeniami kompatibilnými s USB4. Zmeny tiež pridávajú podporu pre zariadenia Thunderbolt 3 do softvérovej implementácie Connection Manager, ktorá je zodpovedná za vytváranie tunelov na pripojenie viacerých zariadení cez jeden konektor.
    • V ovládači amdgpu pridané počiatočná podpora technológie ochrany proti kopírovaniu HDCP 2.x (High-bandwidth Digital Content Protection). Pridaná podpora pre čip AMD Pollock ASIC založený na Raven 2. Implementovaná možnosť resetovania GPU pre rodiny Renoir a Navi.
    • Ovládač DRM pre grafické karty Intel pridané Podpora DSI VDSC pre čipy založené na mikroarchitektúre Ice Lake a Tiger Lake, implementovaná bola LMEM mmap (lokálna pamäť zariadenia), vylepšené parsovanie VBT (Video BIOS Table), podpora HDCP 2.2 bola implementovaná pre čipy Coffee Lake.
    • Pokračovali práce na zjednotení kódu ovládača amdkfd (pre diskrétne GPU, ako napríklad Fiji, Tonga, Polaris) s ovládačom amdgpu.
    • Prepracovaný bol ovládač k10temp, ktorý pridáva podporu pre zobrazovanie parametrov napätia a prúdu pre CPU AMD Zen, ako aj rozšírené informácie z teplotných senzorov používaných v CPU Zen a Zen 2.
    • V novom vodiči pridané podpora overeného režimu načítania firmvéru pre GPU NVIDIA založené na mikroarchitektúre Turing (GeForce RTX 2000), ktorá umožnila povoliť podporu 3D akcelerácie pre tieto karty (vyžaduje sa stiahnutie oficiálneho firmvéru s digitálnym podpisom NVIDIA). Pridaná podpora pre grafický engine TU10x. Problémy s HD zvukom boli vyriešené.
    • Pridaná podpora pre kompresiu dát pri prenose cez DisplayPort MST (Multi-Stream Transport).
    • Pridaný nový ovládač "ath11k» pre bezdrôtové čipy Qualcomm podporujúce 802.11ax.
      Ovládač je založený na zásobníku mac80211 a podporuje režimy prístupového bodu, pracovnej stanice a sieťových uzlov.

    • Prostredníctvom sysfs je zabezpečený prístup k čitateľným údajom snímača teploty používaným na moderných pevných diskoch a SSD.
    • Predložené významné zmeny v zvukovom systéme ALSA, ktorých cieľom je zbaviť sa kódu problémy roku 2038 (vyhýbanie sa použitiu 32-bitového typu time_t v rozhraniach snd_pcm_mmap_status a snd_pcm_mmap_control). Pridaná podpora pre nové zvukové kodeky
      Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.

    • Pridané ovládače pre 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.

    • Pridané podpora pre ARM dosky a platformy 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,
      Čítačka elektronických kníh Tolino Shine 3,
      Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX a HoneyComb (LX2160A), Google Coral Edge TPU (i.MX8MQ),
      Nosič Rockchip Radxa Dalang, 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 Pridaná podpora pre radič PCIe používaný v Raspberry Pi 7180.

Zároveň Latinskoamerická nadácia pre slobodný softvér tvorené
voľba úplne bezplatné jadro 5.6 - Linux-libre 5.6-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 zakazuje načítanie blobu v ovládačoch pre AMD TEE, ATH11K a Mediatek SCP. Aktualizovaný kód čistenia blob v ovládačoch a podsystémoch AMD PSP, amdgpu a nouveau.

Zdroj: opennet.ru

Pridať komentár