EMZETT.
Login

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/ use blacklist modulename to 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