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 錯誤資訊如下(範例):
由於內核錯誤資訊通常都比較冗長,尤其是在包含堆疊跟蹤的情況下,有時甚至無法在螢幕內顯示內容。
上述修補程式將內核錯誤資訊簡化為二維碼,可以方便使用者透過智慧型手機獲取錯誤資訊,以便日後分析或附加到錯誤報告等。
延伸閱讀
Reference
https://lore.kernel.org/rust-for-linux/[email protected]/
https://fosstodon.org/@javierm/112650880236436431
END
熱門文章
-
-
-
-