Két hónap fejlesztés után Linus Torvalds a kernel kiadás . A legfontosabb változások között szerepel: a WireGuard VPN interfész integrálása, USB4 támogatás, időn belüli névterek, TCP túlterheléskezelők létrehozásának lehetősége BPF segítségével, MultiPath TCP kezdeti támogatása, a 2038-as problémára vonatkozó kernel-megoldás, a "bootconfig" mechanizmus és a ZoneFS fájlrendszer.
Az új verzióba 13702 javítást fogadtak el 1810 fejlesztőtől,
a javítócsomag mérete 40 MB (11577 fájlt érintettek, 610012 sor kódot adtak hozzá,
294828 sort töröltek). Az 5.6-os verzióban bemutatott összes változtatás körülbelül 45%-a
az eszközmeghajtókkal kapcsolatos, körülbelül 15% a
hardverarchitektúrákhoz specifikus kódfrissítésekkel, 12%
a hálózati stackkel, 4% a fájlrendszerekkel, és 3% a belső
kernel alrendszerekkel kapcsolatos.
:
- Hálózati alrendszer
- a VPN interfész megvalósítása , amely a modern titkosítási módszerek (ChaCha20, Poly1305, Curve25519, BLAKE2s) alapján készült, könnyen használható, mentes a bonyolultságoktól, és jól teljesített számos nagyobb bevezetés során, valamint nagyon magas teljesítményt biztosít (a teljesítményét tekintve 3,9-szer gyorsabb, mint az OpenVPN). A WireGuard a titkosító kulcsok alapján történő útválasztási koncepciót alkalmazza, amely megkívánja, hogy minden hálózati interfészhez zárt kulcs tartozzon, és nyílt kulcsok összekapcsolásához alkalmazzák. A kapcsolat létrehozásához szükséges nyílt kulcsok cseréje az SSH-hoz hasonlóan történik. A WireGuard működéséhez szükséges kriptográfiai primitívek Zinc a szokásos Crypto API-ba, és a kernelbe. .
- az MPTCP (MultiPath TCP) támogatásához szükséges komponensek integrálása, amely a TCP protokoll bővítése, lehetővé téve a TCP-kapcsolat működését több útvonalon, különböző IP-címekhez kapcsolódó hálózati interfészeken keresztül. A hálózati alkalmazások számára egy ilyen aggregált kapcsolat normál TCP-kapcsolatként jelenik meg, míg az összes forgalom szétválasztásával kapcsolatos logika az MPTCP által valósul meg. A Multipath TCP használható a sávszélesség bővítésére, valamint a megbízhatóság növelésére. Például az MPTCP alkalmazható egy okostelefon adatátvitelének megszervezésére, egyidejűleg WiFi és 4G kapcsolatok használatával, vagy költségek csökkentésére, több olcsó kapcsolat használatával egy drága helyett.
- a hálózati várakozási sorok kezelésének sch_ets példányának támogatása (, IEEE 802.1Qaz), amely lehetővé teszi a sávszélesség elosztását a különböző forgalmi osztályok között. Ha egy adott forgalmi osztály terhelése alacsonyabb, mint a rendelkezésre álló sávszélesség, akkor az ETS lehetővé teszi a más forgalmi osztályok számára, hogy kihasználják a rendelkezésre álló (ki nem használt) sávszélességet. A Qdisc sch_ets a PRIO diszciplínaként van beállítva és a forgalmi osztályokat használja a szigorú és megosztott sávszélességkorlátok meghatározására. Az ETS a diszciplínák kombinációjaként működik: és — amikor szigorúan korlátozott forgalmi osztályok állnak rendelkezésre, a PRIO használatban van, de ha a várakozási sorban nincs forgalom, akkor DRR-ként működik.
- Új típusú BPF-programok kerültek hozzáadásra, , lehetővé téve a kernel funkcióinak kezelőit BPF-en keresztül. Jelenleg ezt a funkciót TCP túlterhelés-ellenőrzési algoritmusok megvalósítására lehet használni BPF-programok formájában. Például BPF-program javasolatot tesz az .
- a kernelbe került , az eszköz az ioctl() használatáról . Az új interfész egyszerűsí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, egyszerűsíti a kernel és a felhasználói tér közötti interakciót, valamint csökkenti a szinkronizálandó névlista számát.
- Hozzá lett adva a Hálózati Sorok Kezelésének FQ-PIE (Flow Queue PIE) algoritmusának implementációja, amely az ütemezési torlódás negatív hatásainak csökkentésére összpontosít a határhálós berendezéseken. Az FQ-PIE magas hatékonyságot mutat a kábelmodem rendszerében való alkalmazásakor.
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- A Btrfs fájlrendszerhez aszinkron implementációt kaptak a DISCARD művelethez (azokat a szabad blokkokat, amelyeket már nem szükséges fizikailag tárolni, jelölve). Eredetileg a DISCARD műveletek szinkron módon hajtódtak végre, ami teljesítménycsökkenést okozott a megfelelő parancsok végrehajtásának várakozása miatt. Az aszinkron megoldás lehetővé teszi, hogy ne kelljen megvárni a DISCARD befejezését, és a művelet a háttérben végezhető.
- Az XFS fájlrendszerben a régi 32 bites időszámlálók kódjának tisztítása (a time_t típust time64_t-ra cserélték), amely a 2038-as problémához vezetett. Kijavították a hibákat és a memóriahibákat, amelyek a 32 bites platformokon megjelentek. Az kódot átdolgozták a kiterjesztett attribútumok kezelésére.
- Az ext4 fájlrendszerbe a teljesítményoptimalizálások, amelyek a inode zárolásának kezelésével kapcsolatosak olvasási és írási műveletek során. Növelték a teljesítményt a közvetlen I/O üzemmódban történő felülíráskor. A problémák diagnosztizálásának megkönnyítése érdekében biztosították az első és utolsó hibaüzenetek megőrzését a szuperblokkban.
- A F2FS fájlrendszerben a tömörített adatok tárolásának lehetősége. Egy adott fájl vagy könyvtár tömörítése a következő parancsok egyikével engedélyezhető: „chattr +c file” vagy „chattr +c dir; touch dir/file”. Az egész partíció tömörítéséhez a mount alkalmazásnál a „-o compress_extension=ext” opció használható.
- A kernelbe felvételre került a fájlrendszer , amely megkönnyíti a zónázott tárolóeszközökkel való alacsony szintű munkát. A zónázott tárolók olyan eszközöket jelentenek, amelyek merev mágneses lemezek vagy NVMe SSD-k, ahol a tárolóhely zónákra van felosztva, amelyek blokkok vagy szektorok csoportjaiból állnak, és ezekhez csak a teljes blokkcsoport frissítésével lehet adatokat sorozatosan hozzáadni. A ZoneFS fájlrendszert a Western Digital fejlesztette ki, és minden zónát összekapcsol az eszközön egy külön fájllal, amely lehetővé teszi az adatok nyers módban történő tárolását a szektorok és blokkok szintű manipuláció nélkül, azaz lehetővé teszi az alkalmazások számára, hogy fájl API-t használjanak a blokkeszközhöz való közvetlen hozzáférés helyett ioctl-on keresztül.
- Az NFS-ben alapértelmezés szerint le van tiltva a partíciók UDP-alapú felmountolása. Bevezetésre került a NFS 4.2 specifikációban meghatározott közvetlen fájlátviteli képesség a kiszolgálók között. Új mount opciót adtak hozzá, a „softreval” lehetőséggel, amely hiba esetén lehetővé teszi a gyorsítótárazott attribútumértékek használatát. Például ezen opció megadásával a kiszolgáló elérhetetlensége után is megőrizzük a lehetőséget az NFS-partíción való navigálásra és a gyorsítótárban elérhető információk lekérésére.
- a fs-verity mechanizmus teljesítményének optimalizálása, amely az egyes fájlok integritásának és hitelességének ellenőrzésére szolgál. Növelve a sorozatos olvasási sebességet a Merkle fa alkalmazásával. Optimalizálva a FS_IOC_ENABLE_VERITY teljesítménye a gyorsítótárban lévő adatok hiányában (előzetes adatlapolvasást alkalmazva).
- Virtualizáció és biztonság
- A SELinux modul működés közbeni letiltásának lehetősége elavultnak van nyilvánítva, a jövőben pedig a már aktivált SELinux eltávolítása tilos lesz. A SELinux letiltásához a „selinux=0” paramétert kell átadni a kernel parancssorában.
- támogatás a time namespaces számára, amelyek lehetővé teszik a rendszeróra állapotának (CLOCK_REALTIME,
CLOCK_MONOTONIC, CLOCK_BOOTTIME) konténerhez való kötését, a konténerben saját idő használatát, és konténer más hosztra való migrálásakor a CLOCK_MONOTONIC és CLOCK_BOOTTIME értékek változatlanságának biztosítását (figyelembe véve az indulást követő időt, akár alvó üzemmódban, akár anélkül). - A blokkolt pool eltávolítva: /dev/random. A /dev/random viselkedése hasonló a /dev/urandom-hoz az entropia blokkolásának megakadályozása szempontjából a pool inicializálása után.
- A kerneltörzs alapértelmezett összetevőjébe felvették a drivert, amely lehetővé teszi a VirtualBox alatt futó vendég rendszerek számára, hogy csatlakozni tudjanak a hoszt környezet által exportált könyvtárakhoz (VirtualBox Shared Folder).
- A BPF alrendszerhez egy patch sorozat került hozzáadásra (), a Retpoline mechanizmus alkalmazásával, amely a Spectre V2 osztályú támadások ellen véd, javítva a BPF-programok hívásának hatékonyságát az azokhoz kapcsolódó események bekövetkeztekor (például lehetővé téve az XDP-kezelők gyorsabb hívását hálózati csomag érkezésekor).
- Hozzáadva egy driver az AMD APU-kban található TEE (Trusted Execution Environment) környezetek támogatására.
- Memória és rendszerszolgáltatások
- A BPF-hez globális funkciók támogatása került hozzáadásra. A fejlesztés azon kezdeményezés keretében zajlik, amely globális funkciókat támogató könyvtárak hozzáadását célozza meg, amelyeket BPF-programokban lehet használni. A következő lépés a dinamikus kiterjesztések támogatása lesz, amelyek lehetővé teszik globális funkciók betöltését, beleértve a meglévő globális funkciók cseréjét használatuk során. A BPF alrendszerhez emellett egy map művelet változata is hozzáadva, amely állandó adatok tárolására szolgál, és támogatja a batch módú végrehajtást.
- a 'cpu_cooling' eszköz, amely lehetővé teszi a túlmelegedett CPU lehűtését rövid ideig történő tétlen állapotba (idle) helyezéssel.
- Hozzáadva egy rendszerhívás , amely extra flag-ek sorozatát kínálja a fájleredmények útvonalának korlátozásához (a kötő pontosok, szimbolikus linkek, magic linkek (/proc/PID/fd), '.../' alkotóelemek keresztülelének tilalmát).
- A big.LITTLE architektúrájú heterogén rendszerek számára, amelyek egy chipen ötvözik a nagy teljesítményű és az alacsonyabb hatékonyságú, energiatakarékos CPU magokat, valós idejű feladatok végrehajtása során biztosított az uclamp_min paraméter beállítása ( 5.3-as kernelben jelent meg, mint a terhelés rögzítésének mechanizmusa). Ez a paraméter garantálja, hogy a feladat a CPU magjain az elég teljesítménnyel rendelkező magokra legyen ütemezve.
- A kernel mentesült a . A legutolsó 32 bites (signed int) time_t típusú időszámlálóknál a 2038-as év körüli túlcsordulás figyelembevételével a legfrissebb maradék kezelők cseréje megtörtént.
- Folytatódott az aszinkron bemeneti/kimeneti interfész fejlesztése. , amiben az új műveletek támogatása: IORING_OP_FALLOCATE (üres területek fenntartá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ítótárból),
IORING_OP_STATX (fájl információk lekérése),
IORING_OP_READ,
IORING_OP_WRITE (IORING_OP_READV és IORING_OP_WRITEV egyszerűsített megfelelői),
IORING_OP_FADVISE,
IORING_OP_MADVISE (az aszinkron változatok a posix_fadvise és madvise hívásainak), IORING_OP_SEND,
IORING_OP_RECV (hálózati adatok küldése és fogadása),
IORING_OP_EPOLL_CTL (műveletek végrehajtása az epoll fájlleírókkal). - Hozzáadva egy rendszerhívás , amely lehetővé teszi a folyamat számára, hogy egy másik folyamatból kinyerje egy nyitott fájl fájlleíróját.
- a "bootconfig" mechanizmus, amely lehetővé teszi a kernel működési paramétereinek beállítását a parancssori opciók mellett egy konfigurációs fájlon keresztül. Az initramfs képfájlokhoz hasonló fájlok hozzáadására a bootconfig segédprogramot javasolták. Ez a lehetőség például a kprobes beállítására használható a rendszer indítása során.
- a névtelen csövek (pipe) írása és olvasása közötti várakozás mechanizmusa. A változtatások gyorsabbá tették az ilyen feladatok végrehajtását, mint például a nagy projektek párhuzamos fordítása. Ez a optimalizálás azonban versenyhelyzethez vezethet a GNU make esetében a 4.2.1 verzióban felfedezett hiba miatt, amelyet a 4.3 verzió részeként javítottak.
- A prctl()-ben hozzáadták a PR_SET_IO_FLUSHER zászlót, amely a memória felszabadításával foglalkozó folyamatok megjelölésére szolgál, amelyekre nem kell alkalmazni a memóriahiányos helyzetekben érvényes korlátozásokat a rendszerben.
- Az Android által használt ION memóriaelosztó rendszere alapján megvalósításra került a , amely lehetővé teszi a DMA bufferek kiosztásának kezelését az érintett területek együttműködésére a meghajtók, alkalmazások és különböző alrendszerek között.
- Hardverarchitektúrák
- Hozzáadva az E0PD bővítmény támogatása, amely az ARMv8.5-ben jelent meg, és lehetővé teszi a CPU-t érintő spekulatív végrehajtásos támadások elleni védelmet. Az E0PD-alapú védelem kevesebb többletköltséggel jár, mint a KPTI (Kernel Page Table Isolation) védelem.
- Az ARMv8.5 architektúrával rendelkező rendszerekhez hozzáadva az RNG utasítás támogatása, amely hozzáférést biztosít a hardveres álom véletlenszám-generátorhoz. A kernelben az RNG utasítást a kernel által biztosított álomvéletlenszám-generátor inicializálásához használt entropia képzésére használják.
- Eltávolítva az MPX (Memory Protection Extensions) bővítmények támogatása, amelyet a kernelbe adtak hozzá és amely lehetővé teszi a mutatók határainak ellenőrzését a memória területek betartására. Ez a technológia nem terjedt el a fordítókban, és eltávolították a GCC-ből.
- A RISC-V architektúrához megvalósították a KASan (Kernel Address Sanitizer) hibakereső eszköz támogatását, amely lehetővé teszi a memóriahasználati hibák észlelését.
- Hardver
- Megvalósítva a , amely a Thunderbolt 3 protokollra épül, és akár 40 Gbit/s-ot biztosít, megőrizve a visszafelé kompatibilitást az USB 2.0-val és USB 3.2-vel. Hasonlóan a USB 4.0 interfész lehetővé teszi különböző protokollok alagutazását egy Type-C csatlakozóval ellátott kábelen, beleértve a PCIe-t, a Display Port-ot és az USB 3.x-t, valamint szoftveres protokoll megvalósításokat, például hálózati kapcsolatok kialakítására gazdagépek között. A megvalósítás a Linux kernelbe integrált Thunderbolt illesztőprogramra épít, és alkalmazza azt gazdagépekkel és az USB4-gyel kompatibilis eszközökkel. A módosítások szintén hozzáadják a Thunderbolt 3 eszközök támogatását a kapcsolatkezelő (Connection Manager) szoftveres megvalósításhoz, amely felelős több eszköz csatlakoztatásához alagutak létrehozásáért egyetlen csatlakozón keresztül. kezdeti támogatást nyújt a HDCP 2.x (High-bandwidth Digital Content Protection) másolásvédelmi technológiához. Hozzáadva az AMD Pollock ASIC chip támogatás, amely a Raven 2-re épül. Megvalósítva a GPU visszaállításának lehetősége a Renoir és Navi családokhoz.
- Az Intel grafikus kártyák DRM-illesztőprogramjához DSI VDSC támogatás az Ice Lake és Tiger Lake mikroarchitektúrára épülő chipekhez, megvalósítva az LMEM mmap (eszköz helyi memória), javítva a VBT (Video BIOS Table) parszálását, megvalósítva a HDCP 2.2 támogatását a Coffee Lake chipekhez.
- Az Intel grafikus kártyák DRM-illesztőprogram szerinti DSEE VDSC támogatása az Ice Lake és Tiger Lake mikroarchitektúrára épülő chipekhez, az LMEM mmap (eszköz helyi memóriához), a VBT (Video BIOS Table) továbbfejlesztett parszálása, valamint a HDCP 2.2 támogatása a Coffee Lake chipekhez.
- Folyamatosan dolgozunk az amdkfd illesztőprogram kódjának egységesítésén (különálló GPU-k, mint például Fiji, Tonga, Polaris) az amdgpu illesztőprogrammal.
- A k10temp illesztőprogram újratervezése, amely lehetővé tette az AMD Zen CPU feszültségi és áramparaméterek kiadását, valamint kiterjesztett információkat a Zen és Zen 2 CPU-k érzékelőiből.
- A nouveau illesztőprogramban támogatás érkezett a Turing mikroarchitektúrára épülő NVIDIA GPU-k (GeForce RTX 2000) firmware-töltési ellenőrzési módjához, amely lehetővé tette a 3D-gyorsítás támogatását e kártyákhoz (az NVIDIA digitális aláírásával ellátott hivatalos firmware betöltése szükséges). Hozzáadva a TU10x grafikus motor támogatása. Megoldották a HD Audio problémákat.
- Hozzáadva az adatok tömörítésének támogatása a DisplayPort MST (Multi-Stream Transport) átvitelnél.
- Hozzáadva új illesztőprogram "" Qualcomm vezeték nélküli chipekhez 802.11ax támogatással.
Az illesztőprogram a mac80211 stackre épül, és támogatja az AP, állomás és Mesh hálózati módokat. - A sysfs segítségével hozzáférést biztosítanak a modern merevlemezek és SSD-k hőmérséklet-érzékelőinek olvasható adataihoz.
- az ALSA hangrendszerben, amely a kód tisztítására irányul, (a 32 bites time_t típus használatának elhagyása az snd_pcm_mmap_status és snd_pcm_mmap_control interfészekben). Új hangkóderek támogatása került bevezetésre:
Qualcomm WCD9340/WCD9341, Realtek RT700, RT711, RT715, RT1308, Ingenic JZ4770. - 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. - támogatás ARM platformokhoz és Gen1 Amazon Echo platformokhoz (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 eBook 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 Ericsson ab8505, Unisoc SC9863A, Qualcomm SC7180. Hozzáadva a Raspberry Pi 4-hez használt PCIe vezérlő támogatása.
A latin-amerikai Szabad Szoftver Alapítvány
a verziót — , eltávolítva a nem szabad összetevőket vagy kódterületeket tartalmazó firmware- és illesztőprogram-elemeket, amelyek használatát a gyártó korlátozza. Az új verzióban letiltották a blobok betöltését az AMD TEE, ATH11K és Mediatek SCP illesztőprogramjaiban. A blobok tisztításához használt kód frissítve lett az AMD PSP, amdgpu és nouveau illesztőprogramokban és alrendszerekben.
Forrás: opennet.ru
