我正在尝试在 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 文件中找到。