作者 | Konstantin Ryabitsev
譯者 | qhwdw
Konstantin Ryabitsev 為你講解哪個 Linux 核心版本可以被視作“穩定版”,以及你應該如何選擇一個適用你的核心版本。
每次 Linus Torvalds 釋出 一個新 Linux 內核的主線版本[1],幾乎都會引起這種困惑,那就是到底哪個核心版本才是最新的“穩定版”?是新的那個 X.Y,還是前面的那個 X.Y-1.Z ?最新的核心版本是不是太“新”了?你是不是應該堅持使用以前的版本?
kernel.org[2] 網頁上的資訊並不會幫你解開這個困惑。目前,在該頁面的最頂部,我們看到是最新穩定版內核是 4.15 — 但是在這個表格的下麵,4.14.16 也被列為“穩定版”,而 4.15 被列為“主線版本”,很困惑,是吧?
不幸的是,這個問題並不好回答。我們在這裡使用“穩定”這個詞有兩個不同的意思:一是,作為最初釋出的 Git 樹的名字,二是,表示這個內核可以被視作“穩定版”,用在“生產系統”。
由於 Git 的分散式特性,Linux 的開發工作在許多 不同的分叉倉庫中[3] 進行。所有的 bug 修複和新特性也是首先由各個子系統維護者收集和準備的,然後提交給 Linus Torvalds,由 Linus Torvalds 包含進 他自己的 Linux 樹[4] 中,他的 Git 樹被認為是 Git 倉庫的 “master”。我們稱這個樹為 “主線” Linux 樹。
候選釋出版(RC)
在每個新的核心版本釋出之前,它都要經過幾輪的“候選釋出”,它由開發者進行測試並“打磨”所有的這些很酷的新特性。基於他們這幾輪測試的反饋,Linus 決定最終版本是否已經準備就緒。通常有 7 個每週預釋出版本,但是,這個數字經常走到 -rc8,並且有時候甚至達到 -rc9 及以上。當 Linus 確信那個新核心已經沒有問題了,他就製作最終發行版,我們稱這個版本為“穩定版”,表示它不再是一個“候選釋出版”。
Bug 修複
就像任何一個由不是十全十美的人所寫的複雜軟體一樣,任何一個 Linux 內核的新版本都包含 bug,並且這些 bug 必須被修複。Linux 內核的 bug 修複規則非常簡單:所有修複必須首先進入到 Linus 的樹。一旦主線倉庫中的 bug 被修複後,它接著會被應用到核心開發社群仍在維護的已釋出核心中。在它們被考慮回遷到已釋出的穩定版本之前,所有的 bug 修複必須滿足 一套重要的標準[5] — 標準的其中之一是,它們 “必須已經存在於 Linus 的樹中”。這是一個 獨立的 Git 倉庫[6],維護它的用途是回遷 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?我們能夠做到的只是告訴你,它們具有“不同的穩定性”,(這個答案可能沒有幫到你,但是,至少你明白了這些版本的差別是什麼?)。
學習更多的 Linux 的知識,可以透過來自 Linux 基金會和 edX 的免費課程 “認識 Linux” [7]。
via: https://www.linux.com/blog/learn/2018/2/which-linux-kernel-version-stable
作者:KONSTANTIN RYABITSEV[9] 譯者:qhwdw 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出