如何为特定内核版魔术构建内核和内核模块?

问题描述 投票:0回答:1

我需要构建内核以获得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-kernel arm kernel-module
1个回答
1
投票

有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的版本字符串打印是一样的。

© www.soinside.com 2019 - 2024. All rights reserved.