我應該使用哪些穩定版內核?

我應該使用哪些穩定版內核?

編譯自: http://kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/

作者: Greg Kroah-hartman

本文作者 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 版內核,除了在測試系統上。我依賴於開發版和最新的穩定版內核,以確保我的機器運行的是目前我們所知道的最快的也是最安全的內核版本。


via: http://kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/

作者: Greg Kroah-Hartman 選題: lujun9972 譯者: qhwdw 校對: wxy

本文由 LCTT 原創編譯, Linux中國 榮譽推出


分享到:


相關文章: