module - 为什么加载内核模块时缺少 CFG80211 符号?
问题描述
我已经获得了无线驱动程序,该驱动程序已集成到我的 Yocto 项目中。内核正在使用的.config
具有以下标志集:
CONFIG_CFG80211=m
这应该将内核编译CFG80211
为一个模块。但是,当我尝试MY_MODULE
使用此命令加载时:
insmod MY_MODULE.ko fw_name=mrvl/MY_MODULE.bin cfg80211_wext=0xf cal_data_cfg=none fw_serial=0
该模块无法加载:
insmod: ERROR: could not insert module MY_MODULE.ko: Unknown symbol in module
失败的原因是加载模块时CFG80211符号不存在。这可以在运行时看到dmesg
:
[ 1534.508504] sd8xxx: Unknown symbol mlan_main_process (err 0)
[ 1534.508560] sd8xxx: Unknown symbol cfg80211_sched_scan_results (err 0)
[ 1534.508704] sd8xxx: Unknown symbol cfg80211_rx_assoc_resp (err 0)
[ 1534.508847] sd8xxx: Unknown symbol cfg80211_scan_done (err 0)
[ 1534.508911] sd8xxx: Unknown symbol cfg80211_sched_scan_stopped (err 0)
[ 1534.508948] sd8xxx: Unknown symbol mlan_shutdown_fw (err 0)
[ 1534.509037] sd8xxx: Unknown symbol mlan_rx_process (err 0)
[ 1534.509064] sd8xxx: Unknown symbol cfg80211_remain_on_channel_expired (err 0)
[ 1534.509077] sd8xxx: Unknown symbol cfg80211_cac_event (err 0)
...
我尝试手动加载 CFG80211 模块,但它不在lib/modules/3.14.55-yocto-standard/kernel/net
文件夹中。这些文件夹中当前可用的模块是:
./kernel/net/wireless
./kernel/net/wireless/lib80211_crypt_tkip.ko
./kernel/net/wireless/lib80211_crypt_ccmp.ko
./kernel/net/wireless/lib80211.ko
./kernel/net/wireless/lib80211_crypt_wep.ko
为什么CFG80211
加载内核模块时缺少符号?我应该有一个可加载的 80211.ko 还是我缺少其他东西?
解决方案
Yocto 默认不提供内核模块。您可以通过添加 package.json 在映像中包含所有内核模块kernel-modules
。这通常在您的机器 conf 文件中MACHINE_EXTRA_RRECOMMENDS
或MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS
在您的机器 conf 文件中完成,因此人们可以说他们实际上不想要所有内核模块(这可能会占用大量存储空间)。
如果你想包含这个模块,它的名字可能是kernel-cfg80211
(你可以通过使用找到oe-pkgdata-util find-path cfg80211.ko
)。由于另一个模块需要它,我会将它添加到MACHINE_EXTRA_RDEPENDS
或MACHINE_ESSENTIAL_EXTRA_RDEPENDS
仍然在您的机器 conf 文件中。
您实际上无法将它添加到RDEPENDS
您的其他内核模块配方中,因为如果有人直接在内核中编译 80211 支持而不是作为模块,它会破坏您的构建。其他解决方案是RRECOMMENDS
在模块配方中使用或将其放在将内核模块包添加到映像的位置(在映像配方中或添加的任何位置)。
推荐阅读
- java - 如何对 html 字符串进行 xsl 模板匹配
- swift - 从部分中的行中的单元格中检索标签
- node.js - 如何使用 Fluent-ffmpeg 和 Node JS 在视频上添加音频
- excel - Excel公式检索两个日期之间的值
- python - Python中按附加类别划分的分面箱线图
- java - Gradle + Eclipse:在新项目中使用现有项目中的类
- android - 队列文件有时会损坏,导致在查看时出现 JSONSyntax 异常
- spring - 读取接口上定义的注解并使用注解值创建 bean 类
- java - Android Studio - 列表中的新项目未显示
- java - 在 JCheckBox 中自定义“框”