从menuconfig的角度比较两个内核配置文件?

从menuconfig的角度比较两个内核配置文件?

我遇到的情况是,我有两个内核配置文件(对于相同的内核源)。它们都具有我需要的部分功能(其中一个,USB 工作正常,另一个,第二个 I2C)。

我知道,从menuconfig的角度来看,这两个配置文件之间的差异仅包括几个选定的选项。 (但是不知道是哪一个)

但是,当手动比较配置文件(两个 .config 文件之间的融合)时,差异并不容易识别。我尝试过手动合并它们,但没有成功。我确信我最终会成功,但相信如果以菜单配置中显示的方式比较文件,这个过程会更加轻松。

这可以实现吗?如果可以,如何实现?

答案1

尝试使用scripts/diffconfig来自 Linux 内核源代码树。

用法:

diffconfig config-a config-b

显示相对于 config-a 删除、修改和添加到 config-b 文件的行列表。

答案2

内核源码中有一个脚本;

脚本/kconfig/merge_config.sh

它将采用 2 个内核配置作为参数 - 它将把第二个内核配置合并到第一个内核配置之上。第二个配置中的任何内容都会覆盖第一个配置 - 即使它是像“# CONFIG_ is not set”这样的行

http://processors.wiki.ti.com/index.php/Quick_start_with_3.14_linux

答案3

如果这两个文件是由 生成的make menuconfig,它们将具有相同顺序的选项,因此一个简单的diff(通过 Meld 或您喜欢的任何前端)将给出可用的结果。

如果忽略注释行,您可能会得到更具可读性的内容:

diff -I '^#' old.config new.config

如果由于某种原因文件的顺序不同,您可以对它们进行排序。这样做的缺点是相关选项相距甚远。再次,删除评论。使用comm剥离公共线。

comm -3 <(<old.config grep '^[^#]' | sort) <(<new.config grep '^[^#]' | sort)

答案4

用于kdiff3比较两个配置。

如果有人想要将 .config(当前配置)文件与内核树中的某些默认配置进行比较,请首先从当前配置导出 defconfig:

make savedefconfig

这将导出 defconfig 文件,可以轻松地将其与任何其他默认配置文件进行比较。

相关内容