The Linux kernel is designed to be modular, allowing you to load and unload kernel modules at runtime. A kernel module is a piece of code that can be added to or removed from the running kernel, providing additional functionalities like device drivers or system calls without needing to reboot.
Loading a Kernel Module
Kernel modules are typically stored as .ko
(kernel object) files. You can load them using the insmod
or modprobe
commands.
insmod
: Loads a module into the kernel directly. You must specify the exact path of the module.
sudo insmod /path/to/module.ko
modprobe
: A more advanced method,modprobe
checks for dependencies and loads any required modules before loading the specified module.
sudo modprobe module_name
Once a module is loaded, it integrates into the kernel and can be used immediately. The loading process involves resolving symbol dependencies, initializing the module, and registering it with the kernel.
Example of Loading a Kernel Module
Suppose you have a kernel module called hello.ko
. To load this module, you would use:
sudo insmod hello.ko
Or, using modprobe
:
sudo modprobe hello
After the module is loaded, you can verify its presence using the lsmod
command:
lsmod | grep hello
Unloading a Kernel Module
To remove a module from the kernel, use the rmmod
command:
sudo rmmod module_name
This safely unloads the module, freeing up resources.
Linux kernel module loading is a flexible way to extend the functionality of your system without restarting. By using insmod
, modprobe
, and rmmod
, you can manage these modules efficiently.