侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux rmmod命令用法详解:如何从内核中卸载模块(附实例教程和注意事项)

Linux rmmod命令介绍

rmmod是remove module的缩写,它的作用是从Linux内核中卸载一个或多个模块。模块是一种可以动态加载和卸载的内核扩展,它可以提供一些特定的功能或驱动一些特定的硬件。模块的优点是可以节省内核空间,提高系统灵活性,方便用户根据需要添加或删除功能。模块的缺点是可能存在兼容性或稳定性的问题,需要用户自己管理模块的依赖关系。

rmmod命令通常只有具有管理员权限的用户才能使用,因为它会直接影响内核的运行。使用rmmod命令时,需要指定要卸载的模块的名称,可以一次卸载多个模块,但是必须保证没有其他模块依赖于要卸载的模块,否则会报错。如果要卸载一个模块及其所有依赖的模块,可以使用modprobe -r命令,它会自动处理模块的依赖关系。

Linux rmmod命令适用的Linux版本

rmmod命令在大多数Linux发行版中都是可用的,它是kmod软件包的一部分,kmod是一个实现了多个用于管理Linux内核模块的程序的二进制文件。不同的Linux发行版可能会有不同的模块管理工具,例如,Debian和Ubuntu使用dkms,Fedora和Red Hat使用akmod,它们都是用于自动编译和安装内核模块的工具。如果要使用rmmod命令,需要先确保系统已经安装了kmod软件包,可以使用以下命令来检查:

[linux@bashcommandnotfound.cn ~]$ dpkg -l | grep kmod # Debian/Ubuntu
[linux@bashcommandnotfound.cn ~]$ rpm -qa | grep kmod # Fedora/Red Hat
[linux@bashcommandnotfound.cn ~]$ pacman -Qs kmod # Arch Linux

如果没有安装kmod软件包,可以使用以下命令来安装:

[linux@bashcommandnotfound.cn ~]$ sudo apt install kmod # Debian/Ubuntu
[linux@bashcommandnotfound.cn ~]$ sudo yum install kmod # Fedora/Red Hat
[linux@bashcommandnotfound.cn ~]$ sudo pacman -S kmod # Arch Linux

Linux rmmod命令的基本语法

rmmod命令的基本语法如下:

rmmod [选项] 模块名...

其中,选项可以是以下几种:

-f, --force:强制卸载一个模块,即使它正在被使用或者不支持卸载,这个选项非常危险,可能会导致系统崩溃,只有在内核编译时设置了CONFIG_MODULE_FORCE_UNLOAD选项才有效。

-w, --wait:隔离一个模块,并等待直到它不再被使用,然后再卸载它,这个选项可以避免因为模块被占用而无法卸载的情况。

-s, --syslog:将错误信息发送到系统日志,而不是标准错误输出。

-v, --verbose:显示详细的信息,通常rmmod只在出错时才输出信息。

-V, --version:显示程序的版本信息,然后退出。

Linux rmmod命令的常用选项说明

rmmod命令的常用选项有以下几个:

选项说明
-f强制卸载模块
-w等待模块不再被使用后再卸载
-v显示详细信息
-V显示版本信息

Linux rmmod命令的实例

rmmod命令的实例有以下几个:

如何卸载一个模块

如果要卸载一个模块,只需要指定模块的名称即可,例如,如果要卸载bluetooth模块,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo rmmod bluetooth

如何卸载多个模块

如果要一次卸载多个模块,可以在命令后面依次指定模块的名称,用空格分隔,例如,如果要卸载bluetooth和usb_storage模块,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo rmmod bluetooth usb_storage

如何查看已加载的模块

如果要查看系统中已经加载的模块,可以使用lsmod命令,它会显示模块的名称,大小,引用计数和依赖的模块,例如:

[linux@bashcommandnotfound.cn ~]$ lsmod
Module                  Size  Used by
usb_storage            77824  1 uas
uas                    28672  0
bluetooth             647168  12 btrtl,btintel,btbcm,bnep,btusb,rfcomm
ecdh_generic           16384  1 bluetooth
rfkill                 28672  4 bluetooth,cfg80211
fuse                  139264  3
overlay               135168  0
nls_utf8               16384  1
isofs                  49152  1
loop                   40960  2
...

如何查看模块的信息

如果要查看一个模块的详细信息,可以使用modinfo命令,它会显示模块的文件名,版本,作者,描述,参数,依赖,别名,许可证等信息,例如:

[linux@bashcommandnotfound.cn ~]$ modinfo bluetooth
filename:       /lib/modules/5.10.0-9-amd64/kernel/net/bluetooth/bluetooth.ko
alias:          net-pf-31
version:        2.22
description:    Bluetooth Core ver 2.22
author:         Marcel Holtmann <marcel@holtmann.org>
license:        GPL
srcversion:     7E4F0A9C6B9E9D8F8F0B7E3
depends:        rfkill,ecdh_generic
intree:         Y
name:           bluetooth
vermagic:       5.10.0-9-amd64 SMP mod_unload modversions
sig_id:         PKCS#7
signer:         Debian Secure Boot CA
sig_key:        02:8C:2F:32:9E:92:58:1E:26:6B:13:5C:8E:0C:59:31:9C:56:C5:69
sig_hashalgo:   sha256
signature:      1F:AB:BC:0D:02:36:FF:03:55:20:4C:41:28:6A:97:8F:0C:CA:34:
		6E:87:4B:17:2E:2F:5C:55:BF:4A:5A:24:25:79:EB:23:26:28:FE:
...

Linux rmmod命令的高级技巧

rmmod命令有一些高级技巧,可以让你更方便地管理模块,例如:

如何查看模块的参数

如果要查看一个模块的参数,可以使用modinfo -p命令,它会显示模块的名称和参数的名称,类型,描述等信息,例如:

[linux@bashcommandnotfound.cn ~]$ modinfo -p bluetooth
bluetooth:Bluetooth Core ver 2.22
disable_ertm:Disable enhanced retransmission mode (bool)
disable_esco:Disable eSCO connection creation (bool)
enable_autosuspend:Enable USB autosuspend by default (bool)
idle_timeout:Set idle timeout (in seconds) of device (uint)
...

如何修改模块的参数

如果要修改一个模块的参数,可以使用modprobe命令,它会先卸载模块,然后重新加载模块,并传递参数给模块,例如,如果要修改bluetooth模块的disable_ertm参数为1,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo modprobe -r bluetooth
[linux@bashcommandnotfound.cn ~]$ sudo modprobe bluetooth disable_ertm=1

如何永久修改模块的参数

如果要永久修改一个模块的参数,可以在/etc/modprobe.d目录下创建一个以.conf结尾的文件,然后在文件中写入模块的名称和参数,例如,如果要永久修改bluetooth模块的disable_ertm参数为1,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ sudo echo "options bluetooth disable_ertm=1" > /etc/modprobe.d/bluetooth.conf

Linux rmmod命令的注意事项

rmmod命令有一些注意事项,需要你在使用时注意,例如:

  • 不要随意卸载模块,可能会导致系统不稳定或者丢失功能,只有在确定模块不再需要或者有问题时才卸载模块。
  • 不要使用-f选项强制卸载模块,除非你知道你在做什么,这个选项可能会导致系统崩溃或者数据丢失,只有在内核支持并且模块无法正常卸载时才使用这个选项。
  • 如果你在使用rmmod命令时遇到了bash: rmmod: command not found的错误,说明你的系统没有安装kmod软件包,你需要先安装kmod软件包,然后再使用rmmod命令。
0

评论区