modprobe 和 insmod 是Linux系统中用于装载内核模块的两个不同的命令,它们各自有不同的用途和特点:
这篇博客给我思路:博客园。
insmod
-
手动装载单个内核模块,只用于装载一个模块,并不支持自动解决依赖关系。
-
如果装载一个模块需要依赖其他模块,insmod 可能无法自行装载这些依赖模块。
-
insmod 命令在装载模块时可以指定模块参数。
modprobe
-
modprobe 是 insmod 的增强版。
-
modprobe 也可以处理模块之间的依赖关系;如果所需加载的模块需要其他模块,modprobe 会将它们一并加载。前提是模块被安装之后已经运行了 depmod -a 命令,生成了/lib/modules/uname -r目录下的modules.dep文件中的模块列表,这个文件中有的模块modprobe会正确加载,否则就会出错。
我遇到的问题:原本文件系统使用的6.1.22的内核,后来我把内核换成了6.1.55的,板子能起来,但是总是modprobe运行时找不到,看了一篇博客园的文章,然后我执行depmod -a <6.1.55内核版本>,发现报错,后来了解到depmod与文件系统的启动有关,然后我把原来位于下图中6.1.22中module前缀的文件拷贝到了6.1.55目录中,发现depmod -a <6.1.55内核版本>就可以执行成功了。