我需要构建内核以获得vermagic
3.10.28-gbc1b510-33899-g9fa745e SMP preempt mod_unload modversions ARMv7
但是在通过modinfo构建和验证一些模块后,它会显示出来
3.10.28 preempt mod_unload modversions ARMv6
看起来我无法加载模块,因为不同的vermagic。如何为vermagic构建内核和模块是完全相同的?我正在使用buildroot。
我创建了这个shell脚本以准备构建
#!/bin/sh
export PATH=$PATH:/buildroot-2018.02.3/output/host/arm-buildroot-linux-gnueabi/bin:/buildroot-2018.02.3/output/host/bin:/buildroot-2018.02.3/output/host/sbin:/buildroot-2018.02.3/output/host/bin
export LD_LIBRARY_PATH=/buildroot-2018.02.3/output/host/lib
export LIBRARY_PATH=/buildroot-2018.02.3/output/host/lib
export PKG_CONFIG_PATH=/buildroot-2018.02.3/output/host/arm-buildroot-linux-gnueabi/sysroot/usr/lib/pkgconfig
exec /bin/bash
然后我进入文件夹
/buildroot-2018.02.3/output/build/linux-3.10.28/
和
make distclean
make clean
然后复制.config和
make ARCH=arm menuconfig
和
make -j9 ARCH=arm
我正在使用原始内核konfig,另外选择了一些选项来构建模块,而无需修改任何其他模块。
有linux-3.10.28 / arch / arm / Makefile文件。在这个文件中有那些定义
arch-$(CONFIG_CPU_32v7) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
我找到了一个让我更换的建议
arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
同
arch-$(CONFIG_CPU_32v6) :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
我还没有注释这两个:
tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
tune-$(CONFIG_CPU_V6K) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
我补充道
-gbc1b510-33899-g9fa745e SMP
作为kernel .config中的local_version
现在modinfo的版本字符串打印是一样的。