Két hónapos fejlesztés után Linus Torvalds benyújtott kernel kiadás Linux 5.6. A legfigyelemreméltóbb változások: a WireGuard VPN interfész integrációja, az USB4 támogatása, az időre vonatkozó névterek, a TCP torlódáskezelők létrehozásának lehetősége BPF segítségével, a MultiPath TCP kezdeti támogatása, a 2038-as probléma magjának megszabadítása, a „bootconfig” mechanizmus , ZoneFS.
Az új verzió 13702 1810 javítást tartalmaz XNUMX XNUMX fejlesztőtől,
javítás mérete - 40 MB (a változások 11577 fájlt érintettek, hozzáadva 610012 kódsort,
294828 sor eltávolítva). Az 45-ben bemutatott összesnek körülbelül 5.6%-a
a változtatások eszközillesztőkkel kapcsolatosak, a változtatások körülbelül 15%-a
hozzáállás a hardver architektúrákra jellemző kód frissítéséhez, 12%
a hálózati veremhez, 4% a fájlrendszerekhez és 3% a belsőhöz kapcsolódik
kernel alrendszerek.
Hozzáadva VPN interfész megvalósítása WireGuard, amely modern titkosítási módszereken (ChaCha20, Poly1305, Curve25519, BLAKE2s) épült, könnyen használható, bonyodalmaktól mentes, számos nagy implementációban bevált és nagyon magas teljesítményt nyújt (3,9-szer gyorsabb, mint az OpenVPN. áteresztőképesség). A WireGuard a titkosítási kulcs-útválasztás koncepcióját használja, amely magában foglalja egy privát kulcs csatolását minden hálózati interfészhez, és azt használja a nyilvános kulcsok összekapcsolására. A nyilvános kulcsok cseréje az SSH-hoz hasonló módon történik a kapcsolat létrehozása érdekében. A WireGuard működéséhez kriptográfiai primitívek szükségesek voltakátvitte a könyvtárból cink a szabványos Crypto API részeként és beleértve a magba 5.5.
Lépések az MPTCP (MultiPath TCP) támogatásához szükséges komponensek integrációja, a TCP-protokoll kiterjesztése a TCP-kapcsolat működésének megszervezésére a csomagok egyidejű, több útvonalon történő kézbesítésével, különböző, különböző IP-címekhez tartozó hálózati interfészeken keresztül. Hálózati alkalmazások esetén az ilyen összesített kapcsolat úgy néz ki, mint egy normál TCP-kapcsolat, és az összes áramlási szétválasztási logikát az MPTCP hajtja végre. A többutas TCP használható az átviteli sebesség és a megbízhatóság növelésére. Az MPTCP-vel például megszervezhető okostelefonon az adatátvitel WiFi és 4G kapcsolattal egyidejűleg, vagy csökkenthető a költségek, ha egy szervert egy drága helyett több olcsó link segítségével csatlakoztatunk.
Hozzáadva támogatja a sch_ets (Továbbfejlesztett sebességváltó-választás, IEEE 802.1Qaz), amely lehetővé teszi a sávszélesség elosztását a forgalom különböző osztályai között. Ha egy adott forgalmi osztály terhelése a kiosztott sávszélesség alatt van, akkor az ETS lehetővé teszi, hogy más forgalmi osztályok is használják a rendelkezésre álló (nem használt) sávszélességet. A Qdisc sch_ets PRIO diszciplínaként van konfigurálva, és forgalmi osztályokat használ a szigorú és megosztott sávszélesség-korlátok meghatározásához. Az ETS tudományágak kombinációjaként működik PRIO и DRR — ha szigorúan korlátozott forgalmi osztályok vannak, akkor a PRIO kerül alkalmazásra, de ha nincs forgalom a sorban, akkor DRR-ként működik.
Új típusú BPF programok kerültek hozzáadásra BPF_PROG_TYPE_STRUCT_OPS, amely lehetővé teszi a kernel függvénykezelők megvalósítását a BPF-en keresztül. Jelenleg ez a funkció már használható TCP torlódáscsökkentő algoritmusok megvalósítására BPF programok formájában. Mint például javasolt BPF program algoritmus implementációval DCTCP.
Elfogadva a magba változások, fordítóeszközök ethtool az ioctl() segítségével netlink interfész. Az új felület megkönnyíti a bővítmények hozzáadását, javítja a hibakezelést, lehetővé teszi az állapotváltozásokról szóló értesítések küldését, leegyszerűsíti a kernel és a felhasználói terület közötti interakciót, valamint csökkenti a szinkronizálandó nevesített listák számát.
Az FQ-PIE (Flow Queue PIE) hálózati sorkezelési algoritmus hozzáadott megvalósítása, amelynek célja a köztes csomagpufferelés szélső hálózati berendezésekre gyakorolt negatív hatásának csökkentése (bufferbloat). Az FQ-PIE nagy hatékonyságot mutat, ha kábelmodemes rendszerekben használják.
Lemez alrendszer, I/O és fájlrendszerek
Btrfs fájlrendszerhez tette hozzá a DISCARD művelet aszinkron megvalósítása (a felszabadult blokkok megjelölése, amelyeket már nem kell fizikailag tárolni). Kezdetben a DISCARD műveleteket szinkronban hajtották végre, ami teljesítménycsökkenéshez vezethet, mivel a meghajtók a megfelelő parancsok befejezésére várnak. Az aszinkron megvalósítás lehetővé teszi, hogy ne várja meg, amíg a meghajtó befejezi a DISCARD-ot, és ezt a műveletet a háttérben hajtja végre.
XFS-ben végrehajtani A régi 32 bites időszámlálókat használó kód megtisztítása (a time_t típust time64_t váltotta fel), ami a 2038-as problémához vezetett. Javítottuk a 32 bites platformokon előforduló hibákat és memóriasérüléseket. A kódot átdolgoztuk, hogy kibővített attribútumokkal működjön.
Az ext4 fájlrendszerhez bemutatott Az olvasási és írási műveletek során az inode zárolásának kezeléséhez kapcsolódó teljesítményoptimalizálások. Jobb újraírási teljesítmény Direct I/O módban. A problémák diagnosztizálásának egyszerűsítése érdekében az első és az utolsó hibakód a szuperblokkban tárolódik.
Az F2FS fájlrendszeren végrehajtva az adatok tömörített formában történő tárolásának képessége. Egyedi fájl vagy könyvtár esetén a tömörítés engedélyezhető a "chattr +c file" vagy a "chattr +c dir; érintse meg a könyvtárat/fájlt". A teljes partíció tömörítéséhez használja a „-o compress_extension=ext” opciót a mount segédprogramban.
A kernel tartalmaz egy fájlrendszert ZoneFS, amely leegyszerűsíti az alacsony szintű munkát a zónás tárolóeszközökkel. A zónás meghajtók olyan merevmágneses lemezeken vagy NVMe SSD-ken lévő eszközöket jelentenek, amelyekben a tárterület blokk- vagy szektorcsoportokat alkotó zónákra van felosztva, amelyekbe csak az adatok egymás utáni hozzáadása engedélyezett, frissítve a teljes blokkcsoportot. Az FS ZoneFS-t a Western Digital fejlesztette ki, és a meghajtó minden zónájához külön fájlt társít, amely felhasználható adatok tárolására nyers módban, szektor- és blokkszintű manipuláció nélkül, pl. Lehetővé teszi az alkalmazások számára, hogy a fájl API-t használják ahelyett, hogy közvetlenül hozzáférnének a blokkeszközhöz egy ioctl használatával.
Az NFS-ben a partíciók UDP-n keresztüli csatlakoztatása alapértelmezés szerint le van tiltva. Az NFS 4.2 specifikációban meghatározott támogatás hozzáadva a fájlok szerverek közötti közvetlen másolásához. Hozzáadott egy új "softreval" csatolási opciót, amely lehetővé teszi a gyorsítótárazott attribútumértékek használatát szerverhiba esetén. Például ennek a beállításnak a megadásakor, miután a kiszolgáló nem elérhető, továbbra is lehetséges az NFS-partíció útvonalain való mozgás és a gyorsítótárban elhelyezett információk elérése.
Végrehajtott az egyes fájlok integritásának és hitelesítésének ellenőrzésére használt fs-verity mechanizmus teljesítményének optimalizálása. Megnövelt szekvenciális olvasási sebesség a Merkle hash fa használatának köszönhetően. Az FS_IOC_ENABLE_VERITY teljesítményét optimalizáltuk, ha nincs adat a gyorsítótárban (az adatokat tartalmazó oldalak megelőző beolvasása lett alkalmazva).
Virtualizáció és biztonság
A SELinux modul futás közbeni letiltásának lehetősége elavult, és a már aktivált SELinux eltávolítása a jövőben tilos lesz. A SELinux letiltásához át kell adnia a "selinux=0" paramétert a kernel parancssorban.
Hozzáadva az idő névtereinek támogatása (idő névterek), lehetővé téve a rendszeróra állapotának a tárolóhoz való kötését (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME), használja a saját idejét a tárolóban, és amikor a tárolót másik gazdagépre helyezi át, ügyeljen arra, hogy a CLOCK_MONOTONIC és CLOCK_BOOTTIME értékek változatlanok maradjanak (vegye figyelembe a betöltés utáni időt, az alvó üzemmód figyelembevételével vagy anélkül ).
A /dev/random blokkolókészlet eltávolítva. A /dev/random viselkedése hasonló a /dev/urandomhoz az entrópia blokkolásának megakadályozása szempontjából a készlet inicializálása után.
A mag kernel tartalmaz egy illesztőprogramot, amely lehetővé teszi a VirtualBoxot futtató vendégrendszerek számára a gazdagép által exportált könyvtárak csatlakoztatását (VirtualBox Shared Folder).
A javítások készlete hozzáadásra került a BPF alrendszerhez (BPF diszpécser), amikor a Retpoline mechanizmust használja a Spectre V2 osztályú támadások elleni védelemre, lehetővé teszi a BPF-programok hívásának hatékonyságának növelését, amikor azokhoz kapcsolódó események fordulnak elő (például lehetővé teszi az XDP-kezelők hívásának felgyorsítását, ha egy hálózati csomag érkezik).
Illesztőprogram hozzáadva az AMD APU-kba épített TEE (Trusted Execution Environment) támogatásához.
Memória- és rendszerszolgáltatások
A BPF kiegészítette a globális funkciók támogatását. A fejlesztés annak a kezdeményezésnek a részeként zajlik, amely a BPF-programokba beilleszthető függvénykönyvtárak támogatását célozza. A következő lépés a dinamikus kiterjesztések támogatása lesz, amelyek lehetővé teszik a globális funkciók betöltését, beleértve a meglévő globális funkciók lecserélését használat közben. A BPF alrendszer a leképezési művelet egy változatát is támogatja (mely állandó adatok tárolására szolgál), amely támogatja a kötegelt módban történő végrehajtást.
Hozzáadta A „cpu_cooling” eszköz lehetővé teszi a túlmelegedett CPU hűtését azáltal, hogy rövid időre készenléti állapotba helyezi.
Rendszerhívás hozzáadva openat2(), amely további jelzőket kínál a fájl elérési út felbontásának korlátozására (beillesztési pontok keresztezésének tilalma, szimbolikus hivatkozások, mágikus hivatkozások (/proc/PID/fd), „../” komponensek).
A big.LITTLE architektúrán alapuló heterogén rendszerek esetében, amelyek egy chipben egyesítik az erős és kevésbé hatékony energiahatékony CPU magokat, az uclamp_min paraméter a valós idejű feladatok végrehajtása során kerül beállításra (előkerült az 5.3-as kernelben van egy mechanizmus a terhelés rögzítésére). Ez a paraméter biztosítja, hogy a feladatot az ütemező megfelelő teljesítménnyel rendelkező CPU magra helyezze.
A kernel felszabadul 2038 problémái. Lecserélték az utolsó megmaradt kezelőket, amelyek a 32 bites (signed int) time_t típust használták az epochális időszámlálóhoz, ami az 1970-es jelentést figyelembe véve 2038-ban túlcsordul.
Az aszinkron I/O interfész folyamatos fejlesztése io_uringamelyben biztosított új műveletek támogatása: IORING_OP_FALLOCATE (üres területek lefoglalása), IORING_OP_OPENAT,
IORING_OP_OPENAT2,
IORING_OP_CLOSE (fájlok megnyitása és bezárása),
IORING_OP_FILES_UPDATE (fájlok hozzáadása és eltávolítása a gyors hozzáférési listáról),
IORING_OP_STATX (fájlinformációs kérés),
IORING_OP_READ,
IORING_OP_WRITE (az IORING_OP_READV és IORING_OP_WRITEV egyszerűsített analógjai),
IORING_OP_FADVISE,
IORING_OP_MADVISE (a posix_fadvise és madvise hívások aszinkron változatai), IORING_OP_SEND,
IORING_OP_RECV (hálózati adatok küldése és fogadása),
IORING_OP_EPOLL_CTL (műveleteket hajtson végre az epoll fájlleírókon).
Rendszerhívás hozzáadva pidfd_getfd(), amely lehetővé teszi egy folyamat számára, hogy egy másik folyamatból lekérjen egy fájlleírót egy megnyitott fájlhoz.
Megvalósítva a „bootconfig” mechanizmus, amely a parancssori opciók mellett lehetővé teszi a kernel paramétereinek beállítását egy beállítási fájlon keresztül. Ha ilyen fájlokat szeretne hozzáadni az initramfs képfájlhoz, a rendszer a bootconfig segédprogramot javasolja. Ez a szolgáltatás például a kprobes rendszerindításkor történő beállítására használható.
Újratervezve egy mechanizmus, amely az adatok névtelen csövekben történő írására és olvasására vár. A változás lehetővé tette az olyan feladatok felgyorsítását, mint a nagy projektek párhuzamos összeszerelése. Az optimalizálás azonban versenyfeltételekhez vezethet a GNU make-ban a 4.2.1-es kiadás hibája miatt, amelyet a 4.3-as verzióban javítottak.
Hozzáadtuk a PR_SET_IO_FLUSHER jelzőt a prctl()-hez, amellyel megjelölhetők a memóriamentes folyamatok, amelyeket nem szabad korlátozni, ha a rendszernek kevés a memóriája.
Az Androidban használt ION memóriaelosztó rendszerre alapozva egy alrendszert valósítottak meg dma-buf kupacok, amely lehetővé teszi a DMA pufferek kiosztásának szabályozását az illesztőprogramok, alkalmazások és különböző alrendszerek közötti memóriaterületek megosztásához.
Hardver architektúrák
Támogatás hozzáadva az E0PD bővítményhez, amely az ARMv8.5-ben jelent meg, és védelmet tesz lehetővé a CPU-n végrehajtott utasítások spekulatív végrehajtásával kapcsolatos támadások ellen. Az E0PD alapú védelem alacsonyabb többletterhelést eredményez, mint a KPTI (Kernel Page Table Isolation) védelem.
Az ARMv8.5 architektúrára épülő rendszerek esetében az RNG utasítás támogatása került hozzáadásra, hozzáférést biztosítva egy hardveres pszeudo-véletlenszám-generátorhoz. A kernelben az RNG utasítás entrópia generálására szolgál a kernel által biztosított pszeudo-véletlenszám-generátor inicializálása során.
Eltávolítottuk a kernelbe hozzáadott MPX (Memory Protection Extensions) támogatását 3.19 és lehetővé teszi a mutatók ellenőrzésének megszervezését annak biztosítása érdekében, hogy a memóriaterületek határait betartsák. Ezt a technológiát nem használták széles körben a fordítókban, és eltávolították a GCC-ből.
A RISC-V architektúrához a KASan (Kernel address sanitizer) hibakereső eszköz támogatása valósult meg, amely segít azonosítani a memóriával végzett munka során fellépő hibákat.
Оборудование
Specifikáció támogatás megvalósítva USB 4.0, amely a Thunderbolt 3 protokollon alapul, és akár 40 Gbps átviteli sebességet biztosít, miközben megőrzi az USB 2.0 és USB 3.2 visszamenőleges kompatibilitását. -vel analógiával Mennykő Az USB 4.0 interfész lehetővé teszi a különböző protokollok alagútvezetését egyetlen csatlakozós kábelen keresztül C típusú, beleértve a PCIe-t, a Display Portot és az USB 3.x-et, valamint a protokollok szoftveres implementációit, például a gazdagépek közötti hálózati kapcsolatok szervezésére. A megvalósítás a Linux kernelben már megtalálható Thunderbolt illesztőprogramra épül, és hozzáigazítja az USB4-kompatibilis gazdagépekhez és eszközökhöz. A változások a Thunderbolt 3 eszközök támogatását is hozzáadják a Connection Manager szoftveres megvalósításához, amely alagutak létrehozásáért felel több eszköz egyetlen csatlakozón keresztül történő összekapcsolásához.
Amdgpu illesztőprogramban tette hozzá A HDCP 2.x (High-bandwidth Digital Content Protection) másolásvédelmi technológia kezdeti támogatása. Hozzáadott támogatás a Raven 2-n alapuló AMD Pollock ASIC chiphez. Megvalósította a GPU visszaállításának lehetőségét a Renoir és Navi családoknál.
DRM illesztőprogram Intel videokártyákhoz tette hozzá DSI VDSC támogatás az Ice Lake és Tiger Lake mikroarchitektúrán alapuló chipekhez, megvalósult az LMEM mmap (eszköz helyi memóriája), továbbfejlesztették a VBT (Video BIOS Table) elemzést, a Coffee Lake chipeknél HDCP 2.2 támogatást valósítottak meg.
Folytatódott a munka az amdkfd illesztőprogram kódjának (a különálló GPU-khoz, mint például a Fiji, Tonga, Polaris) és az amdgpu illesztőprogram egyesítése.
A k10temp illesztőprogramot átdolgozták, támogatva az AMD Zen CPU-k feszültség- és áramparamétereinek megjelenítését, valamint a Zen és Zen 2 CPU-kban használt hőmérséklet-érzékelőktől származó bővített információkat.
A nouveau sofőrben tette hozzá a Turing mikroarchitektúrán (GeForce RTX 2000) alapuló ellenőrzött firmware-betöltési mód támogatása NVIDIA GPU-khoz, amely lehetővé tette a 3D-s gyorsítás támogatását ezeknél a kártyáknál (hivatalos firmware letöltése NVIDIA digitális aláírással szükséges). Hozzáadott támogatás a TU10x grafikus motorhoz. A HD Audio problémái megoldódtak.
Hozzáadott támogatás az adatok tömörítéséhez DisplayPort MST-n (Multi-Stream Transport) keresztül történő átvitel esetén.
Új illesztőprogram hozzáadva "ath11k» a 802.11ax szabványt támogató Qualcomm vezeték nélküli chipekhez.
Az illesztőprogram a mac80211 veremre épül, és támogatja a hozzáférési pont, a munkaállomás és a mesh hálózati csomópont módokat.
A sysf-eken keresztül hozzáférést biztosítunk a modern merevlemezeken és SSD-ken használt hőmérséklet-érzékelők leolvasható adataihoz.
Beküldve jelentős változások az ALSA hangrendszerben, amelyek célja a kód megszabadítása 2038 problémái (elkerülve a 32 bites time_t típus használatát az snd_pcm_mmap_status és snd_pcm_mmap_control felületeken). Új audiokodekek támogatása hozzáadva
Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770.
Hozzáadva ARM kártyák és Gen1 platformok támogatása: Amazon Echo (OMAP3630 alapú), 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,
Tolino Shine 3 e-könyv olvasó,
Embedded Artists COM (i.MX7ULP), SolidRun Clearfog CX/ITX és 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 Hozzáadott támogatás a Raspberry Pi 8505-ben használt PCIe vezérlőhöz.
Ugyanakkor a Latin-Amerikai Szabad Szoftver Alapítvány alakított
opció teljesen ingyenes kernel 5.6 - Linux-mentes 5.6-gnu, megtisztítva a nem szabad komponenseket vagy kódrészleteket tartalmazó firmware-től és illesztőprogram-elemektől, amelyek terjedelmét a gyártó korlátozza. Az új kiadás letiltja a blob-betöltést az AMD TEE, ATH11K és Mediatek SCP illesztőprogramjaiban. Frissített blob-tisztító kód az AMD PSP-ben, az amdgpu és a nouveau illesztőprogramokban és alrendszerekben.