天天看點

如何在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這種。值得我們關注的是,任何核心版本錯誤修複後的再釋出版本都應該是我們考慮更新使用的核心版本。

Linux核心版本

   Linux核心版本分為主線、穩定和長期版本。(所有核心版本都可以在核心開發官方網站https://www.kernel.org上擷取)目前我們看到最新的穩定核心版本為4.10.12。

主線版本代表整個Linux核心的一個樹幹,新的主線版本每2-3個月釋出一次,所有的新功能及特性都将會包含主線版本中。穩定核心則是在主線版本中,被認為是”穩定的”得出。穩定核心的任何錯誤修複都将從主線樹中傳回,也就是主線核心出現的任何錯誤(包括之前的任何舊版本核心的錯誤和BUG)在得到修複之後才會被指定為穩定核心,是以在通常情況下,穩定核心既有核心新功能,同時BUG也是最少的核心版本。穩定核心的更新釋出依賴于主線核心(直到下一個主線核心可用),穩定的核心更新是根據需要釋出的,通常是每3個月。而對于長期核心版本,通常提供幾個”長期維護”核心版本,用于較早的核心樹錯誤修複傳回的目的。這些核心隻應用重要的錯誤修複,通常不會有非常頻繁的更新。

主線、穩定和長期都是活動核心版本,由Linus Torvalds及Linux核心組織維護和釋放。 而我們平時所使用的Linux發行版的核心都為分發核心,許多Linux發行版都提供自己的”長期維護”核心版本,這些核心可能是也可能不是基于核心開發人員維護的核心。是以分發版本的核心版本由發行版的廠商決定并有自己的維護周期,通常由分發版更新時一起釋出。

安裝/更新新核心的目的

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

更充分地認識核心,了解核心的各個核心子產品和功能

更好的利用/體驗新核心的的新功能和特性

安裝/更新的方法和建議

1、對于CentOS/RHEL系統,盡量使用yum方式或RPM包安裝/更新核心,需要注意的是紅帽的Red Hat Linux服務需要訂閱。

2、使用安裝新核心而不是直接更新核心,安裝新核心不會覆寫舊核心,而更新會導緻新核心直接替換舊核心,可能會導緻系統無法啟動,安裝也可以讓我們在更新後有復原的選擇。

3、一般地,對于大多數Linux分發版,使用yum/dnf和分發版布官方的存儲庫來更新核心,這種方式隻能更新到該分發版的存儲庫提供的最新版本,而不是Linux核心組織釋出的最新核心。

4、如果想迅速并且安全地使用最新核心,對于CentOS/RHEL系統并不支援yum的方式直接安裝或更新。那麼此時我們可以使用ELRepo(第三方存儲庫)進行核心安裝更新。(相關資訊請通路網站http://www.elrepo.org)

5、下載下傳新核心的源碼包進行編譯安裝,這種方式有助于我們更細緻地學習核心底層知識,但在生産環境中不推薦編譯安裝。

6、盡量使用最新的Linux發行版,新的Liunx發行版包含該發行版維護的新核心,如果有必要,那麼請使用如yum upgrade或者yum update來更新你的系統。對于Ubuntu、Debian等發行版,使用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存儲庫安裝/更新最新的核心版本(兩種方法)

一、CentOS下通過yum軟體管理程式或RPM包安裝/更新核心

安裝步驟:

1、檢視目前核心版本

<code>[root@HMing-Server34 ~]</code><code># uname -sr</code>

<code>Linux 2.6.32-431.el6.x86_64</code>

檢視系統已安裝的核心軟體

# yum list installed “kernel*”

<a href="https://s4.51cto.com/wyfs02/M00/92/67/wKiom1j_FSzjvvUlAACmTgyX6DI426.png" target="_blank"></a>

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

2、擷取CentOS 6發行版的最新核心

對于上面介紹的核心軟體包,我們不用全部安裝,隻安裝以下幾個包即可

<code>kernel-2.6.32-696.el6.x86_64.rpm</code>

<code>kernel-devel-2.6.32-696.el6.x86_64.rpm</code>

<code>kernel-headers-2.6.32-696.el6.x86_64.rpm</code>

<code>kernel-firmware-2.6.32-696.el6.noarch.rpm</code>

<code>kernel-doc-2.6.32-696.el6.noarch.rpm</code>

我們可以從目前最新版CentOS6.9的iso檔案中擷取以上核心軟體包,或者從官方支援的鏡像網站中下載下傳,如國内的sohu鏡像位址http://mirrors.sohu.com中下載下傳,詳細位址為http://mirrors.sohu.com/centos/6.9/os/x86_64/Packages/

<a href="https://s5.51cto.com/wyfs02/M01/92/67/wKiom1j_FXHRL2yBAABiv_FIUic556.png" target="_blank"></a>

在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

3、執行安裝/更新核心軟體包

使用RPM安裝方式安裝/更新核心

<code># rpm -Uvh kernel-firmware-2.6.32-696.el6.noarch.rpm</code>

<code># rpm -Uvh kernel-headers-2.6.32-696.el6.x86_64.rpm</code>

<code> </code> 

<code># rpm -ivh kernel-devel-2.6.32-696.el6.x86_64.rpm</code>

<code># rpm -ivh kernel-doc-2.6.32-696.el6.noarch.rpm</code>

<code># rpm -ivh kernel-2.6.32-696.el6.x86_64.rpm</code>

<code># rpm -ivh kernel-2.6.32-696.el6.x86_64.rpm --nodeps</code>

安裝kernel包,如果有其他依賴軟體需要安裝,我們可以根據提示安裝,或者在rpm後面加上--nodeps選項,意思是解除依賴

<a href="https://s2.51cto.com/wyfs02/M01/92/67/wKiom1j_FgDjZ8CLAADbyfIcIAw602.png" target="_blank"></a>

注意:在安裝/更新以上核心軟體包時,安裝核心軟體包kernel-2.6.32-696.el6.x86_64.rpm 時,rpm安裝方式選項參數使用的-i而不是-U,兩者是有差別的,-i表示安裝,-U表示更新,而我們需要保留舊的核心版本,所有這裡使用安裝的方式。而對于核心軟體包kernel-firmware、kernel-headers、kernel-devel、kernel-doc等,對于已安裝過的,直接安裝可能會報相關錯誤提示,是以我們可以使用-U選項更新,也可以直接用yum安裝,自動安裝相關依賴的軟體包。

使用yum方式安裝/更新核心

  cd進入新下載下傳的核心軟體包所在的目錄,執行yum localinstall kernel*進行安裝,值得提的是,使用這種方式安裝同樣不會直接替換更新舊核心,安裝之後新舊核心并存。是以我們推薦這種使用安裝方式。

<code>[root@HMing-Server34 src]</code><code># ls kernel-*</code>

執行yum localinstall kernel*進行安裝

<code>[root@HMing-Server34 src]</code><code># yum localinstall kernel*</code>

<a href="https://s1.51cto.com/wyfs02/M02/92/67/wKiom1j_FoXRKpD-AADSHEZ12YE127.png" target="_blank"></a>

4、安裝/更新核心之後,修改系統預設使用的核心

  在CentOS中安裝完新核心之後,新的核心成為系統的預設啟動選擇,我們不需要做任何修改。新的核心在重新開機系統後生效。如果有必要,比如使用舊核心,我們可以手動修改/boot/grub/grub.conf檔案中系統預設使用的核心,修改default=1,表示GRUB使用第二個核心啟動系統

<a href="https://s3.51cto.com/wyfs02/M00/92/66/wKioL1j_FtKAUZNfAAEpu58Ww-s980.png" target="_blank"></a>

在重新啟動系統的GRUB的引導界面,快速按下任意鍵,确認新核心預設被使用

<a href="https://s3.51cto.com/wyfs02/M00/92/67/wKiom1j_FvaSmOyDAABJxr-yP6o438.png" target="_blank"></a>

檢視新核心,确認是否正确安裝

<code>[root@HMing-Server34 src]</code><code># uname -sr</code>

<code>Linux 2.6.32-696.el6.x86_64</code>

二、通過ELRepo存儲庫安裝/更新最新的穩定核心版本

安裝步驟

1、在CentOS上啟用ELRepo存儲庫

導入公鑰

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

在CentOS6上安裝ELRepo 6存儲庫:

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

或CentOS7上安裝ELRepo 7存儲庫:

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

安裝了ELRepo存儲庫,我們可以通過查找特定的存儲庫中查找可用的軟體包,這裡我們檢視"elrepo-kernel" 核心軟體包的版本資訊

<code># yum --disablerepo "*" --enablerepo "elrepo-kernel" list available</code>

<a href="https://s2.51cto.com/wyfs02/M01/92/67/wKiom1j_GArTVOXBAACya6J7atI557.png" target="_blank"></a>

2、指定ELRepo存儲庫安裝最新的穩定核心

<code># yum --enablerepo=elrepo-kernel install kernel-ml</code>

<a href="https://s4.51cto.com/wyfs02/M02/92/67/wKiom1j_GEjggo6-AAB09Aoo5l4517.png" target="_blank"></a>

安裝完成之後,我們即可以在/boot/grub/grub.conf 檔案看到存在新安裝的核心條目,并修改default=0,指定系統預設啟動的核心選項,為4.10.12核心版本,重新啟動系統即可生效

<a href="https://s1.51cto.com/wyfs02/M00/92/67/wKiom1j_GGqw_1EbAAFujKHa1cA588.png" target="_blank"></a>

檢視重新開機的GRUB核心啟動項界面,确認是否正确使用了指定的新核心

<a href="https://s1.51cto.com/wyfs02/M01/92/67/wKioL1j_GJSQ60avAABMm1tcAE8902.png" target="_blank"></a>

同樣的,對于在RHEL上安裝/更新核心使用上面的兩種方法也适用

結語

  在本文中,介紹了核心的幾種版本,以及安裝/更新新核心版本的兩種方法,也是在生産環境中推薦的安裝/更新方法。當這兩種方法都不滿足要求時,我們也可以從https://www.kernel.org/下載下傳核心源碼包進行編譯安裝。

本文轉自 HMLinux 51CTO部落格,原文連結:http://blog.51cto.com/7424593/1919325

繼續閱讀