linux kconfig 命令行界面

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

我的目标是使用命令行更改 kbuild 配置而不弄乱依赖关系。

为此,我通过使用

.config
编辑默认的
make menuconfig
创建了一个“参考”配置。我“唯一”改变的是从 64 位更改为 32 位。

现在我采用了原始配置并应用了以下命令(从 Linux 内核根目录)

scripts/kconfig/merge_config.sh original.conf 32bit.conf

32bit.conf
的内容就是
CONFIG_64=n

将两个

.config
make menuconfig
和我的命令进行比较后,我发现
make menuconfig
的几乎所有更改也存在于另一个文件中。但只有几乎每次改变。

$ diff .config.mkmenuconfig .config.command
104d103
< # CONFIG_NO_HZ_FULL is not set
112d110
< # CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set
327d324
< # CONFIG_MPSC is not set
330d326
< # CONFIG_GENERIC_CPU is not set
345c341,342
< # CONFIG_HPET_TIMER is not set
---
> CONFIG_HPET_TIMER=y
> CONFIG_HPET_EMULATE_RTC=y

这些差异在哪里?有没有通过命令行操作 kbuild

.config
的官方方法?

linux linux-kernel makefile kernel kbuild
1个回答
0
投票

从 5.2+ Linux 内核开始,CONFIG 可以接收第二个文件

.config
并将它们自动合并到最终的
.config

但首先,关于配置文件差异的稍微相关的说明,为了显示旧的

.config
与 Linux 内核新发布的内容之间的差异,请执行:

make listnewconfig
(outputs a list of CONFIG_* that are newly added over old .config)

配置文件列表

使用 '

KCONFIG_DEFCONFIG_LIST
' shell 定义由
make
实用程序读取,其中包含文件列表,每个文件以空格分隔。

config.network
将与 Linux 内核的
Makefile
位于同一目录中。

CONFIG_BRIDGE=y
CONFIG_ARP=y
CONFIG_IP=y
CONFIG_IP6=y

config.notebook-toshiba
可能有

CONFIG_SCSI=y
CONFIG_AHCI=y
CONFIG_RTC_INTF_DEV=y

然后执行:

KCONFIG_DEFCONFIG_LIST="config.network config.notebook-toshiba" make bzImage modules

迷你配置方法

(部分基于 Rob Landley 发来的 lkml 电子邮件,回复:miniconfig)

allyesconfig
/
allmodconfig
/
allnoconfig
/
randconfig
变体还可以使用环境变量
KCONFIG_ALLCONFIG
作为包含用户需要设置为特定值的配置符号的标志或文件名。

如果使用

KCONFIG_ALLCONFIG
时没有使用文件名(其中
KCONFIG_ALLCONFIG == “”
KCONFIG_ALLCONFIG == “1”
),则 make *config 检查名为“
all{yes/mod/no/def/random}.config
”的文件(对应于所使用的 *config 命令)以查找要使用的符号值。被迫。

如果未找到此文件,它将检查名为“all.config”的文件是否包含强制值。

这使您能够创建“微型”配置 (

miniconfig
) 或仅包含您感兴趣的配置符号的自定义配置文件。然后内核配置系统生成完整的
.config
文件,包括您的 miniconfig 文件的符号。

这个“

KCONFIG_ALLCONFIG
”文件是一个配置文件,其中包含(通常是所有预设配置符号的子集)。这些变量设置仍需接受正常的依赖性检查。

示例:

KCONFIG_ALLCONFIG=custom-notebook.config make allnoconfig

或:

KCONFIG_ALLCONFIG=mini.config make allnoconfig

或:

make KCONFIG_ALLCONFIG=mini.config allnoconfig

这些示例将禁用大多数选项 (allnoconfig),但启用或禁用指定迷你配置文件中明确列出的选项。

参考

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