皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

Linus Torvalds 停用旧的 Linux Kconfig 选项以解决烦人的内核日志垃圾信息

Linus Torvalds 停用旧的 Linux Kconfig 选项以解决烦人的内核日志垃圾信息

在昨日发布的 Linux 7.0-rc1 版本之后,Linus Torvalds 编写并合并了一个补丁,以移除 Linux 内核的 WARN_ALL_UNSEEDED_RANDOM Kconfig 选项。尽管该选项的添加是出于良好的意图,但在某些系统上,它可能会导致大量不必要的内核日志信息。

WARN_ALL_UNSEEDED_RANDOM 选项多年来一直是 Linux 内核的一部分,启用它将在内核中使用未播种的随机数时提供警告。为了帮助识别在系统能够安全使用 RNG 之前发生的随机数生成使用情况,这个选项很久以前就被添加进来,以帮助内核代码识别此类未播种随机数的使用。但由于某些 CPU 在完全播种的 CRNG 上的限制,WARN_ALL_UNSEEDED_RANDOM 可能会变成无尽的垃圾信息流。在遇到一个错误报告,其中内核日志大部分都是关于未播种随机数的信息,并因此丢失了一些初始启动日志后,Torvalds 感到足够了,并移除了这个选项。

Linus Torvalds 在此补丁中解释了移除 WARN_ALL_UNSEEDED_RANDOM 选项的原因:

“这个配置选项历史悠久 – 它曾经是 random.c 的一个内部调试选项(当时称为 DEBUG_RANDOM_BOOT),然后被重命名并作为一个配置选项暴露出来,命名为 CONFIG_WARN_UNSEEDED_RANDOM,然后进一步被重命名为当前的 CONFIG_WARN_ALL_UNSEEDED_RANDOM。”

这一切都是出于最好的 intentions:限制速率的报告会报告一些情况,但如果你想要查看所有 gory details,你会启用这个 “ALL” 选项。

然而,事实证明——也许并不令人意外——当人们不关心并修复最初的限制速率的情况时,他们当然也不关心任何其他情况,因此警告所有这些情况实际上并没有帮助任何事。

非限制速率的报告会导致问题,其中善意的人会启用调试选项,但无人关心的消息泛滥会掩盖实际真实信息,当事情出错时。

我刚收到一个内核错误报告(与随机性无关),其中三分之二的截断 dmesg 只是

random: 从 __get_random_u32_below+0x10/0x70 调用 get_random_u32,crng_init=0

并且在过程中,早期启动消息已经丢失(除了使那些尚未丢失的消息更难阅读)。

对于关心这些事情的假设开发者(如果存在的话),正确的方法几乎肯定是使用启动时间跟踪。这提供了获取调用图等选项,这很可能是解决任何问题的要求。

参见 Documentation/trace/boottime-trace.rst 以获取该选项。

如果我们出于某种原因确实想要重新引入这些实际打印,那么它将需要具有一些唯一性过滤,而不是这种“全部打印”的模式。”

有道理,感谢这些相当烦人的内核日志消息将随着此选项的移除而消失。

除了今天移除此选项外,在标记 Linux 7.0-rc1 版本之前的那周末,Torvalds 还进行了一些编码工作,引入了 default_gfp() 辅助宏,并调整了现有的内核代码以使用它。

转自 Linus Torvalds Drops Old Linux Kconfig Option To Address Tiresome Kernel Log Spam – Phoronix

已有 0 条评论
已有 0 条评论
-->