.ko 加载报错 “unknown symbol in module or invalid parameter” 排查解决方法
问题来源
今天参照Sigmastar的文档,修改config重新编译kernel,打开板上RNDIS虚拟网口。
按照步骤重编后,在demo.sh加入insmod
指令,按顺序在启动时加载相关ko模块,结果系统重启时出现如下报错:
猜想问题的原因应该是前置模块未加载,进行排查,最终得出了遇到相关问题的解决方法。
解决方法
使用dmesg
命令输出缓冲区的系统启动信息,了解未成功加载的根源:
可以看到,是由于缺乏一系列前置符号量导致该错误的。
我们在宿主机找寻这些符号量是从哪些模块export出来的,进入内核编译kernel目录下查询:
grep -nr "usb_interface_id"
查询grep的输出,最终找到了来源是libcomposite.ko
这个模块:
我们在板上系统加载该ko文件,再加载usb_f_ecm.ko
模块,不再报错,说明依赖问题得到了解决: