我在 Android 上加载内核模块时遇到问题,内核是从 64 位 linux 机器上交叉编译的。内核启动正常,它只是不会加载任何模块(甚至 bcm4329.ko 用于 wifi)
在恢复中使用 CWM“从 zip 安装”功能将内核和模块刷新到设备 (HTC Desire) 上。
root@android:/data # uname -a Linux localhost 2.6.38.8-dtbaker2-ics+ #3 PREEMPT Sun May 5 18:50:10 EST 2013 armv7l GNU/Linux
尝试手动加载模块:
root@android:/system/lib/modules/dtbaker2-ics # ls -l -rw-rw-rw- 根根 287308 2013-05-05 08:50 bcm4329.ko root@android:/system/lib/modules/dtbaker2-ics # depmod -a root@android:/system/lib/modules/dtbaker2-ics # modprobe bcm4329 modprobe:“dtbaker2-ics/bcm4329.ko”:模块中的未知符号或无效参数 root@android:/system/lib/modules/dtbaker2-ics # insmod bcm4329.ko insmod: init_module 'bcm4329.ko' 失败(没有这样的文件或目录) root@android:/system/lib/modules/dtbaker2-ics # modinfo bcm4329.ko 文件名:bcm4329.ko 许可证:GPL v2 别名:sdio:c*v02D0d4319* 别名:sdio:c*v02D0d4329* 别名:sdio:c*v02D0d0493* 别名:sdio:c*v02D0d0492* 别名:sdio:c*v02D0d0000* 要看: vermagic:2.6.38.8-dtbaker2-ics+ 抢占 mod_unload ARMv7 参数:dhd_oob_gpio_num:DHD oob gpio 编号 parm:clockoverride:SDIO 卡时钟覆盖
modprobe 或 insmod 后的 dmesg 输出:
[1525.047424] bcm4329:未知符号_GLOBAL_OFFSET_TABLE_(错误0)
我自定义构建的内核的 /proc/config.gz 输出与全新安装此 ICS ROM 的输出相同(日期除外)。
一些论坛帖子提到了 SLAB/SLUB 和模块加载问题,所以我什至尝试使用 SLUB 选项 (dtbaker2-ics) 重建初始 SLAB 内核 (dtbaker-ics) 并且存在相同的问题。
这可能是 64 位交叉编译问题吗?内核工作正常但未加载模块是否很奇怪?