歡迎光臨
每天分享高質量文章

我應該使用哪些穩定版內核? | Linux 中國

一直以來,尤其是那些現在已經延長支持時間的內核,都是由我和其他人提供支持,因此,給出這個問題的答案並不是件容易的事情。在這篇文章我將嘗試去給出我在這個問題上的看法。
— Greg Kroah-hartman


致謝
編譯自 | 
http://kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/
 
 作者 | Greg Kroah-hartman
 譯者 | qhwdw ?共計翻譯:149.5 篇 貢獻時間:345 天

本文作者 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 修複補丁。當它擁有了最新的修複之後(記住所有的修複都是安全修複[1]),這就是你可以使用的最安全、最好的內核之一。

有些社區的 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[2]、以及其它公司在測試和基礎設施上的大量投入,使得這些老的 LTS 版內核得到更長時間的支持。

最新的 LTS 版本以及它們將被支持多長時間,這是 2018 年 8 月 24 日顯示在 kernel.org/category/releases.html[3] 上的信息:

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[5] 選題:lujun9972 譯者:qhwdw 校對:wxy

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

赞(0)

分享創造快樂