A module is a set of software that is not part of the core kernel yet can be integrated with it through the kernel kbuild procedure or at runtime. Modules always operate in "kernel space."
Some properties of all kernel modules:
- Modules can either be "tightly bound" to the kernel (builtin), as part of the Linux image, or they can be "loosely bound" (loadable kernel module, and added later), however they all must conform to the standard Linux module interface.
- Modules are limited to using kernel-provided functions and types. For example they cannot use GNU C-library calls, since the C-Libraries are user-space libraries.
- Modules (loadable ones, not builtin ones) can be added and removed without restarting the operating system.
Device Drivers are special modules that provide one or more files in the /dev filesystem. They provide an interface between applications and the below underlying hardware in a system.