Skip to content

Příkaz Linux/Unix: modprobe

9 de Srpen de 2021
portrait of young architect using laptop in his office 499163955 57ec326e5f9b586c35bcd2c9

Linuxové jádro se rozrostlo do velkého kusu softwaru. V některých ohledech je to dobrá věc. V jiných je to poněkud nepružné. Řešením je rozdělit části jádra na moduly. Tyto moduly lze načíst nebo ne, vzhledem ke konfiguraci počítače a vašim potřebám. Příkaz modprobe načte nové moduly jádra do systému Linux, což vám umožní povolit nové funkce a podporu bez restartu.

Pomocí Modprobe

Modprobe se obvykle snadno používá. Jakmile znáte modul jádra, který chcete načíst, předejte jej příkazu modprobe. sudo modprobe rtl8723de

To je všechno. Modul se načítá, dokud nerestartujete systém. Pokud chcete modul odebrat bez restartu, spusťte příkaz znovu pomocí -r vlajka. sudo modprobe -r rtl8723de

Z velké části takto budete pracovat s modprobe. Chcete -li zjistit více, podívejte se do níže uvedené technické dokumentace.

Technická dokumentace Modprobe

Příkaz modprobe provádí manipulaci se zaváděcími moduly na vysoké úrovni.

Synopse

modprobe [-adnqv] [-C config] modul [symbol=value …] modprobe [-adnqv] [-C config] [-t type] vzor modprobe -l [-C config] [-t type] vzor modprobe -C [-C config] modprobe -r [-dnv] [-C config] [module …] modprobe -Vh

Možnosti

-A, –Všechno

Místo zastavení po prvním úspěšném načtení načtěte všechny odpovídající moduly.

-C, -showconfig

Zobrazit aktuálně používanou konfiguraci.

-C, –konfig konfigur

Použijte soubor konfigur místo (volitelně) /etc/modules.conf specifikovat konfiguraci. Proměnná prostředí MODULECONF lze také použít k výběru (a přepsat) jiný konfigurační soubor od výchozího /etc/modules.conf (nebo /etc/conf.modules který je zastaralý). Když proměnná prostředí UNAME_MACHINE je nastaven, modutils používá jeho hodnotu místo pole stroje z syscall uname (). To se používá hlavně při kompilaci 64bitových modulů v 32bitovém uživatelském prostoru nebo naopak UNAME_MACHINE na typ modulů. Aktuální modutils nepodporuje plný režim cross-build pro moduly, je omezen na výběr mezi 32bitovou a 64bitovou verzí hostitelské architektury.

-d, –ladit

Zobrazit informace o vnitřní reprezentaci hromádky modulů.

-h, –Pomoc

Zobrazte souhrn možností a okamžitě ukončete.

-k, –automatické čištění

Nastavit autoclean na načtených modulech. Používá jádro, když volá modprobe k uspokojení chybějící funkce (dodává se jako modul). The -q možnost je implikována -k. Tyto možnosti jsou automaticky odesílány do insmod.

-n, –ukázat

Nevykonávejte akci, pouze ukažte, co by se mělo udělat.

-q, –klid

Nestěžujte si, že insmod selhal při instalaci modulu. Pokračujte jako obvykle, ale potichu, s dalšími možnostmi pro modprobe k testování. Tato možnost je automaticky odeslána insmod.

-r, –odstranit

Odeberte modul (hromádky) nebo proveďte automatické čištění podle toho, zda jsou na příkazovém řádku uvedeny nějaké moduly.

-s, –slog

Nahlásit přes syslog místo stderr. Tato možnost je automaticky odeslána insmod.

-t typ modulu; –typ typ modulu

Zvažte pouze moduly tohoto typu. modprobe se dívá pouze na moduly, jejichž cesta k adresáři obsahuje přesně /typ modulu/. typ modulu může obsahovat více než jeden název adresáře, například -t ovladače/net uvádí moduly v xxx/ovladače/net/ a jeho podadresáře.

-proti, –verbózní

Vytiskněte všechny příkazy při jejich provádění.

-V, –verze

Zobrazit verzi modprobe. Názvy modulů nesmí obsahovat cesty (č /), ani název nesmí obsahovat koncovku . Například, uklouznutí je platný název modulu pro modprobe, /lib/modules/2.2.19/net/slip a uklouznout. o jsou neplatné. To platí pro příkazový řádek a pro položky v konfiguraci.

Popis příkazu

Obslužné programy modprobe a depmod mají zajistit, aby bylo modulární jádro Linuxu lépe ovladatelné pro uživatele, správce a správce distribuce. Modprobe používá soubor závislostí podobný Makefile, vytvořený depmodem, k automatickému načtení příslušných modulů ze sady modulů dostupných v předdefinovaných stromech adresářů. Modprobe se používá k načtení jednoho modulu, hromady závislých modulů nebo všech modulů, které jsou označeny zadanou značkou. Modprobe automaticky načte všechny základní moduly potřebné v zásobníku modulů, jak je popsáno v souboru závislostí moduly.dep. Pokud se načtení jednoho z těchto modulů nezdaří, automaticky se uvolní celý aktuální zásobník modulů načtených v aktuální relaci. Modprobe má dva způsoby načítání modulů. Jedním ze způsobů (režim sondy) se pokusí načíst modul ze seznamu (definovaného vzor). Modprobe zastaví načítání, jakmile se úspěšně načte jeden modul. Toho lze využít k automatickému načtení jednoho ovladače ethernetu ze seznamu. Dalším způsobem, jak lze modprobe použít, je načíst všechny moduly ze seznamu. S možností -r, modprobe automaticky uvolní hromadu modulů, podobným způsobem rmmod -r dělá. Pouze pomocí modprobe -r čistí nepoužívané automaticky načtené moduly a také provádí příkazy před a po odebrání v konfiguračním souboru /etc/modules.conf. Kombinace možností -l a -t uvádí všechny dostupné moduly určitého typu. Volba -C vytiskne aktuálně používanou konfiguraci (výchozí + konfigurační soubor).

Konfigurace

Chování modprobe (a depmod) lze upravit (volitelným) konfiguračním souborem /etc/modules.conf. Podrobný popis toho, co tento soubor může obsahovat, a také výchozí konfiguraci používanou nástroji depmod a modprobe naleznete v tématu modules.conf(5). Příkazy před a po odebrání se neprovádějí, pokud je modul automaticky čištěn jádrem. Místo toho hledejte nadcházející podporu pro trvalé úložiště modulů. Chcete-li použít funkce před a po instalaci, vypněte autoclean pro jádro a místo toho vložte něco jako následující řádek do crontab (to se používá i pro systémy kmod), abyste prováděli automatické čištění každé 2 minuty: */2 * * * * test -f /proc /moduly && /sbin /modprobe -r

Strategie

Myšlenka je taková, že modprobe se nejprve podívá do adresáře obsahujícího moduly zkompilované pro aktuální vydání jádra. Pokud tam modul nenajdete, modprobe hledá v adresáři společném pro verzi jádra (například 2.0, 2.2). Pokud modul stále není nalezen, modprobe hledá výchozí adresář v adresáři obsahujícím moduly atd. Když nainstalujete nový Linux, moduly by měly být přesunuty do adresáře souvisejícího s vydáním (a verzí) jádra, které instalujete. Poté proveďte symbolický odkaz z tohoto adresáře na výchozí adresář. Pokaždé, když kompilujete nové jádro, příkaz make modules_install vytvoří nový adresář, ale nezmění výchozí odkaz. Když získáte modul nesouvisející s distribucí jádra, umístěte jej do jednoho z adresářů nezávislých na verzi pod /lib/modules. Toto je výchozí strategie, kterou lze přepsat v /etc/modules.conf.

Příklady

modprobe -t net

Načtěte jeden z modulů, které jsou uloženy v adresáři označeném síť. Každý modul se zkouší, dokud jeden neuspěje.

modprobe -a -t boot

Všechny moduly, které jsou uloženy v adresářích, jsou označeny boot jsou načteny.

modprobe skluzu

Pokusí se načíst modul slhc.o pokud nebyl předtím načten, protože modul skluzu potřebuje funkce v modulu slhc. Tato závislost je popsána v souboru moduly.dep který byl automaticky vytvořen depmodem.

modprobe -r skluzu

Tím se uvolní modul skluzu. Automaticky také uvolní modul slhc, pokud jej nepoužívá také jiný modul (například ppp).

Viz také: depmod (8), lsmod (8), kerneld (8), ksyms (8), rmmod (8).

Nouzový režim

Pokud se efektivní uid nerovná skutečnému uid, pak modprobe zachází se svým vstupem extrémně podezřele. Poslední parametr je vždy považován za název modulu, i když začíná na . Může existovat pouze jeden název modulu a možnosti formuláře proměnná = hodnota jsou zakázány. Název modulu je vždy považován za řetězec, v nouzovém režimu se neprovádí žádné meta rozšíření. Na data čtená z konfiguračního souboru se však použije meta expanze. euid nemusí být stejný jako uid, když je modprobe vyvolán z jádra, to platí pro jádra 2.4.0-test11 a novější. V ideálním světě mohl modprobe důvěřovat jádru, že modprobe předává pouze platné parametry. Došlo však alespoň k jednomu zneužití lokálního kořene, protože kód jádra vysoké úrovně předával neověřené parametry přímo od uživatele do modprobe. Modprobe tedy již nedůvěřuje vstupu jádra. modprobe automaticky nastaví bezpečný režim, když se prostředí skládá pouze z těchto řetězců HOME =/
TERM = linux
PATH =/sbin:/usr/sbin:/bin:/usr/bin

To detekuje provádění modprobe z jádra na jádrech 2.2 přes 2.4.0-test11, i když uid == euid, což dělá na dřívějších jádrech.

Protokolovací příkazy

Pokud adresář /var/log/ksymoops existuje a modprobe je spuštěn s možností, která by mohla načíst nebo odstranit modul, modprobe zaznamená jeho příkaz a vrátí stav v /var/log/ksymoops/’date +%Y%m%d.log‘. Neexistuje žádný přepínač, který by deaktivoval toto automatické protokolování, pokud nechcete, aby k němu docházelo, nevytvářejte /var/log/ksymoops. Pokud tento adresář existuje, měl by být ve vlastnictví root a být v režimu 644 nebo 600 a měli byste spustit skript insmod_ksymoops_clean každý den nebo tak nějak.

Požadované nástroje

depmod (8), insmod (8). Použijte muž příkaz (% muž) a podívejte se, jak se ve vašem počítači používá příkaz.