myfreax

Linux rmmod命令卸载内核模块

模块可以编译为可载入模块或内置在Linux内核。可载入模块可以根据需要进行动态载入与卸载

3 min read
By myfreax
Linux rmmod命令卸载内核模块
Linux rmmod命令卸载内核模块

每个Linux发行版,例如Ubuntu,CentOS,RedHat,操作系统的核心组件是Linux内核。它管理系统的资源,并充当计算机硬件和软件之间的中介。

Linux内核是具有模块化设计的软件。内核模块通常称为驱动程序,是一段扩展内核功能的代码。

模块可以编译为可载入模块或内置在Linux内核。可载入模块可以根据需要,在正在运行的内核中动态加载和卸载,且无需重新启动系统。

在本教程中,我们将讨论如何使用rmmod命令从Linux内核删除模块。

rmmod命令与选项

rmmod命令的基本语法是rmmod [OPTIONS] MODULE_NAME...。在现代Linux系统,rmmodkmod的一部分,该二进制文件实现用于管理Linux内核模块的多个程序。

只有root或者具有sudo权限的用户才能在内核删除模块。

在删除模块之前,你可以运行lsmod命令打印内核加载的所有模块名称。内核模块存储在/lib/modules/<kernel_version>目录中。

使用rmmod命令删除模块非常简单, 只需调用rmmod命令,后跟模块名称。

rmmod module_name

正常情况下,rmmod命令不会打印任何消息,rmmod命令仅在退出代码不为0时才打印错误消息。

例如,如果另一个模块依赖正在删除的模块,rmmod命令将打印错误消息rmmod: ERROR: Module module_name is in use by: module_name_2。

如果你需要显示命令执行的详细信息,请使用-v/--verbose选项运行rmmod命令。

如果一定要删除正在使用的模块,请使用-f选项运行rmmod命令。使用此选项非常危险,因为它可能导致系统崩溃。

rmmod还接受多个模块作为参数。例如要同时删除模块module_name1 module_name2。

rmmod module_name1 module_name2

禁止加载指定模块

使用rmmod命令移除模块,模块将保持卸载状态。直到系统重新启动,内核将会再次加载已经被卸载的模块。

要在启动时永久禁止加载已卸载的模块,请在/etc/modprobe.d目录中创建文件blacklist.conf。文件的名称可以任何你喜欢的名称。

如果要将更多的模块加入此文件中,请以同样的格式在新的一行指定模块名称。

在本教程我们使用vim创建文件/etc/modprobe.d/blacklist.conf。完成后保存文件并退出vim

sudo vim /etc/modprobe.d/blacklist.conf
blacklist module_name
/etc/modprobe.d/blacklist.conf

结论

rmmod命令用于删除Linux内核模块。通常,大多数Linux用户使用modprobe -r命令而不是rmmod。如有任何疑问,请随时发表评论。