Linux内核构建:以非交互方式执行“make localmodconfig”

5
我希望以非交互方式运行'make localmodconfig'。尝试以下命令:

yes " " | make localmodconfig

但是出现以下错误:
Console input/output is redirected. Run 'make oldconfig' to update configuration.

make[1]: *** [scripts/kconfig/Makefile:45: localmodconfig] Error 1
make: *** [Makefile:547: localmodconfig] Error 2

我更喜欢使用localmodconfig而不是olddefconfig,因为旧的内核有3000多个模块,但只使用其中的30个。您对如何实现这一点有什么想法吗?


谢谢,我会使用这个方法。如果可能的话,请将其作为答案移动。 - webminal.org
1个回答

6

如果在你的内核源代码目录中有一些旧的.config文件,则可以执行以下操作:

$ make olddefconfig
$ make localmodconfig
  • 第一个命令将使用旧的.config文件,并为所有新选项提供默认值,使.config文件适用于您的新内核。
  • 第二个命令将禁用在您的计算机上当前未加载的所有模块,在.config(使用lsmod输出)中。
  • 由于第一个命令已经使.config文件对您的新内核有效,因此第二个命令不会询问您有关新选项的任何问题,因此您可以避免使用yes 工具。

这仍然让我有些困惑 :(. - pevik
@pevik 请您详细说明一下吗?是第一个命令还是第二个?有哪些问题?是否有公共的git存储库可以重现这个问题(或者您能否分享这样的存储库)?你能展示一下你的 lsmod.config 的输出吗?作为 make olddefconfig 的参考?那个 .config 是哪个内核版本的,你正在尝试构建哪个内核版本?基本上为了帮助您,我需要从您那里获得一些最小可复现的示例,以涵盖我上面提到的问题。 - Sam Protsenko
还没有找到原因,我可能稍后会添加MRE。在使用openSUSE配置(来自openSUSE内核包装https://kernel.opensuse.org/cgit/kernel/,其中包含一些SUSE补丁)时,有时会出现这种情况。 - pevik

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