升級CentOS 7.4內核版本的三種方案


https://blog.csdn.net/breeze915/article/details/79243673

 

在實驗環境下,已安裝了最新的CentOS 7.4操作系統,現在需要升級內核版本。

實驗環境

CentOS-7-x86_64-Minimal-1708.iso
CentOS Linux release 7.4.1708 (Core)
Kernel 3.10.0-693.el7.x86_64

方案一:小版本升級

連接並同步CentOS自帶yum源,更新內核版本。此方法適用於更新內核補丁 。
具體實驗步驟:

 

sudo yum list kernel
sudo yum update -y kernel

 


此時,已安裝成功,但若想將系統運行在新版本的kernel上,則需要重新啟動操作系統。

重啟完成,至此,Kernel版本已升級至【3.10.0-693.17.1.el7.x86_64】


方案二:大版本升級

載入elrepo源,搜索內核更新資源,並進行更新操作。
具體實驗步驟:

# 載入公鑰
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安裝ELRepo
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
# 載入elrepo-kernel元數據
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
# 查看可用的rpm包
yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
# 安裝最新版本的kernel
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64


重啟,選擇新版本內核進入系統。

此時,操作系統使用的內核已升級為【4.15.0-1.el7.elrepo.x86_64】

最后一步,需要將內核工具包一並升級

# 刪除舊版本工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64
# 安裝新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64

至此,已完成升級。

注意:內核安裝好后,需要設置為默認啟動選項並重啟后才會生效

查看系統上的所有可用內核:

$ sudo awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
0 : CentOS Linux (4.18.7-1.el7.elrepo.x86_64) 7 (Core)
1 : CentOS Linux (3.10.0-862.11.6.el7.x86_64) 7 (Core)
2 : CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
3 : CentOS Linux (0-rescue-063ec330caa04d4baae54c6902c62e54) 7 (Core)

設置新的內核為grub2的默認版本

服務器上存在4 個內核,我們要使用 4.18 這個版本,可以通過 grub2-set-default 0 命令或編輯 /etc/default/grub 文件來設置

方法1、通過 grub2-set-default 0 命令設置

其中 0 是上面查詢出來的可用內核

grub2-set-default 0

方法2、編輯 /etc/default/grub 文件

設置 GRUB_DEFAULT=0,通過上面查詢顯示的編號為 0 的內核作為默認內核:

復制代碼
復制代碼
$ vim /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=0
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=cl/root rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
復制代碼
復制代碼

生成 grub 配置文件並重啟

復制代碼
復制代碼
$ grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.18.7-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-4.18.7-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-862.11.6.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.11.6.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-514.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-514.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-063ec330caa04d4baae54c6902c62e54
Found initrd image: /boot/initramfs-0-rescue-063ec330caa04d4baae54c6902c62e54.img
done

$ reboot
復制代碼
復制代碼

 驗證

$ uname -r
4.18.7-1.el7.elrepo.x86_64

 刪除舊內核(可選)

查看系統中全部的內核:

復制代碼
$ rpm -qa | grep kernel
kernel-3.10.0-514.el7.x86_64
kernel-ml-4.18.7-1.el7.elrepo.x86_64
kernel-tools-libs-3.10.0-862.11.6.el7.x86_64
kernel-tools-3.10.0-862.11.6.el7.x86_64
kernel-3.10.0-862.11.6.el7.x86_64
復制代碼

方法1、yum remove 刪除舊內核的 RPM 包

$ yum remove kernel-3.10.0-514.el7.x86_64 \
kernel-tools-libs-3.10.0-862.11.6.el7.x86_64 \
kernel-tools-3.10.0-862.11.6.el7.x86_64 \
kernel-3.10.0-862.11.6.el7.x86_64

方法2、yum-utils 工具

如果安裝的內核不多於 3 個,yum-utils 工具不會刪除任何一個。只有在安裝的內核大於 3 個時,才會自動刪除舊內核。

安裝yum-utils

$ yum install yum-utils

刪除舊版本  

package-cleanup --oldkernels

方案三:自編譯升級

Step1: 下載源碼
Step2: 安裝gcc bc cmake
Step3: 編譯源碼,安裝新內核
自編譯升級過程略微復雜,且不便於后期維護,具體操作步驟在此略去不表。

話題擴展

如何將新安裝的內核設定為操作系統的默認內核,或者說如何將新版本的內核設置為重啟后的默認內核?
僅需兩步,之后重啟即可。

grub2-set-default 0
grub2-mkconfig -o /etc/grub2.cfg

 


術語解析

kernel-ml
kernel-ml 中的ml是英文【mainline stable】的縮寫,elrepo-kernel中羅列出來的是最新的穩定主線版本。

kernel-lt
kernel-lt 中的lt是英文【long term support】的縮寫,elrepo-kernel中羅列出來的長期支持版本。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM