编译自定义树内模块

编译自定义树内模块

我想重新编译其中一个 wifi 模块,即 drivers/net/wireless/realtek/rtl8xxxu/。我使用的是 ubuntu 16.04.3。

我的内核版本:

Linux fisk 4.10.0-38-generic #42~16.04.1-Ubuntu SMP Tue Oct 10 16:32:20 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

我在 linux-headers-4.10.0-38-generic 中拥有必要的标头,并且在 /usr/src/linux-source-4.10.0 中拥有 linux 源代码

如果我执行 make -j8 SUBDIRS=drivers/net/wireless/realtek/rtl8xxxu/,我可以很好地构建模块,/usr/src/linux-source-4.10.0但是 vermagic 与我的内核不匹配,因此无法加载模块:

modinfo drivers/net/wireless/realtek/rtl8xxxu//rtl8xxxu.ko | grep vermagic vermagic: 4.10.17 SMP mod_unload

结果加载时我在 dmesg 中得到:

rtl8xxxu: version magic '4.10.17 SMP mod_unload ' should be '4.10.0-38-generic SMP mod_unload '

所以我的问题是构建模块并能够将其加载到内核的正确方法是什么?

答案1

所以最终我回答了我的问题。我需要执行的命令是:

make -C /lib/modules/`uname -r`/build M=/home/foo/projects/kernel/linux-hwe-4.10.0/drivers/net/wireless/realtek/rtl8xxxu/

之后执行 modinfo 显示正确的内容并且可以插入模块:

modinfo /home/foor/projects/kernel/linux-hwe-4.10.0/drivers/net/wireless/realtek/rtl8xxxu//rtl8xxxu.ko | grep vermagic
vermagic:       4.10.0-38-generic SMP mod_unload 

相关内容