Before building a custom kernel, consider the reasons for doing so. If there is a need
for specific hardware support, it may already exist as a module.
Kernel modules exist in the /boot/kernel directory and may
be dynamically loaded into the running kernel using kldload(8). Most, if
not all kernel drivers have a specific module and manual page. For example, the last
section noted the ath wireless Ethernet driver. This device
has the following information in its manual page:
Alternatively, to load the driver as a module at boot time, place the
following line in loader.conf(5):
if_ath_load="YES"
As instructed, adding the if_ath_load="YES" line to the /boot/loader.conf file will enable loading this module dynamically
at boot time.
In some cases; however, there is no associated module. This is mostly true for certain
subsystems and very important drivers, for instance, the fast file system (FFS) is a required option in the kernel. As is network support
(INET). Unfortunately the only way to tell if a driver is required is to check for the
module itself.
Warning: It is considerably easy to remove built in support for a device or
option and have a broken kernel. For example, if the ata(4) driver is
pulled from the kernel configuration file, a system using ATA disk drivers may not boot without the line added to loader.conf. When in doubt, check for the module and then just
leave support in the kernel.