Laadbare kernelmodules kunnen geheugen besparen en de configuratie vergemakkelijken. De strekking van modules is gegroeid dat het bestandssystemen, ethernetkaartdrivers, tapedrivers, printer drivers, en meer bevat.
De module utility's zijn beschikbaar vanwaar je je kernelsource vandaan
hebt gehaald als modutils-x.y.z.tar.gz
; kies het hoogste
patchlevel x.y.z
dat gelijk is of lager dan dat van je huidige
kernel. Pak het uit met `tar zxvf modutils-x.y.z.tar.gz
',
cd
naar de directory, het maakt (modutils-x.y.z
) aan,
bekijk de README
, en voer de installatie-instructies ervan uit
(die meestal erg eenvoudig zijn, zoals make install
). Je
zou nu de programma's insmod
, rmmod
, ksyms
,
lsmod
, genksyms
, modprobe
, en depmod
in
/sbin
moeten hebben.
Test de utility's met de ``hw'' voorbeelddriver in insmod
, als je
dat wilt; bekijk het bestand
INSTALL
in die subdirectory voor details.
insmod
voegt een module in, in de draaiende kernel. Modules
hebben meestal een .o
extensie; de voorbeelddriver die hierboven
werd genoemd, heeft de naam
drv_hello.o
, dus om dit in te voegen, zou men intikken
`insmod drv_hello.o
'. Om te modules te zien die de kernel op
dit moment gebruikt, gebruik je lsmod
.
De uitvoer ziet er ongeveer zo uit:
blah# lsmod Module: #pages: Used by: drv_hello 1
`drv_hello
' is de naam van de module, het gebruikt één
pagina (4k) van het geheugen, en er zijn op dit moment geen
andere kernelmodules afhankelijk van.
Om deze module te verwijderen, gebruik je `rmmod drv_hello
'.
Merk op dat rmmod
de
naam van een module verlangt, geen bestandsnaam; je krijgt dit van de
uitvoer van lsmod
. De strekking van de andere utility's voor de
modules staan in hun manual pages gedocumenteerd.
Sinds versie 2.0.30, is bijna alles als een laadbare module beschikbaar.
Zorg er eerst voor dat je ze niet in de reguliere kernel configureert, om
ze te gebruiken; dat wil zeggen, beantwoord 't niet met
y
tijdens `make config
'.
Compileer een nieuwe kernel en reboot ermee. cd
dan nogmaals naar
/usr/src/linux
, en doe een `make modules
'. Hiermee
worden alle modules gecompileerd die je niet in de kernelconfiguratie hebt
gespecificeerd, en links ernaar in /usr/src/linux/modules
geplaatst.
Je kunt ze direct vanuit die directory gebruiken of `make
modules_install
' uitvoeren, waarmee ze in
/lib/modules/x.y.z
worden geïnstalleerd, hierbij
staat x.y.z
voor de kernelrelease.
Dit kan vooral handig zijn met bestandssystemen. Het kan zijn dat je het
minix of msdos bestandssysteem niet vaak gebruikt.
Als ik bijvoorbeeld een msdos (huiver) diskette trof, zou ik
insmod /usr/src/linux/modules/msdos.o
, en dan
rmmod msdos
als ik klaar ben. Deze procedure bespaart
gedurende de normale bewerking ongeveer 50k RAM in de kernel.
Een kleine aantekening voor het minix bestandssysteem:
je zou het altijd direct in de kernel moeten configureren, voor
gebruik in ``rescue'' disks.