The Linux kernel is the core component of the Linux operating system. It manages the system’s resources, and it is a bridge between your computer’s hardware and software.
The Linux kernel has a modular design. A kernel module, or often referred to as a driver, is a piece of code that extend the kernel’s functionality. Modules are either compiled as loadable modules or built into the kernel. Loadable modules can be loaded and unloaded in the running kernel on request, without the need to reboot the system.
Generally, the modules are loaded on demand by
udev (device manager). However, sometimes you may need to fine-tune how the modules are loaded. For example, you may need to load a module with additional parameters or to prevent the automatic loading of a module.
You can manually load a module into the kernel using the
modprobe command, or automatically at boot time using
In this article, we’ll explain how to use
modprobe to add and remove modules from the Linux kernel.
modprobe is part of
kmod, a binary that implements multiple programs used to manage Linux Kernel modules.
Adding Kernel Modules
Only users with administrative privileged can manage Kernel modules.
To load a module, invoke the
modprobe command followed by the module name:
modprobe command will load the given module and any additional module dependencies. Only one module can be specified at the command line.
lsmod command to confirm that the module is loaded:
lsmod | grep module_name
To load a module with additional parameters, use the
modprobe module_name parameter=value
The command accepts multiple
parameter=value pairs separated by space.
Generally, you would need to load the module during the system boot. You can do that by that by specifying the module and its parameters in a file inside the
/etc/modules-load.d directory. Files must end with
.conf and can have any name:
option module_name parameter=value
The settings specified in these files are read by
udev, which loads the modules at system startup using
Removing Kernel Modules
To remove a module, invoke the
modprobe command with the
-r option followed by the module name:
modprobe -r module_name
modprobe will also remove the unused module dependencies.
When invoked with
-r, the command accepts multiple modules as arguments:
modprobe -r module_name1 module_name2
If you want to prevent a Kernel module from loading at boot time, create a
.conf file with any name inside the
/etc/modprobe.d. The syntax is:
If you want to blacklist additional modules, specify the modules on a new line, or create a new
modprobe command allows you to add and remove Linux kernel modules.
Feel free to leave a comment if you have any questions.