此升级方式不仅仅适用于 Rocky Linux 8.x,也适用于 Rocky Linux 9.x,以及所有 Red Hat 系 Linux 操作系统。
本文档基于 Rocky Linux 8.10 Minimal 版本,默认内核版本为:4.18.X,全新安装测试。
1. 启用ELRepo
# 查看当前内核版本
[root@localhost ~]# uname -r
4.18.0-553.el8_10.x86_64
# 载入公钥
[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 ElRepo
[root@localhost ~]# dnf install -y https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
Last metadata expiration check: 0:00:19 ago on Thu 06 Mar 2025 11:30:50 AM CST.
elrepo-release-8.el8.elrepo.noarch.rpm 14 kB/s | 19 kB 00:01
Dependencies resolved.
===========================================================================================================================================================================
Package Architecture Version Repository Size
===========================================================================================================================================================================
Installing:
elrepo-release noarch 8.4-2.el8.elrepo @commandline 19 k
Transaction Summary
===========================================================================================================================================================================
Install 1 Package
Total size: 19 k
Installed size: 8.3 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : elrepo-release-8.4-2.el8.elrepo.noarch 1/1
Verifying : elrepo-release-8.4-2.el8.elrepo.noarch 1/1
Installed:
elrepo-release-8.4-2.el8.elrepo.noarch
Complete!
# 载入 elrepo-kernel 数据
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel repolist
repo id repo name
elrepo-kernel ELRepo.org Community Enterprise Linux Kernel Repository - el8
# 查看可用内核包
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
Last metadata expiration check: 0:01:13 ago on Thu 06 Mar 2025 11:33:13 AM CST.
Installed Packages
kernel.x86_64 4.18.0-553.el8_10 @anaconda
kernel-core.x86_64 4.18.0-553.el8_10 @anaconda
kernel-modules.x86_64 4.18.0-553.el8_10 @anaconda
kernel-tools.x86_64 4.18.0-553.el8_10 @anaconda
kernel-tools-libs.x86_64 4.18.0-553.el8_10 @anaconda
Available Packages
kernel-lt.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-core.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-devel.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-doc.noarch 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-headers.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-modules.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-modules-extra.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-tools.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 5.4.290-1.el8.elrepo elrepo-kernel
kernel-ml.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-core.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-devel.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-doc.noarch 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-headers.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-modules.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-modules-extra.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-tools.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 6.13.5-1.el8.elrepo elrepo-kernel
2. 升级内核版本
☆ 术语解释
- kernel-ml 主线版本是 Linux 内核开发的最前沿,包含了最新的功能、改进和修复。
- kernel-lt 长期支持版本是从主线版本中选出的,用于提供长期的维护和支持。
# 安装LTS长期服务支持版本内核
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel install kernel-lt.x86_64 -y
Last metadata expiration check: 0:12:10 ago on Thu 06 Mar 2025 11:33:13 AM CST.
Dependencies resolved.
===========================================================================================================================================================================
Package Architecture Version Repository Size
===========================================================================================================================================================================
Installing:
kernel-lt x86_64 5.4.290-1.el8.elrepo elrepo-kernel 91 k
Installing dependencies:
kernel-lt-core x86_64 5.4.290-1.el8.elrepo elrepo-kernel 30 M
kernel-lt-modules x86_64 5.4.290-1.el8.elrepo elrepo-kernel 26 M
Transaction Summary
===========================================================================================================================================================================
Install 3 Packages
Total download size: 56 M
Installed size: 92 M
Downloading Packages:
(1/3): kernel-lt-5.4.290-1.el8.elrepo.x86_64.rpm 70 kB/s | 91 kB 00:01
(2/3): kernel-lt-modules-5.4.290-1.el8.elrepo.x86_64.rpm 1.6 MB/s | 26 MB 00:16
(3/3): kernel-lt-core-5.4.290-1.el8.elrepo.x86_64.rpm 1.5 MB/s | 30 MB 00:20
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 2.7 MB/s | 56 MB 00:20
ELRepo.org Community Enterprise Linux Kernel Repository - el8 1.6 MB/s | 1.7 kB 00:00
GPG key at file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org (0xBAADAE52) is already installed
ELRepo.org Community Enterprise Linux Kernel Repository - el8 3.0 MB/s | 3.1 kB 00:00
Importing GPG key 0xEAA31D4A:
Userid : "elrepo.org (RPM Signing Key v2 for elrepo.org) <secure@elrepo.org>"
Fingerprint: B8A7 5587 4DA2 40C9 DAC4 E715 5160 0989 EAA3 1D4A
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-v2-elrepo.org
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kernel-lt-core-5.4.290-1.el8.elrepo.x86_64 1/3
Running scriptlet: kernel-lt-core-5.4.290-1.el8.elrepo.x86_64 1/3
Installing : kernel-lt-modules-5.4.290-1.el8.elrepo.x86_64 2/3
Running scriptlet: kernel-lt-modules-5.4.290-1.el8.elrepo.x86_64 2/3
Installing : kernel-lt-5.4.290-1.el8.elrepo.x86_64 3/3
Running scriptlet: kernel-lt-core-5.4.290-1.el8.elrepo.x86_64 3/3
Running scriptlet: kernel-lt-5.4.290-1.el8.elrepo.x86_64 3/3
Verifying : kernel-lt-5.4.290-1.el8.elrepo.x86_64 1/3
Verifying : kernel-lt-core-5.4.290-1.el8.elrepo.x86_64 2/3
Verifying : kernel-lt-modules-5.4.290-1.el8.elrepo.x86_64 3/3
Installed:
kernel-lt-5.4.290-1.el8.elrepo.x86_64 kernel-lt-core-5.4.290-1.el8.elrepo.x86_64 kernel-lt-modules-5.4.290-1.el8.elrepo.x86_64
Complete!
# 安装新版本内核工具包
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64
Last metadata expiration check: 0:21:36 ago on Thu 06 Mar 2025 11:33:13 AM CST.
Dependencies resolved.
===========================================================================================================================================================================
Package Architecture Version Repository Size
===========================================================================================================================================================================
Installing:
kernel-lt-tools x86_64 5.4.290-1.el8.elrepo elrepo-kernel 284 k
Installing dependencies:
kernel-lt-tools-libs x86_64 5.4.290-1.el8.elrepo elrepo-kernel 102 k
Transaction Summary
===========================================================================================================================================================================
Install 2 Packages
Total download size: 386 k
Installed size: 663 k
Downloading Packages:
(1/2): kernel-lt-tools-libs-5.4.290-1.el8.elrepo.x86_64.rpm 47 kB/s | 102 kB 00:02
(2/2): kernel-lt-tools-5.4.290-1.el8.elrepo.x86_64.rpm 72 kB/s | 284 kB 00:03
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 86 kB/s | 386 kB 00:04
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kernel-lt-tools-libs-5.4.290-1.el8.elrepo.x86_64 1/2
Running scriptlet: kernel-lt-tools-libs-5.4.290-1.el8.elrepo.x86_64 1/2
Installing : kernel-lt-tools-5.4.290-1.el8.elrepo.x86_64 2/2
Running scriptlet: kernel-lt-tools-5.4.290-1.el8.elrepo.x86_64 2/2
Verifying : kernel-lt-tools-5.4.290-1.el8.elrepo.x86_64 1/2
Verifying : kernel-lt-tools-libs-5.4.290-1.el8.elrepo.x86_64 2/2
Installed:
kernel-lt-tools-5.4.290-1.el8.elrepo.x86_64 kernel-lt-tools-libs-5.4.290-1.el8.elrepo.x86_64
Complete!
3. 设置内核启动顺序
可以通过 grubby --info=ALL
命令获取目前所有启动项,然后通过 grub2-set-default
命令设置或者通过 grubby --set-default
设置对应启动项。
# 查看所有内核启动项
[root@localhost ~]# grubby --info=ALL
index=0
kernel="/boot/vmlinuz-5.4.290-1.el8.elrepo.x86_64"
args="ro crashkernel=auto $tuned_params"
root="UUID=1c303f6e-99fd-42e1-93bd-40973b20810a"
initrd="/boot/initramfs-5.4.290-1.el8.elrepo.x86_64.img $tuned_initrd"
title="Enterprise Linux (5.4.290-1.el8.elrepo.x86_64) 8.10"
id="a2444675b5374d0e9773e641227ae89f-5.4.290-1.el8.elrepo.x86_64"
index=1
kernel="/boot/vmlinuz-4.18.0-553.el8_10.x86_64"
args="ro crashkernel=auto $tuned_params"
root="UUID=1c303f6e-99fd-42e1-93bd-40973b20810a"
initrd="/boot/initramfs-4.18.0-553.el8_10.x86_64.img $tuned_initrd"
title="Rocky Linux (4.18.0-553.el8_10.x86_64) 8.10 (Green Obsidian)"
id="a2444675b5374d0e9773e641227ae89f-4.18.0-553.el8_10.x86_64"
index=2
kernel="/boot/vmlinuz-0-rescue-a2444675b5374d0e9773e641227ae89f"
args="ro crashkernel=auto"
root="UUID=1c303f6e-99fd-42e1-93bd-40973b20810a"
initrd="/boot/initramfs-0-rescue-a2444675b5374d0e9773e641227ae89f.img"
title="Rocky Linux (0-rescue-a2444675b5374d0e9773e641227ae89f) 8.10 (Green Obsidian)"
id="a2444675b5374d0e9773e641227ae89f-0-rescue"
# 我们在安装完新版本内核并卸载老版本工具之后发现默认启动内核已经变成新版本了,所以我们无需手动设置
[root@localhost ~]# grubby --default-kernel
/boot/vmlinuz-5.4.290-1.el8.elrepo.x86_64
# 重启服务器,验证内核版本号是否与升级的版本号一致
[root@localhost ~]# uname -r
5.4.290-1.el8.elrepo.x86_64
4. 删除旧版本内核
# 查看已安装的内核版本和版本工具包
[root@localhost ~]# dnf list installed | grep kernel
kernel.x86_64 4.18.0-553.el8_10 @anaconda
kernel-core.x86_64 4.18.0-553.el8_10 @anaconda
kernel-lt.x86_64 5.4.290-1.el8.elrepo @elrepo-kernel
kernel-lt-core.x86_64 5.4.290-1.el8.elrepo @elrepo-kernel
kernel-lt-modules.x86_64 5.4.290-1.el8.elrepo @elrepo-kernel
kernel-modules.x86_64 4.18.0-553.el8_10 @anaconda
kernel-tools.x86_64 4.18.0-553.el8_10 @anaconda
kernel-tools-libs.x86_64 4.18.0-553.el8_10 @anaconda
# 删除旧版本工具包
[root@localhost ~]# dnf remove kernel-tools-libs.x86_64 kernel-tools.x86_64
Dependencies resolved.
===========================================================================================================================================================================
Package Architecture Version Repository Size
===========================================================================================================================================================================
Removing:
kernel-tools x86_64 4.18.0-553.el8_10 @anaconda 704 k
kernel-tools-libs x86_64 4.18.0-553.el8_10 @anaconda 23 k
Transaction Summary
===========================================================================================================================================================================
Remove 2 Packages
Freed space: 727 k
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: kernel-tools-4.18.0-553.el8_10.x86_64 1/1
Running scriptlet: kernel-tools-4.18.0-553.el8_10.x86_64 1/2
Erasing : kernel-tools-4.18.0-553.el8_10.x86_64 1/2
Running scriptlet: kernel-tools-4.18.0-553.el8_10.x86_64 1/2
Erasing : kernel-tools-libs-4.18.0-553.el8_10.x86_64 2/2
Running scriptlet: kernel-tools-libs-4.18.0-553.el8_10.x86_64 2/2
Verifying : kernel-tools-4.18.0-553.el8_10.x86_64 1/2
Verifying : kernel-tools-libs-4.18.0-553.el8_10.x86_64 2/2
Removed:
kernel-tools-4.18.0-553.el8_10.x86_64 kernel-tools-libs-4.18.0-553.el8_10.x86_64
Complete!
# 删除旧版本内核
[root@localhost ~]# dnf remove `rpm -aq | grep kernel | grep 4.18`
Dependencies resolved.
===========================================================================================================================================================================
Package Architecture Version Repository Size
===========================================================================================================================================================================
Removing:
kernel x86_64 4.18.0-553.el8_10 @anaconda 0
kernel-core x86_64 4.18.0-553.el8_10 @anaconda 71 M
kernel-modules x86_64 4.18.0-553.el8_10 @anaconda 25 M
Removing dependent packages:
kmod-kvdo x86_64 6.2.8.7-92.el8 @anaconda 1.7 M
vdo x86_64 6.2.9.7-14.el8 @anaconda 3.3 M
Transaction Summary
===========================================================================================================================================================================
Remove 5 Packages
Freed space: 101 M
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: kernel-4.18.0-553.el8_10.x86_64 1/1
Erasing : kernel-4.18.0-553.el8_10.x86_64 1/5
Running scriptlet: kernel-4.18.0-553.el8_10.x86_64 1/5
Running scriptlet: vdo-6.2.9.7-14.el8.x86_64 2/5
Erasing : vdo-6.2.9.7-14.el8.x86_64 2/5
Running scriptlet: vdo-6.2.9.7-14.el8.x86_64 2/5
Running scriptlet: kmod-kvdo-6.2.8.7-92.el8.x86_64 3/5
Erasing : kmod-kvdo-6.2.8.7-92.el8.x86_64 3/5
Running scriptlet: kmod-kvdo-6.2.8.7-92.el8.x86_64 3/5
Erasing : kernel-modules-4.18.0-553.el8_10.x86_64 4/5
Running scriptlet: kernel-modules-4.18.0-553.el8_10.x86_64 4/5
Running scriptlet: kernel-core-4.18.0-553.el8_10.x86_64 5/5
Erasing : kernel-core-4.18.0-553.el8_10.x86_64 5/5
Running scriptlet: kernel-core-4.18.0-553.el8_10.x86_64 5/5
Verifying : kernel-4.18.0-553.el8_10.x86_64 1/5
Verifying : kernel-core-4.18.0-553.el8_10.x86_64 2/5
Verifying : kernel-modules-4.18.0-553.el8_10.x86_64 3/5
Verifying : kmod-kvdo-6.2.8.7-92.el8.x86_64 4/5
Verifying : vdo-6.2.9.7-14.el8.x86_64 5/5
Removed:
kernel-4.18.0-553.el8_10.x86_64 kernel-core-4.18.0-553.el8_10.x86_64 kernel-modules-4.18.0-553.el8_10.x86_64 kmod-kvdo-6.2.8.7-92.el8.x86_64 vdo-6.2.9.7-14.el8.x86_64
Complete!
# 查看启动配置,只有最新版本内核了
[root@localhost ~]# grubby --info=ALL
index=0
kernel="/boot/vmlinuz-5.4.290-1.el8.elrepo.x86_64"
args="ro crashkernel=auto $tuned_params"
root="UUID=1c303f6e-99fd-42e1-93bd-40973b20810a"
initrd="/boot/initramfs-5.4.290-1.el8.elrepo.x86_64.img $tuned_initrd"
title="Enterprise Linux (5.4.290-1.el8.elrepo.x86_64) 8.10"
id="a2444675b5374d0e9773e641227ae89f-5.4.290-1.el8.elrepo.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-a2444675b5374d0e9773e641227ae89f"
args="ro crashkernel=auto"
root="UUID=1c303f6e-99fd-42e1-93bd-40973b20810a"
initrd="/boot/initramfs-0-rescue-a2444675b5374d0e9773e641227ae89f.img"
title="Rocky Linux (0-rescue-a2444675b5374d0e9773e641227ae89f) 8.10 (Green Obsidian)"
id="a2444675b5374d0e9773e641227ae89f-0-rescue"

要想成为扫地僧,需要不断的学习进步,这个世界,在悄悄惩罚那些不改变的人