Vi sono innumerevoli componenti di hardware per PC. Per poter utilizzare correttamente questo hardware, serve un “driver”, tramite il quale il sistema operativo (in Linux il “kernel”) possa indirizzare in modo corretto l'hardware. In linea di massima vi sono due meccanismi per integrare dei driver nel kernel:
I driver possono essere parte integrante del kernel. Questi kernel “tutti di un pezzo” in questo manuale li chiameremo kernel monolitici. Alcuni driver possono essere utilizzati solo in questa variante.
I driver si possono aggiungere al kernel anche all'occorrenza, in questo caso si parla di kernel modulare. Il vantaggio è che vengono caricati solo i driver prettamente necessari senza appesantire inutilmente il kernel.
Al momento della configurazione del kernel si stabilisce quali driver vanno integrati nel kernel e quali assumeranno la forma di moduli. Tutte le componenti del kernel non strettamente necessari al boot, dovrebbero assumere la forma di modulo. In tal modo viene assicurato che il kernel non assume una dimensione gigantesca e che possa venire caricato senza difficoltà dal BIOS e da un boot loader qualsiasi. Il driver del disco rigido, il supporto di ext2 e cose simili vanno compilate direttamente nel kernel, mentre il supporto per isofs, msdos o sound dovrebbe essere compilato sotto forma di modulo.
I moduli del kernel vengono archiviati nella directory /lib/modules/<versione>; dove versione corrisponde alla versione attuale del kernel.
vi offre il programma hwinfo per rilevare l'hardware del sistema e assegnare i driver disponibili. Per capire un pò come funziona il programma immettete il comando: hwinfo --help. Per ottenere ad esempio i dati sui dispositivi SCSI integrati immettete il comando:
hwinfo --scsi
Le stesse informazioni le potete ricavare anche tramite nel modulo sulle informazioni hardware.
Per l'utilizzo dei moduli si hanno a disposizione i seguenti comandi:
Con il comando insmod, viene caricato il modulo indicato. Il modulo viene cercato in una sottodirectory di /lib/modules/<versione>. insmod non dovrebbe venir più preferito (vd. sotto) a modprobe .
Elimina il modulo indicato. Ciò è naturalmente consigliabile solo se la corrispondente funzione del kernel non viene più usata. Non è però per esempio, possibile eliminare il modulo isofs se un CD è ancora montato.
Questo comando crea un file di nome modules.dep nella directory /lib/modules/<versione>; nel file sono annotate le dipendenze dei singoli moduli: con ciò si assicura che al momento di caricare un modulo vengano automaticamente caricati anche tutti i moduli dipendenti. Il file con le dipendenze dei moduli viene generato automaticamente all'avvio del sistema, qualora non esistesse già.
Caricare o scaricare un modulo tenendo conto delle dipendenze dagli altri moduli. Questo comando è molto utile e può venire impiegato anche per altri scopi (p.es. provare tutti i moduli di un determinato tipo finché se ne trovi uno che venga caricato correttamente). Al contrario del caricamento con insmod, modprobe analizza il file /etc/conf.modules e dovrebbe perciò venire usato per il caricamento dei moduli. Per una spiegazione dettagliata di tutte le opzioni, leggete le corrispondenti pagine di manuale.
Indica i moduli attualmente caricati e che vengono utilizzati da altri moduli. I moduli caricati dal demone del kernel sono contrassegnati da autoclean; ciò significa che questi moduli vengono automaticamente rimossi se non vengono usati per un certo periodo di tempo. Si veda però la sezione Section 8.4.4, “Kmod – il Kernel Module Loader”.
Vi mostra i dettagli di un modulo. Visto che queste informazioni vengono estratte dal modulo stesso, possono essere visualizzate solo le informazioni incluse dagli sviluppatori di driver. Tra le informazioni che ottenete vi è l'autore, una descrizione, la licenza, parametri del modulo, dipendenze e gli alias.
Il caricamento dei moduli dipende inoltre dai file /etc/modules.conf /etc/modprobe.conf.local e la directory /etc/modprobe.d; cfr. la pagina di manuale con man modprobe.conf. In questo file, possono venire impostati e attivati i parametri per quei moduli che accedono direttamente all'hardware e che devono perciò essere configurati in base al sistema specifico (p.es. driver per il lettore di CD-Rom o driver di rete). I parametri qui registrati vengono descritti nei sorgenti del kernel. Installate il pacchetto kernel-source e leggete la relativa documentazione che trovate nella directory /usr/src/linux/Documentation.
La via più elegante di utilizzare i moduli del kernel è senza dubbio quella di ricorrere al “Kernel Module Loader”. Kmod lavora in sottofondo e fa sì che vengano caricati automaticamente i moduli necessari, tramite chiamate di modprobe, non appena si accede alla relativa funzionalità del kernel.
Per poter usare Kmod, dovete abilitare, durante la configurazione del kernel, l'opzione (CONFIG_KMOD). Kmod non è stato ideato per scaricare automaticamente dei moduli; con la quantità di RAM dei computer odierni, il guadagno in termini di RAM sarebbe trascurabile. Per server che devono eseguire solo compiti speciali e che necessitano solo pochi driver si consiglia, per ragioni di prestazione, un kernel “monolitico”.