I moduli caricabili del kernel possono far risparmiare memoria e facilitare la configurazione. Lo scopo dei moduli è cresciuto fino ad 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 (che solitamente qualcosa di
semplice, come un 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 ad 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.