Traditioneel heeft FreeBSD zoals dat heet een “monolitische” kernel gehad. Dit betekent dat de kernel één groot programma was, een vaste lijst van apparaten ondersteunde en als het gewenst was om het gedrag van de kernel te veranderen, moest er een nieuwe kernel gecompileerd worden en moest daarna de computer opnieuw gestart worden met de nieuwe kernel.
Vandaag de dag beweegt FreeBSD zich snel naar een model waar veel van de functionaliteit van de kernel in modules zit die dynamisch in en uit de kernel kunnen worden geladen, naargelang dat noodzakelijk is. Dit stelt de kernel in staat om zich aan nieuwe hardware aan te passen die plotseling beschikbaar komt (zoals PCMCIA-kaarten in een laptop) of om nieuwe functionaliteit in zich op te nemen die niet noodzakelijk was toen de kernel oorspronkelijk werd gecompileerd. Dit staat bekend als een modulaire kernel.
Desondanks is het nog steeds nodig om enkele dingen van de kernel statisch in te stellen. In sommige gevallen komt dit doordat de functionaliteit zo diep geworteld zit in de kernel dat het niet dynamisch laadbaar gemaakt kan worden. In andere gevallen kan het simpelweg komen doordat nog niemand de tijd heeft genomen om een dynamisch laadbare kernelmodule voor die functionaliteit te schrijven.
Het bouwen van een aangepaste kernel is een van de meest
belangrijke beproevingen die geavanceerde BSD-gebruikers moet
doorstaan. Hoewel dit proces veel tijd in beslag neemt, levert
het veel voordelen op voor een FreeBSD systeem. In tegenstelling
tot de GENERIC
-kernel, die vele typen
hardware moet ondersteunen, ondersteunt een aangepaste kernel
alleen de hardware van de computer waar hij voor gemaakt is. Dit
biedt een aantal voordelen, zoals:
Een snellere opstarttijd. Aangezien de kernel alleen de hardware zoekt die zich in het systeem bevindt, kan de tijd die het systeem nodig heeft om op te starten aanzienlijk korter worden;
Minder geheugengebruik. Een aangepaste kernel gebruikt
vaak minder geheugen dan de
GENERIC
-kernel door ongebruikte mogelijkheden
en apparaatstuurprogramma's weg te laten. Dit is van belang
aangezien de kernelcode altijd in het fysieke geheugen aanwezig
blijft, waardoor dit geheugen niet door applicaties gebruikt kan
worden. Om deze reden is een aangepaste kernel geknipt
voor een systeem met een kleine hoeveelheid RAM;
Aanvullende hardware-ondersteuning. Een aangepaste
kernel kan ingebouwde ondersteuning bieden voor apparaten die
zich niet in de GENERIC
-kernel bevinden,
zoals geluidskaarten.