Skip to main content

Tutto sul comando Linux / Unix: modprobe

Drivers de dispositivos no Linux 02 - comandos insmod, modprobe, depmod, modinfo (Giugno 2026)

Drivers de dispositivos no Linux 02 - comandos insmod, modprobe, depmod, modinfo (Giugno 2026)
Anonim

Nome

modprobe: gestione di alto livello dei moduli caricabili

Sinossi

modprobe -adnqv -C config modulo simbolo = valore …modprobe -adnqv -C config -t genere modellomodprobe -l -C config -t genere modellomodprobe -c -C config modprobe -r -dnv -C config modulo …modprobe -Vh

Opzioni

-un, --tutti

Caricaretutti abbinare i moduli invece di fermarsi dopo il primo caricamento riuscito.

-c, --showconfig

Mostra la configurazione attualmente in uso.

-C, --config config

Usa il file config invece di (facoltativo) /etc/modules.conf per specificare la configurazione. La variabile di ambienteMODULECONF può anche essere usato per selezionare (e sovrascrivere) un diverso file di configurazione dal /etc/modules.conf predefinito (o /etc/conf.modules (Deprecato)).

Quando l'ambiente è variabileUNAME_MACHINE è impostato, modutils userà il suo valore invece del campo macchina dal syscall uname (). Questo è principalmente utile quando si compilano moduli a 64 bit nello spazio utente a 32 bit o viceversa, impostatiUNAME_MACHINE al tipo dei moduli. La modulazione attuale non supporta la modalità di cross-build completa per i moduli, è limitata alla scelta tra le versioni a 32 e 64 bit dell'architettura host.

-d, --debug

Mostra informazioni sulla rappresentazione interna della pila di moduli.

-h, --Aiuto

Visualizza un riepilogo delle opzioni e immediatamente esci.

-K, --autoclean

Imposta "autoclean" sui moduli caricati. Usato dal kernel quando chiamamodprobe per soddisfare una caratteristica mancante (fornita come modulo). Il-q l'opzione è implicita da-K. Queste opzioni verranno automaticamente inviate ainsmod.

-l, --elenco

Elenca i moduli di corrispondenza.

-n, --mostrare

In realtà non eseguire l'azione, solo mostrare ciò che sarebbe stato fatto.

-q, --silenzioso

Non lamentartiinsmod non riuscendo a installare un modulo. Continua normalmente, ma in silenzio, con altre possibilità di test da parte di modprobe. Questa opzione verrà automaticamente inviata ainsmod.

-r, --rimuovere

Rimuovi modulo (stack) o esegui autoclean, a seconda che ci siano moduli menzionati nella riga di comando.

-S, --syslog

Segnala tramite syslog invece di stderr. Queste opzioni verranno automaticamente inviate ainsmod.

-t ModuleType ; --genere ModuleType

Considera solo moduli di questo tipo. modprobe guarderà solo i moduli il cui percorso di directory include esattamente " / ModuleType / '. ModuleType può includere più di un nome di directory, ad es. "-t drivers / net "elencerebbe i moduli in xxx / drivers / net / e le sue sottodirectory.

-v, --verbose

Stampa tutti i comandi mentre vengono eseguiti.

-V, --version

Mostra la versione dimodprobe.

Nota:

I nomi dei moduli non devono contenere percorsi (no '/'), né possono contenere il trailing '.o'. Ad esempio, slip è un nome di modulo valido permodprobe, /lib/modules/2.2.19/net/slip e slip.o non sono validi. Questo vale per la riga di comando e per le voci nella configurazione.

Descrizione del comando

Ilmodprobe edepmod le utilità hanno lo scopo di rendere un kernel modulare Linux più gestibile per tutti gli utenti, amministratori e gestori di distribuzione.

modprobe usa un file di dipendenza simile a "Makefile", creato dadepmod, per caricare automaticamente i moduli interessati dal set di moduli disponibili in alberi di directory predefiniti.

modprobe viene utilizzato per caricare un singolo modulo, una pila di moduli dipendenti o tutti i moduli contrassegnati con un tag specificato.

modprobe caricherà automaticamente tutti i moduli base necessari in uno stack di moduli, come descritto dal file delle dipendenze modules.dep . Se il caricamento di uno di questi moduli non riesce, l'intero stack corrente di moduli caricati nella sessione corrente verrà scaricato automaticamente.

modprobe ha due modi di caricare i moduli. Un modo (la modalità sonda) tenterà di caricare un modulo da un elenco (definito da modello ). modprobe interrompe il caricamento non appena un modulo viene caricato correttamente. Questo potrebbe essere usato per caricare automaticamente un driver Ethernet da un elenco. L'altro modomodprobe può essere usato è quello di caricaretutti moduli da una lista. VedereESEMPI, sotto.

Con l'opzione-r, modprobe scaricherà automaticamente una pila di moduli, simile al modo in cui "rmmod -r"Sì. Si noti che usando solo"modprobe -r"pulirà i moduli caricati automaticamente non utilizzati ed eseguirà anche i comandi pre- e post-rimozione nel file di configurazione /etc/modules.conf .

La combinazione delle opzioni-l e-t elenca tutti i moduli disponibili di un certo tipo.

Opzione-c stamperà la configurazione attualmente utilizzata (default + file di configurazione).

Configurazione

Il comportamento dimodprobe (edepmod) può essere modificato dal file di configurazione (opzionale) /etc/modules.conf . Per una descrizione più dettagliata di cosa può contenere questo file, oltre alla configurazione predefinita utilizzata dadepmod emodprobe, vedimodules.conf(5).

Si noti che i comandi pre- e post-rimozione lo farannonon essere eseguito se un modulo è "autocleaned" da kerneld! Cerca invece il supporto per l'archiviazione persistente dei moduli. Se si desidera utilizzare le funzioni di pre-installazione e post-installazione, sarà necessario disattivare autoclean per kerneld e inserire qualcosa come la seguente riga nelcrontab (utilizzato anche per i sistemi kmod) per eseguire l'autoclean ogni 2 minuti: * / 2 * * * * test -f / proc / modules && / sbin / modprobe -r

Strategia

L'idea è questamodprobe guarderà prima nella directory contenente i moduli compilati per la versione corrente del kernel. Se il modulo non è stato trovato lì,modprobe cercherà nella directory comune alla versione del kernel (ad esempio 2.0, 2.2). Se il modulo è ancora trovato,modprobe cercherà nella directory contenente i moduli per una versione predefinita e così via.

Quando installi un nuovo linux, i moduli dovrebbero essere spostati in una directory relativa al rilascio (e alla versione) del kernel che stai installando. Quindi dovresti fare un link simbolico da questa directory alla directory "predefinita".

Ogni volta che compili un nuovo kernel, il comando "make modules_install"creerà una nuova directory, ma non cambierà il collegamento" predefinito ".

Quando si ottiene un modulo non correlato alla distribuzione del kernel, è necessario inserirlo in una delle directory indipendenti dalla versione / lib / modules .

Questa è la strategia predefinita, che può essere sovrascritta in /etc/modules.conf .

Esempi

modprobe -t net

Carica uno dei moduli che sono memorizzati nella directory contrassegnata "net". Ogni modulo viene provato fino a quando uno riesce.

modprobe -a -t boot

Verranno caricati tutti i moduli che sono memorizzati nelle directory contrassegnate con "boot".

modprobe slip

Questo tenterà di caricare il modulo slhc.o se non è stato caricato in precedenza, dal momento che il modulo slip ha bisogno della funzionalità nel modulo slhc. Questa dipendenza sarà descritta nel file modules.dep che è stato creato automaticamente dadepmod.

modprobe -r slip

Questo scaricherà il modulo di slittamento. Inoltre, scaricherà automaticamente il modulo slhc, a meno che non venga utilizzato anche da qualche altro modulo (ad es. Ppp).

Guarda anche:

depmod (8),lsmod(8), kerneld(8), ksyms(8), rmmod(8).

Modalità sicura

Se l'uid effettivo non è uguale al vero UID alloramodprobe tratta il suo input con estremo sospetto. L'ultimo parametro viene sempre considerato come un nome di modulo, anche se inizia con '-'. Ci può essere solo un nome di modulo e le opzioni del modulo "variabile = valore" sono proibite. Il nome del modulo viene sempre considerato come una stringa, nessuna meta espansione viene eseguita in modalità sicura. Tuttavia la meta espansione è ancora applicata ai dati letti dal file di configurazione.

euid potrebbe non essere uguale a uid quando modprobe è invocato dal kernel, questo è vero per kernel> = 2.4.0-test11. In un mondo ideale,modprobe fidarsi del kernel per passare solo parametri validi a modprobe. Tuttavia, si è verificato almeno un exploit root locale perché il codice del kernel di alto livello ha passato parametri non verificati direttamente dall'utente a modprobe. Quindi modprobe non si fida più dell'input del kernel.

modprobe imposta automaticamente la modalità sicura quando l'ambiente consiste solo di queste stringhe

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

Questo rileva l'esecuzione di modprobe dal kernel sui kernel 2.2 anche se 2.4.0-test11, anche se uid == euid, che fa sui kernel precedenti.

Comandi di registrazione

Se directory / var / log / ksymoops esiste emodprobe viene eseguito con un'opzione che può caricare o eliminare un modulo, quindi modprobe registrerà il suo comando e restituirà lo stato in / var / log / ksymoops / `date +% Y% m% d.log` . Non c'è nessun interruttore per disabilitare questa registrazione automatica, se non vuoi che si verifichi, non creare / var / log / ksymoops . Se questa directory esiste, dovrebbe essere di proprietà di root ed essere la modalità 644 o 600 e si dovrebbe eseguire lo scriptinsmod_ksymoops_clean ogni giorno o giù di lì.

Utilità richieste

depmod(8), insmod(8).

Importante: Utilizzare il uomo comando ( % uomo ) per vedere come viene utilizzato un comando sul tuo computer specifico.