The Kernel Report (2023)

Linux 內核開發者、同時也是 LWN.net 網站的主編 Jonathan Corbet,在今年的歐洲開源碼大會(Open Source Summit Europe)發表了關於 Linux 內核發展的年度報告(YouTube)。通常 DR 很少會特別分享這類影片,但不知怎麼的,看到有不止一間線上媒體好像從這篇演講裡得出了蠻偏頗的新聞標題及論述(這些報導都比演講的錄影更早發佈)。使得 DR 忍不住想把影片找出來做核實,而看完的結論,真的是覺得還是直接看影片就好。演講中所報告的議題很多,本文不在此詳盡陳述。

 

其中一個段落,也就是一段恐怕是被某些報導超譯、甚至是錯誤詮釋的地方。是 Corbet 提及目前同時維護多個生命週期長達六年的穩定版 Linux 內核,被發覺是沒有必要的。根據 kernel.org 上所列的清單,當前屬於長期維護(Longterm、LTS)的內核分支有 4.14、4.19、5.4、5.10、5.15 及 6.1,都是提供六年的維護週期。因此 Corbet 做出說明,預計在這些分支陸續退役的同時,未來新納入的 LTS 分支,將會回歸到兩年左右的維護規劃。這其實是很單純的滾動式檢討,在 Linux 內核維護的管理上並不罕見。

 

而且實際上 Linux 基金會還另有一項民用基礎設施平台(Civil Infrastructure Platform,CIP)專案,為選定的內核分支提供十年的延長維護週期(Super Long Term Support,SLTS)。所以整體來看,其實在目前可見的未來,依然會有多個內核分支得到相當長期的維護。至於更完整反映出過去內核版本維護歷史的清單,則可以參考維基百科的條目

 

不過另一方面,Corbet 也再一次地在演講中探討了一項議題。在 Linux 內核的維護及修正上,如果是像諸如 RHEL 這類的企業版 Linux 這樣,並非是將所有上游內核專案所發佈的修正照單全收,而是選擇性的套用更新,那麼其實也不能說這就一定會是更加安全可靠的內核版本。舉例來說,常見的選擇性篩選,是優先針對已標註為安全性缺失的內核 Bug 進行修補。然而現實上應該要認知到,其實每一種內核 Bug 都有潛在機會,能夠進一步成為安全性缺失(功能失常、服務阻斷,或者是系統崩潰等等,實則都有可能會造成安全性的損害),只是其利用方式或許還沒有被發掘出來。所以這種選擇性的修補過程,就 Corbet 的觀點而言,並不會比照單全收更能夠及早預防風險的產生。

 

以 DR 自身的工作經驗來說,確實是可以觀察到 RHEL 在內核維護的規劃方針上,其實並不會保證其 Linux 內核一定比上游專案所發佈的版本,有著更少的安全性風險。倘若稍加留意 Red Hat 自己所發佈的資安通報,會注意到 RHEL 的 Linux 內核也可能會存在一些安全性的問題,雖然是有明確地知悉,但結論是不進行修補。至於這當中如何取捨,則顯然是基於 Red Hat 的內部決策。

 

然而 Red Hat 所採取的選擇性修補,其實某方面來說也是在應對一項血淋淋的現實,那就是新的修正也可能產生新的問題(regression)。在軟體開發的美好理想國度裡,每一項更新都應該經過了詳盡的審查及測試。但在現實上不盡然都是如此,很難做到萬無一失。一個直接可以聯想到的極端案例,是 Linux 5.19 內核曾經緊急回退了一項 Intel 顯示驅動程式的更新,原因是會造成部份系統的顯示器異常,甚至是有損壞的風險。

 

DR 自己算是能夠接受,如果平時使用的個人桌面系統,在 Linux 內核版本更新後,好像有什麼地方怪怪的,就先退回到前一個版本,同時在網路上找尋是否有相關的討論。但如果是重要的基礎設施,如伺服器或工作站系統等,那麼在內核更新後若出現問題則會是件希望盡可能避免的事情。也因此在可見的現實層面上,積極地獲取上游的內核更新(例如 Android AOSP)、或者選擇性地對更新進行篩選(例如 RHEL),兩種作法都各自有不同的可靠性及安全性意義,而且看樣子沒有哪一種是具備完全決定性的優勢。

 

分類: