Capitolo 30. 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 un modulo in memoria. Dopo un periodo di inattivit� prestabilito, il modulo viene rimosso dalla memoria.

Durante l'installazione di Red Hat Linux, l'hardware del vostro sistema viene analizzato e a voi viene richiesto di fornire informazioni sul futuro utilizzo del sistema e sui programmi da caricare. 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 decidete di compilare da soli il kernel, potete prendere voi queste decisioni.

Se dopo l'installazione aggiungete nuovo hardware che richiede un particolare modulo del kernel, dovete configurare il meccanismo di caricamento dinamico. 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.

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 Official Red Hat Linux Reference Guide.

Utility dei moduli del kernel

Potete anche utilizzare un gruppo di comandi per elencare, caricare o scaricare moduli del kernel. 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.

Esempio 30-1. Esempio di output per lsmod

Module                  Size  Used by
sr_mod                 15264   0 (autoclean)
mga                    95984   1
agpgart                23392   3
nfs                    79008   1 (autoclean)
lockd                  52464   1 (autoclean) [nfs]
sunrpc                 61328   1 (autoclean) [nfs lockd]
autofs                 11264   4 (autoclean)
3c59x                  25344   1 (autoclean)
ipchains               38976   0 (unused)
ide-scsi                8352   0
scsi_mod               95104   2 [sr_mod ide-scsi]
ide-cd                 26848   0
cdrom                  27232   0 [sr_mod ide-cd]
usb-uhci               20720   0 (unused)
usbcore                49664   1 [usb-uhci]

Come potete vedere nell'Esempio 30-1, lsmod visualizza le dimensioni, l'utilizzo e i moduli di riferimento per ciascuno modulo attualmente caricato.

Per caricare un modulo del kernel, potete utilizzare il comando /sbin/insmod seguito dal nome del modulo. Per default, insmod 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 tulip

carica il modulo di interfaccia di rete tulip.

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 tulip

rimuove il modulo di interfaccia di rete tulip.

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).