Tutto sul comando Linux/Unix: modprobe
Il Kernel Linux è diventato un grande pezzo di software. In un certo senso, è una buona cosa. In altri, lo rende alquanto inflessibile. La soluzione è suddividere parti del kernel in moduli. Questi moduli possono essere caricati o meno, data la configurazione del computer e le tue esigenze. Il comando modprobe carica nuovi moduli del kernel su un sistema Linux, consentendo di abilitare nuove funzionalità e supporto senza riavviare.

Utilizzo di Modprobe
Modprobe è solitamente semplice da usare. Una volta che conosci il modulo del kernel che vuoi caricare, passalo al comando modprobe.
sudo modprobe rtl8723de
Questo è tutto quello che c'è da fare. Il modulo viene caricato fino al riavvio del sistema.
Se vuoi rimuovere un modulo senza riavviare, riesegui il comando con il tasto -R bandiera.
sudo modprobe -r rtl8723de
Per la maggior parte, questo è il modo in cui lavorerai con modprobe. Per saperne di più, consulta la documentazione tecnica di seguito.
Documentazione tecnica Modprobe
Il comando modprobe esegue la gestione di alto livello dei moduli caricabili.
Sinossi
modprobe [-adnqv] [-C config] modulo [simbolo=valore ...] modprobe [-adnqv] [-C config] [-T genere] modello modprobe -l [-C config] [-T genere] modello modprobe -c [-C config] modprobe -r [-dnv] [-C config] [modulo...] modprobe -Vh.
Opzioni
-un, --Tutti
Carica tutti i moduli corrispondenti invece di fermarti dopo il primo caricamento riuscito.
-C, --showconfig
Mostra la configurazione attualmente utilizzata.
-C, --configconfig
Usa il file config invece di (l'opzionale) /etc/modules.conf per specificare la configurazione. La variabile d'ambiente MODULECONF può essere utilizzato anche per selezionare (e sovrascrivere) un file di configurazione diverso da quello predefinito /etc/modules.conf (o /etc/conf.modules che è deprecato).
Quando variabile d'ambiente UNAME_MACHINE è impostato, modutils usa il suo valore invece del campo macchina dalla syscall uname(). Questo è principalmente utile quando si compilano moduli a 64 bit in uno spazio utente a 32 bit o viceversa, set UNAME_MACHINE alla tipologia dei moduli. Le attuali modutils non supportano la modalità cross-build completa per i moduli, è limitata alla scelta tra 32 bit e 64 bit versioni dell'architettura host.
-D, --debug
Mostra informazioni sulla rappresentazione interna dello stack di moduli.
-h, --aiuto
Visualizza un riepilogo delle opzioni ed esci immediatamente.
-K, --autoclean
Imposta la pulizia automatica sui moduli caricati. Usato dal kernel quando chiama modprobe per soddisfare una caratteristica mancante (fornito come modulo). Il -Q l'opzione è implicita in -K. Queste opzioni vengono inviate automaticamente a insmod.
-n, --mostrare
Non eseguire l'azione, mostra solo cosa verrebbe fatto.
-Q, --calmatevi
Non lamentarti se insmod non installa un modulo. Continua normalmente, ma in silenzio, con altre possibilità per il test di modprobe. Questa opzione viene inviata automaticamente a insmod.
-R, --rimuovere
Rimuovere il modulo (stack) o eseguire la pulizia automatica, a seconda che siano presenti moduli menzionati nella riga di comando.
-S, --syslog
Segnala tramite syslog anziché stderr. Questa opzione viene inviata automaticamente a insmod.
-Ttipo di modulo; --generetipo di modulo
Considera solo moduli di questo tipo. modprobe guarda solo i moduli il cui percorso di directory include esattamente /moduletype/. tipo di modulo può includere più di un nome di directory, ad esempio -Tdriver/rete elenca i moduli in xxx/driver/net/ e le sue sottodirectory.
-v, --verboso
Stampa tutti i comandi man mano che vengono eseguiti.
-V, --versione
Visualizza la versione di modprobe.
I nomi dei moduli non devono contenere percorsi (no /), né il nome può contenere il finale .o. Per esempio, scontrino è un nome di modulo valido per modprobe, /lib/modules/2.2.19/net/slip e slip.o non sono validi. Questo vale per la riga di comando e per le voci nel file config.
Descrizione del comando
Le utility modprobe e depmod hanno lo scopo di rendere un kernel modulare Linux più gestibile per utenti, amministratori e responsabili della distribuzione.
Modprobe usa un file di dipendenza simile a Makefile, creato da depmod, per caricare automaticamente i moduli rilevanti dall'insieme di moduli disponibili negli alberi di directory predefiniti.
Modprobe viene utilizzato per caricare un singolo modulo, uno stack di moduli dipendenti o tutti i moduli contrassegnati con un tag specificato.
Modprobe carica automaticamente tutti i moduli di base necessari in uno stack di moduli, come descritto dal file di dipendenza moduli.dep. Se il caricamento di uno di questi moduli fallisce, l'intero stack corrente di moduli caricati nella sessione corrente viene scaricato automaticamente.
Modprobe ha due modi per caricare i moduli. Un modo (la modalità sonda) proverà a 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 modo in cui modprobe può essere utilizzato è caricare tutti i moduli da un elenco.
Con l'opzione -R, modprobe scarica automaticamente una pila di moduli, in modo simile al modo rmmod -r fa. Usando solo modprobe -r pulisce i moduli caricati automaticamente inutilizzati ed esegue anche i comandi pre e post-rimozione nel file di configurazione /etc/modules.conf.
Combinando le opzioni -l e -T elenca tutti i moduli disponibili di un certo tipo.
Opzione -C stampa la configurazione attualmente utilizzata (default + file di configurazione).
Configurazione
Il comportamento di modprobe (e depmod) può essere modificato dal file di configurazione (opzionale) /etc/modules.conf. Per una descrizione dettagliata di cosa può contenere questo file, oltre alla configurazione predefinita utilizzata da depmod e modprobe, vedere moduli.conf(5).
I comandi pre e post rimozione non vengono eseguiti se un modulo viene ripulito automaticamente da kerneld. Cerca invece il supporto in arrivo per l'archiviazione dei moduli persistenti. Se desideri utilizzare le funzionalità di pre e post installazione, disattiva la pulizia automatica per kerneld e inserisci invece qualcosa come la seguente riga in crontab (questo è usato anche per i sistemi kmod) per eseguire la pulizia automatica ogni 2 minuti:
*/2 * * * * test -f /proc/modules && /sbin/modprobe -r
Strategia
L'idea è che modprobe cercherà prima nella directory contenente i moduli compilati per la versione corrente del kernel. Se il modulo non viene trovato lì, modprobe cerca nella directory comune alla versione del kernel (ad esempio, 2.0, 2.2). Se il modulo non viene ancora trovato, modprobe cerca nella directory contenente i moduli una versione predefinita e così via.
Quando installi un nuovo Linux, i moduli dovrebbero essere spostati in una directory relativa al rilascio (e versione) del kernel che stai installando. Quindi, crea un collegamento simbolico da questa directory alla directory predefinita.
Ogni volta che compili un nuovo kernel, il comando make module_install crea una nuova directory, ma non cambierà il collegamento predefinito.
Quando ottieni un modulo non correlato alla distribuzione del kernel, posizionalo in una delle directory indipendenti dalla versione sotto /lib/modules.
Questa è la strategia predefinita, che può essere ignorata in /etc/modules.conf.
Esempi
modprobe -t net
Carica uno dei moduli che sono memorizzati nella directory taggata netto. Ogni modulo viene provato finché uno non riesce.
modprobe -a -t boot
Tutti i moduli che sono archiviati nelle directory con tag avvio sono caricati.
slittamento modprobe
Questo tenta di caricare il modulo slhc.o se non è stato precedentemente caricato poiché il modulo slip necessita della funzionalità nel modulo slhc. Questa dipendenza è descritta nel file moduli.dep che è stato creato automaticamente da depmod.
modprobe -r slip
Questo scarica il modulo slip. Inoltre scarica automaticamente il modulo slhc, a meno che non venga utilizzato anche da qualche altro modulo (ad esempio, ppp).
Guarda anche: depmod(8), lsmod (8), kerneld (8), ksyms (8), rmmod(8).
Modalità sicura
Se l'uid effettivo non è uguale all'uid reale, modprobe tratta il suo input con estremo sospetto. L'ultimo parametro è sempre trattato come un nome di modulo, anche se inizia con -. Possono esserci solo un nome modulo e opzioni del modulo variabile=valore sono vietati. Il nome del modulo viene sempre trattato come una stringa, nessuna meta espansione viene eseguita in modalità provvisoria. Tuttavia, la meta espansione viene applicata ai dati letti dal file di configurazione.
euid potrebbe non essere uguale a uid quando modprobe viene invocato dal kernel, questo è vero per i kernel 2.4.0-test11 e successivi. In un mondo ideale, modprobe potrebbe fidarsi del kernel per passare solo parametri validi a modprobe. Tuttavia, si è verificato almeno un exploit di 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à provvisoria quando l'ambiente è costituito solo da queste stringhe.
CASA=/
TERM=linux
PATH=/sbin:/usr/sbin:/bin:/usr/bin
Questo rileva l'esecuzione di modprobe dal kernel sui kernel 2.2 e 2.4.0-test11, anche se uid == euid, cosa che fa sui kernel precedenti.
Comandi di registrazione
Se la directory /var/log/ksymoops esiste e modprobe viene eseguito con un'opzione che potrebbe caricare o eliminare un modulo, modprobe registra il suo comando e restituisce lo stato in /var/log/ksymoops/'date +%Y%m%d.log'. Non esiste un interruttore per disabilitare questa registrazione automatica, se non vuoi che si verifichi, non creare /var/log/ksymoops. Se quella directory esiste, dovrebbe essere di proprietà di root ed essere in modalità 644 o 600 e dovresti eseguire script insmod_ksymoops_clean ogni giorno o giù di lì.
Utilità richieste
depmod (8), insmod (8).
Utilizzare il uomo comando (% uomo) per vedere come viene utilizzato un comando sul tuo computer.