You can unload a kernel module by running modprobe -r <module_name>
as root. For example, assuming that the wacom
module is already loaded into the kernel, you can unload it by running:
~]# modprobe -r wacom
However, this command will fail if a process is using:
-
the wacom
module,
-
a module that wacom
directly depends on, or,
-
any module that wacom
—through the dependency tree—depends on indirectly.
For example, if you want to unload the firewire_ohci
module because (because you believe there is a bug in it that is affecting system stability, for example), your terminal session might look similar to this:
~]# modinfo -F depends firewire_ohci
depends: firewire-core
~]# modinfo -F depends firewire_core
depends: crc-itu-t
~]# modinfo -F depends crc-itu-t
depends:
You have figured out the dependency tree (which does not branch in this example) for the loaded Firewire modules: firewire_ohci
depends on firewire_core
, which itself depends on crc-itu-t
.
You can unload firewire_ohci
using the modprobe -v -r <module_name>
command, where -r
is short for --remove
and -v
for --verbose
:
~]# modprobe -r -v firewire_ohci
rmmod /lib/modules/2.6.32-71.el6.x86_64/kernel/drivers/firewire/firewire-ohci.ko
rmmod /lib/modules/2.6.32-71.el6.x86_64/kernel/drivers/firewire/firewire-core.ko
rmmod /lib/modules/2.6.32-71.el6.x86_64/kernel/lib/crc-itu-t.ko
The output shows that modules are unloaded in the reverse order that they are loaded, given that no proceses depend on any of the modules being unloaded.
Although the rmmod
command can be used to unload kernel modules, it is recommended to use modprobe -r
instead.