NOME
depmod, modprobe − gestisce automaticamente i moduli caricabili
SINTASSI
depmod [
−a ]
depmod [ −a versione ]
depmod modulo1.o modulo2.o ...
modprobe
modulo.o [simbolo=valore ...]
modprobe −t marcatore modello
modprobe −a −t marcatore modello
modprobe −l [ −t marcatore ] modello
modprobe −r modulo
modprobe −c
DESCRIZIONE
Queste utilità hanno lo scopo di creare un kernel Linux modulare e gestibile da tutti: utenti, amministratori e manutentori di distribuzioni.
Depmod crea un file di dipendenze stile "Makefile", basato sui simboli trovati nell’insieme dei moduli dati sulla riga di comando (o in una locazione predefinita). Questo file di dipendenze può successivamente essere usato da modprobe per caricare automaticamente i moduli rilevanti.
Modprobe si usa per caricare un insieme di moduli o un modulo singolo, una pila di moduli dipendenti o tutti i moduli che sono marcati con un marcatore speciale.
Modprobe carica automaticamente tutti i moduli base necessari in una pila di moduli, come descritto nel file di dipendenze modules.dep. Se il caricamento di uno di questi moduli fallisce, tutta la pila corrente di moduli sarà rimossa (da rmmod) automaticamente.
Modprobe ha due modi per caricare i moduli: nel primo ("probe mode", cioè a ricerca) prova a caricare i moduli da una lista (definita dal modello) e si ferma dopo aver caricato con successo un modulo. Per esempio, si può far così per caricare automaticamente ("autoload") uno fra un elenco di driver ethernet. L’altro modo consiste nel caricare tutti i moduli di una lista; un’applicazione potrebbe essere caricare alcuni moduli all’avvio.
Con l’opzione -r, modprobe rimuove automaticamente una pila di moduli, in modo simile a rmmod -r.
L’opzione -l combinata con l’opzione -t fa elencare tutti i moduli disponibili di un certo tipo. Un comando mount avanzato potrebbe usare il comando
modprobe -l -t fs |
per ottenere l’elenco di tutti i driver per file system disponibili e, in presenza di una richiesta, caricare quello giusto. In questo modo il comando mount si generalizzerebbe (il kerneld risolve questo senza cambiare l’utilità mount)...
L’opzione -c fa stampare tutte le configurazioni (predefinita + file di configurazione).
L’uso
normale di depmod consiste nell’inclusione di
una riga "/sbin/depmod -a" in uno degli file rc in
/etc/rc.d, così che le dipendenze corrette fra moduli
siano disponibili subito dopo l’avvio del sistema.
Si noti che è anche possibile creare il file di
dipendenze subito dopo la compilazione di un nuovo kernel.
Eseguendo "depmod -a 1.3.99" dopo aver compilato
una prima volta il kernel 1.3.99 e i suoi moduli, ad es.
mentre è in esecuzione il 1.3.98, il file viene
creato nella locazione corretta.
Si noti che in questo caso non è garantito che le
dipendenze nel kernel siano corrette!
L’opzione -d mette depmod in modalità diagnostica, facendo stampare tutti i comandi effettuati. L’opzione -e stampa la lista dei simboli non risolti per ogni modulo mentre, normalmente, depmod stampa solo la lista dei moduli non caricabili. L’opzione -v stampa la lista di tutti i moduli elaborati. I moduli possono essere collocati in differenti posizioni nel filesystem, ma potrebbe esserci sempre la necessità, specialmente per gli sviluppatori di moduli, di comportarsi in modo differente: aspettando che qualche standard ufficiale emerga, definito dal FSSTND, si suggerisce l’uso di questa struttura di directory.
CONFIGURAZIONE
I comportamenti di depmod e di modprobe si possono modificare dal file di configurazione (opzionale) /etc/conf.modules
Il file di
configurazione consiste in un insieme di righe.
Sono ignorate tutte le righe vuote e tutto il testo su una
riga dopo un ’#’.
Le righe possono continuare se terminate con uno
’\’.
Le righe rimanenti devono essere conformi ad uno dei
seguenti formati:
keep
parametro=valore
options modulo simbolo=valore ...
alias modulo nome_reale
pre-install modulo comando ...
install modulo comando ...
post-install modulo comando ...
pre-remove modulo comando ...
remove modulo comando ...
post-remove modulo comando ...
Tutti i valori nelle righe "parametro" sono elaborati dalla shell, quindi si possono usare trucchi di shell come metacaratteri e comandi racchiusi tra apici inversi:
path[misc]=/lib/modules/1.1.5?
path[net]=/lib/modules/’uname -r’
I parametri possono essere ripetuti più volte.
Questi sono parametri legali:
keep |
Se questa parola viene trovata su una riga prima di tutte le righe che contengono le descrizioni di percorso, l’insieme predefinito di percorsi viene salvato, e quindi aggiunto. Altrimenti il comportamento normale è quello di rimpiazzare l’insieme predefinito con l’insieme di percorsi presente nel file di configurazione. |
depfile=DEPFILE_PERCORSO
Questo è il percorso del file di dipendenze che viene creato da depmod e usato da modprobe .
path=QUALCHE_PERCORSO
Il parametro path specifica una directory di ricerca per i moduli.
path[marcatore]=QUALCHE_PERCORSO
Il parametro path può
avere un marcatore (tag) opzionale, che descrive brevemente
lo scopo dei moduli in questa directory e permette a
modprobe alcune operazioni automatiche. Il marcatore
racchiuso tra parentesi quadre segue la parola chiave
"path". In caso di omissione del marcatore, questo
viene supposto essere "misc".
Un marcatore molto utile è boot, che è
usato per marcare tutti i moduli che devono essere caricati
all’avvio.
Se il file di configurazione ’/etc/conf.modules’ è assente, o se un parametro non è assegnato, si usano i seguenti predefiniti:
depfile=/lib/modules/’uname
-r’/modules.dep
path[boot]=/lib/modules
path[fs]=/lib/modules/’uname
-r’
path[misc]=/lib/modules/’uname -r’
path[net]=/lib/modules/’uname -r’
path[scsi]=/lib/modules/’uname -r’
path[cdrom]=/lib/modules/’uname -r’
path[ipv4]=/lib/modules/’uname -r’
path[ipv6]=/lib/modules/’uname -r’
path[sound]=/lib/modules/’uname -r’
path[fs]=/lib/modules/default
path[misc]=/lib/modules/default
path[net]=/lib/modules/default
path[scsi]=/lib/modules/default
path[cdrom]=/lib/modules/default
path[ipv4]=/lib/modules/default
path[ipv6]=/lib/modules/default
path[sound]=/lib/modules/default
path[fs]=/lib/modules
path[misc]=/lib/modules
path[net]=/lib/modules
path[scsi]=/lib/modules
path[cdrom]=/lib/modules
path[ipv4]=/lib/modules
path[ipv6]=/lib/modules
path[sound]=/lib/modules
Tutte le righe "option" specificano le opzioni predefinite che sono necessarie per un modulo, come in:
modprobe de620 bnc=1
Queste opzioni
vengono rimpiazzate da quelle date sulla riga di comando di
modprobe.
Si può avere una riga "option" per i nomi
di modulo con alias come per i nomi senza alias. Questo
è utile per es. con il modulo dummy (cioè
fantoccio):
alias dummy0
dummy
options dummy0 -o dummy0
Le righe "alias" si possono usare per fornire alias ai moduli. Una riga in /etc/conf.modules come questa:
alias iso9660 isofs
dà la
possibilità di scrivere modprobe iso9660 anche
se questo modulo non è disponibile.
Si noti che la riga:
alias qualche_modulo off
fa in modo che
modprobe ignori la richiesta di caricare il modulo. Questo
metodo, normalmente, si usa in congiunzione con
kerneld.
Comandi
Le righe di configurazione
pre-install module comando ...
install module comando ...
post-install module comando ...
pre-remove module comando ...
remove modulo comando ...
post-remove modulo comando ...
si possono usare quando si vuole eseguire qualche comando
specifico al momento dell’inserimento o della
rimozione di un modulo. Tutto il testo che segue il nome del
modulo è interpretato come un comando.
Si noti che i comandi pre- e post-remove non sono
eseguiti se il modulo è cancellato
("autocleaned") dal kerneld! Si veda nelle future
versioni per il supporto dei moduli persistenti.
STRATEGIA
L’idea è che modprobe esamini prima la directory contenente i moduli compilati per la release corrente del kernel e, se qui il modulo non viene trovato, modprobe esamini la directory contenente i moduli per la release predefinita.
Quando si installa un nuovo Linux, i moduli devono essere spostati in una directory relativa alla release (e versione) del kernel che si installa. In questo caso si dovrà fare un link simbolico da questa directory a quella predefinita.
Ogni volta che si compila un nuovo kernel, il comando make modules_install crea una nuova directory, ma non cambia quella predefinita.
Quando si usa un modulo non relativo alla distribuzione del kernel, lo si deve collocare in una delle directory indipendenti dalla versione in /lib/modules.
Questa è la strategia predefinita, che si può modificare in /etc/conf.modules.
ESEMPI
modprobe -t net
Carica uno dei moduli che sono inseriti nella directory marcata "net". Viene provato ogni modulo sino al primo successo (predefinita: /lib/modules/net).
modprobe -a -t boot
Tutti i moduli che sono inseriti nella directory marcata "boot" verranno caricati (predefinita: /lib/modules/boot).
modprobe slip.o
Questo effettua il caricamento del modulo slhc.o se non è stato precedentemente caricato, visto che il modulo slip necessita delle funzionalità del modulo slhc. Questa dipendenza deve essere descritta nel file "modules.dep", creato automaticamente da depmod
modprobe -r slip.o
rimuove slip.o e, automaticamente, anche slhc.o nel caso in cui non sia utilizzato da nessun altro modulo (come ad es. ppp.o).
FILE
/etc/conf.modules
(e /etc/modules.conf),
/lib/modules/*/modules.dep,
/lib/modules/*
VEDERE ANCHE
lsmod(1), kerneld(8), ksyms(1), modules(2).
UTILITÀ RICHIESTE
NOTE
I modelli forniti a modprobe devono essere spesso protetti per assicurarsi che siano valutati nel modo corretto.
AUTORI
Jacques Gelinas
(jack [AT] solucorp.ca)
Bjorn Ekwall (bj0rn [AT] blox.se)
Documentazione tradotta da Marco Andreini
<andreini [AT] pisoft.it>
BACHI
Naah...