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 穩定版內核的維護負責人。
很多人都問我這樣的問題,在他們的產品/裝置/筆記本/伺服器等上面應該使用什麼樣的穩定版核心。一直以來,尤其是那些現在已經延長支援時間的核心,都是由我和其他人提供支援,因此,給出這個問題的答案並不是件容易的事情。在這篇文章我將嘗試去給出我在這個問題上的看法。當然,你可以任意選用任何一個你想去使用的核心版本,這裡只是我的建議。
和以前一樣,在這裡給出的這些看法只代表我個人的意見。
可選擇的內核有哪些
下麵列出了我建議你應該去使用的內核的串列,從最好的到最差的都有。我在下麵將詳細介紹,但是如果你只想得到一個結論,它就是你想要的:
建議你使用的內核的分級,從最佳的方案到最差的方案如下:
絕對不要去使用的核心:
給上面的串列給出具體的數字,今天是 2018 年 8 月 24 日,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 版本
如果你的硬體為了保證正常執行(像大多數的嵌入式裝置),需要依賴供應商的原始碼樹外的補丁,那麼對你來說,最好的核心版本是最新的 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 內核的裝置的傳統樣式是一個更加簡化的使用者樣式。這些核心不能用於任何“通用計算”樣式中,在這裡用的是不可信使用者或虛擬機器,極大地削弱了對老的核心做像最近的 Spectre 這樣的修複的能力,如果在一些分支中存在這樣的 bug 的話。
因此,僅在你能夠完全控制的裝置,或者限定在一個非常強大的安全模型(像 Android 一樣強制使用 SELinux 和應用程式隔離)時使用老的 LTS 版本。絕對不要在有不可信使用者/程式,或虛擬機器的伺服器上使用這些老的 LTS 版核心。
此外,如果社群對它有支援的話,社群對這些老的 LTS 版核心相比正常的 LTS 版內核的支援要少的多。如果你使用這些核心,那麼你只能是一個人在戰鬥,你需要有能力去獨自支援這些核心,或者依賴你的 SoC 供應商為你提供支援(需要註意的是,幾乎沒有供應商會為你提供支援,因此,你要特別註意 ……)。
不再維護的核心發行版
更讓人感到驚訝的事情是,許多公司只是隨便選一個核心發行版,然後將它封裝到它們的產品裡,並將它毫不猶豫地承載到數十萬的部件中。其中一個這樣的糟糕例子是 Lego Mindstorm 系統,不知道是什麼原因在它們的裝置上隨意選取了一個 -rc 的核心發行版。-rc 的發行版是開發中的版本,根本沒有 Linux 核心開發者認為它適合任何人使用,更不用說是數百萬的使用者了。
當然,如果你願意,你可以隨意地使用它,但是需要註意的是,可能真的就只有你一個人在使用它。社群不會為你提供支援,因為他們不可能關註所有核心版本的特定問題,因此如果出現錯誤,你只能獨自去解決它。對於一些公司和系統來說,這麼做可能還行,但是如果沒有為此有所規劃,那麼要當心因此而產生的“隱性”成本。
總結
基於以上原因,下麵是一個針對不同型別裝置的簡短串列,這些裝置我推薦適用的核心如下:
至於我,在我的機器上執行什麼樣的核心?我的筆記本執行的是最新的開發版核心(即 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中國 榮譽推出