Kernel modules and drivers
In short: A kernel module is code loaded into the kernel at run time, usually a driver. That way not every driver has to be built into the kernel permanently.
In more detail: Most drivers on Linux belong to the kernel itself and are loaded automatically when hardware is detected (udev). Vendor drivers (proprietary NVIDIA) are loaded as modules.
In detail
lsmod # loaded modules
modinfo snd_hda_intel # info
sudo modprobe vboxdrv # load
sudo modprobe -r vboxdrv # unload- Path:
/lib/modules/<kernel version>/. - Blocklist: in
/etc/modprobe.d/useblacklist modulenameto prevent loading. - DKMS: rebuilds modules automatically after a kernel update (for external drivers).
- Secure Boot: unsigned modules are rejected, you must sign them with your own key.
- NVIDIA: proprietary driver or open kernel modules (since the 500 series drivers), plus the free Nouveau.
- Firmware: some devices need additional firmware (
linux-firmware). - Troubleshooting:
dmesg | grep -i firmware.
See also: The Linux kernel at a glance, Kernel panic and oops