哪個Linux內核版本是 “穩定的”?
Konstantin Ryabitsev 為你講解哪個 Linux 內核版本可以被視作“穩定版”,以及你應該如何選擇一個適用你的內核版本。
每次 Linus Torvalds 發布 一個新 Linux 內核的主線版本,幾乎都會引起這種困惑,那就是到底哪個內核版本才是最新的“穩定版”?是新的那個 X.Y,還是前面的那個 X.Y-1.Z ?最新的內核版本是不是太“新”了?你是不是應該堅持使用以前的版本?kernel.org 網頁上的信息并不會幫你解開這個困惑。目前,在該頁面的最頂部,我們看到是最新穩定版內核是 4.15 — 但是在這個表格的下面,4.14.16 也被列為“穩定版”,而 4.15 被列為“主線版本”,很困惑,是吧?
不幸的是,這個問題并不好回答。我們在這里使用“穩定”這個詞有兩個不同的意思:一是,作為最初發布的 Git 樹的名字,二是,表示這個內核可以被視作“穩定版”,用在“生產系統”。
由于 Git 的分布式特性,Linux 的開發工作在許多 不同的分叉倉庫中 進行。所有的 bug 修復和新特性也是首先由各個子系統維護者收集和準備的,然后提交給 Linus Torvalds,由 Linus Torvalds 包含進 他自己的 Linux 樹 中,他的 Git 樹被認為是 Git 倉庫的 “master”。我們稱這個樹為 “主線” Linux 樹。
候選發布版(RC)
在每個新的內核版本發布之前,它都要經過幾輪的“候選發布”,它由開發者進行測試并“打磨”所有的這些很酷的新特性。基于他們這幾輪測試的反饋,Linus 決定最終版本是否已經準備就緒。通常有 7 個每周預發布版本,但是,這個數字經常走到 -rc8,并且有時候甚至達到 -rc9 及以上。當 Linus 確信那個新內核已經沒有問題了,他就制作最終發行版,我們稱這個版本為“穩定版”,表示它不再是一個“候選發布版”。
Bug 修復
就像任何一個由不是十全十美的人所寫的復雜軟件一樣,任何一個 Linux 內核的新版本都包含 bug,并且這些 bug 必須被修復。Linux 內核的 bug 修復規則非常簡單:所有修復必須首先進入到 Linus 的樹。一旦主線倉庫中的 bug 被修復后,它接著會被應用到內核開發社區仍在維護的已發布內核中。在它們被考慮回遷到已發布的穩定版本之前,所有的 bug 修復必須滿足 一套重要的標準 — 標準的其中之一是,它們 “必須已經存在于 Linus 的樹中”。這是一個 獨立的 Git 倉庫,維護它的用途是回遷 bug 修復,而它也被稱為“穩定”樹 —— 因為它用于跟蹤以前發布的穩定內核。這個樹由 Greg Kroah-Hartman 策劃和維護。
最新的穩定內核
因此,無論在什么時候,為了查看最新的穩定內核而訪問 kernel.org 網站時,你應該去使用那個在大黃色按鈕所說的“最新的穩定內核”。
但是,你可能會驚奇地發現 —— 4.15 和 4.14.16 都是穩定版本,那么到底哪一個更“穩定”呢?有些人不愿意使用 “.0” 的內核發行版,因為他們認為這個版本并不足夠“穩定”,直到最新的是 ".1" 的為止。很難證明或者反駁這種觀點的對與錯,并且這兩種觀點都有贊成或者反對的理由,因此,具體選擇哪一個取決于你的喜好。
一方面,任何一個進入到穩定樹的發行版都必須首先被接受進入主線內核版本中,并且隨后會被回遷到已發行版本中。這意味著內核的主線版本相比穩定樹中的發行版本來說,總包含有最新的 bug 修復,因此,如果你想使用的發行版包含的“已知 bug”最少,那么使用 “.0” 的主線發行版是最佳選擇。
另一方面,主線版本增加了所有很酷的新特性 —— 而新特性也給它們帶來了數量未知的“新 bug”,而這些“新 bug”在老的穩定版中是不會存在的。而新的、未知的 bug 是否比舊的、已知的但尚未修復的 bug 更加令人擔心呢? —— 這取決于你的選擇。不過需要說明的一點是,許多 bug 修復只對內核的主線版本進行了徹底的測試。當補丁回遷到舊內核時,它們可能會工作的很好,但是它們很少做與舊內核的集成測試工作。通常都假定,“以前的穩定版本”足夠接近當前的確信可用于生產系統的主線版本。而實際上也確實是這樣的,當然,這也更加說明了為什么選擇“哪個內核版本更穩定”是件非常困難的事情了。
因此,從根本上說,我們并沒有定量的或者定性的手段去明確的告訴你哪個內核版本更加穩定 —— 4.15 還是 4.14.16?我們能夠做到的只是告訴你,它們具有“不同的穩定性”,(這個答案可能沒有幫到你,但是,至少你明白了這些版本的差別是什么?)。