穩定的內核版本和更新

Linux 核心穩定版本模型始於 2005 年,當時確定現有的核心開發模型(每 2-3 個月發布一個新版本)無法滿足大多數使用者的需求。用戶希望在這 2-3 個月內修復錯誤,而 Linux 發行版發現如果沒有核心社群的回饋,很難讓核心保持最新狀態。總的來說,保持各個核心安全並修復最新錯誤的嘗試是由許多不同的個人付出的巨大且令人困惑的努力。

穩定核心版本直接基於 Linus Torvalds 的版本,並且每週左右發布一次,具體取決於各種外部因素(一年中的時間、可用補丁、維護人員工作量等)。穩定版本的編號從核心版本的編號開始,並在其末尾添加一個附加編號。例如,Linus 發布了 4.4 內核,那麼基於該內核的穩定內核版本編號為 4.4.1、4.4.2、4.4.3 等。當引用穩定的核心版本樹時,該序列通常會縮短為數字 4.4.y。每個穩定的核心版本樹均由單一核心開發人員維護,該開發人員負責挑選該版本所需的修補程式並管理審查/發布過程。

在當前開發週期內保持穩定的核心。 Linus 發布新核心後,先前的穩定核心版本樹將停止,使用者必須遷移到較新發布的核心。

長期穩定的內核

經過一年的新穩定發布過程,我們確定許多不同的 Linux 用戶希望核心的支援時間超過幾個月。作為回應,創建了長期支援(LTS) 內核版本,並於2006 年發布了第一個LTS 內核(2.6.16)。從那時起,每年都會選擇一次新的LTS 內核,內核社群會將該內核維護一段時間。至少2年。

在撰寫本文時,LTS 核心為 4.4.y、4.9.y、4.14.y、4.19.y、5.4.y 和 5.10.y 版本。每週發布一個新核心。由於某些用戶和發行版的需求,核心開發人員以較慢的發布週期維護了一些額外的舊核心。有關所有長期穩定內核、負責人以及維護時間的信息,可以在kernel.org 發布頁面上找到。

LTS 核心每天平均發布 6-8 個補丁,而正常的穩定核心版本每天包含 10-15 個補丁。考慮到相應開發內核版本的當前時間和其他外部變量,每個版本的補丁數量都會有所波動。 LTS 核心越舊,適用於它的補丁就越少,因為最近的許多錯誤修復與舊核心無關。然而,由於程式碼庫的變化,核心越舊,向後移植需要應用的變更就越困難。因此,雖然應用的整體修補程式數量可能較少,但維護 LTS 核心所需的工作量比維護正常的穩定核心要多。

穩定的內核補丁規則

自穩定核心版本推出以來,可添加內容的規則幾乎保持不變,總結如下:

  • 必須明顯正確並經過測試。
  • 不得超過 100 行。
  • 必須只解決一件事。
  • 必須修復已報告為問題的內容。
  • 可以是新的設備 ID 或硬體的怪癖,但不能添加主要的新功能。
  • 必須已經合併到 Linus Torvalds 的樹。

最後一條規則“必須已經合併到 Linus Torvalds 樹”,可以防止內核社群遺失修復。社群從來不希望對 Linus Torvalds 樹中尚未包含的穩定核心版本進行修復,這樣任何升級的人都不會看到回歸。這可以防止其他維護穩定和開發分支的專案可能出現的許多問題。

核心更新

Linux 核心社群已向其用戶群承諾,任何升級都不會破壞先前版本中目前正在運行的任何內容。這項承諾至今仍然有效。回歸確實會發生,但這些是最高優先順序的錯誤,要么很快得到修復,要么導致回歸的更改很快從 Linux 核心樹中恢復。

這項承諾對於增量穩定核心更新以及每三個月發生的較大主要更新都適用。然而,核心社群只能對合併到 Linux 核心樹中的程式碼做出這樣的承諾。任何合併到設備核心中但不在kernel.org版本中的程式碼都是未知的,並且永遠無法計劃甚至考慮與其互動。

基於 Linux 且具有大型補丁集的裝置在更新到較新的核心時可能會出現重大問題,因為每個版本之間存在大量變更(每個版本有 10-14,000 個變更)。眾所周知,SoC 補丁集在更新到較新的核心時會出現問題,因為它們體積較大,並且對特定於架構的核心程式碼(有時是核心核心程式碼)進行了大量修改。因此,大多數 SoC 供應商開始標準化為其裝置使用 LTS 版本,使這些裝置能夠直接從 Linux 核心社群接收錯誤和安全性更新。

安全

在進行核心發佈時,Linux 核心社群幾乎從不將特定變更聲明為安全修復。這是由於在創建錯誤修復時很難確定錯誤修復是否是安全修復的基本問題。此外,許多錯誤修復僅在經過很長時間後才被確定為與安全相關,因此內核社群強烈建議始終採用所有已發布的錯誤修復。

當安全問題報告給核心社群時,它們會盡快修復並公開推送到開發樹和穩定版本。如上所述,這些更改幾乎從未被描述為“安全修復”,而是看起來像內核的任何其他錯誤修復。這樣做是為了讓受影響的各方能夠在問題報告者宣布之前更新其係統。

有關向內核社群報告安全錯誤以盡快解決和修復這些錯誤的詳細信息,請參閱www.kernel.org上的Linux 核心使用者和管理員指南中的安全錯誤

由於核心團隊不會向公眾公佈安全錯誤,因此 Linux 核心相關問題的 CVE 編號通常會在修復程式合併到穩定版和開發版分支後數週、數月甚至數年發布。

保持系統安全

在部署使用 Linux 的裝置時,強烈建議製造商採用所有 LTS 核心更新,並在正確測試顯示更新效果良好後將其推送給使用者。這有幾個優點:

  • 內核開發人員已對版本進行了整體審查,而不是單獨進行了審查。
  • 確定哪些補丁可以修復「安全性」問題,哪些不能修復,即使不是不可能,也是很困難的。幾乎每個 LTS 版本都至少包含一個已知的安全修復程序,還有許多「未知」的修復程序。
  • 如果測試發現問題,核心開發人員社群將迅速做出反應來解決問題。
  • 嘗試僅過濾掉您正在執行的變更將導致核心樹無法與未來的上游版本正確合併。