Linux Tutorial
Linux File/Directory Management
Linux Packaging And Compression
Vim Text Editor
Linux Text Processing
Linux Software Installation
Linux User/User Group Management
Linux Permission Management
Linux Filesystem Management
Linux Advanced Filesystem Management
Linux System Management
Linux Backup and Recovery
Linux System Service Management
Linux System Log Management
Linux Boot Management
LAMP/LNMP Environment
SELinux Management
Kernel modules are pieces of code that can be loaded and unloaded into the Linux kernel on demand. They allow you to extend the functionality of the kernel without the need to recompile it or reboot the system. In this tutorial, we'll cover the basics of managing kernel modules in Linux using common commands like lsmod
, modinfo
, insmod
, rmmod
, and modprobe
.
To list currently loaded kernel modules, use the lsmod
command:
lsmod
This command will display a table of loaded modules, along with their size and the number of processes using them.
To display detailed information about a specific module, use the modinfo
command:
modinfo module_name
This command will show information such as the module's filename, description, author, license, and any module parameters.
To load a module into the kernel, use the insmod
command followed by the module's filename:
sudo insmod /path/to/module_name.ko
Keep in mind that you must specify the full path to the module file and use the .ko
(kernel object) extension.
To unload a module from the kernel, use the rmmod
command followed by the module's name:
sudo rmmod module_name
Note that you can't unload a module if it's currently in use or if other modules depend on it.
The modprobe
command is a more advanced tool for loading and unloading kernel modules. It automatically resolves dependencies, which means it loads or unloads any other required modules.
Load a module:
sudo modprobe module_name
Unload a module:
sudo modprobe -r module_name
To configure specific modules to load at system boot, you can add their names to the /etc/modules
file (on Debian-based systems) or /etc/modules-load.d/
directory (on systemd-based systems). Each module name should be on a separate line.
For example, to load the module_name
module at boot, add the following line to /etc/modules
:
module_name
In summary, managing kernel modules in Linux allows you to extend the functionality of the kernel without recompiling it or rebooting the system. Using commands like lsmod
, modinfo
, insmod
, rmmod
, and modprobe
, you can easily manage kernel modules, load and unload them, and configure them to load at system boot.
Loading and unloading kernel modules in Linux:
To load a kernel module, use the modprobe
command. To unload (remove) a module, use the rmmod
command.
Example code (loading):
modprobe module_name
Example code (unloading):
rmmod module_name
List loaded kernel modules in Linux:
To list the currently loaded kernel modules, use the lsmod
command.
Example code:
lsmod
Adding and removing kernel modules:
Kernel modules can be added using modprobe
and removed using rmmod
.
Example code (adding):
modprobe module_name
Example code (removing):
rmmod module_name
Viewing kernel module information in Linux:
To view detailed information about a kernel module, use the modinfo
command.
Example code:
modinfo module_name
Dependencies and conflicts in kernel module management:
Kernel modules may have dependencies on other modules. Use lsmod
to view dependencies, and ensure conflicts are resolved.
Example code (viewing dependencies):
lsmod
Blacklisting and whitelisting kernel modules:
Blacklisting prevents specific modules from being loaded automatically. Whitelisting allows only specified modules to load.
Example code (blacklisting):
echo "blacklist module_name" | sudo tee -a /etc/modprobe.d/blacklist.conf
Example code (whitelisting):
echo "install module_name /bin/true" | sudo tee -a /etc/modprobe.d/whitelist.conf
Troubleshooting kernel module issues in Linux:
If encountering issues, check kernel logs (dmesg
or /var/log/syslog
), verify module compatibility, and resolve dependencies.
Example code (checking logs):
dmesg | grep module_name