在使用 UEFI 介面的 Samsung 筆電上執行 Linux 會導致無法開機

絕大部分的電腦在出貨時預設搭載的作業系統都不是 Linux,不過使用者若嘗試自行安裝並執行 Linux 通常也不會對硬體造成什麼嚴重影響,頂多就是硬體不支援、無法執行而已。然而就在大約半年前,一名 Ubuntu 的使用者回報說他在一台 Samsung 的筆電上使用 UEFI 介面去啟動 Ubuntu 12.04 就造成當機、以及更嚴重的……強制關機後就再也開不了機(電源按鈕無反應)。

 

一開始他大概以為只是純粹衰到,便在保固期內送回原廠維修、更換主機板後拿回來再試一次,結果筆電又陣亡了,還是一模一樣的死法。這下他明白事有蹊蹺,於是在 Launchpad 上提報出來,竟然有為數不少的使用者也接著反應相同的狀況:

https://bugs.launchpad.net/ubuntu-cdimage/+bug/1040557/

 

在看著這些問題回報時,DR 一方面驚訝原來 Samsung 的筆電銷路那麼好……另一方面也驚訝於怎麼那麼剛好有不少的 Samsung 筆電的使用者都想要裝 Ubuntu……總而言之,就在幾天前隨著 Linux kernel 終於加入對應此問題的 patch 後,The H 網站也為整起事件撰寫了兩篇較完整的報導:

 

由於 Samsung 的筆電有部份控制設定並不經過 ACPI,所以 Samsung 在幾年前便將針對自家筆電的驅動程式提供給 Linux kernel 整合。雖然 Samsung 方面認為驅動程式沒有問題,但經過測試與驗證後,Linux kernel 的開發人員還是將問題的矛頭指向這支針對 Samsung 筆電的驅動程式。除此之外,也有開發人員發現 Samsung 筆電的韌體並不完全符合 UEFI 規範。

 

事態算是有點嚴重(弄掛不少人的筆電),並且 Samsung 對於韌體的更新也尚未提出時間表,因此最新的 Linux kernel 將在偵測到 UEFI 的情況下停用該驅動程式。這些消息並沒有特別說明停用該驅動程式會對於 Linux 在 Samsung 筆電的運作有哪些影響,但最至少造成筆電陣亡的情形將不會再發生。

 

雖然主要的問題回報是發生在 Ubuntu,但其它 Linux 發行版理當也會有類似的狀況,所以這些 Linux 發行版的 kernel 維護人員可能也會需要跟進加入相關的 patch。

 

話說回來,其實這也不是 Linux 第一次把硬體搞爆,當年的 e1000e 模組 bug 也讓不少人的 Intel 網卡死得不明不白……

 

02/14/2013 更新:

由 Matthew Garrett 所發表的 Samsung laptop bug is not Linux specific 一文中表示該問題並不限於 Linux,作者用自己編寫的程式碼在 Windows 上測試,也同樣可以造成筆電陣亡。該問題終究來說是韌體的 bug,因為 Samsung 筆電能夠使用的 UEFI 變數儲存空間低於 UEFI 標準規範,所以才會在寫入後造成錯誤而無法開機。

 

Linux kernel 的 patch 僅避免了最容易觸發錯誤的一種途徑,作者建議在 Samsung 筆電上無論是使用哪種作業系統,目前最保險的作法是停用 UEFI。

 

分類: