Mindent a Linux/Unix parancsról: modprobe

Az Linux kernel nagy szoftverré nőtte ki magát. Bizonyos szempontból ez jó dolog. Más esetekben ez kissé rugalmatlanná teszi. A megoldás az, hogy a kernel egyes részeit modulokra bontjuk. Ezeket a modulokat a számítógép konfigurációjától és az Ön igényeitől függően be lehet tölteni vagy sem. A modprobe parancs új kernelmodulokat tölt be egy Linux rendszeren, lehetővé téve új szolgáltatások és támogatás engedélyezését újraindítás nélkül.

Portré fiatal építész használ laptop az irodában
Westend61 / Getty Images

Modprobe használata

A Modprobe használata általában egyszerű. Ha ismeri a betölteni kívánt kernelmodult, adja át a modprobe parancsnak.

sudo modprobe rtl8723de

Ennyiről van szó. A modul a rendszer újraindításáig betöltődik.

Ha újraindítás nélkül szeretne eltávolítani egy modult, futtassa újra a parancsot a -r zászló.

sudo modprobe -r rtl8723de

A legtöbb esetben így működik a modprobe. További információért tekintse meg az alábbi műszaki dokumentációt.

Modprobe műszaki dokumentáció

A modprobe parancs a betölthető modulok magas szintű kezelését végzi.

Szinopszis

modprobe [-adnqv] [-C config] modul [symbol=érték ...] modprobe [-adnqv] [-C config] [-t típus] minta modprobe -l [-C config] [-t típus] minta modprobe -c [-C configmodprobe -r [-dnv] [-C config] [modul...] modprobe -Vh.

Lehetőségek

-a, --összes

Az első sikeres betöltés utáni leállás helyett töltse be az összes megfelelő modult.

-c, --showconfig

Az aktuálisan használt konfiguráció megjelenítése.

-C, --configconfig

Használja a fájlt config helyett (az opcionális) /etc/modules.conf a konfiguráció megadásához. A környezeti változó MODULECONF az alapértelmezetttől eltérő konfigurációs fájl kiválasztására (és felülbírálására) is használható /etc/modules.conf (vagy /etc/conf.modules amely elavult).

Amikor környezeti változó UNAME_MACHINE be van állítva, a modutils az értékét használja az uname() syscall gép mezője helyett. Ez főleg akkor használható, ha 64 bites modulokat fordítanak 32 bites felhasználói térben, vagy fordítva. UNAME_MACHINE a modulok típusától függően. A jelenlegi modutils nem támogatja a modulok teljes keresztépítési módját, a választásra korlátozódik 32 bites és 64 bites a gazdagép architektúra verziói.

-d, --debug

Információk megjelenítése a modulok kötegének belső ábrázolásáról.

-h, --Segítség

Jelenítse meg a lehetőségek összefoglalását, és azonnal lépjen ki.

-k, --automatikus tisztítás

Állítsa be az automatikus tisztítást a betöltött modulokon. A kernel akkor használja, amikor a modprobe-ot hívja egy hiányzó szolgáltatás kielégítésére (modulként szállítva). Az -q opcióra utal -k. Ezeket a beállításokat a rendszer automatikusan elküldi az insmodnak.

-n, --előadás

Ne hajtsd végre a műveletet, csak mutasd meg, mit tennél.

-q, --csendes

Ne panaszkodj amiatt, hogy az insmod nem telepít egy modult. Folytassa a szokásos módon, de csendben, a modprobe egyéb tesztelési lehetőségeivel. Ez az opció automatikusan elküldésre kerül az insmodnak.

-r, -- távolítsa el

Távolítsa el a modult (veremeket), vagy hajtsa végre az automatikus tisztítást, attól függően, hogy vannak-e modulok a parancssorban.

-s, --syslog

Jelentés stderr helyett syslogon keresztül. Ez az opció automatikusan elküldésre kerül az insmodnak.

-tmodultípus; --típusmodultípus

Csak az ilyen típusú modulokat vegye figyelembe. A modprobe csak azokat a modulokat nézi, amelyeknek a könyvtárútvonala pontosan tartalmazza /moduletype/. modultípus egynél több könyvtárnevet is tartalmazhat, például -tdriverek/net felsorolja a modulokat xxx/drivers/net/ és annak alkönyvtárai.

-v, --bőbeszédű

Nyomtassa ki az összes parancsot végrehajtásukkor.

-V, --verzió

A modprobe verziójának megjelenítése.

A modulnevek nem tartalmazhatnak elérési utat (nem /), és a név nem tartalmazhatja a végét .o. Például, csúszás érvényes modulnév a következőhöz: modprobe, /lib/modules/2.2.19/net/slip és slip.o érvénytelenek. Ez vonatkozik a parancssorra és a konfigurációs bejegyzésekre.

A parancs leírása

A modprobe és depmod segédprogramok célja, hogy a Linux moduláris kernelt jobban kezelhetővé tegyék a felhasználók, a rendszergazdák és a terjesztési karbantartók számára.

A Modprobe egy Makefile-szerű függőségi fájlt használ, amelyet a depmod hozott létre, hogy automatikusan betöltse a megfelelő modulokat az előre meghatározott könyvtárfákban elérhető modulkészletből.

A Modprobe egyetlen modul, egy köteg függő modul vagy az összes olyan modul betöltésére szolgál, amelyek meghatározott címkével vannak megjelölve.

A Modprobe automatikusan betölti az összes szükséges alapmodult egy modulveremben, a függőségi fájlban leírtak szerint modulok.dep. Ha ezen modulok valamelyikének betöltése meghiúsul, az aktuális munkamenetben betöltött modulok teljes aktuális kötege automatikusan kiürül.

A Modprobe-nak két módja van a modulok betöltésére. Az egyik mód (a vizsgáló mód) megpróbál egy modult betölteni a listából (amelyet a minta). A Modprobe leállítja a betöltést, amint egy modul sikeresen betöltődik. Ez felhasználható egy Ethernet-illesztőprogram automatikus betöltésére a listából. A modprobe másik módja az, hogy az összes modult egy listából töltjük be.

Az opcióval -r, a modprobe automatikusan kirak egy halom modult, hasonlóan a módszerhez rmmod -r csinál. Csak használva modprobe -r megtisztítja a nem használt automatikusan betöltött modulokat, és végrehajtja az eltávolítás előtti és utáni parancsokat is a konfigurációs fájlban /etc/modules.conf.

A lehetőségek kombinálása -l és -t felsorolja az összes elérhető modult egy bizonyos típusú.

választási lehetőség -c kinyomtatja az éppen használt konfigurációt (alapértelmezett + konfigurációs fájl).

Konfiguráció

A modprobe (és a depmod) viselkedését az (opcionális) konfigurációs fájl módosíthatja /etc/modules.conf. A fájl tartalmának részletes leírásáért, valamint a depmod és a modprobe által használt alapértelmezett konfigurációért lásd: modules.conf(5).

Az eltávolítás előtti és utáni parancsok nem hajtódnak végre, ha a modult a kerneld automatikusan megtisztítja. Ehelyett keresse a perzisztens modultárolás hamarosan megjelenő támogatását. Ha használni szeretnéd a telepítés előtti és utáni szolgáltatásokat, kapcsold ki az autoclean for kerneld alkalmazást, és inkább helyezd el valami olyasmi, mint a következő sor a crontabban (ezt használják a kmod rendszereknél is), hogy 2-ként végezze el az autoclean-t percek:

*/2 * * * * teszt -f /proc/modules && /sbin/modprobe -r

Stratégia

Az ötlet az, hogy a modprobe először a kernel jelenlegi kiadásához lefordított modulokat tartalmazó könyvtárban keressen. Ha a modul nem található ott, a modprobe a kernelverzióhoz tartozó (például 2.0, 2.2) könyvtárban keres. Ha a modul továbbra sem található, a modprobe a modulokat tartalmazó könyvtárban keresi az alapértelmezett kiadást, és így tovább.

Amikor új Linuxot telepít, a modulokat át kell helyezni a telepített kernel kiadásához (és verziójához) kapcsolódó könyvtárba. Ezután hozzon létre egy szimbolikus hivatkozást ebből a könyvtárból az alapértelmezett könyvtárba.

Minden alkalommal, amikor új kernelt fordít, a parancs make modules_install létrehoz egy új könyvtárat, de nem módosítja az alapértelmezett hivatkozást.

Ha olyan modult kap, amely nem kapcsolódik a kernel disztribúciójához, helyezze el a verziófüggetlen könyvtárak egyikébe /lib/modules.

Ez az alapértelmezett stratégia, amely felülbírálható /etc/modules.conf.

Példák

modprobe -t net

Töltse be a címkézett könyvtárban tárolt modulok egyikét háló. Minden modult addig próbálunk, amíg valamelyik nem sikerül.

modprobe -a -t boot

Minden modul, amely címkézett könyvtárakban van tárolva csomagtartó be vannak töltve.

modprobe csúszás

Ez megpróbálja betölteni a modult slhc.o ha korábban nem volt betöltve, mivel a slip modulnak szüksége van az slhc modul funkcióira. Ezt a függőséget a fájl írja le modulok.dep amelyet a depmod hozott létre automatikusan.

modprobe -r csúszás

Ez kiüríti a csúszómodult. Ezenkívül automatikusan eltávolítja az slhc modult, hacsak nem használja más modul is (például ppp).

Lásd még: depmod(8), lsmod (8), kerneld (8), ksyms (8), rmmod(8).

Biztonságos mód

Ha az effektív uid nem egyenlő a valódi uid-vel, akkor a modprobe rendkívül gyanakvással kezeli a bemenetét. Az utolsó paramétert a rendszer mindig modulnévként kezeli, még akkor is, ha ezzel kezdődik -. Az űrlapnak csak egy modulneve és opciója lehet változó=érték tilosak. A modul nevét mindig karakterláncként kezeli, csökkentett módban nem történik metabővítés. A metabővítés azonban a konfigurációs fájlból kiolvasott adatokra vonatkozik.

Előfordulhat, hogy az euid nem egyenlő az uid-vel, ha a modprobe-t a kernelből hívják, ez igaz a 2.4.0-test11 és újabb rendszermagokra. Egy ideális világban a modprobe megbízhat abban, hogy a kernel csak érvényes paramétereket ad át a modprobe-nak. Azonban legalább egy helyi root exploit történt, mert a magas szintű kernelkód ellenőrizetlen paramétereket adott át közvetlenül a felhasználótól a modprobe-nak. Tehát a modprobe már nem bízik a kernel bemenetében.

A modprobe automatikusan beállítja a biztonságos módot, ha a környezet csak ezekből a karakterláncokból áll.

HOME=/
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin

Ez észleli a modprobe végrehajtását a kernelből a 2.2-es és a 2.4.0-test11-es rendszermagokon, még akkor is, ha uid == euid, amit a korábbi kerneleken is megtesz.

Naplózási parancsok

Ha a könyvtár /var/log/ksymoops létezik és a modprobe olyan opcióval fut, amely betölthet vagy törölhet egy modult, a modprobe naplózza a parancsát és visszaadja az állapotot /var/log/ksymoops/'date +%Y%m%d.log'. Nincs kapcsoló az automatikus naplózás letiltására, ha nem akarja, hogy megtörténjen, ne hozzon létre /var/log/ksymoops. Ha ez a könyvtár létezik, akkor a root tulajdonában kell lennie, 644-es vagy 600-as módban kell lennie, és futtassa a szkriptet insmod_ksymoops_clean minden nap vagy úgy.

Szükséges segédprogramok

depmod (8), insmod (8).

Használja a Férfi parancs (% Férfi), hogy megtudja, hogyan használható a parancs a számítógépen.