Linux: gestire i moduli

Visto che sto scrivendo un po’ di guide, e non ho voglia tutte le volte di spiegare come caricare un modulo, caricarlo all’avvio o disabilitarlo… Lo scrivo qui che faccio prima.
Nota: questa guida vale con tutte le versioni di linux che usano i module-init-tools (dalla versione 2.5.48 in poi, insomma).

Un esempio della modularità di Linux :-P

Un esempio della modularità di Linux 😛

I moduli sono parti di codice del kernel esterne dalla parte principale del codice (la parte monolitica). Rispetto al codice incluso nel kernel hanno il vantaggio di poter essere caricati¹ dinamicamente, anche più volte per modulo.

Un kernel prevalentemente modulare permette il caricamento delle sole parti di codice necessarie al nostro sistema, evitando sprechi di memoria e velocizzando l’accensione della macchina.

Al contrario un kernel più monolitico risulta più “grosso” e lento da avviare.

Tutto questo a parità di quantità di codice. Se si includono solo le parti che servono per la singola macchina nella compilazione di un kernel monolitico il consumo di memoria e la velocità di avvio vengono ottimizzati, soprattutto se si elimina l’esigenza del initrd². Perdendo ovviamente la flessibilità di un kernel modulare. Peccato che l’unico metodo per avere un kernel (più) monolitico sia ricompilarlo. Per ovvi motivi di compatibilità i kernel rilasciati dalle distribuzioni contengono la maggior parte dei driver sotto forma di modulo, per avere la compatibilità con un parco macchine maggiore.

Caricare e rimuovere un modulo

Per caricare un modulo asta fare il comando

sudo modprobe nomemodulo

Per rimuovere un modulo basta fare

sudo modprobe -r nomemodulo

Ovviamente sudo serve per diventare superutente, se si è già superutente basta non metterlo all’inizio del comando.

La lista dei moduli caricati

Per vedere i moduli caricati al momento basta fare il comando lsmod, magari in pipe (|) con less (per scorrere meglio la lista) o grep filtro (per vedere solo parte dell’output tramite un filtro).

Caricarli all’avvio

Bisogna aggiungere il nome del modulo al file /etc/modules.

La sintassi del file è:

#eventuali commenti

nomemodulo1
nomemodulo2

Basta accodare il nome del modulo nel file e al prossimo avvio verrà caricato in automatico.

La lista nera

Per evitare che un modulo si carichi automaticamente all’avvio basta accodarlo al file /etc/modprobe.d/blacklist.conf.

La sintassi del file è:

#eventuali commenti

blacklist modulochenonvuoi
blacklist altromodulononvoluto

Al prossimo avvio i moduli selezionati non dovrebbero caricarsi³.

Note

1. O rimossi.
2. Init Ram Disk, una piccola immagine che viene caricata nella ram all’avvio, contenente i moduli principali che servono per l’avvio del sistema.
3. Non sempre mi è funzionato, probabilmente se il modulo è caricato da altri programmi o script tramite modprobe (per ovvi motivi) non funziona… Soprattutto a me non va quando provo ad eliminare il modulo lp, quello della “porta stampante”… 😦

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...