Learn the Linux Command - rmmod

Working Late In His Office

vgajic / Getty Images

rmmod unloads loadable modules from the running kernel and tries to unload a set of modules from the kernel, with the restriction that they are not in use and that they are not referred to by other modules.

If more than one module is named on the command line, the modules will be removed in the given order. This supports unloading of stacked modules.

With the option '-r', a recursive removal of modules will be attempted. This means that if a top module in a stack is named on the command line, all modules that are used by this module will be removed as well, if possible.

Using rmmod

The rmmod command is extremely simple. You only need to give it the name of a module that you want to unload, and it will remove it. Now, that's the trickiest part, knowing the name of the module that you want to unload. Thankfully, there's a simple solution to that, the lsmod command. Run it to see the modules loaded on your system.

lsmod
Linux list kernel modules

That will print out a big list of the modules currently loaded. If you know part of the name you're looking for, you can use 'grep' to find it.

lsmod | grep -i <module name>

When you know the module that you want to remove, pass it to rmmod. You'll need root permission to unload a kernel module, so use 'sudo.'

sudo rmmod i915
Linux rmmod command

You won't get any kind of confirmation, so if you want to check that it's really gone, run 'lsmod' again.

Options

-a--all

Do auto clean: tag unused modules as "to be cleaned", and also remove already tagged modules. Modules stay tagged if they stay unused since previous auto clean. These two passes avoid removing transiently unused modules.

-e--persist

Save persistent data for the named modules, without unloading any modules. If no module names are specified then data is saved for all modules that have persistent data. Data is only saved if both the kernel and modutils support persistent data and /proc/ksyms contains an entry __insmod_modulename_Ppersistent_filename

-h--help

Display a summary of options and immediately exit.

-r--stacks

Remove a module stack.

-s--syslog

Output everything to syslog instead of the terminal.

-v--verbose

Be verbose.

-V--version

Print the version of modutils.

Persistent Data

If a module contains persistent data (see insmod and modules.conf) then removing the module always writes the persistent data to the filename in the __insmod _P symbol entry. You can also save the persistent data at any time by rmmod -e, this will not unload any modules.

When the persistent data is written to file, it is preceded by a generated comment line, #% kernel_version timestamp Generated comment lines start with '#%', all generated comments are stripped from the existing file, other comments are preserved. The saved data values are written to the file, preserving the existing order of comments and assignments. New values are added at the end of the file. If the file contains values that do not exist in the module then these values are preserved but are preceded by a generated comment warning that they are not being used. The latter operation allows a user to switch between kernels without losing persistent data and without getting any error messages.