Ubuntu 18.04 Linux內(nèi)核升級

前言

原本使用Ubuntu Server 18.04.2 LTS來搭建一個(gè)NextCloud服務(wù),給公司提供共享盤服務(wù)。在本地PVE環(huán)境下自己測試的時(shí)候,來嘗試更新一下Linux的內(nèi)核,折騰一下內(nèi)核。網(wǎng)傳的ubuntu更新內(nèi)核的教程都有各種問題,例如我們這次會提到的,更新到4.17版本之后的內(nèi)核,需要安裝的軟件包會多一個(gè)。這次自己來寫一個(gè)教程記錄一下。

  1. 為什么要更新Linux內(nèi)核?
  2. 如何查看自己當(dāng)前的版本?
  3. 更新到哪個(gè)內(nèi)核比較合適?
  4. 正式更新的具體步驟

1. 為什么要更新Linux內(nèi)核?

更新內(nèi)核主要是為了獲得一些新特性/新功能,例如對新的軟硬件的支持。另一個(gè)理由就是新版本的內(nèi)核比之老版本會修復(fù)過去的BUG,提供一個(gè)更加安全可靠的運(yùn)行環(huán)境。
但是更新也有弊端,隨著新特性/新功能的加入,可能會使得部分老舊軟件依賴不支持的情況,也會使得運(yùn)行也變得不穩(wěn)定(新的漏洞新的BUG)。
至于到底更不更新?還是取決于需求的(盲目更新可能會引發(fā)工具鏈問題?。?。這里我們喜歡折騰,那就更新一下試試!

2. 如何查看自己當(dāng)前的版本?

在更新之前,我們肯定得知道我們現(xiàn)在到底是個(gè)什么內(nèi)核版本?否則如何更新到哪都不清楚!
首先在終端中,輸入以下命令后按下回車

uname -sr

可以發(fā)現(xiàn)Ubuntu 18.04 server 默認(rèn)的內(nèi)核是

Linux 4.15.0-55-generic

這個(gè)是已經(jīng)是2018-02-01時(shí)候的一個(gè)內(nèi)核了,比較穩(wěn)定,當(dāng)然也有些過時(shí)。(本文寫的時(shí)候是2019-07-29 已經(jīng)一年半時(shí)間過去了)

3. 更新到哪個(gè)內(nèi)核比較合適?

我到底應(yīng)該更新到哪個(gè)版本的內(nèi)核呢?內(nèi)核版本眾多,哪個(gè)比較穩(wěn)定可靠,哪些則具有創(chuàng)新先進(jìn)呢?
讓我們首先前往 https://www.kernel.org ,然后你會看到有不同版本的內(nèi)核,例如stable(穩(wěn)定板),mainline(主線版)等等。我該選擇哪個(gè)呢?
簡單說,選擇這個(gè)網(wǎng)站上的黃色按鈕上的版本即可,如圖所示:

The Linux Kernel Archives

黃色按鈕內(nèi)所示的5.2.4,這是一個(gè)最新的Stable版本的Linux內(nèi)核,說明它通過了穩(wěn)定性的測試,并且解決了諸多重要BUG,可以拿來作為生產(chǎn)環(huán)境進(jìn)行部署。
其實(shí)內(nèi)核有四種,這里列舉一下官網(wǎng)上的Releases發(fā)布頁的介紹:

  • Prepatch(RC) 預(yù)發(fā)布

Prepatch or "RC" kernels are mainline kernel pre-releases that are mostly aimed at other kernel developers and Linux enthusiasts. They must be compiled from source and usually contain new features that must be tested before they can be put into a stable release. Prepatch kernels are maintained and released by Linus Torvalds.

預(yù)發(fā)布版內(nèi)核是添加了新特性/功能的內(nèi)核,但是這些功能仍然在測試階段,還存在已知或潛在的BUG等待解決。這一版會不斷進(jìn)行打磨改善,形成了那些結(jié)尾有-rc的后綴版本。當(dāng)Linus確定新的內(nèi)核沒有問題了,這個(gè)版本將會進(jìn)入Stable發(fā)布階段。

  • Mainline 主線版

Mainline tree is maintained by Linus Torvalds. It's the tree where all new features are introduced and where all the exciting new development happens. New mainline kernels are released every 2-3 months.

主線版是添加了所有激動人心的新型功能,新修復(fù)的補(bǔ)丁的版本,盡管這些新的東西不一定穩(wěn)定甚至測試都不一定過得去。這是Linus Torvalds自己的Linux樹,我們稱這個(gè)git樹的版本叫主線版,通常2~3個(gè)月發(fā)布一次。

  • Stable 穩(wěn)定版

After each mainline kernel is released, it is considered "stable." Any bug fixes for a stable kernel are backported from the mainline tree and applied by a designated stable kernel maintainer. There are usually only a few bugfix kernel releases until next mainline kernel becomes available -- unless it is designated a "longterm maintenance kernel." Stable kernel updates are released on as-needed basis, usually once a week.

當(dāng)一個(gè)主線版發(fā)布之后,它就被視為是一個(gè)穩(wěn)定版了。任何對于穩(wěn)定板的漏洞修補(bǔ)都是從主線版上面反向移植(backport)來的。通常到下一次主線版發(fā)布前,只有一些漏洞修補(bǔ)的內(nèi)核會進(jìn)行發(fā)布,除非這個(gè)版本的內(nèi)核被設(shè)計(jì)成一個(gè)長期支持版內(nèi)核。穩(wěn)定版內(nèi)核是按需進(jìn)行發(fā)布的,通常每周一次。

  • Longterm 長期維護(hù)版

There are usually several "longterm maintenance" kernel releases provided for the purposes of backporting bugfixes for older kernel trees. Only important bugfixes are applied to such kernels and they don't usually see very frequent releases, especially for older trees.

長期支持版本通常有數(shù)個(gè),這是為了對舊版內(nèi)核的漏洞進(jìn)行反向移植修補(bǔ),只有一些重要的漏洞修補(bǔ)才會加入這些內(nèi)核,它們不會經(jīng)常更新,尤其是更舊版的內(nèi)核。


各版本內(nèi)核比較

四個(gè)版本的Linux Kernel,生產(chǎn)環(huán)境可以選擇longterm或stable,實(shí)驗(yàn)環(huán)境都可以選擇,根據(jù)實(shí)際情況以及需要。這里我們選的是stable,相對較新,且較穩(wěn)定。
這里推薦大家閱讀這篇 哪個(gè) Linux 內(nèi)核版本是 “穩(wěn)定的”? | Linux 中國 其中的解釋比較通俗易懂(這篇是翻譯自國外一篇博文的)

4. 正式更新

接下來我們將會進(jìn)行正式的更新,以更新到5.2.4為例
首先打開Ubuntu內(nèi)核網(wǎng)站,下拉找到我們要的版本5.2.4,如圖

多個(gè)版本的內(nèi)核

然后點(diǎn)擊這個(gè)進(jìn)入頁面,根據(jù)自己的硬件設(shè)備,選擇不同的版本。這里我用的是PVE虛擬的intelskylake的cpu,是X86的芯片,那么就選這個(gè)amd64的版本。
具體硬件版本

我們需要的軟件包共有四個(gè),即兩個(gè)header頭文件,一個(gè)image鏡像,一個(gè)modules模塊:

  • linux-headers-5.2.4-050204_5.2.4-050204.201907280731_all.deb
  • linux-headers-5.2.4-050204-generic_5.2.4-050204.201907280731_amd64.deb
  • linux-image-unsigned-5.2.4-050204-generic_5.2.4-050204.201907280731_amd64.deb
  • linux-modules-5.2.4-050204-generic_5.2.4-050204.201907280731_amd64.deb

\color{red}{Warning}:在內(nèi)核版本4.17之前(不含4.17)中是無modules文件的,所以你只需要3個(gè)軟件包即兩個(gè)header,一個(gè)image即可完成更新。且網(wǎng)上目前搜索到的內(nèi)核更新教程通常都是適合4.17內(nèi)核之前的,而我們更新到4.17之后版本,例如我們更新到5.2.4,在dkp步驟時(shí)候會提示缺少依賴項(xiàng),沒有modules文件!

隨后,我們輸入以下的四條命令,使用wget一個(gè)個(gè)下載對應(yīng)的軟件包:
輸入一條命令后,按下回車,根據(jù)網(wǎng)絡(luò)情況,等待幾分鐘即可,具體時(shí)間可查看輸出的etc后的時(shí)間

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.4/linux-headers-5.2.4-050204_5.2.4-050204.201907280731_all.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.4/linux-headers-5.2.4-050204-generic_5.2.4-050204.201907280731_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.4/linux-image-unsigned-5.2.4-050204-generic_5.2.4-050204.201907280731_amd64.deb
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v5.2.4/linux-modules-5.2.4-050204-generic_5.2.4-050204.201907280731_amd64.deb

等待所有四個(gè)軟件包都下載完成后,輸入下述命令進(jìn)行解壓安裝:

sudo dpkg -i *.deb

因?yàn)槭褂昧藄udo,所以會提示輸入密碼,我們輸入密碼,按下回車等待安裝。

當(dāng)提示成功安裝后,輸入以下命令進(jìn)行重啟

reboot

等待重啟后登陸系統(tǒng),然后輸入

uname -sr

查看目前的系統(tǒng)

Linux 5.2.4-050204-generic

至此,更新內(nèi)核就完成了?。。?/p>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容