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.