如何在CentOS/RHEL上安裝或升級新的內核版本

    Linux內核是一個總體的類Unix計算機操做系統內核。一般咱們使用的Linux發行版,如Red Hat、Debian、SUSE等,這些都稱爲Linux的分發版。一個典型的分發版,是由Linux內核,以及支持的許多由GNU項目提供的應用程序、GNU組件,C標準庫,CLI shell,X windows等組成的一個完整操做系統。咱們應該要知道的是,Linux的定義僅僅是Linux內核,全部的」Linux」發行版其實是以Linux爲內核的GNU系統的版本。不一樣的Linux內核版本都有其生命週期,Linux內核組織或Linux發行版廠商只在該日期提供錯誤或漏洞修復,咱們能夠從從內核的版本號區分辨別,好比版本3.16.43,該數字3.16表示一個長期版本,43則表示錯誤修訂以後再發行的具體版本號,固然我這裏描述的只是提供一個參考價值,更細緻的版本還有多是3.16.43-1這種。值得咱們關注的是,任何內核版本錯誤修復後的再發布版本都應該是咱們考慮升級使用的內核版本。
node



Linux內核版本shell

   Linux內核版本分爲主線、穩定和長期版本。(全部內核版本均可以在內核開發官方網站https://www.kernel.org上獲取)目前咱們看到最新的穩定內核版本爲4.10.12windows

主線版本表明整個Linux內核的一個樹幹,新的主線版本每2-3個月發佈一次,全部的新功能及特性都將會包含主線版本中。穩定內核則是在主線版本中,被認爲是穩定的得出。穩定內核的任何錯誤修復都將從主線樹中返回,也就是主線內核出現的任何錯誤(包括以前的任何舊版本內核的錯誤和BUG)在獲得修復以後纔會被指定爲穩定內核,因此在一般狀況下,穩定內核既有內核新功能,同時BUG也是最少的內核版本。穩定內核的更新發布依賴於主線內核(直到下一個主線內核可用),穩定的內核更新是根據須要發佈的,一般是每3個月。而對於長期內核版本,一般提供幾個長期維護內核版本,用於較早的內核樹錯誤修復返回的目的。這些內核只應用重要的錯誤修復,一般不會有很是頻繁的更新。centos

主線、穩定和長期都是活動內核版本,由Linus TorvaldsLinux內核組織維護和釋放。 而咱們平時所使用的Linux發行版的內核都爲分發內核,許多Linux發行版都提供本身的長期維護內核版本,這些內核多是也可能不是基於內核開發人員維護的內核。所以分發版本的內核版本由發行版的廠商決定並有本身的維護週期,一般由分發版更新時一塊兒發佈。安全


安裝/升級新內核的目的bash

許多出於對安全的考慮,如避免之前版本中發現的漏洞ide

更充分地認識內核,瞭解內核的各個內核模塊和功能性能

更好的利用/體驗新內核的的新功能和特性學習


安裝/升級的方法和建議網站

一、對於CentOS/RHEL系統,儘可能使用yum方式或RPM包安裝/升級內核,須要注意的是紅帽的Red Hat Linux服務須要訂閱。

二、使用安裝新內核而不是直接升級內核,安裝新內核不會覆蓋舊內核,而升級會致使新內核直接替換舊內核,可能會致使系統沒法啓動,安裝也可讓咱們在升級後有回滾的選擇。

三、通常地,對於大多數Linux分發版,使用yum/dnf和分發版布官方的存儲庫來升級內核,這種方式只能升級到該分發版的存儲庫提供的最新版本,而不是Linux內核組織發佈的最新內核。

四、若是想迅速而且安全地使用最新內核,對於CentOS/RHEL系統並不支持yum的方式直接安裝或升級。那麼此時咱們可使用ELRepo(第三方存儲庫)進行內核安裝升級。(相關信息請訪問網站http://www.elrepo.org)

五、下載新內核的源碼包進行編譯安裝,這種方式有助於咱們更細緻地學習內核底層知識,但在生產環境中不推薦編譯安裝。

六、儘可能使用最新的Linux發行版,新的Liunx發行版包含該發行版維護的新內核,若是有必要,那麼請使用如yum upgrade或者yum update來更新你的系統。對於UbuntuDebian等發行版,使用apt-get update方式來更新。


內核軟件包介紹

  • kernel      Linux內核軟件包,包含單、多核和多處理器系統的內核,是任何Linux操做系統的核心,單處理器的系統僅需安裝內核包。內核處理操做系統的基本功能: 內存分配、進程分配、設備輸入和輸出等

  • kernel-devel   包含提供足夠的針對內核軟件包構建模塊的內核頭文件和makefile文件

  • kernel-headers  包含指定Linux內核、用戶空間庫文件和程序之間指定接口的C頭文件。頭文件定義了構建大多數標準程序所需的結構和常量,也是重建glibc軟件包所必需的

  • kernel-doc     包含來自內核源代碼的文檔文件。各類關於Linux內核和設備以及驅動程序的信息都記錄在這些文件當中

  • kernel-firmware  包含對於某些設備及其操做的固件信息文件

  • kernel-debug    包含許多對於內核debug診斷和調試的啓用選項,只有當咱們須要嘗試收集額外的內核錯誤信息時才應該安裝它。它是以犧牲性能爲代價

  • kernel-debug-devel  包含內核debug診斷和調試的啓用選項,以犧牲性能爲代價


CentOS上安裝/升級內核

  我將介紹在CentOS下經過yum軟件管理程序或RPM包安裝/升級內核和經過ELRepo存儲庫安裝/升級最新的內核版本(兩種方法)

1、CentOS下經過yum軟件管理程序或RPM包安裝/升級內核

安裝步驟:

一、查看當前內核版本

[root@HMing-Server34 ~]# uname -sr
Linux 2.6.32-431.el6.x86_64

查看系統已安裝的內核軟件

# yum list installed kernel*

wKiom1j_FSzjvvUlAACmTgyX6DI426.png

在上面輸出中,白色高亮部分就是系統已經安裝的內核軟件包


二、獲取CentOS 6發行版的最新內核

對於上面介紹的內核軟件包,咱們不用所有安裝,只安裝如下幾個包便可

kernel-2.6.32-696.el6.x86_64.rpm
kernel-devel-2.6.32-696.el6.x86_64.rpm
kernel-headers-2.6.32-696.el6.x86_64.rpm
kernel-firmware-2.6.32-696.el6.noarch.rpm
kernel-doc-2.6.32-696.el6.noarch.rpm

咱們能夠從目前最新版CentOS6.9iso文件中獲取以上內核軟件包,或者從官方支持的鏡像網站中下載,如國內的sohu鏡像地址http://mirrors.sohu.com中下載,詳細地址爲http://mirrors.sohu.com/centos/6.9/os/x86_64/Packages/

wKiom1j_FXHRL2yBAABiv_FIUic556.png


CentOS7(目前最新版7.3),咱們須要如下幾個包

kernel-3.10.0-514.el7.x86_64.rpm

kernel-headers-3.10.0-514.el7.x86_64.rpm

kernel-tools-3.10.0-514.el7.x86_64.rpm

kernel-tools-libs-3.10.0-514.el7.x86_64.rpm

kernel-doc-3.10.0-514.el7.noarch.rpm

三、執行安裝/升級內核軟件包

使用RPM安裝方式安裝/升級內核

# rpm -Uvh kernel-firmware-2.6.32-696.el6.noarch.rpm
# rpm -Uvh kernel-headers-2.6.32-696.el6.x86_64.rpm
 
# rpm -ivh kernel-devel-2.6.32-696.el6.x86_64.rpm
# rpm -ivh kernel-doc-2.6.32-696.el6.noarch.rpm

# rpm -ivh kernel-2.6.32-696.el6.x86_64.rpm
# rpm -ivh kernel-2.6.32-696.el6.x86_64.rpm --nodeps

安裝kernel包,若是有其餘依賴軟件須要安裝,咱們能夠根據提示安裝,或者在rpm後面加上--nodeps選項,意思是解除依賴

wKiom1j_FgDjZ8CLAADbyfIcIAw602.png


注意:在安裝/升級以上內核軟件包時,安裝內核軟件包kernel-2.6.32-696.el6.x86_64.rpm 時,rpm安裝方式選項參數使用的-i而不是-U,二者是有區別的,-i表示安裝,-U表示升級,而咱們須要保留舊的內核版本,全部這裏使用安裝的方式。而對於內核軟件包kernel-firmwarekernel-headerskernel-develkernel-doc等,對於已安裝過的,直接安裝可能會報相關錯誤提示,因此咱們可使用-U選項升級,也能夠直接用yum安裝,自動安裝相關依賴的軟件包。


使用yum方式安裝/升級內核

  cd進入新下載的內核軟件包所在的目錄,執行yum localinstall kernel*進行安裝,值得提的是,使用這種方式安裝一樣不會直接替換升級舊內核,安裝以後新舊內核並存。因此咱們推薦這種使用安裝方式。

[root@HMing-Server34 src]# ls kernel-*
kernel-2.6.32-696.el6.x86_64.rpm
kernel-devel-2.6.32-696.el6.x86_64.rpm
kernel-doc-2.6.32-696.el6.noarch.rpm
kernel-firmware-2.6.32-696.el6.noarch.rpm
kernel-headers-2.6.32-696.el6.x86_64.rpm

執行yum localinstall kernel*進行安裝

[root@HMing-Server34 src]# yum localinstall kernel*

wKiom1j_FoXRKpD-AADSHEZ12YE127.png


4、安裝/升級內核以後,修改系統默認使用的內核

  在CentOS中安裝完新內核以後,新的內核成爲系統的默認啓動選擇,咱們不須要作任何修改。新的內核在重啓系統後生效。若是有必要,好比使用舊內核,咱們能夠手動修改/boot/grub/grub.conf文件中系統默認使用的內核,修改default=1,表示GRUB使用第二個內核啓動系統

wKioL1j_FtKAUZNfAAEpu58Ww-s980.png


在從新啓動系統的GRUB的引導界面,快速按下任意鍵,確認新內核默認被使用

wKiom1j_FvaSmOyDAABJxr-yP6o438.png


查看新內核,確認是否正確安裝

[root@HMing-Server34 src]# uname -sr
Linux 2.6.32-696.el6.x86_64


2、經過ELRepo存儲庫安裝/升級最新的穩定內核版本

安裝步驟

一、CentOS上啓用ELRepo存儲庫

導入公鑰

# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

CentOS6上安裝ELRepo 6存儲庫:

# rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm

CentOS7上安裝ELRepo 7存儲庫:

# rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安裝了ELRepo存儲庫,咱們能夠經過查找特定的存儲庫中查找可用的軟件包,這裏咱們查看"elrepo-kernel" 內核軟件包的版本信息

# yum --disablerepo "*" --enablerepo "elrepo-kernel" list available

wKiom1j_GArTVOXBAACya6J7atI557.png


二、指定ELRepo存儲庫安裝最新的穩定內核

# yum --enablerepo=elrepo-kernel install kernel-ml

wKiom1j_GEjggo6-AAB09Aoo5l4517.png


安裝完成以後,咱們便可以在/boot/grub/grub.conf 文件看到存在新安裝的內核條目,並修改default=0,指定系統默認啓動的內核選項,爲4.10.12內核版本,從新啓動系統便可生效

wKiom1j_GGqw_1EbAAFujKHa1cA588.png


查看從新引導的GRUB內核啓動項界面,確認是否正確使用了指定的新內核

wKioL1j_GJSQ60avAABMm1tcAE8902.png


一樣的,對於在RHEL上安裝/升級內核使用上面的兩種方法也適用


結語

  在本文中,介紹了內核的幾種版本,以及安裝/升級新內核版本的兩種方法,也是在生產環境中推薦的安裝/升級方法。當這兩種方法都不知足要求時,咱們也能夠從https://www.kernel.org/下載內核源碼包進行編譯安裝。

相關文章
相關標籤/搜索