Linux 6.10 引入了一个新的 DRM Panic 处理程序基础设施,以便于在出现内核致命错误 (Panic),或者 VT 支持可能被禁用的情况下显示相关信息。
这项功能类似于 Windows 的蓝屏死机,此前我们也报道了 Red Hat 工程师创建的 Linux 版本蓝屏死机界面。
有人抱怨这与 Windows 的蓝屏过于相似。Javier 表示这都是开源的,因此可以根据自己的喜好进行定制,于是他转身就拿出了“黑屏死机界面” (Black Screen Of Death):
近日,Red Hat 的另一位内核开发者 Jocelyn Falempe 提交了新补丁,用于在 DRM Panic 界面中显示错误消息二维码。
Jocelyn Falempe 介绍称:
该系列补丁添加了一个新的"panic"界面,将 kmsg 数据嵌入二维码中。二维码的主要优势在于可以将调试数据复制/粘贴到错误报告中。
QR-code 编码器是用 rust 编写的,与 drm_panic 非常相关。原因是它是在 panic 处理程序中调用的,因此不能分配内存或使用锁定。
rust 代码使用了一些 rust 核心 API,只提供了两个 C 语言入口。
用 rust 实现这项功能没有什么特别的原因,我只是想学习一下 rust,看看它是否能在内核中工作。
下图是带二维码的 Linux Panic 错误信息界面:
由于内核错误信息通常都比较冗长,尤其是在包含堆栈跟踪的情况下,有时甚至无法在屏幕内显示内容。上述补丁将内核错误信息简化为二维码,可以方便用户通过智能手机获取错误信息,以便日后分析或附加到错误报告等。