如何升級Linux內核?

海淘世界 發佈 2022-12-05T13:46:19.883509+00:00

大約每兩到三個月左右就有一個新的Linux內核版本發布,與此類似,一個內核版本支持多長時間也沒有固定的日期和時間表。一個普通的穩定內核版本通常會被支持兩個半月到三個月,這取決於下一個穩定內核版本的發布時間。

大約每兩到三個月左右就有一個新的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
關鍵字: