如何跟踪Linux内核配置文件的更改?

3

我正在开发一个Linux内核模块,并希望为将来的参考记录我的内核配置更改(例如启用其他模块、激活动态调试等)。

git add .config 不是很恰当。

有没有更好的方法?

2个回答

2

为您的板子(硬件)添加新的默认配置文件。

路径:针对ARM架构,位于arch/arm/configs/。

您可以通过make menuconfig -> Save添加新的配置文件。要使用自己的配置文件,请运行make your_board_defconfig


2
在Git中使用.config不是一个好主意,正如您正确提到的那样(基本上因为它在make distclean之后就消失了,所以这个解决方案不可产品化)。此外,如果您已经有了适用于您的板子的defconfig文件,则不应创建另一个文件,因为这可能被认为是一种不良实践。
相反,请查看脚本scripts/kconfig/merge_config.sh。您可以创建自己的配置文件,其中只包含现有defconfig文件的更改,然后将您的文件与您正在使用的某些基本defconfig文件合并。
例如,查看TI内核分支,他们只是创建了另一个目录(ti_config_fragments/),其中包含配置块和生成最终.config文件的脚本。
使用merge_config.sh脚本的另一种方法是修改您架构的Makefile,添加一些新规则以将您的配置片段合并到已经存在的.config文件中,就像在arch/x86/Makefile中为kvmconfig规则所做的那样。
无论如何,主要思想是将您的配置差异保留在单独的文件中(可能在arch/.../configs/或者完全新的目录中),然后将您的配置片段与现有的.config文件(通常是从某个defconfig文件生成的)合并。当然,您可以在Git下跟踪您的配置片段文件。

首先,使用 .config 进行任何操作都是一个不好的主意。由于良好的实践是在自己的分支中进行开发,开发人员可以将更改保存为任何现有 defconfig 的补丁。我们在内部共享存储库的团队中就是这样做的。您可以查看 https://github.com/andy-shev/linux/commits/eds 作为示例。 - 0andriy
1
是的,但如果您想将更改发送到上游怎么办?修改现有的 defconfig 文件既不可产品化也不可取。那么为什么不坚持使用一些小而微的增量配置文件(“片段”),使用 merge_config.sh 将其与原始的 defconfig 文件合并(以生成最终的 .config)呢? - Sam Protsenko
唯一需要发送到上游的情况是当您添加新的板支持时,对吗?在这种情况下,最好按照已经存在的方式进行操作:要么配置部分(按您的术语称为“delta”),要么整个defconfig。我错过了其他用例吗? - 0andriy
1
您的板子可以用于运行Android和GNU/Linux rootfs,这需要两个不同的defconfig文件。逻辑解决方案是使用一个defconfig和两个不同的片段(用于Android和GNU/Linux)。此外,您可能还想要运行调试配置来调试板子,这是另一个片段。对于这种情况保持3个不同的defconfigs会很不方便,因为它们几乎相同。看看这里 作为例子。这正是提问者面临的情况。 - Sam Protsenko
谢谢,这正是我在寻找的。 - sergej

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