Tutto sul comando Linux/Unix depmod

Depmod gestisce le descrizioni delle dipendenze per loadable kernel moduli.

Sinossi

depmod [-aA] [-ehnqrsuvV] [-C file di configurazione] [-F kernelsyms] [-B directorybase] [versione_forzatadepmod [-enqrsuv] [-F kernelsyms] modulo1.o modulo2.o...

Descrizione

Il depmod e modprobe le utilità hanno lo scopo di fare un Linux kernel modulare gestibile da tutti gli utenti, amministratori e manutentori della distribuzione.

Depmod crea un file di dipendenza simile a "Makefile", basato sui simboli che trova nell'insieme di moduli menzionati sulla riga di comando o dalle directory specificate nel file di configurazione. Questo file delle dipendenze viene successivamente utilizzato da modprobe per caricare automaticamente il modulo corretto o lo stack di moduli.

Comando depmod di Linux

L'uso normale di depmod è quello di includere la linea.

/sbin/depmod -a

da qualche parte nei file rc in /etc/rc.d, in modo che le dipendenze del modulo corrette siano disponibili immediatamente dopo l'avvio del sistema. Se stai lavorando con una distribuzione più completa di funzionalità, come Ubuntu, Debian o Fedora, questo sarà fatto per te. Nota che l'opzione 

-un è ora opzionale. Per scopi di avvio, l'opzione -Q potrebbe essere più appropriato poiché ciò rende depmod silenzioso sui simboli irrisolti. Se vuoi vedere esattamente cosa viene aggiunto, usa il -v switch per eseguire il comando in modo dettagliato.

È anche possibile creare il file delle dipendenze subito dopo aver compilato un nuovo kernel. Se fate "depmod -a 2.2.99" quando hai compilato il kernel 2.2.99 e i suoi moduli per la prima volta, mentre è ancora in esecuzione, ad esempio 2.2.98, il file verrà creato nel posto corretto. In questo caso, tuttavia, non sarà garantito che le dipendenze dal kernel siano corrette. Vedi le opzioni -F, -C -B sopra per ulteriori informazioni sulla gestione di questo.

Durante la costruzione della relazione tra i moduli e i simboli esportati da altri moduli,depmod non considera lo stato GPL dei moduli né dei simboli esportati. Cioè, depmod non segnalerà un errore se un modulo senza una licenza compatibile con GPL fa riferimento a un simbolo solo GPL (EXPORT_SYMBOL_GPL nel kernel). Però, insmod rifiuterà di risolvere i simboli solo GPL per i moduli non GPL, quindi il caricamento effettivo avrà esito negativo.

Opzioni

-un, --Tutti

Cerca i moduli in tutte le directory specificate nel file di configurazione (opzionale)/etc/modules.conf.

-UN, --Presto

Confronta i timestamp dei file e, se necessario, comportati come depmod -a. Questa opzione aggiorna il file delle dipendenze solo se qualcosa è cambiato.

-e, --errsyms

Mostra tutti i simboli non risolti per ogni modulo.

-h, --aiuto

Visualizza un riepilogo delle opzioni ed esci immediatamente.

-n, --mostrare

Scrivi il file delle dipendenze su stdout invece che nel /lib/modules albero.

-Q, --calmatevi

Dì a depmod di tacere e di non lamentarsi dei simboli mancanti.

-R, --radice

Alcuni utenti compilano i moduli con un ID utente non root, quindi installano i moduli come root. Questo processo può lasciare i moduli di proprietà dell'ID utente non root, anche se la directory dei moduli è di proprietà di root. Se l'ID utente non root è compromesso, un intruso può sovrascrivere i moduli esistenti di proprietà di quell'ID utente e utilizzare questa esposizione per eseguire il bootstrap fino all'accesso root.

Per impostazione predefinita, modutils rifiuterà i tentativi di utilizzare un modulo che non è di proprietà di root. Specificando-R sopprimerà l'errore e consentirà a root di caricare i moduli che non sono di proprietà di root.

L'uso di -r rappresenta un'importante esposizione alla sicurezza e non è consigliato.

-S, --syslog

Scrivi tutti i messaggi di errore tramite il demone syslog invece di stderr.

-u, --errore-irrisolto

depmod 2.4 non imposta un codice di ritorno quando sono presenti simboli non risolti. Alcune distribuzioni vogliono un codice di ritorno diverso da zero in modutils 2.4, ma tale modifica potrebbe causare problemi agli utenti che si aspettano il vecchio comportamento. Se vuoi un codice di ritorno diverso da zero in depmod 2.4, specifica -u. depmod 2.5 ignorerà silenziosamente il -u flag e restituirà sempre un codice di ritorno diverso da zero per i simboli non risolti.

-v, --verboso

Mostra il nome di ogni modulo mentre viene elaborato.

-V, --versione

Visualizza la versione di depmod.

Gestire le distribuzioni

Le seguenti opzioni sono utili per chi gestisce le distribuzioni:

-B directorybase, --basato directorybase

Se l'albero delle directory /lib/modules contenente i sottoalberi dei moduli viene spostato da qualche altra parte per gestire i moduli per un ambiente diverso, il -B l'opzione dice a depmod dove trovare l'immagine spostata del /lib/modules albero. Il file fa riferimento nel file di output depmod che è stato creato, moduli.dep, non conterrà il directorybase il percorso. Ciò significa che quando l'albero dei file viene spostato indietro da directorybase/lib/modules in /lib/modules nella distribuzione finale, tutti i riferimenti saranno corretti.

-C file di configurazione, --config file di configurazione

Usa il file configfile invece di /etc/modules.conf. La variabile d'ambiente MODULECONF può essere utilizzato anche per selezionare un file di configurazione diverso da quello predefinito /etc/modules.conf (o/etc/conf.modules (obsoleto)).

Quando variabile d'ambiente UNAME_MACHINE è impostato, modutils userà 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, impostare UNAME_MACHINE alla tipologia dei moduli in costruzione. Le attuali modutils non supportano la modalità cross build completa per i moduli, si limita a scegliere tra le versioni a 32 e 64 bit dell'architettura host.

-F kernelsyms,--filesyms kernelsyms

Quando si compilano file di dipendenza per un kernel diverso da quello attualmente in esecuzione, è importante che depmod usa il set corretto di simboli del kernel per risolvere i riferimenti al kernel in ogni modulo. Questi simboli possono essere una copia di System.map dall'altro kernel o una copia dell'output di /proc/ksyms. Se il tuo kernel usa simboli con versione, è meglio usare una copia di /proc/ksyms output, poiché quel file contiene le versioni dei simboli dei simboli del kernel. Tuttavia, puoi usare a System.map anche con simboli versionati.

Configurazione

Il comportamento di depmod e modprobe può essere regolato dal file di configurazione (opzionale)/etc/modules.conf. Vedere modprobe(8) e moduli.conf(5) per una descrizione completa.

Strategia

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

Quando ottieni un modulo non correlato alla distribuzione del kernel, dovresti metterlo in una delle directory indipendenti dalla versione sotto /lib/modules.

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

Utilizzare il uomocomando (% uomo) per vedere come viene utilizzato un comando sul tuo particolare computer.