Linux 内核不断覆盖我的 .config / 删除更改

Linux 内核不断覆盖我的 .config / 删除更改

我正在尝试在 BeagleBone black wireless 上构建自定义 ARM 内核。我正在使用这个内核作为开始

我复制了当前.config文件(make localmodconfig)并手动编辑它以添加对内置 WLAN 模块的支持(从那里)。

当我运行make uImage或其他目标时,总是会提示我问题。回答后,内容.config被覆盖,一些更改消失了。我也尝试过,make olddefconfig结果大致相同,但没有问题。

所做的更改:

CONFIG_WLAN=y
CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WL12XX_PLATFORM_DATA=y

CONFIG_KEYS=y
CONFIG_SECURITY=y
CONFIG_CRYPTO=y

CONFIG_CRYPTO_ARC4=y
CONFIG_CRYPTO_ECB=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_MICHAEL_MIC=y
CONFIG_CRYPTO_RNG=y
CONFIG_CRYPTO_AEAD=y
CONFIG_CRYPTO_CCM=y
CONFIG_CRYPTO_GCM=y

CONFIG_RFKILL=y

CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_CRC7=y

# The following are needed for soft AP
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_NF_CONNTRACK=y
CONFIG_NETFILTER_XTABLES=y
CONFIG_NF_DEFRAG_IPV4=y
CONFIG_NF_CONNTRACK_IPV4=y
CONFIG_NF_CONNTRACK_PROC_COMPAT=y
CONFIG_IP_NF_IPTABLES=y
CONFIG_IP_NF_FILTER=y
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_NF_NAT=y
CONFIG_NF_NAT_NEEDED=y
CONFIG_IP_NF_TARGET_MASQUERADE=y

CONFIG_INPUT_UINPUT=y

# Enable Ethernet-WLAN Bridge
CONFIG_NETFILTER=y
CONFIG_NETFILTER_ADVANCED=y
CONFIG_BRIDGE_NETFILTER=y
CONFIG_STP=y
CONFIG_BRIDGE=y
CONFIG_BRIDGE_IGMP_SNOOPING=y
CONFIG_LLC=y
CONFIG_INPUT_UINPUT=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
CONFIG_NLATTR=y
CONFIG_AVERAGE=y

我该如何跳过/避免这种情况?我需要不同的内核吗?或者做其他事情?感谢您的任何提示。

答案1

Linux 内核不断覆盖我的 .config / 删除更改

这表明你可能没有有效的.配置文件来构建内核。
看来你没有遵循你提到的指南:

It is often easiest to start with a base default configuration and then customize it for you use case if needed.

如果你真的使用了“基本默认配置“(例如参考这个答案的后半部分)而不是一个谜”当前的.配置文件“,那么您大概就不会遇到这样的问题。


我复制了当前的 .config 文件(make localmodconfig)并手动编辑它以添加对内置 Wlan 模块的支持

不,这不是配置 Linux 内核的正确方法。
使用.配置来自较旧内核版本的文件可能具有已弃用的配置名称,如果您不确定自己在做什么,则应避免使用。
否则,“如果你想以最少的工作量将现有配置升级到新版本,请使用“make oldconfig”,它只会询问你新问题的答案“(引自 Linux 内核 README 文件)。

除非你真的知道自己在做什么,否则直接编辑.配置文件可能会导致缺少依赖和必要的配置选项。


我是否需要不同的内核?或者做其他事情?

您已选择使用主线内核,它没有专门针对 Beaglebone Black SBC 的 defconfig 文件。
您可以从 TI AM335x 主板的通用版本开始,然后使用am335x-骨黑.dtb设备树文件

使用 shell 命令重新开始

make mrproper 

或者

make distclean  

验证你的工具链(交叉编译器等)是否在你的 PATH 中,例如

echo $PATH  

设置体系结构的环境变量:

export ARCH=arm  

根据您安装的内容设置工具链前缀的环境变量,例如

export CROSS_COMPILE=arm-linux-gnueabihf-

注意结尾的连字符。

为 TI Sitara 产品线安装通用内核配置(代替特定的 Beaglebone Black defconfig)。

make omap2plus_defconfig

使用以下方式定制内核构建恰当的配置工具:

make menuconfig

然后构建内核映像、可加载模块和设备树 blob:

make uImage
make modules
make am335x-boneblack.dtb

更多详细信息可以在 Linux 内核源代码中的 README 文件中找到。

相关内容