Per l'aggiunta di nuovi moduli nel kernel l'utente dispone di due comandi:
insmod
e modprobe
. insmod
aggiunge un modulo senza fare tanti controlli e questo non è proprio efficiente. Talvolta il caricamento del modulo può fallire se il modulo che stiamo cercando di aggiungere nel kernel dipende da altri moduli. Per questo motivo se aggiungiamo nuovi moduli al kernel con insmod
dobbiamo farlo nell'ordine giusto! La sintassi per usare insmod
è davvero molto semplice, con insmod NOME_MODULO
aggiungiamo il modulo di nome NOME_MODULO
al kernel. In alcuni casi occorre specificare a insmod
il path per il modulo da aggiungere al kernel (che altrimenti verrà cercato in altre cartelle di sistema). Tale path va eventualmente passato al comando anteponendo un trattino (-
) al path stesso (ad esempio: insmod -/home/Downloads/new_module.ko
).modprobe
permette sia l'aggiunta che la rimozione di moduli nel kernel. I moduli vengono cercati nella cartella di sistema /lib/modules/VERSIONE_DEL_KERNEL
.Ogni eventuale dipendenza con altri moduli viene risolta mediante l'uso di un albero delle dipendenze, costruito da
depmod
(che riassume nel file modules.dep
tutte le dipendenze fra moduli). Alcune distribuzioni GNU/Linux eseguono il comando depmod -a
(all) all'avvio, in questo modo l'intero l'albero delle dipendenze dei moduli viene aggiornato. Se si fa seguire a modprobe
il nome del modulo da caricare, verranno allora caricati prima tutti i moduli necessari al modulo indicato sulla riga di comando, quindi, per ultimo, verrà caricato il modulo che abbiamo richiesto.Se uno dei moduli di supporto al modulo richiesto non viene caricato (in tal caso vi consiglio di cercare eventuali messaggi di errori con
dmesg
) modprobe
provvede alla rimozione dei moduli nel kernel fin li inseriti!La sintassi, come potete intuire, è nella sua forma base davvero semplice. Con il comando
modprobe NOME_MODULO
vengono caricati tutti i moduli di supporto al modulo di nome NOME_MODULO
, quindi il modulo stesso.Il comando
modprobe
prevede diverse opzioni, con -r
(remove) il comando rimuove dal kernel il modulo il cui nome viene passato come argomento. Se i moduli di supporto precedentemente caricati per l'avvio di un modulo non servono più verranno anch'essi rimossi dal kernel. Un utile opzione è -l
(list) che stampa l'elenco di tutti i moduli disponibili sul sistema! Per filtrare l'output possiamo usare il carattere *
per descrivere la base per un nome. Senza dimenticare grep
! Con l'opzione -t
(type), infine, possiamo caricare nel kernel tutti i moduli di una certa tipologia. L'opzione fa riferimento alle rispettive cartelle di sistema che ospitano i moduli del kernel, come ad esempio: net
, sound
, drivers
. Ad esempio, con il comando modprobe -t net
vengono installati tutti i moduli della cartella net
. Anche in questo caso possiamo essere più precisi se dopo la tipologia di moduli indichiamo anche una base per i nomi. Ad esempio, modprobe -t net
installa tutti i moduli della cartella net
. Quest'ultima opzione può essere usata assieme all'opzione -l
per limitare la stampa dei moduli disponibili a quella con i moduli del tipo selezionato. Ad esempio, modprobe -l -t drivers
elenca tutti i moduli della cartella drivers
.La rimozione di un modulo può avvenire anche con
rmmod
, che elimina solo il modulo specificato. Meglio allora affidarsi a modprobe -r
che, come abbiamo già visto, svolge un ottimo lavoro!
Nessun commento:
Posta un commento