A Linux 7.3 binfmt_misc lehetővé teszi, hogy a BPF programok dinamikusan válasszák meg futási környezetüket

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Christian Brauner még a Linux 7.3 merge-ablakának megnyitása előtt elküldte a VFS fő pull request-csomagját. A Linux 7.3 fejlesztési ciklus várhatóan holnap, augusztus 17-én indul, feltéve, hogy ma időben megjelenik a Linux 7.3 kernel kiadás. A Linux 7.3-ba tervezett számos érdekes VFS-változtatás közül az egyik legfontosabb a binfmt_misc kód bővítése, ami rengeteg új lehetőséget nyit meg.

Folyik a munka a NixOS és más platformok számára, amelyek szeretnének áthelyezhető (relocatable) binárisokat használni, ahol az interpretert / dinamikus betöltőt programozott módon határozzák meg, például a bináris fájlhoz viszonyítva. Az, hogy mostantól BPF programokat is hozzá lehet rendelni a binfmt_misc bejegyzésekhez, további újszerű megoldások előtt nyitja meg az utat. Brauner a binfmt_misc pull requestben így foglalta össze:

"Ez a csomag több munkát tartalmaz a binfmt_misc területén. Kijavít egy sor régi hibát, átdolgozza a zárolási mechanizmust, és kibővíti a formátum-regisztert, hogy egy bináris típust programozott módon lehessen illeszteni, és az interpretert minden exec hívásnál újraszámoljuk, ahelyett, hogy egy regisztrációkor rögzített sztring lenne.

Ez lehetővé teszi például a nixos és más rendszerek számára az áthelyezhető binárisok megvalósítását, vagyis hogy az interpretert/dinamikus betöltőt programozottan lehessen meghatározni, például a binárishoz képest relatív elérési úttal. A mechanizmus rugalmas, és más szabályrendszereket is képes kiszolgálni... Hozzáadjuk a lehetőséget, hogy bpf programokat lehessen csatolni a binfmt_misc bejegyzésekhez, így binárisonként dinamikusan választható a futási környezet, például a loader vagy az interpreter."

A binfmt_misc átdolgozásának részeként két új dispatch mód is bekerült:

"Eddig a kiválasztott interpreter birtokolta a teljes folyamat-azonosságot (argv[0], /proc/pid/cmdline, /proc/self/exe mind az interpreterre mutatott). Így az áthelyezhető binárisok valójában a dinamikus linkert találták meg. Emellett egy execveat() hívásnak átadott bináris, amely egy el nem érhető, O_CLOEXEC-kel megnyitott fájlleíró, egyáltalán nem tudott futni, és a gdb is megzavarodott, mert az AT_ENTRY és AT_PHDR nem egyezett az exe fájllal. A PIE szimbólumok emiatt nem voltak relokálva.

Ez a módosítás bevezeti az átlátszó dispatch-et, amely lehetővé teszi, hogy az interpreter AT_EXECFD-n keresztül töltse be a binárist, miközben az argumentumvektor pontosan úgy marad, ahogy a hívó felépítette, és mm->exe_file, illetve a comm mező a binárisra mutat. Emellett beállítja az AT_FLAGS_TRANSPARENT_INTERP aux vektor bitet. A bináris leképezésének irányítása továbbra is az interpreter kezében marad.

A második mód a loader-csere. Ez lehetővé teszi, hogy a bináris natívan fusson, és csak az interpretert cseréljük le."

Ha Linus Torvalds a Linux 7.3 merge-ablaka alatt nem emel kifogást ezzel a kóddal szemben, érdekes lesz látni, a különböző Linux disztribúciók és környezetek hogyan használják majd ki az új binfmt_misc funkciókat a jövőben.