Frequently Asked Question
What is a loadable kernel module and how does it differ from a built-in driver?
A loadable kernel module is a chunk of compiled kernel code packaged as a .ko file
that can be inserted into a running kernel with insmod or modprobe and removed
with rmmod. Once loaded, it lives in the same address space as the rest of the
kernel, there's no isolation. Modules are how most device drivers, filesystems
(ext4, btrfs, xfs), and network protocols ship.
A built-in driver is compiled directly into the kernel image (vmlinuz). It's
always there, can't be removed, and is needed for anything required to boot before
the module loader runs, for example the disk driver and filesystem your root partition
lives on. You can see what's built-in vs modular by reading /boot/config-$(uname -r)
and looking for =y (built-in) vs =m (module).