在内核树上执行“ make oldconfig”时自动回答默认值


36

在基于先前的配置构建新内核时,是否有一种方法可以自动执行该make oldconfig过程,以便将新选项设置为其默认值?

编辑:我的意思是,当在较新的内核上使用.config(从/boot/config-*/proc/config.gz)时,该make oldconfig过程将询问您是否要启用旧内核中不可用的选项。您可以回答Y / n / m或按Enter接受默认值。我想在没有用户交互的情况下自动接受默认值。


@jscott这只会对第一个问题“按回车”,而不是全部。您可以使用'yes'命令以非常规方式打印字符串。
洛朗·父母

Answers:


37

使用命令:

yes "" | make oldconfig

'yes'命令重复输出包含所有指定字符串的行,默认情况下为'y'。

因此,您可以使用它简单地“按Enter”,这将导致使用“ make oldconfig”命令的默认值。


啊,我不知道'yes'命令可以输出任何字符串。谢谢!
Jean-Francois Chevrette

3
这是惊人的。
伊万X

1
答案是一个更好的主意serverfault.com/a/538150/18822
Evan Carroll

56
make olddefconfig

是你想要的。从帮助(make help在内核源目录中)

olddefconfig-与silentoldconfig相同,但将新符号设置为其默认值


我一直在寻找类似的东西...非常感谢!
Jafar Kofahi 2014年

这是哪个版本的Linux?只是好奇。我当前正在处理旧版本(3.0),但尚未安装。
clacke

1
这应该是正确的答案。
suprjami

0

是。它存储在源目录顶层的“ .config”中。

此外,如果使用发行版内核,则某些发行版(如RedHat)会将其存储在/ boot / config-$(uname -r)中。(内核版本)[1]

最后,如果您在运行的内核中进行编译,则可以在/proc/config.gz中找到它。我忘记了哪个版本引入了此选项。

[1]这些选项:

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y 

编辑

检出/usr/src/linux/kernel/Documentation/kbuild/kconfig.txt(或适当的路径)。您可以使用他们的一些建议来编写解决方案的脚本。我将结合使用脚本和textutils来完成您描述的内容。

编辑2

另外,这是一个坏主意。如果您的环境特有的可选硬件支持发生了变化但不是默认设置,该怎么办?如果发生不利影响的更改怎么办?这确实应该是交互式的。您可以进行配置并使其余部分自动化。

“ makesilentoldconfig”稍微冗长一些,可能会有所帮助。它仍然是交互式的。


我不是那个意思。我在问题中添加了更多详细信息,以解释我想要实现的目标。
Jean-Francois Chevrette

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.