当前位置: 首页>>技术教程>>正文


kernel – insmod和modprobe有什么区别?

, ,

问题描述

insmod和modprobe之间有什么区别吗?

最佳回答

根据man insmod

Most users will want to use modprobe instead, which is more clever and can handle module dependencies.

次佳回答

modprobe/lib/modules/$(uname -r)/modules.dep.bin读取模块(如果其他文件不可用,则不带.bin后缀)。从同一个文件中加载依赖项。

modprobe接受/lib/modules/$(uname -r)中的.ko文件的名称(例如,文件dkms/nvidia-current.konvidia-current)和别名(modules.alias.bin)。内置(modules.alias.bin)也可以识别,但是由于默认情况下加载了这些模块,因此对此类模块进行调制探测没有意义。

另一方面,insmod接受文件路径。该模块不必驻留在/lib/modules/$(uname -r)中,但是不会自动加载依赖项。这是modprobe用于加载模块的较低程序。

与模块相关的其他程序是rmmodmodinfo

rmmod/proc/modules中删除基于该名称的内核名称。此名称不必与传递给modprobe的名称相同(对于nvidia-current文件,例如,这是nvidia)。

modinfo接受文件名,或/lib/modules/$(uname -r)中不带.ko后缀的文件名。

第三种回答

modprobe是一个智能命令,它在加载模块时查找依赖项。假设,如果我加载了一个模块,该模块具有在其他模块中定义的符号(此模块路径在主模块内部给出)。因此,modprobe加载主模块和从属模块。

但是,如果使用insmod,则不会加载依赖项,因此会产生类似于Unresolved symbols的编译错误。在这种情况下,我们必须手动查找相关模块并需要加载它们以解决错误。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/8595.html,未经允许,请勿转载。