insmod 和 modprobe 有什么区别?

NES*_*NES 42 kernel modules modprobe

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

Lek*_*eyn 45

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

modprobe接受.ko文件名/lib/modules/$(uname -r)(例如nvidia-current文件dkms/nvidia-current.ko)和别名(modules.alias.bin)。内置 ( modules.alias.bin) 也被识别,但由于这些模块是默认加载的,因此对此类模块进行 modprobing 没有意义。

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

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

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

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


812*_*128 36

man insmod:

大多数用户会想改用 modprobe,它更聪明,可以处理模块依赖关系。

  • 啊对不起,错过了那条线。 (2认同)

小智 5

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

但是如果insmod使用,它不会加载依赖项,因此它会出现编译错误,例如Unresolved symbols. 在这种情况下,我们必须手动查找依赖模块并需要加载它们以解决错误。