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。在这种情况下,我们必须手动查找相关模块并需要加载它们以解决错误。