.ko 加载报错 “unknown symbol in module or invalid parameter” 排查解决方法

.ko 加载报错 “unknown symbol in module or invalid parameter” 排查解决方法

问题来源

今天参照Sigmastar的文档,修改config重新编译kernel,打开板上RNDIS虚拟网口。

按照步骤重编后,在demo.sh加入insmod指令,按顺序在启动时加载相关ko模块,结果系统重启时出现如下报错:

image-20221117143615364

猜想问题的原因应该是前置模块未加载,进行排查,最终得出了遇到相关问题的解决方法。

解决方法

使用dmesg命令输出缓冲区的系统启动信息,了解未成功加载的根源:

.ko 加载报错 “unknown symbol in module or invalid parameter” 排查解决方法_第1张图片

可以看到,是由于缺乏一系列前置符号量导致该错误的。

我们在宿主机找寻这些符号量是从哪些模块export出来的,进入内核编译kernel目录下查询:

grep -nr "usb_interface_id"

查询grep的输出,最终找到了来源是libcomposite.ko这个模块:

image-20221117144555681

我们在板上系统加载该ko文件,再加载usb_f_ecm.ko模块,不再报错,说明依赖问题得到了解决:

image-20221117145024404

你可能感兴趣的:(Linux学习,linux,运维,服务器)