Modprobe Command in Linux

Posted 

3 min read

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 /etc/modules or /etc/modules-load.d/*.conf files.

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

The Kernel modules are stored in the /lib/modules/<kernel_version> directory. You find the version of the running kernel, use the uname -r command.

Only users with administrative privileged can manage Kernel modules.

To load a module, invoke the modprobe command followed by the module name:

modprobe module_name

The modprobe command will load the given module and any additional module dependencies. Only one module can be specified at the command line.

Use the lsmod command to confirm that the module is loaded:

lsmod | grep module_name

To load a module with additional parameters, use the parameter=value syntax:

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:

/etc/modules-load.d/module_name.conf
option module_name parameter=value

The settings specified in these files are read by udev, which loads the modules at system startup using modprobe.

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:

/etc/modprobe.d/blacklist.conf
blacklist module_name

If you want to blacklist additional modules, specify the modules on a new line, or create a new .conf file.

Conclusion

The modprobe command allows you to add and remove Linux kernel modules.

Feel free to leave a comment if you have any questions.