大約每兩到三個月左右就有一個新的Linux內核版本發布,與此類似,一個內核版本支持多長時間也沒有固定的日期和時間表。一個普通的穩定內核版本通常會被支持兩個半月到三個月,這取決於下一個穩定內核版本的發布時間。但是 LTS(長期支持)內核版本的支持期要比 3 個月長得多,有些版本可能達到2到6年。
內核發布和支持時間可以在Linux內核官網查看,地址:https://www.kernel.org/。Redhat系列作業系統內核RPM包可以在elrepo官網查看,地址:https://elrepo.org/linux/kernel/el8/x86_64/RPMS/
一般來說不要輕易升級伺服器的內核,除非:
- 許多出於對安全的考慮,如避免以前版本中發現的漏洞
- 更充分地認識內核,了解內核的各個內核模塊和功能
- 更好的利用/體驗新內核的的新功能和特性
升級內核前請備份數據
實驗環境
伺服器:AlmaLinux 8
客戶端:Windows 11
SSH客戶端:MobaXterm 21.1
使用的用戶:root
查看當前內核版本
使用uname命令查看內核版本,其中 -a 選項輸出信息更為詳細。
# uname -a
Linux ibetterlife 4.18.0-425.3.1.el8.x86_64 #1 SMP Tue Nov 8 14:08:25 EST 2022 x86_64 x86_64 x86_64 GNU/Linux
# uname -r
4.18.0-425.3.1.el8.x86_64
啟用 ELRepo
ELRepo 是企業 Linux 軟體包的 RPM 存儲庫。 ELRepo 支持 Red Hat Enterprise Linux (RHEL) 及其衍生產品,如 Scientific Linux、CentOS Linux、Alma Linux 和 Rocky Linux。 ELRepo 項目專注於與硬體相關的軟體包,以增強您對 Enterprise Linux 的體驗。 這包括文件系統驅動程序、圖形驅動程序、網絡驅動程序、聲音驅動程序、網絡攝像頭和視頻驅動程序。
從 CentOS/AlmaLinux/RockLinux 8 開始,ELRepo 已經加入到官方軟體倉庫中,名稱為 「elrepo-release」。
啟用 ELRepo 只需要執行命令:
dnf -y install elrepo-release
安裝ELRepo公鑰
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
升級內核
使能 elrepo-kernel 倉庫,查看倉庫中目前可用的內核
dnf --disablerepo="*" --enablerepo="elrepo-kernel" list available
kernel-ml 中的 ml 是英文 「mainline stable」 的縮寫,elrepo-kernel 中列出來的是最新的穩定主線版本。
kernel-lt 中的 lt 是英文 「long term support」 的縮寫,elrepo-kernel 中列出來的長期支持版本。
對於生產伺服器建議安裝LT長期支持版的內核,對於個人學習來說可以安裝ML主線版本內核。
dnf -y install --enablerepo=elrepo-kernel kernel-lt kernel-lt-devel
kernel-devel:包含用於內核開發環境所需的內核頭文件以及Makefile,可選的
安裝成功之後查看內核版本
grubby --default-kernel
輸出結果示例:
/boot/vmlinuz-5.4.225-1.el8.elrepo.x86_64
新版本內核安裝成功後,一般情況下回同時設置為默認啟動內核,重啟後替換當前內核。
如果沒有生效,可以手動設置默認內核。
grubby --set-default=/boot/vmlinuz-5.4.225-1.el8.elrepo.x86_64
重啟系統
需要重啟系統才能啟用新版本的內核。
reboot
重啟之後,再次查看內核版本
# uname -r
5.4.225-1.el8.elrepo.x86_64
刪除舊內核(可選的)
刪除舊內核是可選的,畢竟內核占據的空間也就不到100M,而且萬一有問題還可以回滾到舊內核。
當然就想測試一下,也是可以的,首先查看當前存在的內核
# rpm -qa | grep kernel | sort -V
kernel-4.18.0-240.15.1.el8_3.x86_64
kernel-core-4.18.0-240.15.1.el8_3.x86_64
kernel-lt-5.4.225-1.el8.elrepo.x86_64
kernel-lt-core-5.4.225-1.el8.elrepo.x86_64
kernel-lt-modules-5.4.225-1.el8.elrepo.x86_64
kernel-modules-4.18.0-240.15.1.el8_3.x86_64
kernel-tools-4.18.0-240.15.1.el8_3.x86_64
kernel-tools-libs-4.18.0-240.15.1.el8_3.x86_64
刪除舊內核
# dnf remove kernel-4.18.0 kernel-core-4.18.0 kernel-modules-4.18.0 kernel-tools-4.18.0 kernel-tools-libs-4.18.0
Removed:
kernel-4.18.0-240.15.1.el8_3.x86_64 kernel-core-4.18.0-240.15.1.el8_3.x86_64 kernel-modules-4.18.0-240.15.1.el8_3.x86_64
kernel-tools-4.18.0-240.15.1.el8_3.x86_64 kernel-tools-libs-4.18.0-240.15.1.el8_3.x86_64
Complete!
再次查看當前的內核,檢查是否刪除成功。
# rpm -qa | grep kernel | sort -V
kernel-lt-5.4.225-1.el8.elrepo.x86_64
kernel-lt-core-5.4.225-1.el8.elrepo.x86_64
kernel-lt-modules-5.4.225-1.el8.elrepo.x86_64