Tradicionalmente o FreeBSD teve o chamado kernel monolítico, o que significa que este kernel era um grande programa provedor de suporte a uma lista fixa de dispositivos. Caso surgisse a necessidade de alteração desta lista, sendo ela por inclusão ou exclusão de algum item, uma nova compilação do kernel deveria ser executada e o sistema reiniciado.
Hoje em dia o FreeBSD está mudando rapidamente para um modelo onde muitas funcionalidades do kernel estão contidas em módulos, que podem ser dinamicamente carregados e descarregados. Esta nova característica permite que o kernel se adapte rapidamente a um novo hardware que passa a ser reconhecido instantaneamente, como por exemplo, um cartão PCMCIA em um
laptop, ou que uma nova funcionalidade que não era necessária no momento da compilação seja trazida para dentro do kernel. Esta característica é conhecida como kernel modular.
Assim como o kernel default fica no diretório /boot/kernel/kernel os módulos do kernel ficam em /boot/kernel. Cada módulo de kernel termina com a extensão
Verifica módulos carregados
# kldstat
Verificar tudo que está carregado no módulo kernel listado no kldstat
# sysctl kern.conftxt | less
Os modulos ficam no /boot/kernel
# ls /boot/kernel
Carregar um módulo manualmente
# kldload /boot/kernel/if_zyd.ko
Para tirar o módulo
# kldunload if_zyd
Para manter persistente deve colocar no /boot/loader.conf
if_zyd_load=”YES”