Linux unload kernel module

How to Load and Unload Kernel Modules in Linux

A kernel module is a program which can loaded into or unloaded from the kernel upon demand, without necessarily recompiling it (the kernel) or rebooting the system, and is intended to enhance the functionality of the kernel.

In general software terms, modules are more or less like plugins to a software such as WordPress. Plugins provide means to extend software functionality, without them, developers would have to build a single massive software with all functionalities integrated in a package. If new functionalities are needed, they would have to be added in new versions of a software.

Likewise without modules, the kernel would have to be built with all functionalities integrated directly into the kernel image. This would mean having bigger kernels, and system administrators would need to recompile the kernel every time a new functionality is needed.

A simple example of a module is a device driver – which enables the kernel to access a hardware component/device connected to the system.

List All Loaded Kernel Modules in Linux

In Linux, all modules end with the .ko extension, and they are normally loaded automatically as the hardware is detected at system boot. However a system administrator can manage the modules using certain commands.

To list all currently loaded modules in Linux, we can use the lsmod (list modules) command which reads the contents of /proc/modules like this.

Module Size Used by rfcomm 69632 2 pci_stub 16384 1 vboxpci 24576 0 vboxnetadp 28672 0 vboxnetflt 28672 0 vboxdrv 454656 3 vboxnetadp,vboxnetflt,vboxpci bnep 20480 2 rtsx_usb_ms 20480 0 memstick 20480 1 rtsx_usb_ms btusb 45056 0 uvcvideo 90112 0 btrtl 16384 1 btusb btbcm 16384 1 btusb videobuf2_vmalloc 16384 1 uvcvideo btintel 16384 1 btusb videobuf2_memops 16384 1 videobuf2_vmalloc bluetooth 520192 29 bnep,btbcm,btrtl,btusb,rfcomm,btintel videobuf2_v4l2 28672 1 uvcvideo videobuf2_core 36864 2 uvcvideo,videobuf2_v4l2 v4l2_common 16384 1 videobuf2_v4l2 videodev 176128 4 uvcvideo,v4l2_common,videobuf2_core,videobuf2_v4l2 intel_rapl 20480 0 x86_pkg_temp_thermal 16384 0 media 24576 2 uvcvideo,videodev .

How to Load and Unload (Remove) Kernel Modules in Linux

To load a kernel module, we can use the insmod (insert module) command. Here, we have to specify the full path of the module. The command below will insert the speedstep-lib.ko module.

# insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko

To unload a kernel module, we use the rmmod (remove module) command. The following example will unload or remove the speedstep-lib.ko module.

# rmmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/speedstep-lib.ko

How to Manage Kernel Modules Using modprobe Command

modprobe is an intelligent command for listing, inserting as well as removing modules from the kernel. It searches in the module directory /lib/modules/$(uname -r) for all the modules and related files, but excludes alternative configuration files in the /etc/modprobe.d directory.

Читайте также:  Huawei for linux mint

Here, you don’t need the absolute path of a module; this is the advantage of using modprobe over the previous commands.

To insert a module, simply provide its name as follows.

To remove a module, use the -r flag like this.

Note: Under modprobe, automatic underscore conversion is performed, so there is no difference between _ and – while entering module names.

For more usage info and options, read through the modprobe man page.

Do not forget to check out:

That’s all for now! Do you have any useful ideas, that you wanted us to add to this guide or queries, use the feedback form below to drop them to us.

Источник

How to load and unload kernel modules in Linux

itnixpro.com

In this tutorial, you will learn how to load and unload kernel modules in Linux. When you install a Linux-like operating system, the kernel automatically installs the majority of device driver modules. It also allows you to install additional device drivers as modules using the commands modprobe and insmod once the installation is complete.

How to load and unload kernel modules in Linux

Normally, kernel modules are loaded automatically, but you may need to manually install new modules on occasion.

From time to time, you may want to unload/uninstall some modules are well.

While the two commands are used to achieve the same thing, most users will want to use modprobe instead, which is more clever and can handle module dependencies.

Modprobe can also be used to unload/remove loaded kernel modules.

How to load kernel modules in Linux

Load Kernel Modules using INSMOD command

The insmod (insert module) command can be used to load a kernel module. The whole path of the module must be specified here.

Читайте также:  Get motherboard serial number linux

Kernel module files usually have .ko extensions, for example you can use the command bellow to insert bluetooth.ko module.

insmod /lib/modules/4.4.0-21-generic/kernel/drivers/cpufreq/bluetooth.ko

Load Kernel Modules using MODPROBE command

Using the modprobe command and the module name, you can add the module to the Linux kernel.

List Loaded Kernel Modules

Using the lsmod command, you can see what kernel modules are currently loaded.

sudo lsmod | grep bluetooth

Except for the additional configuration file in /etc/modprobe.d/ , Linux maintains a kernel module directory and configuration files under /lib/modules/’uname -r’ /kernel/drivers/ .

To list kernel drivers run the following command

ls /lib/modules/'uname -r'/kernel/drivers/

For my case when I run uname -r I get the following sample output;

Now I can run the full command with value of the command uname -r used;

ls /lib/modules/5.11.0-38-generic/kernel/drivers/
accessibility crypto hwmon md parport scsi vdpa acpi dax hwtracing media pci siox vfio android dca i2c memstick pcmcia slimbus vhost ata dma i3c message phy soc video atm edac iio mfd pinctrl soundwire virt auxdisplay extcon infiniband misc platform spi virtio base firewire input mmc power spmi visorbus bcma firmware iommu most powercap ssb vme block fpga ipack mtd pps staging w1 bluetooth gnss irqchip mux ptp target watchdog bus gpio isdn net pwm tee xen char gpu leds nfc rapidio thermal clk greybus lightnvm ntb regulator thunderbolt counter hid macintosh nvdimm reset tty cpufreq hsi mailbox nvme rpmsg uio cpuidle hv mcb nvmem rtc usb

You may encounter problems loading modules at times, or modules that are not loaded properly.

You can aggressively install or load modules to avoid these issues by using the ‘–force’ option (-f) in the modprobe command.

Читайте также:  Процесс установки linux кратко

If you continue to have issues or difficulties while loading the modules, you will need to debug this time.

You can determine the exact error or issue before or after installing the modules by activating debugging. To put it another way, debugging is the same as a dry-run of loading modules.

This form of debugging is enabled by the ‘-n’ option in the modprobe command. This option forces the modprobe command to complete all module loading steps except the last.

The ‘ —show-depends ‘ option in the modprobe command can also be used to display the module’s dependencies.

An example is shown below.

modprobe --show-depends e1000
insmod /lib/modules/5.11.0-38-generic/kernel/drivers/net/ethernet/intel/e1000/e1000.ko

How to unload kernel modules in Linux

Just like insmod does not a module with its dependencies, rmmod does not remove a module with its dependencies. You may want to use modprobe with -r option instead.

Unload kernel modules using rmmod command

The rmmod (remove module) command is used to unload a kernel module. The bluetooth.ko module will be unloaded or removed using the following example.

Источник

Оцените статью
Adblock
detector