调试编译Linux Kernel有时会遇到这种情况, 辛辛苦苦编译了大半天却发现忘了个module. 然而Linux可插拔的module设计能够让我们单独编译单个module, 为我们节省了不少时间.
以linux-surfacepro3的cpufreq_stats为例: (linux 4.8之后cpufreq_stats不再以module形式加载)
以内核root目录为work dir
确保work dir下存在Module.symvers
, 没有的话到/lib/modules/${KERNEL}/build/Module.symvers
将kernel config复制到.config
准备工作:
make prepare
make scripts
先找到模块的位置: drivers/cpufreq
以及模块的配置参数: CONFIG_CPU_FREQ_STAT=m
在kernel根目录下编译: make CONFIG_CPU_FREQ_STAT=m M=drivers/cpufreq modules
看make的输出找到生成module的位置并复制到module目录里: sudo cp drivers/cpufreq/cpufreq_stats.ko /lib/modules/${KERNEL}/kernel/drivers/cpufreq/
最后再用insmod
或者depmod
生效即可