Linux 內核穩定發布模型始於 2005 年,當時確定現有的內核開發模型(每 2-3 個月發布一次新版本)無法滿足大多數用戶的需求。用戶希望在這 2-3 個月內修復錯誤,而 Linux 發行版發現如果沒有內核社區的反饋,很難使內核保持最新。總的來說,試圖保持單個內核的安全並使用最新的錯誤修復是許多不同個人所做的巨大而令人困惑的努力。
穩定的內核版本直接基於 Linus Torvalds 的版本,並且每週左右發布一次,這取決於各種外部因素(一年中的時間、可用補丁、維護者工作量等)。穩定版本的編號以內核版本的編號開始,並在其末尾添加一個附加編號。比如4.4內核是由Linus發布的,那麼基於這個內核的穩定內核版本編號為4.4.1、4.4.2、4.4.3等。當提到一個穩定的內核發布樹時,這個序列通常用數字 4.4.y 縮短。每個穩定的內核發布樹都由一個內核開發人員維護,該開發人員負責為發布挑選所需的補丁並管理審查/發布過程。
在當前開發週期的長度內保持穩定的內核。在 Linus 發布新內核後,之前的穩定內核發布樹將停止,用戶必須遷移到較新發布的內核。
長期穩定的內核
經過這一新的穩定發布過程一年後,確定許多不同的 Linux 用戶希望內核支持的時間超過幾個月。作為回應,長期支持 (LTS) 內核版本應運而生,第一個 LTS 內核 (2.6.16) 於 2006 年發布。從那時起,每年都會選擇一次新的 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-14000 次更改)。眾所周知,SoC 補丁集在更新到較新的內核時存在問題,因為它們的尺寸很大,並且對特定於架構的、有時是核心的內核代碼進行了大量修改。因此,大多數 SoC 供應商開始對其設備使用 LTS 版本進行標準化,從而使這些設備能夠直接從 Linux 內核社區接收錯誤和安全更新。
安全
在進行內核發佈時,Linux 內核社區幾乎從不將特定更改聲明為安全修復。這是由於在創建時難以確定錯誤修復是否是安全修復的基本問題。此外,許多錯誤修正只是在經過很長時間後才確定與安全相關,因此內核社區強烈建議始終採用所有已發布的錯誤修正。
當向內核社區報告安全問題時,它們會盡快得到修復,並公開推送到開發樹和穩定版本中。如上所述,這些更改幾乎從未被描述為“安全修復”,而是看起來像內核的任何其他錯誤修復。這樣做是為了讓受影響的各方能夠在問題報告者宣布之前更新他們的系統。
有關向內核社區報告安全錯誤以盡快解決和修復的詳細信息,請參閱www.kernel.org上的 Linux 內核用戶和管理員指南中的安全錯誤。
由於內核團隊不會向公眾公佈安全漏洞,Linux 內核相關問題的 CVE 編號通常在修復合併到穩定分支和開發分支後數週、數月甚至數年發布。
保持安全的系統
在部署使用 Linux 的設備時,強烈建議製造商採用所有 LTS 內核更新,並在適當的測試表明更新運行良好後將其推送給用戶。這有幾個優點:
- 內核開發人員已對發行版進行了整體審查,而不是單個部分。
- 即使不是不可能,也很難確定哪些補丁修復了“安全”問題,哪些沒有。幾乎每個 LTS 版本都包含至少一個已知的安全修復程序,還有許多是“未知的”。
- 如果測試顯示有問題,內核開發者社區將迅速做出反應以解決問題。
- 嘗試僅過濾掉您運行的更改將導致無法與將來的上游版本正確合併的內核樹。