【问题标题】:How to track linux kernel configuration changes?如何跟踪 linux 内核配置更改?
【发布时间】:2016-01-10 10:25:46
【问题描述】:

我正在开发一个 linux 内核模块并想跟踪我的内核 配置更改(例如启用其他模块、激活动态调试等)以供将来参考。

git add .config 感觉不对。

有更好的方法吗?

【问题讨论】:

    标签: git linux-kernel config embedded-linux kernel-module


    【解决方案1】:

    为您的板(硬件)添加新的 defconfig。

    路径:arch/arm/configs/ 用于 ARM 架构。

    您可以通过ma​​ke menuconfig -> 保存添加新的。要应用您自己的配置,只需运行 make your_board_defconfig

    【讨论】:

      【解决方案2】:

      在 Git 下拥有 .config 是个坏主意,正如您正确提到的那样(基本上是因为它在 make distclean 之后消失了,所以这个解决方案不可生产)。此外,如果您的电路板已经有 defconfig 文件,则不应创建另一个文件,这可能被视为不好的做法。

      请查看scripts/kconfig/merge_config.sh 脚本。您可以创建自己的配置文件,该文件仅包含对某些现有 defconfig 文件的更改,然后将此文件与您正在使用的一些基本 defconfig 文件合并。

      TI kernel branch 为例,他们只是用配置块和脚本创建另一个目录 (ti_config_fragments/) 以生成最终的.config 文件。

      使用merge_config.sh 脚本的另一种方法是为您的架构修改Makefile,添加一些新规则以将您的配置片段合并到现有的.config 文件中,就像为arch/x86/Makefile 中的kvmconfig 规则所做的那样.

      无论如何,主要想法是将您的配置增量保存在单独的文件中(在 arch/.../configs/ 的某个位置或全新的目录中),然后将您的配置片段与现有的 .config 文件合并(通常从一些 @987654338 生成@ 文件)。当然,您可以在 Git 下跟踪您的配置片段文件。

      【讨论】:

      • 首先,使用 .config 的任何操作都是一个坏主意。由于一个好的做法是在自己的分支中开发,因此开发人员可以将对任何现有 defconfig 的更改保留为(一组)补丁。在我们的团队中,我们正在为内部共享存储库这样做。例如,您可以查看github.com/andy-shev/linux/commits/eds
      • 是的,但是如果您想将更改发送到上游怎么办?与现有的defconfig 文件混淆也不是可生产的。那么为什么不坚持一些小的增量配置文件(“片段”),使用merge_config.sh 将其与原始defconfig 文件合并(以产生最终的.config)?
      • 唯一需要发送到上游的是当你添加一个新的板支持时,对吧?在这种情况下,最好的方式要么按照它已经完成的方式进行:要么配置的一部分(在您的术语中为“delta”)或整个defconfig。我错过了任何其他用例吗?
      • 您的开发板可以同时运行 Android 和 GNU/Linux rootfs,这需要 2 个不同的 defconfig 文件。合理的解决方案是拥有一个 defconfig 和 2 个不同的片段(适用于 Android 和 GNU/Linux)。此外,您可能想为您的板运行调试配置,这是另一个片段。在这种情况下保留 3 个不同的 defconfig 会很不方便,因为它们几乎相同。以here 为例。这正是问题作者的情况。
      • 谢谢,这正是我想要的。
      猜你喜欢
      • 1970-01-01
      • 2014-03-20
      • 2011-12-21
      • 2020-04-14
      • 2012-12-13
      • 2020-02-13
      • 2016-11-24
      • 2015-07-31
      • 2021-04-18
      相关资源
      最近更新 更多