开发者为 Linux 内核的 Panic 界面“整活”:添加二维码、修改背景颜色
07-05 15:06 来源:weixin 阅读(305)

Linux 6.10 引入了一个新的 DRM Panic 处理程序基础设施,以便于在出现内核致命错误 (Panic),或者 VT 支持可能被禁用的情况下显示相关信息。

这项功能类似于 Windows 的蓝屏死机,此前我们也报道了 Red Hat 工程师 Javier Martinez Canillas 创建的 Linux 版本蓝屏死机界面。

有人抱怨这与 Windows 的蓝屏过于相似。Javier 表示这都是开源的,因此可以根据自己的喜好进行定制,于是他转身就拿出了 “黑屏死机界面” (Black Screen Of Death):

近日,Red Hat 的另一位内核工程师,同时也是 DRM Panic 贡献者——Jocelyn Falempe 提交了新补丁,用于在 DRM Panic 界面中显示错误消息二维码。

Jocelyn Falempe 介绍称:


该系列补丁添加了一个新的 "panic" 界面,将 kmsg 数据嵌入二维码中。二维码的主要优势在于可以将调试数据复制 / 粘贴到错误报告中。


QR-code 编码器采用 Rust 编写,专门用于 drm_panic。原因在于它是在 panic 处理程序中被调用,因此无法分配内存或使用锁。


该补丁的 Rust 代码使用了一些 Rust 核心 API,只提供了两个 C 语言 entry points。


用 Rust 实现这项功能没有什么特别的原因,我只是想学习一下 Rust,看看它是否能在内核中工作。


下图是修改了背景颜色,且包含二维码的 Linux Panic 错误信息界面:

详细的 Panic 错误信息如下(示例):

由于内核错误信息通常都比较冗长,尤其是在包含堆栈跟踪的情况下,有时甚至无法在屏幕内显示内容。


上述补丁将内核错误信息简化为二维码,可以方便用户通过智能手机获取错误信息,以便日后分析或附加到错误报告等。