以编程方式安全地更改Linux内核配置


8

我正在编写一个脚本,该脚本必须根据输入文件自动更改许多Linux内核配置选项。
当然,最简单的方法是直接编辑.config文件,但是不建议这样做,并且可能会引起问题。
不过,我似乎找不到找到这种“正确方法”的方法。

“ make help”没有显示更改单个选项的方法,./scripts/kconfig/conf --help也没有。kernel.org上的此文件似乎也没有办法。
甚至Gentoo的Genkernel也会手动更改 .config文件。

因此,基本上:
是否存在一种安全的方法来以编程方式更改内核配置选项,并完成依赖项跟踪等?
可以手动运行Kconfig来实现吗?

Answers:


3

我首先要做的是:

make defconfig

然后将设置更改附加到.config

make olddefconfig

这应该“修复”配置中引入的任何不一致之处。YMMV,因为它可能无法按照您期望的方式修复它们。


感谢您的回复!我已经考虑过这样做,但是就像您说的那样,YMMV。如果存在两个冲突的选项,则不会告诉您它将解决哪个问题。
SharkWipf '16

@SharkWipf在任何情况下,我都希望结果是确定性的。因此,如果结果不是您想要的,只需添加另一条语句以关闭发生冲突的事物,然后重复此过程直至起作用。
DepressedDaniel

是的,但是它可能会以我无法检查的方式与其他选项混淆,并且由于我最终希望将此脚本放在github上,我希望它尽可能稳定和可靠。通常,此脚本将用于修改现有的用户自定义内核配置,而不是生成新的内核配置,因此很难以这种方式使其可靠地工作。
SharkWipf '16

@SharkWipf好吧,听起来您要实现的目标需要某种AI;)常规解决方案是提供一个有效的默认值,并让人们敢于自定义。
DepressedDaniel

如果我想完全手动完成,是的。但是我希望有某种方法可以使用Kconfig在menuconfig中模拟“打勾”,因为听起来这应该是一件事情。基本上,我想做的是允许用户从Gentoo Wiki 复制内核要求,在可能的情况下(足够容易)将其解析为正确的配置值,然后相应地更新配置(在经过用户的审核之后)。因此在这种情况下没有“默认值”。
SharkWipf

0

我会去买.config文件的补丁。您需要准备的步骤是

cp .config .config.bck
make menuconfig # Here change all that you need to fit your needs
diff -u .config.bck .config > myconfig.$(kern_vers).patch

然后,在脚本中添加此行

patch .config myconfig.$(kern_vers).patch
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.