Linux 内核 defconfig 选项不在使用 BuildRoot 的结果 .config 中

Linux kernel defconfig options not in resulting .config using BuildRoot

我正在通过 BuildRoot 为 arm 目标构建内核版本 2.6.39.4。

我正在使用自定义 defconfig 文件,我在其中添加了以下 3 个选项:

CONFIG_WIRELESS=y
CONFIG_WEXT_PRIV=y
CONFIG_WIRELESS_EXT=y

在生成的内核 .config 文件中,我在添加到 defconfig 的 3 个选项中看到的唯一选项是 CONFIG_WIRELESS=y

这正常吗?我知道一些内核配置选项是 "hidden",但这会阻止它们出现在内核的最终 .config 中吗?

WEST_PRIVWIRELESS_EXT都是盲选项(即没有提示,在menuconfig/xconfig中不可见)。
因此,您不能简单地在 .config(或 defconfig)文件中设置它们的值。
它们仅在另一个选项 select 时启用。
所以你必须启用一些可见的相关选项,然后会自动 select WEXT_PRIVWIRELESS_EXT.

我遇到了同样的问题,我通过设置 CONFIG_HOSTAP=y 解决了它。此选项也会导致设置以下选项:

CONFIG_WIRELESS=y
CONFIG_WIRELESS_EXT=y
CONFIG_WEXT_CORE=y
CONFIG_WEXT_PROC=y
CONFIG_WEXT_SPY=y
CONFIG_WEXT_PRIV=y

CONFIG_WLAN=y

CONFIG_LIB80211=y
CONFIG_LIB80211_CRYPT_WEP=y
CONFIG_LIB80211_CRYPT_CCMP=y
CONFIG_LIB80211_CRYPT_TKIP=y

我已经验证仅在 defconfig 中设置 CONFIG_HOSTAP=y 确实会导致在使用 buildroot 时在 .config 中启用上述选项。

以下是针对某些内核版本的解决方案: https://lkml.org/lkml/2019/9/6/787

此补丁添加了选择 wext_* 配置的父级。 稍后你需要去你的板配置即: arch/arm/configs/imx_v7_android_defconfig 并添加行: CONFIG_WIRELESS_ALLCONFIG=y

然后重新编译内核,即:在 Android 上你做: 制作-j32内核图像