3

有没有办法从命令行列出运行时加载到内核中的内核模块的完整依赖关系列表?

让我稍微澄清一下我的问题。

我正在尝试做的事情:

  1. 我得到所有加载模块的列表,使用lsmod
  2. 然后通过运行循环删除/卸载当前加载的内核模块。我正在使用modprobe -r. 由于某些模块正在使用中,此步骤(显然)失败了。(我可以切换到 using rmmod -r,但不想这样做,因为它不安全并且可能使系统崩溃。)
  3. 然后我想再次加载模块。

第 2 步失败了,因为在使用modprobe -r.

有什么想法、建议或意见吗?

4

3 回答 3

5

然而 lsmod o/p 有时是不完整的。它也不总是指示依赖于给定模块的所有模块。

您在“使用者”列中的 lsmod 中看到的只是静态符号依赖项,您也可以使用modinfo.

但是,如果一段内核代码使用 (try_)module_get 对模块进行引用,则不会记录调用者。引用没有所有者(moduleA 可以将指针传递给 moduleB,然后 module_puts ..),Used by 列没有任何可记录的内容。

于 2010-11-21T13:15:40.113 回答
4

要获取将使用的模块依赖项列表modprobe(即这通常应该是完整列表,但请参阅 user502515 的答案),请使用

$ modprobe --show-depends <module>

请注意,此命令显示的信息比modinfo'depends:行更多,因为它递归地列出依赖项(即依赖项的依赖项)。它还考虑alias了 modprobe 配置文件中的命令。

测试使用:

$ modprobe -V
kmod version 14
于 2013-07-17T14:41:33.660 回答
2

man lsmod:lsmod 是一个简单的程序,它可以很好地格式化 . 文件的内容/proc/modules,显示当前加载了哪些内核模块。

编辑:另见:depmod -n

于 2010-11-01T21:25:56.273 回答