I moduli caricabili del kernel possono far risparmiare memoria e facilitare la configurazione. Lo scopo dei moduli è cresciuto fino a includere filesystem, driver per schede Ethernet, driver per dispositivi a nastro, driver per la stampante e altro.
Le utility per i moduli sono disponibili nello stesso posto dove si sono
presi i sorgenti del proprio kernel come
modutils-x.y.z.tar.gz; si scelga il più alto livello di
patch x.y.z che sia minore o uguale a quello del proprio
kernel corrente. Le si decomprima con `tar zxvf
modutils-x.y.z.tar.gz', si faccia cd nella directory
creata (modutils-x.y.z), si legga il file README e
si seguano le istruzioni di installazione (solitamente qualcosa di
semplice, come make install). Ora si dovrebbero avere i
programmi insmod, rmmod, ksyms, lsmod,
genksyms, modprobe e depmod in
/sbin. Se si vuole si verifichino le utility con il driver
di esempio ``hw'' nella directory insmod; si veda il file
INSTALL in quella sottodirectory per i dettagli.
insmod inserisce un modulo dentro un kernel in esecuzione. I
moduli solitamente hanno un'estensione .o; il driver di
esempio summenzionato è chiamato drv_hello.o, così per
inserirlo uno dovrebbe usare `insmod drv_hello.o'. Per
vedere i moduli che il kernel sta attualmente usando si usi
lsmod. L'output è simile a questo:
blah# lsmod
Module: #pages: Used by:
drv_hello 1
`drv_hello' è il nome del modulo, usa una pagina (4k) di
memoria e al momento nessun'altro modulo del kernel ne dipende. Per
rimuovere questo modulo, si usi `rmmod drv_hello'. Si noti
che rmmod vuole un nome di modulo, non un nome di
file; lo si prenda dall'elenco di lsmod. Lo scopo delle
altre utility per i moduli è documentato nelle relative pagine man.
Dalla versione 2.0.30, praticamente qualsiasi cosa è disponibile come
modulo caricabile. Per usarli, per prima cosa ci si assicuri di non
configurarli dentro il kernel; ovvero, non si risponda y ad
essi durante il `make config'.
Si compili un nuovo kernel e si riavvii. Poi, si faccia ancora
cd in /usr/src/linux e si esegua un `make
modules'. Questo compila tutti i moduli che si sono specificati
nella configurazione del kernel e mette dei link a essi in
/usr/src/linux/modules. Li si può usare direttamente da
quella directory o eseguire `make modules_install', che li
installa in /lib/modules/x.y.z, dove x.y.z è la
versione del kernel.
Questo può essere utile specialmente con i filesystem. Si potrebbero
non usare frequentemente i filesystem minix o msdos. Per esempio, se
incappo in un dischetto msdos, potrei fare insmod
/usr/src/linux/modules/msdos.o e poi rmmod msdos quando
ho finito. Questa procedura fa risparmiare circa 50k di RAM nel
kernel durante le normali operazioni. Un piccola nota al contorno per
il filesystem minix: si dovrà sempre configurarlo
direttamente dentro il kernel per l'uso nei dischetti di ripristino.