I moduli del kernel

Il kernel di Linux, per evitare che si debba procedere allacompilazione ogni qual volta sia necessario inserire unafeatures e per permettere l'utilizzo di device driver diterze parti (il produttore ad esempio), mette a disposizionei moduli.
Un modulo può essere caricato al volo mentre ilsistema è in esecuzione e le features e/o il driver(quindi anche la periferica hardware da lui pilotato) sonosubito disponibili.
Alcuni moduli vengono vengono caricati durante il processodi boot, per vedere quali sono in esecuzione nel nostrosistema si usa il comando lsmod (i moduli possonoessere gestiti solo da root):

Module Size Used by
via82cxxx_audio 17136 1
uart401 6160 0 [via82cxxx_audio]
ac97_codec 9568 0 [via82cxxx_audio]
sound 54448 0 [via82cxxx_audio uart401]
8139too 11744 1
printer 5552 0 (unused)
hid 12800 0 (unused)
usb-uhci 21552 0 (unused)
nls_iso8859-1 2880 2 (autoclean)
nls_cp437 4384 2 (autoclean)

Ogni voce prodotta dal comando inizia con il nome del moduloseguito dalla sua dimensione (calcolata in pagine di memoria)e prosegue mostrando le dipendenze del modulo. Come possiamovedere dall'esempio il modulo sound dipende dal modulovia82cxxx_audio (il controller audio) e dal modulo uart401.

Caricamento dei moduli

I moduli possono essere caricati grazie a 2 comandi distinti:insmod e modprobe

insmod

insmod si occupa solo del semplice caricamento del modulo lasua sintassi è semplice:

insmod nome_modulo parametri_eventuali

modprobe

A differenza di insmod, modprobe legge il file delledipendenze (creato dal comando depmod) e oltre a caricare ilmodulo richiesto si occupa di caricare tutti quelli dallaquale dipende. Nell'esempio precedente con il comando:

modprobe via82cxxx_audio

vengono caricati anche uart401, sound eac97_codec necessari per il corretto funzionamentodella mia scheda audio ac97. La sintassi di modprobe èsimile a quella di insmod ma necessita prima l'esecuzione(di solito non necessaria perchè fatta all'avvio)di depmod:

depmod -a
modprobe nome_modulo eventuali_parametri

Rimozione dei moduli

Per rimuovere un modulo non più necessario o caricatoper errore si usa il comando rmmod:

rmmod nome_modulo