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