Megjelent a Linux 5.7 kernel verziója

Két hónap fejlesztés után Linus Torvalds bemutatott a kernel kiadás Linux 5.7. A legfig noticeable changes include: a new implementation of exFAT, the bareudp module for creating UDP tunnels, pointer authentication protection for ARM64, the ability to attach BPF programs to LSM handlers, a new implementation of Curve25519, a split-lock detector, BPF compatibility with PREEMPT_RT, removal of the 80-character line limit in code, consideration of CPU temperature metrics in the task scheduler, and the ability to use clone() to spawn processes in another cgroup, and protection against memory writes using userfaultfd.

The new version includes 15033 fixes from 1961 developers,
the patch size is 39 MB (changes affected 11590 files, 570560 lines of code were added,
297401 lines were removed). About 41% of all submissions in 5.7
are related to device driver changes, approximately 16% of the changes pertain
to updating architecture-specific code, 13%
is related to the network stack, 4% - to file systems and 4% to internal
kernel alrendszerekkel kapcsolatos.

Fő újdonságok:

  • Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
    • A new exFAT driver implementation has been added, based on the current code base of 'sdfat' (2.x), developed by Samsung for its Android smartphones. The driver that was previously added to the kernel was based on outdated Samsung code (version 1.2.9) and lagged in performance behind the new driver by about 10%. Recall that the addition of exFAT support in the kernel became possible after Microsoft kiadta released public specifications and provided the ability for the free use of patents on exFAT in Linux.
    • In Btrfs, a new ioctl() command has been implemented - BTRFS_IOC_SNAP_DESTROY_V2, which allows deleting a subvolume by its identifier. Full support for cloning inline extents has been provided. The number of rollback points for redistribution operations has been expanded, which has reduced long waiting times when executing the 'balance cancel' command. The determination of reverse links to extents has been accelerated (for example, the execution time of a test scenario has been reduced from an hour to several minutes). The ability to attach to each inode of the file extent tree has been added. The locking scheme used when writing to subvolumes and when excluding NOCOW has been redesigned. The efficiency of executing fsync for ranges has been improved.
    • Az XFS-ben javult a metaadatok ellenőrzése és az fsck végrehajtása az aktív partíciókon. Javasolt egy könyvtár a btree struktúrák újraszervezésére, amelyet a jövőben az xfs_repair átírására és a partíció leállítása nélküli helyreállítás lehetőségének megvalósítására fognak használni.
    • A CIFS-ben kísérleti támogatás került bevezetésre a swap-partíció SMB3-tárolókba helyezésére. Megvalósításra kerültek a POSIX-kiterjesztések a readdir-ban, amelyeket az SMB3.1.1 specifikáció határoz meg. Növelték a 64 KB méretű lapok írási teljesítményét a cache=strict üzemmód és a 2.1+ verziók használatakor.
    • Az EXT4 fájlrendszer átállt a bmap és iopoll használatáról iomap használatára.
    • Az F2FS-ben opcionális támogatás került bevezetésre az adatok tömörítésére zstd algoritmus használatával. Alapértelmezés szerint az LZ4 algoritmus van használatban a tömörítéshez. Hozzáadva a 'chattr -c commit' parancs támogatása. Lehetővé tették a csatolás idejének megjelenítését. Hozzáadva a F2FS_IOC_GET_COMPRESS_BLOCKS ioctl a tömörített blokkok számának lekérdezésére. A statx-en keresztül megjelennek a tömörítési adatok.
    • A Ceph fájlrendszerben lehetőség nyílt fájl létrehozási és törlési (unlink) műveletek helyi végrehajtására a szerver válaszának megvárása nélkül (aszinkron üzemmódban). Ez a változtatás például jelentősen növelheti a rsync eszköz használata közbeni teljesítményt.
    • Az OVERLAYFS-ben lehetőség nyílt a virtiofs használatára a legfelső szintű fájlrendszerként.
    • Átírták a VFS útvonalkereső kódját, újrarendezték a szimbolikus linkek elemzését és egységesítették a csatlakozási pontok bejárását.
    • A scsi alrendszerben nem privilegizált felhasználók engedélyezett megkapták a ZBC parancsok végrehajtását.
    • A dm_writecache megvalósítva lehetővé teszi a cache fokozatos törlését a max_age paraméter alapján, amely a blokk maximális élettartamát határozza meg.
    • A dm_integrity hozzáadva lett támogatja a 'discard' műveletet.
    • A null_blk hozzáadva lett támogatja a hibaszimulációs helyettesítést tesztelés során.
    • Hozzáadva lehetővé teszi a blokkeszköz méretének változása miatt udev értesítések küldését.
  • Hálózati alrendszer
    • A Netfilterbe beépítették változások, ami jelentősen felgyorsítja a nagy méretű megfeleltetési listák (nftables set) feldolgozását, ahol az alhálózatok, hálózati portok, protokoll és MAC-címek kombinációját ellenőrizni kell.
      Optimalizálások bevezetésre kerültek Az nft_set_pipapo (PIle PAcket POlicies) modul, amely a csomag tartalmának összehangolására szolgál a szűrési szabályokban alkalmazott, tetszőleges állapottartományokkal, mint például az IP és hálózati port tartományok (nft_set_rbtree és nft_set_hash manipulálják az intervallumok és közvetlen értékek összehangolását). Az AVX2 256 bites utasításokkal vektorizált pipapo verzió AMD Epyc 7402 processzorral 420%-os teljesítménynövekedést mutatott 30 ezer rekord feldolgozása során, amelyek port-protokoll párokat tartalmaznak. Az alhálózat és portszám párok összehangolásában a teljesítménynövekedés 1000 rekord elemzésekor 87%-os volt IPv4 esetén, míg IPv6 esetén 128%-os.
    • az „Alkalmazás” eszköz A bareudp modul lehetővé teszi különböző L3 protokollok, például MPLS, IP és NSH UDP alagutakba való kapszulázását.
    • Folyamatban van az MPTCP (MultiPath TCP) összetevőinek integrációja, amely a TCP protokoll kiterjesztése, lehetővé téve a TCP kapcsolat működtetését, ahol a csomagok egyszerre több útvonalon érkeznek különböző IP-címekhez tartozó hálózati interfészeken.
    • Hozzáadva Támogatás a Ethernet keretek 802.11 (Wi-Fi) beágyazásának hardveres gyorsítására.
    • Amikor az eszköz egyik hálózati névtérből (network namespace) a másikba kerül, biztosítva van a sysfs megfelelő fájljainak hozzáférési jogainak és tulajdonosának korrekciója.
    • Lehetőséget kaptak a felhasználók, akik nem rendelkeznek root jogokkal, a SO_BINDTODEVICE jelző használatára.
    • Elfogadták a harmadik részét a patch-eknek, amelyek az ethtool eszközkészlet ioctl()-ról netlink interfészre való átállását célozzák. Az új interfész egyszerűsíti a kiterjesztések hozzáadását, javítja a hiba kezelését, lehetővé teszi az állapotváltozások bejelentését, egyszerűsíti a kernel és a felhasználói tér közötti interakciót, és csökkenti a szinkronizált névsorok számát.
    • Lehetőség nyílt speciális hardveres gyorsítók használatára a kapcsolatok nyomon követésére.
    • A netfilterben hozzáadva hook az outgoing csomagok (egress) klasszifikátorainak csatlakoztatására, amely kiegészítette a már létező bejövő csomagok (ingress) hook-ját.
  • Virtualizáció és biztonság
    • Hardveres megvalósítása a mutatók hitelesítésének (Pointer Authentication), amely speciális ARM64 CPU utasításokat használ a visszafelé orientált programozási (ROP) támadások védelmére, ahol a támadó nem próbálja meg saját kódját memóriahelyre helyezni, hanem a betöltött könyvtárakban már meglévő gépi utasításokat használja, amelyek egy visszajelzési utasítással végződnek. A védelem a digitális aláírások alkalmazására korlátozódik, amelyek ellenőrzik a visszatérési címeket a kernel szintjén. Az aláírás a mutató maga legfelső, nem használt biteiben tárolódik. Eltérően a szoftveres megvalósításoktól, a digitális aláírások létrehozása és ellenőrzése speciális CPU utasítások segítségével történik.
    • Hozzáadva a memória írás elleni védelmének lehetősége a userfaultfd() rendszerhívás segítségével, amely a page faultok (nem kijelölt memóriaoldalak elérése) kezelésére van szánva a felhasználói térben. Az ötlet az, hogy a userfaultfd()-t a védett írás ellen őrzött oldalak hozzáférésének megsértésének nyomon követésére és egy kezelő meghívására használják, amely reagálhat az ilyen írási kísérletekre (például élő snapshotok készítése során a futó folyamatok állapotának rögzítésére, memória dumpok lemezre írásakor, közös memória megvalósítása, memória módosítások nyomon követése). A funkcionalitás megfelel az mprotect() alkalmazásának a SIGSEGV jelzéskezelővel együtt, de jelentősen gyorsabb.
    • A SELinux-ban a „checkreqprot” paraméter elavultnak van nyilvánítva, amely lehetővé tette a memória védelem ellenőrzésének kikapcsolását a szabályok kezelésénél (megengedve a végrehajtható memória területek használatát, függetlenül a szabályokban megadott előírásoktól). A kernfs szimbolikus linkeknek megengedi a szülő katalogusok kontextusának öröklését.
    • A következő alkotórészek bekapcsolva modul KRSI, amely lehetővé teszi BPF-programok csatolását bármilyen LSM-horoghoz a kernelben. A változtatás lehetővé teszi, hogy LSM modulok (Linux Security Module) BPF-programok formájában készüljenek auditálási és kötelező hozzáférés-ellenőrzési feladatok megoldására.
    • Elvégezve a teljesítmény optimalizálása a /dev/random esetében a CRNG értékek csomagolt átvitelével ahelyett, hogy külön RNG utasításokat hívnának. Javult a getrandom és a /dev/random működése ARM64 rendszereken, amelyek RNG utasításokat biztosítanak.
    • A Curve25519 elliptikus görbe megvalósítása kicserélve a HACLkönyvtár verziójára, amelyhez be lett vezetve A matematikai bizonyíték a formális verifikáció megbízhatóságára.
    • az „Alkalmazás” eszköz Memória szabad lapjairól tájékoztató mechanizmus. Ezen mechanizmus segítségével a vendég rendszerek információkat küldhetnek a gazda rendszernek azokról a lapokról, amelyek már nem használatosak, és ezek a lapok visszaadhatók a gazda rendszer számára.
    • A vfio/pci hozzáadva lett támogatja az SR-IOV (Single-Root I/O Virtualization) technológiát.
  • Memória és rendszerszolgáltatások
    • 80 és 100 karakter között növelve a maximális karakterhossz korlátozása a forrás szövegekben. A fejlesztők számára továbbra is ajánlott, hogy 80 karakter körüli sort használjanak, de ez most már nem szigorú határ. Továbbá, a sorhossz korlátozásának túllépése mostantól csak akkor fog figyelmeztetést generálni a fordítás során, ha a checkpatch eszköz a „—strict” opcióval lett futtatva. Ez a változtatás lehetővé teszi, hogy a fejlesztők szabadabban érezzék magukat a kód igazításakor, és manipulációk ne legyenek zavartak a sorok túlzott felosztása miatt, ami megakadályozza a felesleges sorbontást, ami zavarhatja a kód érthetőségét és kereshetőségét.
    • Hozzáadva támogatja a vegyes EFI rendszerindítási módot, amely lehetővé teszi a 64 bites kernel betöltését 32 bites firmware-ből, 64 bites CPU-n futva
    • Bekapcsolva a szétválasztott zárolások azonosító és hibakereső rendszere (split lock)
    • szét nem illeszkedő adatok memóriához való hozzáférésekor, mivel az atomikus utasítás végrehajtása során az adatok két CPU cache vonalat érintenek. Az ilyen zárolások jelentős teljesítménycsökkenést okoznak (1000 ciklussal lassabbak, mint az egy vonalba eső atomikus adatművelet). A „split_lock_detect” rendszerindító paramétertől függően a kernel valós időben érzékelheti az ilyen zárolásokat, és figyelmeztetéseket adhat vagy SIGBUS jelet küldhet a leállítást okozó alkalmazásnak.A feladatütemező biztosítja a hőmérséklet érzékelők mutatóinak követését () és megvalósították a túlmelegedés nyilvántartását a feladatok elhelyezésekor. A kiadott statisztikák alapján a hőmérséklet-vezérlő (thermal governor) képes kiigazítani a CPU maximális frekvenciáját túlmelegedés esetén, és a feladatütemező most figyelembe veszi a számítási teljesítmény csökkenését az ilyen frekvenciacsökkentés miatt a feladatok indításának ütemezésekor (korábban az ütemező késleltetve reagált a frekvenciaváltozásra, egy ideig túlságosan optimista feltételezéseket téve a rendelkezésre álló számítási erőforrásokról).
    • A feladatütemezőben használt invariáns mutatók a terhelés nyomon követéséhez, amelyek lehetővé teszik a terhelés helyes értékelését, függetlenül a CPU aktuális működési frekvenciájától. A változtatás lehetővé teszi a feladatok viselkedésének pontosabb előrejelzését a feszültség és a CPU frekvenciájának dinamikus változása mellett. Például egy feladat, amely a CPU erőforrásainak 1/3-át fogyasztotta 1000 MHz frekvencián, 2/3-ra nő, amikor a frekvencia 500 MHz-re csökken, ami korábban hamis feltételezéseket teremtett a maximális teljesítményről (azaz a feladatok a frekvencia csökkentésével látszólag nagyobbnak tűntek, így helytelen döntéseket hozva a schedutil cpufreq governorban).
    • Az Intel P-state meghajtó, amely a teljesítmény módok kiválasztásáért felelős, átállt a használatra schedutil.
    • Megvalósították a BPF alrendszer használatának lehetőségét a kernel valós idejű (PREEMPT_RT) üzemmódjában. Korábban, amikor a PREEMPT_RT engedélyezve volt, a BPF-et ki kellett kapcsolni.
    • Új BPF-programtípus került hozzáadásra — BPF_MODIFY_RETURN, amelyek a kernelben lévő funkciókhoz kapcsolódhatnak, és megváltoztathatják a funkció által visszaadott értéket.
    • Hozzáadva lehetőség a clone3() rendszerhívás használatával, hogy folyamatot hozzon létre egy olyan cgroup-ban, amely eltér a szülő cgroup-tól, lehetővé téve a szülő folyamat számára, hogy korlátozásokat alkalmazzon és elszámolást végezzen az új folyamat vagy szál előállítása után. Például a szolgáltatáskezelő közvetlenül külön cgroup-okba oszthatja új szolgáltatásait, és az új folyamatok „megfagyasztott” cgroup-okba helyezésekor azonnal leállnak.
    • a Kbuild-ben hozzáadva lett támogatás az „LLVM=1” környezeti változó számára a Clang/LLVM eszközkészletre való áttéréshez a kernel fordításakor. A binutils verziójának követelményei (2.23) emelkedtek.
    • A debugfs-hez hozzáadódott a szekció /sys/kernel/debug/kunit/ a kunit tesztjeinek eredményeivel.
    • Hozzáadva a pm_debug_messages (analóg/sys/power/pm_debug_messages) magbetöltési paraméter, amely a tápegység-vezérlő rendszer működéséről szóló hibaüzenetek megjelenését aktiválja (hasznos a készenléti és alvó üzemmóddal kapcsolatos problémák elhárításához).
    • Az aszinkron bemenet/kimenet interfésze io_uring támogatás került bevezetésre splice() és atomikus bufferválasztás.
    • Javított cgroup profilozás a perf eszközkészlet segítségével. Korábban a perf csak egy adott cgroup feladatait profilozhatta, és nem tudta, hogy a jelenlegi mintához melyik cgroup tartozik. Most a perf információkat kap a cgroup-ról minden mintához, amely lehetővé teszi, hogy több cgroup-ot is profilozzon és szűrést alkalmazzon
      a jelentésekben.
    • A cgroupfs, a cgroups kezelésére szolgáló pszeudo-fájl rendszer, támogatja a kiterjesztett attribútumokat (xattrs), amelyek például lehetővé teszik, hogy extra információkat hagyjunk a felhasználói térbeli feldolgozók számára.
    • A cgroup memória vezérlője hozzáadvatámogatja a rekurzív védelem beállítását a "memory.low" értékre, amely szabályozza a csoporttagok számára biztosított minimális RAM mennyiséget. Amikor a cgroup hierarchiát a "memory_recursiveprot" opcióval szereljük fel, a "memory.low" érték, amelyet az alsó csomópontok számára állítottak be, automatikusan elosztásra kerül minden gyermekcsomópont számára.
    • az „Alkalmazás” eszköz Uacce keretrendszer (Unified/User-space-access-intended Accelerator Framework) a virtuális címek (SVA, Shared Virtual Addressing) megosztására a CPU és a perifériás eszközök között, lehetővé téve a hardveres gyorsítók számára, hogy hozzáférjenek az adatszerkezetekhez a fő CPU-n.
  • Hardverarchitektúrák
    • ARM architektúrához megvalósították a memória forró eltávolításának lehetőségét.
    • RISC-V architektúrához hozzáadva a CPU forró csatlakoztatásának és eltávolításának támogatását (CPU hotplug). A 32-bites RISC-V esetében eBPF JIT került megvalósításra.
    • Eltávolították a 32-bites ARM rendszerek használatának lehetőségét KVM vendégkörnyezetek indítására.
    • Eltávolítva a "fiktív" NUMA megvalósítást az s390 architektúrához, amelyhez soha nem találtak használati forgatókönyveket a teljesítményjavulás elérésére.
    • ARM64 architektúrához hozzáadva az AMU (Activity Monitors Unit) bővítmény támogatását, amelyet az ARMv8.4 definiál, és teljesítménymérő számlálókat biztosít, amelyek felhasználásra kerülnek a frekvenciaszabályozási koronák kiszámításában a feladatütemezőben.
  • Hardver
    • Hozzáadva vDPA eszközök támogatása, amelyek adatátviteli csatornát használnak, amely megfelel a virtio specifikációknak. A vDPA eszközök lehetnek fizikai csatlakoztatott hardver vagy emulált szoftveres virtuális eszközök.
    • A GPIO alrendszerben megjelenik új ioctl() parancs a változások figyelésére, amely lehetővé teszi a folyamat értesítését bármely GPIO vonal állapotának megváltozásáról. Példaként a új parancs használatára a a gpio-watch segédprogram.
    • Az Intel grafikus kártyákhoz készült i915 DRM-illesztőprogramban bekapcsolva az alapértelmezett támogatás a Tigerlake („Gen12”) chipjeihez került, és kezdeti támogatás került hozzáadásra az OLED háttérvilágítás vezérlésére. A Ice Lake, Elkhart Lake, Baytrail és Haswell chipek támogatása javítva lett.
    • Az amdgpu illesztőprogramban hozzáadva lett lehetőség van firmware-ek betöltésére az USBC chipbe az ASIC-hez. A AMD Ryzen 4000 „Renoir” chipek támogatása javítva lett. Megjelent az OLED panelek vezérlésének támogatása. A firmware állapotának megjelenítése a debugfs-ben biztosítva van.
    • A VMware virtualizációs rendszerek számára készült vmwgfx DRM-illesztőprogramban hozzáadva az OpenGL 4 használatának lehetősége a vendég rendszerekben (korábban OpenGL 3.3 támogatták).
    • Új DRM-illesztőprogram, a tidss, hozzáadva a TI Keystone platform kijelzős rendszeréhez.
    • Hozzáadva illesztőprogramok LCD panelekhez: Feixin K101 IM2BA02, Samsung s6e88a0-ams452ef01, Novatek NT35510, Elida KD35T133, EDT, NewEast Optoelectronics WJFH116008A, Rocktech RK101II01D-CT, Frida FRD350H54004.
    • A tápegység-irányítási rendszerben hozzáadva lett támogatás az Intel Jasper Lake (JSL) Atom alapú platformhoz.
    • Hozzáadva a Pinebook Pro laptop támogatása, amely Rockchip RK3399 alapú, a Pine64 PineTab táblagép és az okostelefon PinePhone Allwinner A64 alapú.
    • Hozzáadva új audiokodekek és chippek támogatása:
      Amlogic AIU, Amlogic T9015, Texas Instruments TLV320ADCX140, Realtek RT5682, ALC245, Broadcom BCM63XX I2S, Maxim MAX98360A, Presonus Studio 1810c, MOTU MicroBook IIc.
    • Hozzáadva ARM platfomok és Qualcomm Snapdragon 865 (SM8250), IPQ6018, NXP i.MX8M Plus, Kontron „sl28”, 11 változata az i.MX6 TechNexion Pico táblának, három új verzió a Toradex Colibri-hoz, Samsung S7710 Galaxy Xcover 2 ST-Ericsson u8500 alapú, DH Electronics DHCOM SoM és PDK2, Renesas M3ULCB, Hoperun HiHope, Linutronix Testbox v2, PocketBook Touch Lux 3.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster