Linux 5.6 kernel kiadás

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.

A főbb innovációk:

  • Hálózati alrendszer
    • 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 illesztőprogramok LCD panelekhez 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.

    • 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.

Forrás: opennet.ru

Hozzászólás