【问题标题】:Getting names of all kernel modules used by a particular module获取特定模块使用的所有内核模块的名称
【发布时间】:2014-11-11 16:27:43
【问题描述】:

lsmod 命令的输出中,Used by 列有时没有模块使用的内核模块的名称。例如,考虑 lsmod 命令的以下部分输出:

使用的模块大小 xen_blkfront 16512 4 分机3 137007 1 jbd 54383 1 分机3 mbcache 7438 1 ext3

在上面的输出中,ext3 模块被 1 个模块使用,但它的名称不存在。同样,xen_blkfront 模块被 4 个模块使用,但这些模块没有名称。但是,jdbmbcache 模块被 ext3 模块使用。那么,有没有办法获取这些缺失的模块名称?

我需要这个,因为内核不允许我 rmmod ext3 模块说“错误:模块 ext3 正在使用中”。

【问题讨论】:

  • 您是否尝试过卸载任何使用 ext3 的文件系统 - 当然如果可能(如果它不是 root fs)?似乎内核使用它。
  • 感谢您的回复。这里我提到了 ext3 只是作为模块的一个例子来说明我的观点。我想知道是否有一种方法可以知道模块名称。

标签: linux-kernel


【解决方案1】:

“Used by”列不仅显示引用模块的数量,还显示任何内核代码引用该模块的次数。

对于文件系统和设备驱动程序,这通常发生在打开文件/设备时。

这些引用的来源未被跟踪。

【讨论】:

  • 感谢您的回复。那么,有没有办法删除这样的模块,因为到目前为止,当我尝试使用 rmmod 命令从内核卸载模块时,它给了我错误。
  • 关闭那些文件/设备。
  • 我关闭了正在使用该模块的设备,并且能够卸载该模块。感谢 CL 的帮助。
  • 知道什么可以让iptable_* 模块被引用吗?我能够卸载这些模块几次(表格不是空的),但不是现在。这次引用计数是1,而不是之前的0
  • 我的错,表中的任何规则或用户定义的链都会导致 1 个引用。也就是说,卸载 iptables 必须没有规则,也没有用户定义的链 :( 在这里我想我找到了一种重置 iptables 的简单方法。
猜你喜欢
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 2013-11-06
  • 2016-07-17
  • 1970-01-01
相关资源
最近更新 更多