次要内核更新了运行自定义内核构建的人员的适用性

次要内核更新了运行自定义内核构建的人员的适用性

想象一下情况。

您正在运行一个自定义内核,该内核是您使用自己的.config.发布了一个新的小更新,假设5.16.16是昨天发布的,而您已经在运行5.16.15.

你如何确定一定其中5.16.16包含的更改实际上影响你的设置?您应该编译并重新启动它,还是它对您的更改为零并且您可以安全地跳过它?

我在想这个:

  • 应用补丁
  • 将内核版本恢复到您已经运行的版本
  • 构建内核并将其安装到临时目录中
  • 二进制比较结果文件

这会不行。模块可能匹配(我什至不完全确定),但vmlinuz会有所不同,因为它包含构建日期/时间以及标识内核已构建次数的数字,即 Linux localhost.localdomain 5.16.15 #1 SMP PREEMPT Thu Mar 17 11:20:15 2022 x86_64 x86_64 x86_64 GNU/Linux- 你可以看到#1.

必须以某种方式跳过这一点。

换句话说,我正在寻找一个可重现的内核构建,它忽略任何局部变量。

燕尾服制作 但我不知道如何使用我的自定义 .config,仅此而已。

答案1

我不知道有什么简单的方法来获得可重现的内核构建,它可以告诉您在这里需要了解的内容。

然而,内核构建现在非常擅长仅重建实际需要重建的文件,因此您可以使用它来很好地指示凹凸对您的相关性:

$ git checkout v5.16.14
$ make bzImage modules
$ md5sum $(find . -name \*.o | sort) > v5.16.14.sums
$ git checkout v5.16.15
$ make bzImage modules
$ md5sum $(find . -name \*.o | sort) > v5.16.15.sums

(由于内核中的文件命名限制,乐观地使用find和以上是可行的。)sort

如果这显示除vmlinux.okallsyms文件之外的目标文件中的更改,您可以调查相应源文件中的更改。

考虑到大多数稳定点版本中的流失量,这对于没有什么在您的构建中进行更改的源代码中。使用 时make allnoconfig,最小的 x86-64 内核会在 5.16.14 和 5.16.15 之间显示 25 个更改的目标文件。

相关内容