Manpages

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

insmod(1), nm(1), rmmod(1).

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...