Két hónap fejlesztés után Linus Torvalds a kernel kiadás . A legjelentősebb változások közé tartozik: a KCSAN versenyállapot-észlelő, a felhasználói térhez való értesítéskézbesítő univerzális mechanizmusa, inline titkosítási hardver támogatása, továbbfejlesztett védelmi mechanizmusok ARM64 számára, a Baikal-T1 orosz processzor támogatása, a procfs példányok különböző csatolásának lehetősége, valamint ARM64-re vonatkozó Shadow Call Stack és BTI védelmi mechanizmusok megvalósítása.
Az 5.8-as kernel a projekt történetének legnagyobb változások számát tartalmazó kernelévé vált. A változások nem egyetlen alrendszerhez kapcsolódnak, hanem a kernel különböző részeit érintik, és főleg belső átdolgozásokkal és tisztításokkal kapcsolatosak. A legnagyobb változások a drivereknél figyelhetők meg. Az új verzióba 17,606 javítást fogadtak el 2,081 fejlesztőtől, amelyek körülbelül a kernel kódrepozitóriumának 20%-át érintették. A patch mérete 65 MB (a változások 16,180 fájlt érintettek, 1,043,240 sor kódot adtak hozzá, és 489,854 sort töröltek). Összehasonlításképpen a 5.7-es ágon 15,033 javítást hajtottak végre, és a patch mérete 39 MB volt. Az 5.8-ban bemutatott összes változás körülbelül 37%-a az eszközdriverekhez kapcsolódik, körülbelül 16%-a a hardverarchitektúrákhoz specifikus kód frissítéséhez, 11%-a a hálózati veremhez, 3%-a a fájlrendszerekhez és 4%-a a kernel belső alrendszereihez.
:
- Virtualizáció és biztonság
- Lezárták a kernel modulok betöltését, amelyek kódot tartalmazó szekciókkal rendelkeznek, ahol egyszerre állnak a végrehajtás és írás engedélyezési bitek. A változtatást egy nagyobb projekt keretében valósították meg, amelynek célja, hogy megszabadítsák a kernelt azon memóriaoldalak használatától, amelyek egyszerre engedélyezik a végrehajtást és az írást.
- Megjelent a lehetőség külön procfs példányok létrehozására, amelyek lehetővé teszik több procfs bejegyzés használatát, különböző opciókkal, de egyazon folyamat-azonosító névteret tükrözve (pid namespace). Korábban az összes procfs bejegyzés csak egy belső reprezentációt tükrözött, és bármilyen módosítás a csatolmány paraméterein mindegyik érintett pontot befolyásolta, amelyek ugyanahhoz a folyamat-azonosító névtérhez tartoztak. Azok közül a területek közül, ahol szükség lehet különböző opciókkal való csatolásra, megemlítendő a könnyű izoláció megvalósítása beágyazott rendszerek számára, amely lehetővé teszi, hogy bizonyos folyamatok és információs csomópontok rejtve maradjanak a procfs alatt.
- ARM64 platformhoz valósította meg a
, amelyet a Clang fordító biztosít a visszatérési cím funkcióból való felülírásának védelme érdekében a verem túltöltése esetén. A védelem lényege a funkció számára történő vezérlésátadás utáni visszatérési cím egy külön „árnyék” veremben való megőrzésében és a cím kinyerésében a funkcióból való kilépés előtt. - ARM64 platformhoz hozzáadta az alábbi utasítások támogatását (Branch Target Indicator) a hívási utasítások végrehajtásának védelmére, amelyekre nem szabad átkapcsolásokat végrehajtani a eltérítéskor. Az átkapcsolások tetszőleges kódterületekre történő blokkolása a gadzsetek létrehozása ellen irányul az exploitokban, amelyek a visszatérés-orientált programozást (ROP – Return-Oriented Programming) alkalmazzák (a támadó nem próbálja a saját kódját a memóriába helyezni, hanem már létező gépi utasítások darabjaival dolgozik, amelyek visszavezető utasítással végződnek, és amelyekből hívási láncokat állítanak össze a kívánt funkcionalitás eléréséhez).
- Hozzáadva a támogatás az inline titkosításhoz blokkeszközök számára (). Az inline titkosító eszközök általában beépítve találhatóak a tárolóba, de logikailag a rendszer memóriája és a lemez között helyezkednek el, lehetővé téve a titkosítást és a visszafejtést a kernel által megadott kulcsok és titkosítási algoritmus alapján végzett átlátható bemeneti/kimeneti működés során.
- A kernel parancssori opciójaként hozzáadva az „initrdmem” paraméter, amely lehetővé teszi a fizikai cím megadását az initrd memória elhelyezésére az inicializáló rendszer képének betöltésekor a RAM-ba.
- Új lehetőségek kerültek hozzáadásra: CAP_PERFMON a perf alrendszerhez való hozzáféréshez és a teljesítmény monitorozásához. , amely lehetővé teszi bizonyos BPF műveletek végrehajtását (például BPF-programok betöltését), amelyek korábban CAP_SYS_ADMIN jogosultságokat követeltek (most a CAP_SYS_ADMIN jogosultságok a CAP_BPF, CAP_PERFMON és CAP_NET_ADMIN kombinációjára lettek bontva).
- új virtio-mem eszköz, amely lehetővé teszi a memória forró csatlakoztatását és leválasztását a vendégrendszerekhez.
- Megvalósították a mappelt műveletek visszavonását a /dev/mem-ben, ha az eszköz drivere átfedő memóriaterületeket használ.
- Hozzáadva a biztonsági hiba elleni védelem , amely lehetővé teszi bizonyos utasítások végrehajtásának eredményeinek visszaállítását, amelyeket egy másik CPU mag hajtott végre.
- Memória és rendszerszolgáltatások
- A szabályokat meghatározó dokumentumhoz, ajánlások az inkluzív terminológia használatára vonatkozóan. Fejlesztők számára nem ajánlott a 'master/slave' és 'blacklist/whitelist' kifejezések, valamint a 'slave' szó külön használata. Az ajánlások kizárólag az új felhasználásra vonatkoznak. A kernelen belüli meglévő említések érintetlenek maradnak. Az új kódban a megjelölt kifejezések használata megengedett, ha azt a felhasználói API és ABI fenntartása szükségessé teszi, valamint a meglévő hardverek vagy protokollok támogatásához, amelyek előírják bizonyos kifejezések használatát.
- A csomag része egy hibakereső eszköz, (Kernel Concurrency Sanitizer), amely a versenyállapotok dinamikus észlelésére készült universális mechanizmus
- az „Alkalmazás” eszköz értesítések szállítása a kerneltől a felhasználói térbe. A mechanizmus a rendszer szintű pipe illesztőprogramon alapul, és hatékonyan lehetővé teszi az értesítések terjesztését a kernelből a felhasználói térben nyitott csatornákra. Az értesítések átvételi pontjai olyan pipe-ok, amelyeket különleges módban nyitnak meg, és lehetővé teszik az érkező üzenetek gyűjtését gyűrűs pufferen keresztül. Az olvasás a szokásos read() funkcióval történik. A csatorna tulajdonosa határozza meg, hogy a kernelből mely forrásokat kell figyelni, és meghatározhat egy szűrőt, amely figyelmen kívül hagy bizonyos típusú üzeneteket és eseményeket. A támogatott események közé tartoznak eddig a kulcsokkal kapcsolatos műveletek, mint például kulcsok hozzáadása/törlése és attribútumaik megváltoztatása. Az említett eseményeket a GNOME-on tervezik felhasználni.
- Folytatódott a 'pidfd' funkció fejlesztése, amely segít kezelni a PID újrafelhasználásának helyzeteit (a pidfd egy adott folyamathoz van kötve, és nem változik, míg a PID egy másik folyamathoz köthető, miután a jelenlegi folyamat befejeződött, amelyhez ez a PID társult). Az új verzióban hozzáadva a pidfd használatának támogatása a folyamat névtérhez való csatolásához (a pidfd megadása engedélyezett a setns rendszerhívás végrehajtása során). A pidfd alkalmazása lehetővé teszi, hogy egyetlen hívással közvetlenül az összes névtérhez csatolhassunk, jelentősen csökkentve a szükséges rendszerhívások számát, és atomikus módon megvalósítva a csatlakozást (ha a csatlakozás egy névtérhez meghiúsul, akkor a többihez sem csatlakozik).
- Új rendszerhívás került hozzáadásra: faccessat2(), amely különbözik a
kiegészítő argumentummal, amely flag-ekből áll, amelyek megfelelnek a POSIX ajánlásoknak (korábban ezek a flag-ek a C könyvtárban voltak emulálva, a új faccessat2 pedig lehetővé teszi a megvalósításukat a kernelben). - Cgroup beállítás memória.swap.high, amely használható a túl sok helyet elfoglaló feladatok lelassítására a swap partíción.
- Az aszinkron bemenet/kimenet interfésze hozzáadva a tee() rendszerhívás támogatása.
- Bevezetésre került a „, amely a kernel struktúrák tartalmának felhasználói térbe való kiírására szolgál.
- a gyűrűs puffer használatának lehetősége BPF programok közötti adatok cseréjére.
- A mechanizmus , amely párhuzamos feladatok végrehajtását teszi lehetővé a kernelben, hozzáadva a több szálas feladatok támogatását terheléselosztással.
- A pstore mechanizmusba, amely lehetővé teszi a hiba okának nyomozati információinak tárolását a memóriában, amely nem veszhet el újraindítások között, háttérszolgáltatás a blokkokra vonatkozó információk tárolására.
- A PREEMPT_RT kernelág helyi zárak megvalósítása.
- új bufferek kiosztásának API-ja (AF_XDP), amely a hálózati driverek XDP (eXpress Data Path) támogatásának egyszerűsítésére összpontosít.
- A RISC-V architektúrához megvalósították a kernel alkatrészek hibakeresésének támogatását KGDB segítségével.
- A 4.8-as kiadás előtt megnövekedtek a GCC verzióval szembeni követelmények, amelyet a kernel fordítására használhatnak. Az egyik következő kiadásban tervezik a küszöb emelését GCC 4.9-ig.
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- A Device Mapperben új dm-ebs (emulate block size) kezelő, amely alkalmazható a logikai blokk kisebb méretének emulálására (például 4K szektorú lemezeken 512 bájt méretű szektorok emulálására).
- A F2FS fájlrendszerben megjelent a LZO-RLE algoritmus használatával történő tömörítés támogatása.
- A dm-crypt támogatja a titkosított kulcsokat.
- A Btrfs-ben javult a közvetlen bemeneti/kimeneti üzemmódban történő olvasási műveletek kezelése. Csatlakozáskor a távoli almappák és könyvtárak, amelyeknek nincs szülőjük, ellenőrzése.
- A CIFS-ben hozzáadták a „nodelete” paramétert, amely lehetővé teszi a kiszolgáló jogosultságainak normál ellenőrzését, de megtiltja a fájlok vagy könyvtárak törlését az ügyfél számára.
- Az Ext4-ben javult a hiba kezelése több szálas használat során. Az xattr-ban hozzáadták a gnu.* névtér támogatását, amelyet a GNU Hurd használ.
- Az Ext4 és az XFS számára engedélyezték a DAX műveletek támogatását (direkt hozzáférés a fájlrendszerhez lapozó gyorsítótár megkerülésével, blokkszintű eszközszint alkalmazása nélkül) egyedi fájlok és könyvtárak összefüggésében.
- A rendszerhívásba kiegészítették a zászlót , amikor is az információt DAX mechanizmussal szerzik be.
- Az EXFAT-ban támogatja a boot terület validálását.
- A FAT-ban előzetes betöltés a fájlrendszer elemeibe. Egy lassú 2TB USB meghajtó tesztelése 383 másodpercről 51 másodpercre csökkentette a tesztelési időt.
- Hálózati alrendszer
- A hálózati hidak működésének irányítására vonatkozó kód a SOCKS5 protokoll támogatása, (Media Redundancy Protocol), amely lehetővé teszi a redundanciát, több Ethernet switchet összekapcsolva.
- A forgalomkezelő rendszerbe (Tc) Az új „gate” művelet lehetővé teszi, hogy időintervallumokat határozzunk meg bizonyos csomagok feldolgozásához és elvetéséhez.
- Az ethtool magjába és segédeszközébe hozzáadva lett a csatlakoztatott hálózati kábel tesztelésének és a hálózati eszközök önellenőrzésének támogatása.
- Az IPv6 veremhez hozzáadva lett az MPLS (Multiprotocol Label Switching) algoritmus támogatása a csomagok irányításához, a címkékkel való többprotokolos kapcsoláshoz (az IPv4 MPLS támogatása korábban is elérhető volt).
- Hozzáadva a csomagok IKE (Internet Key Exchange) és IPSec TCP-n keresztüli átvitelének támogatása () az esetleges UDP blokkok megkerülésére.
- A rnbd hálózati blokkeszköz lehetővé teszi a távoli hozzáférés megszervezését blokkeszközhöz RDMA (InfiniBand, RoCE, iWARP) szállítással és RTRS protokollal.
- A TCP veremben támogatás került bevezetésre a kiválasztó elismerés (selective acknowledgment, SACK) válaszainak sávszélesség-tömörítéséhez.
- Az IPv6 hajtásához támogatás került bevezetésre a TCP-LD (, Hosszú kapcsolati megszakítások).
- Hardver
- Az i915 DRM illesztőprogram az Intel grafikus kártyák számára alapértelmezés szerint aktiválta az Intel Tiger Lake (GEN12) chipjeinek támogatását, amelyhez szintén a SAGV (System Agent Geyserville) rendszer használatának lehetőségét nyújtja a frekvencia és feszültség dinamikus beállításához az energiafogyasztási vagy teljesítményi igények alapján.
- Az amdgpu illesztőprogramhoz hozzáadva lett a FP16 pixel formátum támogatása, valamint megvalósítva a titkosított pufferek használatának lehetősége a videomemóriában (TMZ, Trusted Memory Zone).
- Hozzáadva lett a processzorok AMD Zen és Zen2 energiafogyasztás érzékelőinek támogatása, valamint az AMD Ryzen 4000 Renoir hőmérséklet érzékelőinek támogatása. Az AMD Zen és Zen2 esetében támogatott az energiafogyasztási információk kinyerése a (Running Average Power Limit) interfészen keresztül.
- A Nouveau illesztőprogramhoz hozzáadva lett az NVIDIA módosítók formátumának támogatása. A gv100 számára megvalósításra került a félképes frissítési módok használatának lehetősége. A vGPU azonosítása is hozzáadva lett.
- A MSM (Qualcomm) illesztőprogramhoz hozzáadva lett az Adreno A405, A640 és A650 GPU támogatása.
- belső keretrendszer a DRM (Direct Rendering Manager) erőforrásainak kezelésére.
- Támogatás került hozzáadásra a Xiaomi Redmi Note 7 és a Samsung Galaxy S2 okostelefonokhoz, valamint az Elm/Hana Chromebook laptopokhoz.
- Hozzáadva lettek az LCD panelekhez készült illesztőprogramok: ASUS TM5P5 NT35596, Starry KR070PE2T, Leadtek LTK050H3146W, Visionox rm69299, Boe tv105wum-nw0.
- Hozzáadva lett az ARM alapú platformok és a Renesas „RZ/G1H”, Realtek RTD1195, Realtek RTD1395/RTD1619, Rockchips RK3326, AMLogic S905D, S905X3, S922XH, Olimex A20-OLinuXino-LIME-eMMC, Check Point L-50,
, Beacon i.MX8m-Mini, Qualcomm SDM660/SDM630, Xnano X5 TV Box, Stinger96, Beaglebone-AI. - Hozzáadva a Loongson-2K MIPS processzor támogatása (rövidítve Loongson64). A Loongson 3 CPU-hoz hozzáadva a virtualizáció támogatása a KVM hipervizorral.
-
támogatás az orosz Baikal-T1 processzor és az azon alapuló rendszer-on-a-chip számára . A Baikal-T1 processzor két szuperskalár P5600 MIPS 32 r5 magot tartalmaz, amelyek 1,2 GHz-en működnek. A chip tartalmaz L2 gyorsítótárat (1 MB), DDR3-1600 ECC memória vezérlőt, 1 db 10Gb Ethernet portot, 2 db 1Gb Ethernet portot, PCIe Gen.3 x4 vezérlőt, 2 db SATA 3.0 portot, USB 2.0-t, GPIO-t, UART-ot, SPI-t és I2C-t. A processzor hardveres virtualizációs támogatást, SIMD utasításokat és integrált hardveres titkosítás gyorsítót nyújt, amely támogatja a ГОСТ 28147-89-et. A chip a cég, az Imagination Technologies licencelt MIPS32 P5600 Warrior magblokkja segítségével készült.
A latin-amerikai Szabad Szoftver Alapítvány
a verziót — , a gyártó által korlátozott szabadalmi összetevőket vagy kódrészleteket tartalmazó firmware- és driverek elemeitől tisztítva. Az új kiadásban letiltották a blobok betöltését az Atom ISP Video, MediaTek 7663 USB/7915 PCIe, Realtek 8723DE WiFi, Renesas PCI xHCI, HabanaLabs Gaudi, Enhanced Asynchronous Sample Rate Converter, Maxim Integrated MAX98390 Speaker Amplifier, Microsemi ZL38060 Connected Home Audio Processor, és az I2C EEPROM Slave driverekben. Frissítették a blobok tisztításához használt kódot az Adreno GPU, HabanaLabs Goya, x86 érintőképernyő, vt6656 és btbcm driverekben és alrendszerekben.
Forrás: opennet.ru
