每个Linux发行版,例如Ubuntu,CentOS,RedHat,操作系统的核心组件是Linux内核。它管理系统的资源,并充当计算机硬件和软件之间的中介。
Linux内核是具有模块化设计的软件。内核模块通常称为驱动程序,是一段扩展内核功能的代码。
模块可以编译为可载入模块或内置在Linux内核。可载入模块可以根据需要,在正在运行的内核中动态加载和卸载,且无需重新启动系统。
在本教程中,我们将讨论如何使用rmmod
命令从Linux内核删除模块。
rmmod命令与选项
rmmod命令的基本语法是rmmod [OPTIONS] MODULE_NAME...
。在现代Linux系统,rmmod
是kmod
的一部分,该二进制文件实现用于管理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
结论
rmmod
命令用于删除Linux内核模块。通常,大多数Linux用户使用modprobe -r
命令而不是rmmod
。如有任何疑问,请随时发表评论。