Capitolo 40. Moduli del kernel

Il kernel di Linux ha un design modulare. All'avvio, viene caricata in memoria solo una minima parte del kernel. Dunque, quando un utente desidera utilizzare una periferica il cui supporto non presente nel kernel attualmente attivo, viene caricato dinamicamente un module del kernel, talvolta riferito come driver.

Durante l'installazione di Red Hat Linux, l'hardware del vostro sistema viene analizzato. Sulla base del rilevamento e delle informazioni da voi fornite, il programma di installazione decide quali moduli caricare all'avvio del sistema. Il programma di installazione configura il meccanismo di caricamento dinamico in modo che funzioni in maniera trasparente.

Se dopo l'installazione aggiungete nuovo hardware che richiede un particolare modulo del kernel, dovete configurare il sistema in modo tale da caricare il modulo del kernel corretto per il nuovo hardware. Kudzu viene eseguita all'avvio del sistema e di norma in grado di rilevare il nuovo hardware. Potete anche aggiungere un nuovo driver modificando il file di configurazione del modulo, /etc/modules.conf.

NotaNota bene
 

I moduli della scheda video usati per visualizzare l'interfaccia del Sistema X Window, fanno parte del pacchetto XFree86, non del kernel; di conseguenza, questo capitolo non viene applicato ai suddetti moduli.

Per esempio, se il vostro sistema ha una scheda di rete PCI SMC EtherPower 10 al momento dell'installazione, il file di configurazione del modulo conterr la seguente linea:

alias eth0 tulip

Dopo l'istallazione, se installate un'altra scheda di rete identica nel vostro sistema, aggiungete la seguente linea nel file /etc/modules.conf:

alias eth1 tulip

Per ottenere un elenco alfabetico dei moduli del kernel e dei dispositivi hardware che supportano, consultate la Red Hat Enterprise Linux Reference Guide.

40.1. Utility dei moduli del kernel

Potete anche utilizzare un gruppo di comandi per gestire i moduli del kernel se il pacchetto modutils installato. Questi comandi sono utili se volete provare diversi moduli o se desiderate verificare che un determinato modulo sia stato caricato correttamente.

Il comando /sbin/lsmod visualizza un elenco dei moduli attualmente caricati. Per esempio:

Module                  Size  Used by    Not tainted
iptable_filter          2412   0 (autoclean) (unused)
ip_tables              15864   1 [iptable_filter]
nfs                    84632   1 (autoclean)
lockd                  59536   1 (autoclean) [nfs]
sunrpc                 87452   1 (autoclean) [nfs lockd]
soundcore               7044   0 (autoclean)
ide-cd                 35836   0 (autoclean)
cdrom                  34144   0 (autoclean) [ide-cd]
parport_pc             19204   1 (autoclean)
lp                      9188   0 (autoclean)
parport                39072   1 (autoclean) [parport_pc lp]
autofs                 13692   0 (autoclean) (unused)
e100                   62148   1
microcode               5184   0 (autoclean)
keybdev                 2976   0 (unused)
mousedev                5656   1
hid                    22308   0 (unused)
input                   6208   0 [keybdev mousedev hid]
usb-uhci               27468   0 (unused)
usbcore                82752   1 [hid usb-uhci]
ext3                   91464   2
jbd                    56336   2 [ext3]

Per ogni riga, la prima colonna il nome del modulo, la seconda colonna la misura del modulo, e la terza colonna rappresenta il conteggio dell'utilizzo.

L'informazione dopo il conteggio dell'utilizzo varia di poco a seconda del modulo. Se (unused) elencato sulla riga per il modulo, lo stesso modulo correntemente non stato usato. Se (autoclean) sulla riga per il modulo, lo stesso pu essere cancellato automaticamente dal comando rmmod -a. Quando questo comando viene eseguito, qualsiasi modello che stato etichettato con autoclean, e che non stato usato dall'ultima azione di autoclean, viene scaricato. Red Hat Enterprise Linux non effettua questa azione per default.

Se il nome di un modulo elencato alla fine della riga tra parentesi, tale modulo dipende dal modulo elencato nella prima colonna della riga. Per esempio, nella riga

usbcore                82752   1 [hid usb-uhci]

i moduli del kernel hid e usb-uhci dipendono dal modulo usbcore.

L'output /sbin/lsmod lo stesso output visualizzando /proc/modules.

Per caricare un modulo del kernel, potete utilizzare il comando /sbin/modprobe seguito dal nome del modulo. Per default, modprobe cerca di caricare il modulo dalle sottodirectory /lib/modules/<kernel-version>/kernel/drivers. Esiste una sottodirectory per ciascun tipo di modulo (per esempio, la sottodirectory net per i driver dell'interfaccia di rete. Alcuni moduli del kernel hanno delle dipendenze — per poterli caricare, occorre averne prima caricati degli altri. Per ovviare a questo problema, potete caricare le dipendenze del modulo desiderato e poi il modulo stesso, oppure potete utilizzare il comando /sbin/modprobe seguito dal nome del modulo per caricarlo insieme alle sue dipendenze.

Per esempio, il comando

/sbin/modprobe hid

carica ogni dipendenza del modulo e anche il modulo hid.

Per far comparire sulla schermata tutti i comandi come /sbin/modprobe, usare l'opzione -v. Per esempio:

/sbin/modprobe -v hid

Viene visualizzato un output simile al seguente:

/sbin/insmod /lib/modules/2.4.21-1.1931.2.399.ent/kernel/drivers/usb/hid.o
Using /lib/modules/2.4.21-1.1931.2.399.ent/kernel/drivers/usb/hid.o
Symbol version prefix 'smp_'

Esiste anche il comando /sbin/insmod per caricare i moduli del kernel; tuttavia, non risolve le dipendenze. consigliato usare il comando /sbin/modprobe.

Per rimuovere dalla memoria un modulo del kernel, usate il comando /sbin/rmmod seguito dal nome del modulo. L'utility rmmod rimuover soltanto i moduli non utilizzati e non necessari per altri moduli in uso.

Per esempio, il comando

/sbin/rmmod hid

rimuove il modulo del kernel hid.

Un'altra importante utility per i moduli del kernel modinfo. Potete usare il comando /sbin/modinfo per visualizzare informazioni relative a un modulo del kernel. La sintassi generale :

/sbin/modinfo [options] <module>

Tra le opzioni incluso il comando -d, che visualizza una breve descrizione del modulo, e il comando -p che fornisce un elenco dei parametri supportati dal modulo. Per un elenco completo delle opzioni, consultate la pagina man di modinfo (man modinfo).