Comando Linux/Unix: modprobe

Il kernel Linux è cresciuto fino a diventare un software piuttosto grande. Per certi versi, è una buona cosa. In altri, lo rende in qualche modo inflessibile. La soluzione è di spezzare parti del kernel in moduli. Questi moduli possono essere caricati o meno, data la configurazione del computer e le vostre esigenze. Il comando modprobe può caricare nuovi moduli del kernel sul vostro sistema Linux in esecuzione, permettendovi di abilitare nuove funzionalità e supporto senza un riavvio.

Utilizzo di Modprobe

Modprobe è di solito molto semplice da usare. Una volta che si conosce il modulo del kernel che si vuole caricare, basta passarlo al comando modprobe.

sudo modprobe rtl8723de
.

Non c'è altro da dire. Il modulo sarà quindi caricato fino al riavvio del sistema.

Se si desidera rimuovere un modulo senza riavviare, è possibile eseguire nuovamente il comando con il flag -r .

sudo modprobe -r rtl8723de
.

Per la maggior parte, questo è esattamente il modo in cui lavorerete con modprobe. Per saperne di più, consultate la documentazione tecnica qui sotto.

Documentazione tecnica Modprobe

modprobe - movimentazione ad alto livello di moduli caricabili

Sinossi

modprobe [-adnqv] [-C config ] modulo [symbol=valore ...] modprobe [-adnqv] [-C config ] [-t type ] pattern modprobe modprobe -l [-C config ] [-C config ] [-t tipo ] modello modprobe -c [-C config ] modprobe -r [-dnv] [-C config ] [modulo ...] modprobe -Vh

Opzioni

-a , --tutti

Caricare tutti i moduli corrispondenti invece di fermarsi dopo il primo caricamento riuscito.

-c , --showconfig

Mostra la configurazione attualmente utilizzata.

-C , --config config

Usare il file config invece di (l'opzionale) /etc/modules.conf per specificare la configurazione. La variabile d'ambiente MODULECONF può anche essere usata per selezionare (e sovrascrivere) un file di configurazione diverso da quello predefinito /etc/modules.conf (o /etc/conf.modules (deprecato)).

Quando la variabile d'ambiente UNAME_MACHINE è impostata, modutils userà il suo valore invece del campo macchina dal syscall uname(). Questo è utile soprattutto quando si compilano moduli a 64 bit in uno spazio utente di 32 bit o viceversa, impostare UNAME_MACHINE sul tipo di moduli. L'attuale modutils non supporta la modalità di compilazione incrociata completa dei moduli, si limita a scegliere tra le versioni a 32 e 64 bit dell'architettura host.

-d , --debug

Mostra informazioni sulla rappresentazione interna della pila di moduli.

-h , --help --help

Visualizzare un riepilogo delle opzioni e uscire immediatamente.

-k , --autoclean

Impostare 'autoclean' sui moduli caricati. Usato dal kernel quando richiama modprobe per soddisfare una caratteristica mancante (fornita come modulo). L'opzione -q è implicita da -k . Queste opzioni saranno inviate automaticamente a insmod .

.

-n , --show

Non eseguire l'azione, mostra solo quello che si farebbe.

-q , --tranquillo

Non lamentatevi del fatto che insmod non abbia installato un modulo. Continuare come normale, ma in silenzio, con altre possibilità per modprobe da testare. Questa opzione sarà inviata automaticamente a insmod .

-r , --rimuovere

Rimuovere il modulo (stack) o eseguire l'autopulizia, a seconda che ci siano moduli menzionati sulla riga di comando.

-s , --syslog

Segnala tramite syslog invece di stderr. Questa opzione sarà inviata automaticamente a insmod .

-t tipo di modulo ; --tipo tipo di modulo

Considerate solo moduli di questo tipo. modprobe esaminerà solo i moduli il cui percorso della directory include esattamente " /moduletype/ ". moduletype può includere più di un nome di directory, per esempio " -t drivers/net " elencherebbe i moduli in xxx/drivers/net/ e le sue sottodirectory.

-v , --verbose

Stampare tutti i comandi man mano che vengono eseguiti.

-V, --versione

Visualizzare la versione di modprobe .

.

Nota:

I nomi dei moduli non devono contenere percorsi (nessun '/'), né possono contenere il trailing '.o'. Per esempio, slip è 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 nella configurazione.

Descrizione del comando

Le utilità modprobe e depmod hanno lo scopo di rendere un kernel modulare Linux più gestibile per tutti gli utenti, amministratori e manutentori della distribuzione.

Modprobe utilizza un file di dipendenza simile a "Makefile", creato da depmod , per caricare automaticamente il/i modulo/i interessato/i dall'insieme di moduli disponibili in alberi di directory predefiniti.

Modprobe è usato per caricare un singolo modulo, una pila di moduli dipendenti, o tutti i moduli che sono contrassegnati con un tag specificato.

Modprobe caricherà automaticamente tutti i moduli base necessari in uno stack di moduli, come descritto dal file di dipendenza modules.dep . Se il caricamento di uno di questi moduli fallisce, l'intero stack di moduli caricato nella sessione corrente verrà scaricato automaticamente.

Modprobe ha due modalità di caricamento dei moduli. Un modo (il modo sonda) cercherà di caricare un modulo da una lista (definita da pattern ). Modprobe interrompe il caricamento non appena un modulo si carica con successo. Questo può essere usato per caricare automaticamente un driver Ethernet da una lista. L'altro modo modprobe può essere usato per caricare tutti i moduli da un elenco. Vedere ESEMPI , sotto.

Con l'opzione -r , modprobe scaricherà automaticamente una pila di moduli, in modo simile a quanto fa " rmmod -r ". Si noti che usando solo " modprobe -r " ripulirà i moduli autocaricati 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.

L'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 più dettagliata di ciò che questo file può contenere, così come la configurazione predefinita usata da depmod e modprobe , vedere modules.conf (5).

Si noti che i comandi pre e post rimozione non verranno eseguiti se un modulo viene "autopulito" da kerneld! Cercate invece il supporto in arrivo per la memorizzazione persistente dei moduli. Se volete usare le funzioni di pre- e post-installazione, dovrete disattivare l'autoclean per kerneld e mettere invece qualcosa come la seguente riga nel vostro crontab (questo è usato anche per i sistemi kmod) per fare autoclean ogni 2 minuti: */2 * * * * * * test -f /proc/moduli &&& /sbin/modprobe -r

Strategia

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

Quando si installa un nuovo linux, i moduli devono essere spostati in una directory relativa al rilascio (e alla versione) del kernel che si sta installando. Poi si dovrebbe fare un collegamento simbolico da questa directory alla directory "default".

Ogni volta che si compila un nuovo kernel, il comando " make modules_install " creerà una nuova directory, ma non cambierà il link "default".

Quando si ottiene un modulo non correlato alla distribuzione del kernel si dovrebbe collocarlo in una delle directory indipendenti dalla versione sotto /lib/moduli .

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

Esempi

modprobe -t net

Caricare uno dei moduli che sono memorizzati nella directory con il tag "net". Ogni modulo viene provato fino a quando uno di essi non ha successo.

modprobe -a -t boot

Tutti i moduli che sono memorizzati nelle directory con il tag "boot" saranno caricati.

modprobe slip

Questo tenterà di caricare il modulo slhc.o se non è stato precedentemente caricato, dato che il modulo slhc ha bisogno della funzionalità del modulo slhc. Questa dipendenza sarà descritta nel file modules.dep che è stato creato automaticamente da depmod .

modprobe -r slip

In questo modo si scarica il modulo di scorrimento. Scaricherà anche il modulo slhc automaticamente, a meno che non venga utilizzato anche da qualche altro modulo (ad esempio ppp).

Vedi anche:

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

Modo sicuro

Se l'uid effettivo non è uguale all'uid reale, allora modprobe tratta il suo input con estremo sospetto. L'ultimo parametro viene sempre trattato come nome del modulo, anche se inizia con '-'. Ci può essere un solo nome di modulo e le opzioni del modulo "variable=value" sono vietate. Il nome del modulo è sempre trattato come una stringa, non viene eseguita alcuna meta espansione in modalità sicura. Tuttavia la meta-espansione è ancora applicata ai dati letti dal file di configurazione.

L'euid può non essere uguale a uid quando modprobe viene invocato dal kernel, questo è vero per i kernel = 2.4.0-test11. In un mondo ideale, modprobe potrebbe fidarsi del fatto che il kernel passi a modprobe solo parametri validi. 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 il modo sicuro quando l'ambiente è composto solo da queste stringhe

 HOME=/

TERM=linux

PATH=/sbin:/usr/sbin:/bin:/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, 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 cancellare un modulo, modprobe registrerà il suo comando e restituirà lo stato in /var/log/ksymoops/`date +%Y%m%d.log` . Non c'è un interruttore per disabilitare questo log automatico, se non si vuole che si verifichi, non creare /var/log/ksymoops . Se tale directory esiste, dovrebbe essere di proprietà di root ed essere in modalità 644 o 600 e si dovrebbe eseguire lo script insmod_ksymoops_clean ogni giorno circa.

Utilità richieste

depmod (8), insmod (8).

Usare il comando man ( % man ) per vedere come viene usato un comando sul vostro particolare computer.

Deja un comentario