為什么你的發(fā)行版仍然在使用“過時(shí)的”Linux內(nèi)核?
檢查一下你的系統(tǒng)所使用的 Linux 內(nèi)核版本,你十有八九會(huì)發(fā)現(xiàn),按照 Linux 內(nèi)核官網(wǎng)提供的信息,該內(nèi)核版本已經(jīng)達(dá)到使用壽命終期(EOL)了。
一個(gè)軟件一旦達(dá)到了使用壽命終期,那么就意味著它再也不會(huì)得到 bug 修復(fù)和維護(hù)了。
這自然會(huì)引發(fā)一連串問題:為什么我的 Linux 發(fā)行版會(huì)使用一個(gè)已經(jīng)達(dá)到使用壽命終期的內(nèi)核呢?這樣做有沒有安全風(fēng)險(xiǎn)?我的系統(tǒng)還安全嗎?
下面將逐一解答這些問題。
總結(jié)
上游內(nèi)核維護(hù)與你的發(fā)行版的內(nèi)核維護(hù)是兩個(gè)不同的概念。
例如,根據(jù) Linux 內(nèi)核官網(wǎng),Linux 內(nèi)核 4.15 版本可能已經(jīng)達(dá)到使用壽命終期了,但是在 2023 年 4 月之前,Ubuntu 18.04 長期維護(hù)版本將會(huì)繼續(xù)使用這個(gè)版本,并通過向后移植安全補(bǔ)丁和修復(fù) bug 來提供維護(hù)。
檢查 Linux 內(nèi)核版本,以及是否達(dá)到使用壽命終期
首先,查看你的系統(tǒng)所使用的 Linux 內(nèi)核版本:
uname -r
我使用的是 Ubuntu 18.04,輸出的 Linux 內(nèi)核版本如下:
abhishek@itsfoss:~$ uname -r
5.0.0-37-generic
接下來,可以到 Linux 內(nèi)核官網(wǎng)上看看哪些 Linux 內(nèi)核版本仍然在維護(hù)狀態(tài)。在網(wǎng)站主頁上就可以看到相關(guān)信息。
你看到的內(nèi)核版本狀態(tài)應(yīng)該類似于下圖:
Linux 內(nèi)核狀態(tài)
如果你的內(nèi)核版本沒有列在內(nèi)核官網(wǎng)主頁上,就說明該版本已經(jīng)達(dá)到了使用壽命終期。
可以看到,5.0 內(nèi)核版本并不在列,這說明該內(nèi)核版本已經(jīng)不再得到維護(hù)。事實(shí)上,該版本在 2019 年 6 月就已經(jīng)達(dá)到使用壽命終期了。
不幸的是,Linux 內(nèi)核的生命周期沒有任何規(guī)律可循。不是說常規(guī)的內(nèi)核穩(wěn)定發(fā)布版可以得到 X 月的維護(hù)、長期維護(hù)版本(LTS)可以得到 Y 年的維護(hù)。沒有這回事。
根據(jù)實(shí)際需求,可能會(huì)存在內(nèi)核的多個(gè) LTS 版本,其使用壽命終期各不相同。在這個(gè)頁面上可以查到這些 LTS 版本的相關(guān)信息,包括計(jì)劃的使用壽命終期。
那么問題來了:既然 Linux 內(nèi)核官網(wǎng)上明確表示 5.0 版本的內(nèi)核已經(jīng)達(dá)到了使用壽命終期,Ubuntu 為什么還在提供這個(gè)內(nèi)核版本呢?
你的發(fā)行版使用的 Linux 內(nèi)核已經(jīng)達(dá)到了使用壽命終期,但是沒關(guān)系!
你是否想過,為什么 Ubuntu/Debian/Fedora 等發(fā)行版被稱為 Linux “發(fā)行版”?這是因?yàn)椋鼈?ldquo;發(fā)行” Linux 內(nèi)核。
這些發(fā)行版會(huì)對(duì) Linux 內(nèi)核進(jìn)行不同的修改,并添加各種 GUI 元素(包括桌面環(huán)境、顯示服務(wù)器等)以及軟件,然后再呈現(xiàn)給用戶。
按照通常的工作流,Linux 發(fā)行版會(huì)選擇一個(gè)內(nèi)核,提供給其用戶,然后在接下來的幾個(gè)月、幾年中,甚至是達(dá)到內(nèi)核的使用壽命終期之后,仍然會(huì)繼續(xù)使用該內(nèi)核。
這樣能夠保障安全嗎?其實(shí)是可以的,因?yàn)?發(fā)行版會(huì)通過向后移植全部的重要修補(bǔ)來維護(hù)內(nèi)核。
換句話說,你的 Linux 發(fā)行版會(huì)確保 Linux 內(nèi)核沒有漏洞和 bug,并且已經(jīng)通過向后移植獲得了重要的新特性。在“過時(shí)的舊版本 Linux 內(nèi)核”上,其實(shí)有著數(shù)以千計(jì)的改動(dòng)。
如果 Linux 內(nèi)核網(wǎng)站上說某個(gè)內(nèi)核版本已經(jīng)達(dá)到了使用壽命終期,那么就意味著 Linux 內(nèi)核的核心維護(hù)團(tuán)隊(duì)不會(huì)再對(duì)該內(nèi)核版本進(jìn)行升級(jí)和打補(bǔ)丁了。
但與此同時(shí),Debian/Ubuntu 或者其他發(fā)行版的開發(fā)者們會(huì)繼續(xù)工作,通過從(由內(nèi)核核心團(tuán)隊(duì)維護(hù)的)更新的內(nèi)核版本中遷移相關(guān)的修改,維持這個(gè)老版本的生命力。
重點(diǎn)在于,即使你的發(fā)行版看上去是在使用一個(gè)已經(jīng)過時(shí)的 Linux 內(nèi)核,其實(shí)該內(nèi)核也得到了良好的維護(hù),并非是真的過時(shí)了。
你是否應(yīng)該使用最新的穩(wěn)定內(nèi)核版本?
新的 Linux 內(nèi)核穩(wěn)定版本每隔 2 到 3 個(gè)月發(fā)布一次,有不少用戶躍躍欲試。
實(shí)話說,除非有十分充分的理由,否則不應(yīng)該使用最新版本的穩(wěn)定內(nèi)核。你使用的發(fā)行版并不會(huì)提供這個(gè)選項(xiàng),你也不能指望通過在鍵盤上敲出 sudo apt give-me-the-latest-stable-kernel
解決問題。
此外,手動(dòng)安裝主流 Linux 內(nèi)核版本本身就是一個(gè)挑戰(zhàn)。即使安裝成功,之后每次發(fā)布 bug 修復(fù)的時(shí)候,負(fù)責(zé)更新內(nèi)核的就會(huì)是你了。此外,當(dāng)新內(nèi)核達(dá)到使用壽命終期之后,你就有責(zé)任將它升級(jí)到更新的內(nèi)核版本了。和常規(guī)的 Ubuntu 更新不同,內(nèi)核升級(jí)無法通過 apt upgrade
完成。
同樣需要記住的是,切換到主流內(nèi)核之后,可能就無法使用你的發(fā)行版提供的一些驅(qū)動(dòng)程序和補(bǔ)丁了。
正如 Greg Kroah-Hartman所言,“你能使用的最好的內(nèi)核,就是別人在維護(hù)的內(nèi)核。”除了你的 Linux 發(fā)行版之外,又有誰更勝任這份工作呢!
希望你對(duì)這個(gè)主題已經(jīng)有了更好的理解。下回發(fā)現(xiàn)你的系統(tǒng)正在使用的內(nèi)核版本已經(jīng)達(dá)到使用壽命終期的時(shí)候,希望你不會(huì)感到驚慌失措。
歡迎在下面的評(píng)論區(qū)中留下你的疑問或建議。