Verder Terug Inhoud

10. Modules

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.

10.1 Installeren van de module-utility's

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.

10.2 Met de kernel gedistribueerde modules

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.


Verder Terug Inhoud