Answers:
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
)也可以识别,但是由于默认情况下会加载这些模块,因此对此类模块进行调制探测没有意义。
insmod
另一方面接受文件的路径。该模块不必驻留在中/lib/modules/$(uname -r)
,但是依赖关系不会自动加载。这是用于modprobe
加载模块的较低程序。
与模块有关的其他程序是rmmod
和modinfo
。
rmmod
从中删除基于内核名称的名称/proc/modules
。此名称不必与传递给的名称相同modprobe
(例如nvidia-current
,对于文件nvidia
)。
modinfo
接受一个文件名,或不带.ko
后缀的文件名/lib/modules/$(uname -r)
。
modprobe
是一个智能命令,它在加载模块时查找依赖项。假设,如果我加载了一个模块,该模块具有在其他模块中定义的符号(此模块路径在主模块内部给出)。因此,modprobe
加载主模块和从属模块。
但是,如果insmod
使用,它将不会加载依赖项,因此会产生类似的编译错误Unresolved symbols
。在这种情况下,我们必须手动查找相关模块并需要加载它们以解决错误。