当 Linux 系统发生内核恐慌(一种导致操作系统停止运行的关键系统错误)时,某些发行版会在屏幕上显示一个二维码。这个二维码通常包含一个带有特定参数的 URL,该参数通常标记为“z”,其中包含了压缩后的崩溃日志。这种机制允许开发者和用户通过移动设备或相机扫描屏幕,快速获取崩溃机器的状态。

这张图片展示了内核恐慌的物理表现,即显示二维码以供数据提取。
这些二维码中的“z”参数结构为一系列代表小端序字节的十进制数字。具体而言,数据被编码为每块 17 个十进制数字,对应 7 字节的压缩数据。通过使用名为 ZXingReader 的工具来扫描图像并解析生成的 URL,Python 脚本可以自动提取这些信息。该脚本在 URL 的查询字符串或片段中识别“z”参数,将十进制块转换为字节数组,然后使用 zlib 库来解压最终的日志。
使用本地解码脚本的一个显著优势是隐私保护。由于脚本在用户的本地机器上执行所有操作——从图像扫描到解压——崩溃日志永远不会被传输到外部服务器。这对于包含可能被捕获在内核转储中的敏感信息的系统尤为重要。要使用此方法,用户必须在系统路径中安装 Python 3 和 ZXingReader 工具,从而能够直接从崩溃屏幕的照片中生成可读的 `panic.log` 文件。虽然该脚本提供了一种处理此类数据的稳健方法,但目前尚不清楚哪些特定的 Linux 发行版或内核版本在其恐慌报告中采用这种精确的编码格式。