De kerneld feature werd geïntroduceerd tijdens de 1.3 ontwikkelaarskernels door Bjorn Ekwall. Je kunt er kernelmodules, zoals devicedrivers, netwerkdrivers en bestandssystemen automatisch mee laden wanneer ze nodig zijn, in plaats van dat je dit handmatig moet doen met modprobe of insmod.
En voor de wat amusantere aspecten, alhoewel deze (nog?) niet zijn geïntegreerd in de standaardkernel:
Het kan zo worden ingesteld dat het een gebruikersprogramma uitvoert in plaats van de standaard schermbeveiliging, dus dat het je elk programma als screen-saver laat gebruiken.
Vergelijkbaar met de screen-blanker ondersteuning, kun je ook de standaard console beep in iets totaal anders wijzigen.
kerneld bestaat uit twee componenten:
Ondersteuning in de Linux kernel voor het versturen van verzoeken naar een daemon vragend om een een module voor een bepaalde taak.
Een user-space daemon die uit kan zoeken welke modules moeten worden geladen om aan het verzoek van de kernel te voldoen.
Beide componenten moeten werken wil de kerneld ondersteuning functioneren; het is niet genoeg dat slechts de een of de ander is ingesteld.
Er zijn een aantal goede redenen waarom je kerneld zou willen gebruiken. De redenen die ik hier benoem, zijn mijn redenen, anderen hebben weer andere redenen.
Als je kernels hebt gebouwd voor verscheidene systemen met slechts kleine verschillen, zoals een ander soort netwerkkaart, bijvoorbeeld, dan kun je een enkele kernel bouwen met een aantal modules in plaats van individuele kernels voor elk systeem.
Modules zijn voor ontwikkelaars eenvoudiger te testen. Je hoeft het systeem niet opnieuw op te starten om de driver te laden of uit het geheugen te laten verwijderen; dit geldt voor alle modules, niet alleen voor via kerneld geladen modules.
Het scheelt je in geheugen voor de kernel, waardoor er meer geheugen overblijft voor applicaties. Geheugen dat door de kernel wordt gebruikt, wordt nooit naar disk geswapt, dus als je voor 100Kb aan ongebruikte drivers in je kernel hebt gecompileerd, dan is dat simpelweg een verspilling van RAM.
Een aantal dingen die ik gebruik zoals bijvoorbeeld de ftape floppy-tape driver of iBCS, zijn alleen beschikbaar als modules, maar ik wil me niet druk hoeven maken om het laden of weer uit het geheugen verwijderen van deze modules wanneer ik ze nodig heb.
Mensen die Linux distributies samenstellen hoeven geen 284 verschillende bootimages te bouwen: Elke gebruiker laadt de modules die hij nodig heeft voor zijn hardware. De meeste moderne Linux distributies zullen je hardware detecteren en zullen alleen die modules laden die werkelijk nodig zijn.
Natuurlijk zijn er ook redenen waarom je ze niet wilt gebruiken. Als je het gebruik van slechts één kernel image bestand waar alle drivers zijn ingebouwd prefereert, dan lees je het verkeerde document.
De ondersteuning in de Linux kernel werd bij Linux 1.3.57 geïntroduceerd. Als je een eerdere kernelversie hebt, dan zul je moeten upgraden als je de kerneld ondersteuning wilt. De huidige Linux kernelsources zijn te vinden op de meeste Linux FTP archiefsites waaronder:
De user-space daemon is opgenomen in het modules package. Deze zijn normaal gesproken vanaf dezelfde plaats beschikbaar als de kernelsources.
![]() | Als je het module laden wilt proberen met de laatste ontwikkelaars kernels, dan moet je het nieuwere modutils package gebruiken en niet de modules. Bekijk altijd het Documentation/Changes bestand in de kernel sources voor het minimum vereiste versienummer voor je kernelimage. Zie ook over de problemen die zich voordeden met modules en 2.1 kernels. |