2021-05-12 14:32:11
我應該使用哪些Linux 穩定版核心?
本文作者 Greg Kroah-Hartman 是 Linux 穩定版核心的維護負責人。
很多人都問我這樣的問題,在他們的產品/裝置/筆電/伺服器等上面應該使用什麼樣的穩定版核心。一直以來,尤其是那些現在已經延長支援時間的核心,都是由我和其他人提供支援,因此,給出這個問題的答案並不是件容易的事情。在這篇文章我將嘗試去給出我在這個問題上的看法。當然,你可以任意選用任何一個你想去使用的核心版本,這裡只是我的建議。
和以前一樣,在這裡給出的這些看法只代表我個人的意見。
可選擇的核心有哪些
下面列出了我建議你應該去使用的核心的列表,從最好的到最差的都有。我在下面將詳細介紹,但是如果你只想得到一個結論,它就是你想要的:
建議你使用的核心的分級,從最佳的方案到最差的方案如下:
- 你最喜歡的 Linux 發行版支援的核心
- 最新的穩定版
- 最新的 LTS (長期支援)版本
- 仍然處於維護狀態的老的 LTS 版本
絕對不要去使用的核心:
- 不再維護的核心版本
給上面的列表給出具體的數位,今天是 2018 年 8 月 24 日,kernel.org 頁面上可以看到是這樣:
因此,基於上面的列表,那它應該是:
- 4.18.5 是最新的穩定版
- 4.14.67 是最新的 LTS 版本
- 4.9.124、4.4.152、以及 3.16.57 是仍然處於維護狀態的老的 LTS 版本
- 4.17.19 和 3.18.119 是過去 60 天內有過發布的 “生命周期終止” 的核心版本,它們仍然保留在 kernel.org 站點上,是為了仍然想去使用它們的那些人。
非常容易,對嗎?
Ok,現在我給出這樣選擇的一些理由:
Linux 發行版核心
對於大多數 Linux 使用者來說,最好的方案就是使用你喜歡的 Linux 發行版的核心。就我本人而言,我比較喜歡基於社群的、核心不斷捲動升級的用最新核心的 Linux 發行版,並且它也是由開發者社群來支援的。這種型別的發行版有 Fedora、openSUSE、Arch、Gentoo、CoreOS,以及其它的。
所有這些發行版都使用了上游的最新的穩定版核心,並且確保定期打了需要的 bug 修復修補程式。當它擁有了最新的修復之後(記住所有的修復都是安全修復),這就是你可以使用的最安全、最好的核心之一。
有些社群的 Linux 發行版需要很長的時間才發行一個新核心版本,但是最終發行的版本和所支援的核心都是非常好的。這些也都非常好用,Debian 和 Ubuntu 就是這樣的例子。
如果我沒有在這裡列出你所喜歡的發行版,並不是意味著它們的核心不夠好。檢視這些發行版的網站,確保它們的核心包是不斷應用最新的安全修補程式進行升級過的,那麼它就應該是很好的。
許多人好像喜歡舊式、“傳統” 模式的發行版,使用 RHEL、SLES、CentOS 或者 “LTS” Ubuntu 發行版。這些發行版挑選一個特定的核心版本,然後使用好幾年,甚至幾十年。他們反向移植了最新的 bug 修復,有時也有一些核心的新特性,所有的只是追求堂吉訶德式的保持版本號不變而已,儘管他們已經在那個舊的核心版本上做了成千上萬的變更。這項工作是一項真正吃力不討好的工作,分配到這些任務的開發人員做了一些精彩的工作才能實現這些目標。所以如果你希望永遠不看到你的核心版本號發生過變化,那麼就使用這些發行版。他們通常會為使用而付出一些錢,當發生錯誤時能夠從這些公司得到一些支援,那就是值得的。
所以,你能使用的最好的核心是你可以求助於別人,而別人可以為你提供支援的核心。使用那些支援,你通常都已經為它支付過費用了(對於企業發行版),而這些公司也知道他們職責是什麼。
但是,如果你不希望去依賴別人,而是希望你自己管理你的核心,或者你有發行版不支援的硬體,那麼你應該去使用最新的穩定版:
最新的穩定版
最新的穩定版核心是 Linux 核心開發者社群宣布為“穩定版”的最新的一個核心。大約每三個月,社群發行一個包含了對所有新硬體支援的、新的穩定版核心,最新版的核心不但改善核心效能,同時還包含核心各部分的 bug 修復。接下來的三個月之後,進入到下一個核心版本的 bug 修復將被反向移植進入這個穩定版核心中,因此,使用這個核心版本的使用者將確保立即得到這些修復。
最新的穩定版核心通常也是主流社群發行版所使用的核心,因此你可以確保它是經過測試和擁有大量使用者使用的核心。另外,核心社群(全部開發者超過 4000 人)也將幫助這個發行版提供對使用者的支援,因為這是他們做的最新的一個核心。
三個月之後,將發行一個新的穩定版核心,你應該去更新到它以確保你的核心始終是最新的穩定版,因為當最新的穩定版核心發布之後,對你的當前穩定版核心的支援通常會落後幾週時間。
如果你在上一個 LTS (長期支援)版本發布之後購買了最新的硬體,為了能夠支援最新的硬體,你幾乎是絕對需要去執行這個最新的穩定版核心。對於桌上型電腦或新的伺服器,最新的穩定版核心通常是推荐執行的核心。
最新的 LTS 版本
如果你的硬體為了保證正常執行(像大多數的嵌入式裝置),需要依賴供應商的原始碼樹外out-of-tree的修補程式,那麼對你來說,最好的核心版本是最新的 LTS 版本。這個版本擁有所有進入穩定版核心的最新 bug 修復,以及大量的使用者測試和使用。
請注意,這個最新的 LTS 版本沒有新特性,並且也幾乎不會增加對新硬體的支援,因此,如果你需要使用一個新裝置,那你的最佳選擇就是最新的穩定版核心,而不是最新的 LTS 版核心。
另外,對於這個 LTS 版本的使用者來說,他也不用擔心每三個月一次的“重大”升級。因此,他們將一直堅持使用這個 LTS 版本,並每年升級一次,這是一個很好的實踐。
使用這個 LTS 版本的不利方面是,你沒法得到在最新版本核心上實現的核心效能提升,除非在未來的一年中,你升級到下一個 LTS 版核心。
另外,如果你使用的這個核心版本有問題,你所做的第一件事情就是向任意一位核心開發者報告發生的問題,並向他們詢問,“最新的穩定版核心中是否也存在這個問題?”並且,你需要意識到,對它的支援不會像使用最新的穩定版核心那樣容易得到。
現在,如果你堅持使用一個有大量的修補程式集的核心,並且不希望升級到每年一次的新 LTS 版核心上,那麼,或許你應該去使用老的 LTS 版核心:
老的 LTS 版本
傳統上,這些版本都由社群提供 2 年時間的支援,有時候當一個重要的 Linux 發行版(像 Debian 或 SLES)依賴它時,這個支援時間會更長。然而在過去一年裡,感謝 Google、Linaro、Linaro 成員公司、kernelci.org、以及其它公司在測試和基礎設施上的大量投入,使得這些老的 LTS 版核心得到更長時間的支援。
最新的 LTS 版本以及它們將被支援多長時間,這是 2018 年 8 月 24 日顯示在 kernel.org/category/releases.html 上的資訊:
Google 和其它公司希望這些核心使用的時間更長的原因是,由於現在幾乎所有的 SoC 晶片的瘋狂的(也有人說是打破常規)開發模型。這些裝置在晶片發行前幾年就啟動了他們的開發週期,而那些程式碼從來不會合併到上游,最終結果是新打造的晶片是基於一個 2 年以前的老核心發布的。這些 SoC 的程式碼樹通常增加了超過 200 萬行的程式碼,這使得它們成為我們前面稱之為“類 Linux 核心“的東西。
如果在 2 年後,這個 LTS 版本停止支援,那麼來自社群的支援將立即停止,並且沒有人對它再進行 bug 修復。這導致了在全球各地數以百萬計的非常不安全的裝置仍然在使用中,這對任何生態系統來說都不是什麼好事情。
由於這種依賴,這些公司現在要求新裝置不斷更新到最新的 LTS 版本——這些為它們特定發布的版本(例如現在的每個 4.9.y 版本)。其中一個這樣的例子就是新 Android 裝置對核心版本的要求,這些新裝置所帶的 “Andrid O” 版本(和現在的 “Android P” 版本)指定了最低允許使用的核心版本,並且 Andoird 安全更新版本也開始越來越頻繁在裝置上要求使用這些 “.y” 版本。
我注意到一些生產商現在已經在做這些事情。Sony 是其中一個非常好的例子,在他們的大多數新手機上,通過他們每季度的安全更新版本,將裝置更新到最新的 4.4.y 發行版上。另一個很好的例子是一家小型公司 Essential,據我所知,他們持續跟蹤 4.4.y 版本的速度比其它公司都快。
當使用這種老的核心時有個重大警告。反向移植到這種核心中的安全修復不如最新版本的 LTS 核心多,因為這些使用老的 LTS 核心的裝置的傳統模式是一個更加簡化的使用者模式。這些核心不能用於任何“通用計算”模式中,在這裡用的是不可信使用者untrusted user或虛擬機器,極大地削弱了對老的核心做像最近的 Spectre 這樣的修復的能力,如果在一些分支中存在這樣的 bug 的話。
因此,僅在你能夠完全控制的裝置,或者限定在一個非常強大的安全模型(像 Android 一樣強制使用 SELinux 和應用程式隔離)時使用老的 LTS 版本。絕對不要在有不可信使用者/程式,或虛擬機器的伺服器上使用這些老的 LTS 版核心。
此外,如果社群對它有支援的話,社群對這些老的 LTS 版核心相比正常的 LTS 版核心的支援要少的多。如果你使用這些核心,那麼你只能是一個人在戰鬥,你需要有能力去獨自支援這些核心,或者依賴你的 SoC 供應商為你提供支援(需要注意的是,幾乎沒有供應商會為你提供支援,因此,你要特別注意 ……)。
不再維護的核心發行版
更讓人感到驚訝的事情是,許多公司只是隨便選一個核心發行版,然後將它封裝到它們的產品裡,並將它毫不猶豫地承載到數十萬的部件中。其中一個這樣的糟糕例子是 Lego Mindstorm 系統,不知道是什麼原因在它們的裝置上隨意選取了一個 -rc 的核心發行版。-rc 的發行版是開發中的版本,根本沒有 Linux 核心開發者認為它適合任何人使用,更不用說是數百萬的使用者了。
當然,如果你願意,你可以隨意地使用它,但是需要注意的是,可能真的就只有你一個人在使用它。社群不會為你提供支援,因為他們不可能關注所有核心版本的特定問題,因此如果出現錯誤,你只能獨自去解決它。對於一些公司和系統來說,這麼做可能還行,但是如果沒有為此有所規劃,那麼要當心因此而產生的“隱性”成本。
總結
基於以上原因,下面是一個針對不同型別裝置的簡短列表,這些裝置我推薦適用的核心如下:
- 筆電 / 桌上型電腦:最新的穩定版核心
- 伺服器:最新的穩定版核心或最新的 LTS 版核心
- 嵌入式裝置:最新的 LTS 版核心或老的 LTS 版核心(如果使用的安全模型非常強大和嚴格)
至於我,在我的機器上執行什麼樣的核心?我的筆電執行的是最新的開發版核心(即 Linus 的開發樹)再加上我正在做修改的核心,我的伺服器上執行的是最新的穩定版核心。因此,儘管我負責 LTS 發行版的支援工作,但我自己並不使用 LTS 版核心,除了在測試系統上。我依賴於開發版和最新的穩定版核心,以確保我的機器執行的是目前我們所知道的最快的也是最安全的核心版本。
作者:Greg Kroah-Hartman 選題:lujun9972 譯者:qhwdw 校對:wxy
相關文章