递归禁用Linux内核构建中的CONFIG依赖关系

16

在配置Linux内核时,我通常从发行版的内核配置文件开始。我经常想要关闭一些条目,但有时它们是不可改变的,因为启用了依赖于它的其他CONFIG选项。

我可以手动查找它们的依赖关系,这些依赖关系通常有自己的依赖关系。如果您试图关闭像CONFIG_KALLSYMS这样的内容,检索所有依赖关系可能非常耗时。

问题:是否有一种方法可以指定要删除的CONFIG选项,并且所有依赖项将根据需要自动选择/取消选择?我查看了所有make选项和scripts目录,但没有发现可用于此的任何内容。

更新:有人回答说,在从.config文件中删除所需的CONFIG选项后,make oldconfig应该会完成工作,但那并没有起作用(他的答案随后消失了):

$ make oldconfig
scripts/kconfig/conf -o arch/x86/Kconfig
*
* Restart config...
*
*
* Configure standard kernel features (for small systems)
*
Configure standard kernel features (for small systems) (EMBEDDED) [N/y/?] n
  Load all symbols for debugging/ksymoops (KALLSYMS) [Y/?] (NEW) y
    Include all symbols in kallsyms (KALLSYMS_ALL) [Y/?] (NEW) y
    Do an extra kallsyms pass (KALLSYMS_EXTRA_PASS) [N/y/?] (NEW) 

它自动说了前两个字符"y",我正在尝试找到一种自动方式来删除它们并保持其不出现。


我认为除非EMBEDDED是y,否则您无法关闭KALLSYMS - 如果这是您的目标,可以尝试使用make oldconfig - Arthur Shipkowski
1
我将问题的核心加粗了:是否可以根据需要自动选择/取消选择所有依赖项。 - Corey Henderson
1
我想检查一下,以防你只是在尝试你的例子。看起来Kconfiglib是值得研究的东西,因为它似乎可以理解依赖关系:http://lwn.net/Articles/426013/ -- 但除此之外,我发现了有关这个问题的讨论,但没有解决方案。 - Arthur Shipkowski
看起来非常有趣。请将其添加为“答案”,而不仅仅是评论。我会在这个周末试着使用它,如果没有人给我更好的东西,并且它恰好给了我所需的,我会给你悬赏 :) - Corey Henderson
2个回答

8

对于任何可能遇到这个问题的人,Kconfiglib现在位于https://github.com/ulfalizer/Kconfiglib,并已经针对最新的Kconfig版本进行了优化和更新(Linux 3.7.0-rc8)。安装也得到了极大的简化。

更新:

Kconfiglib现在已经更新至Linux v4.0-rc3,测试套件以过度模式通过。添加了一个新的option allnoconfig_y选项(用于在make allnoconfig期间将某些符号保留为y),它会抛出错误。

很抱歉让Kconfiglib一段时间没有更新! :/

顺便说一下,如果您有任何与Kconfig相关的问题(不一定与Kconfiglib相关),请随时发布并在此处链接(或以其他方式通知我)。 Kconfig有很多晦涩的角落。


5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接