默认情况下 Rocky Linux 9.1 内核是 5.14
版本,目前最新版本的内核为 6.x
,这里以将内核升级至 6.x
为例。
注: 此升级方式不仅仅适用于 Rocky Linux 9.X,也适用于 Rocky Linux 8.X,以及所有 Red Hat 系 Linux 操作系统。
国内源配置
目前,elrepo 在国内有多个镜像源,包括:阿里云、清华大学、中国科学技术大学等。
- 阿里云源: https://developer.aliyun.com/mirror/elrepo/
- 清华大学源: https://mirrors.tuna.tsinghua.edu.cn/help/elrepo/
- 中国科学技术大学源: https://mirrors.ustc.edu.cn/elrepo/
- 官方认证源: http://mirrors.elrepo.org/mirrors-elrepo-extras.el9
由于清华大学源是官方认可的镜像源,相较于其他源,其更新通常更为及时。当然,如果其他源定期同步频率较高,更新速度也会很快。在木子于 2024 年 9 月 8 日进行的测试中,官方发布了 6.1.109-1.el9.elrepo
内核,而阿里云及中国科学技术大学源仍保持在 6.1.108-1.el9.elrepo
版本,但清华大学源已经更新至 6.1.109-1.el9.elrepo
。
以下是更换为清华大学源的步骤:
- 编辑
/etc/yum.repos.d/elrepo.repo
文件。 - 在
mirrorlist=
开头的行前面加#
注释掉。 - 将
elrepo.org/linux
替换为mirrors.tuna.tsinghua.edu.cn/elrepo
。 - 更新软件包缓存:
yum makecache
。 - 开始进行内核升级操作。
这样,您就可以使用清华大学的镜像源,确保及时获取最新的 elrepo 更新。
升级内核
看到有同学留言关于 Linux 内核的两个不同版本,其实在升级配置中有注明,为了更加完善文档,这里将两者拆分说明。
Linux 内核的版本管理确实存在不同的分支,通常包括: 长期支持(Long Term Support, LTS) 和 主线(Mainline) 版本。下面是这两个版本之间的主要区别:
-
Mainline (ml):
- 主线版本是 Linux 内核开发的最前沿,包含了最新的功能、改进和修复。
- 主线内核由 Linux 内核之父 Linus Torvalds 直接管理,定期发布新版本。
- 这个版本是持续发展的,通常每隔 2-3 个月会发布一个新的主线版本。
- 主线版本在发布后不会得到长期的支持。当下一个主线版本发布后,除了安全修复和重要的 bug 修复外,之前的版本通常不会再接收更新。
- 主线版本适合那些需要最新功能和改进的用户,以及开发者和贡献者。
-
Long Term Support (lt):
- 长期支持版本是从主线版本中选出的,用于提供长期的维护和支持。
- 一个 LTS 版本会有专门的维护者,并且会得到长达几年的支持,通常是 2 到 6 年不等。
- 长期支持版本主要集中在安全更新、重要的 bug 修复和系统稳定性上,而不会引入新功能。
- LTS 版本适合需要高稳定性和可靠性的环境,比如企业服务器、嵌入式系统和产品。
选择哪个版本取决于自身的需求。如果需要最新的功能和对最新硬件的支持,可能会选择主线版本。如果是寻求稳定性和长期支持,那么长期支持版本会是更好的选择。在许多企业和生产环境中,通常会使用 LTS 版本,因为它提供了一个可预测和稳定的基础。
注: 最新的长期支持版和主线版本,可以通过 Linux 内核官网查看: The Linux Kernel Archives
升级至主线(ml)版本
确认现有内核版本,导入公钥,安装 ELRepo,再升级对应内核。
# 查看当前内核版本
[root@localhost ~]# uname -r
5.14.0-162.6.1.el9_1.x86_64
# 载入公钥
[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 ELRepo
[root@localhost ~]# dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
Last metadata expiration check: 2:15:48 ago on Tue Nov 29 16:11:08 2022.
elrepo-release-9.el9.elrepo.noarch.rpm 13 kB/s | 12 kB 00:00
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Installing:
elrepo-release noarch 9.1-1.el9.elrepo @commandline 12 k
Transaction Summary
============================================================================================================================================================================
Install 1 Package
Total size: 12 k
Installed size: 5.0 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : elrepo-release-9.1-1.el9.elrepo.noarch 1/1
Verifying : elrepo-release-9.1-1.el9.elrepo.noarch 1/1
Installed:
elrepo-release-9.1-1.el9.elrepo.noarch
Complete!
# 设置国内源
# 1. 注释掉原生的镜像列表
# 2. 并将 elrepo.org/linux 地址替换为清华镜像源对应地址 mirrors.tuna.tsinghua.edu.cn/elrepo
[root@localhost ~]# sed -i 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/elrepo.repo
[root@localhost ~]# sed -i 's#elrepo.org/linux#mirrors.tuna.tsinghua.edu.cn/elrepo#g' /etc/yum.repos.d/elrepo.repo
[root@localhost ~]# dnf makecache
# 载入 elrepo-kernel 元数据
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel repolist
repo id repo name
elrepo-kernel ELRepo.org Community Enterprise Linux Kernel Repository - el9
# 查看可用内核包
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
ELRepo.org Community Enterprise Linux Kernel Repository - el9 354 kB/s | 1.0 MB 00:02
Last metadata expiration check: 0:00:01 ago on Tue Nov 29 18:28:07 2022.
Installed Packages
kernel.x86_64 5.14.0-70.30.1.el9_0 @baseos
kernel.x86_64 5.14.0-162.6.1.el9_1 @baseos
kernel-core.x86_64 5.14.0-70.30.1.el9_0 @baseos
kernel-core.x86_64 5.14.0-162.6.1.el9_1 @baseos
kernel-modules.x86_64 5.14.0-70.30.1.el9_0 @baseos
kernel-modules.x86_64 5.14.0-162.6.1.el9_1 @baseos
kernel-tools.x86_64 5.14.0-162.6.1.el9_1 @baseos
kernel-tools-libs.x86_64 5.14.0-162.6.1.el9_1 @baseos
Available Packages
kernel-ml.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-core.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-devel.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-devel-matched.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-doc.noarch 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-headers.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-modules.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-modules-extra.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-tools.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 6.0.10-1.el9.elrepo elrepo-kernel
# 安装最新版本的kernel
# lt long term,长期支持版本,更稳定
# ml main line,主线版本,特性更新
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
Last metadata expiration check: 0:00:36 ago on Tue Nov 29 18:28:07 2022.
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Installing:
kernel-ml x86_64 6.0.10-1.el9.elrepo elrepo-kernel 12 k
Installing dependencies:
kernel-ml-core x86_64 6.0.10-1.el9.elrepo elrepo-kernel 56 M
kernel-ml-modules x86_64 6.0.10-1.el9.elrepo elrepo-kernel 51 M
Transaction Summary
============================================================================================================================================================================
Install 3 Packages
Total download size: 107 M
Installed size: 148 M
Downloading Packages:
(1/3): kernel-ml-6.0.10-1.el9.elrepo.x86_64.rpm 22 kB/s | 12 kB 00:00
(2/3): kernel-ml-core-6.0.10-1.el9.elrepo.x86_64.rpm 407 kB/s | 56 MB 02:21
(3/3): kernel-ml-modules-6.0.10-1.el9.elrepo.x86_64.rpm 161 kB/s | 51 MB 05:24
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 338 kB/s | 107 MB 05:25
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kernel-ml-core-6.0.10-1.el9.elrepo.x86_64 1/3
Running scriptlet: kernel-ml-core-6.0.10-1.el9.elrepo.x86_64 1/3
Installing : kernel-ml-modules-6.0.10-1.el9.elrepo.x86_64 2/3
Running scriptlet: kernel-ml-modules-6.0.10-1.el9.elrepo.x86_64 2/3
Installing : kernel-ml-6.0.10-1.el9.elrepo.x86_64 3/3
Running scriptlet: kernel-ml-core-6.0.10-1.el9.elrepo.x86_64 3/3
Running scriptlet: kernel-ml-6.0.10-1.el9.elrepo.x86_64 3/3
Verifying : kernel-ml-6.0.10-1.el9.elrepo.x86_64 1/3
Verifying : kernel-ml-core-6.0.10-1.el9.elrepo.x86_64 2/3
Verifying : kernel-ml-modules-6.0.10-1.el9.elrepo.x86_64 3/3
Installed:
kernel-ml-6.0.10-1.el9.elrepo.x86_64 kernel-ml-core-6.0.10-1.el9.elrepo.x86_64 kernel-ml-modules-6.0.10-1.el9.elrepo.x86_64
Complete!
# 删除旧版本工具包
[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 5.14.0-162.6.1.el9_1 @baseos 769 k
kernel-tools-libs x86_64 5.14.0-162.6.1.el9_1 @baseos 30 k
Removing unused dependencies:
pciutils-libs x86_64 3.7.0-5.el9 @minimal 79 k
Transaction Summary
============================================================================================================================================================================
Remove 3 Packages
Freed space: 878 k
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Erasing : kernel-tools-5.14.0-162.6.1.el9_1.x86_64 1/3
Erasing : kernel-tools-libs-5.14.0-162.6.1.el9_1.x86_64 2/3
Running scriptlet: kernel-tools-libs-5.14.0-162.6.1.el9_1.x86_64 2/3
Erasing : pciutils-libs-3.7.0-5.el9.x86_64 3/3
Running scriptlet: pciutils-libs-3.7.0-5.el9.x86_64 3/3
Verifying : kernel-tools-5.14.0-162.6.1.el9_1.x86_64 1/3
Verifying : kernel-tools-libs-5.14.0-162.6.1.el9_1.x86_64 2/3
Verifying : pciutils-libs-3.7.0-5.el9.x86_64 3/3
Removed:
kernel-tools-5.14.0-162.6.1.el9_1.x86_64 kernel-tools-libs-5.14.0-162.6.1.el9_1.x86_64 pciutils-libs-3.7.0-5.el9.x86_64
Complete!
# 安装新版本内核工具包
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
Last metadata expiration check: 0:08:00 ago on Tue Nov 29 18:28:07 2022.
Error:
Problem: cannot install the best candidate for the job
- nothing provides libpci.so.3()(64bit) needed by kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64
- nothing provides libpci.so.3(LIBPCI_3.0)(64bit) needed by kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64
- nothing provides libpci.so.3(LIBPCI_3.3)(64bit) needed by kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64
- nothing provides libpci.so.3(LIBPCI_3.5)(64bit) needed by kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)
# 因为在卸载旧版本的内核工具包的时候,删除了 pciutils-libs,造成安装新版本的内核工具包时报错,所以我们需要先安装 pciutils-libs,再安装新版本的内核工具包。(Rocky Linux 9.4 未发现此问题)
[root@localhost ~]# dnf install pciutils-libs
ELRepo.org Community Enterprise Linux Repository - el9 51 kB/s | 117 kB 00:02
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Installing:
pciutils-libs x86_64 3.7.0-5.el9 baseos 41 k
Transaction Summary
============================================================================================================================================================================
Install 1 Package
Total download size: 41 k
Installed size: 79 k
Is this ok [y/N]: y
Downloading Packages:
pciutils-libs-3.7.0-5.el9.x86_64.rpm 120 kB/s | 41 kB 00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 117 kB/s | 41 kB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : pciutils-libs-3.7.0-5.el9.x86_64 1/1
Running scriptlet: pciutils-libs-3.7.0-5.el9.x86_64 1/1
Verifying : pciutils-libs-3.7.0-5.el9.x86_64 1/1
Installed:
pciutils-libs-3.7.0-5.el9.x86_64
Complete!
# 再安装新版本的内核工具包
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
Last metadata expiration check: 0:09:51 ago on Tue Nov 29 18:28:07 2022.
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Installing:
kernel-ml-tools x86_64 6.0.10-1.el9.elrepo elrepo-kernel 248 k
Installing dependencies:
kernel-ml-tools-libs x86_64 6.0.10-1.el9.elrepo elrepo-kernel 22 k
Transaction Summary
============================================================================================================================================================================
Install 2 Packages
Total download size: 270 k
Installed size: 956 k
Downloading Packages:
(1/2): kernel-ml-tools-libs-6.0.10-1.el9.elrepo.x86_64.rpm 28 kB/s | 22 kB 00:00
(2/2): kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64.rpm 30 kB/s | 248 kB 00:08
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 31 kB/s | 270 kB 00:08
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kernel-ml-tools-libs-6.0.10-1.el9.elrepo.x86_64 1/2
Running scriptlet: kernel-ml-tools-libs-6.0.10-1.el9.elrepo.x86_64 1/2
Installing : kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64 2/2
Running scriptlet: kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64 2/2
Verifying : kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64 1/2
Verifying : kernel-ml-tools-libs-6.0.10-1.el9.elrepo.x86_64 2/2
Installed:
kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64 kernel-ml-tools-libs-6.0.10-1.el9.elrepo.x86_64
Complete!
升级至长期支持(lt)版本
升级长期支持(lt)版本过程与升级至主线(ml)版本区别不大,只是名称从 ml
转为 lt
,其它基本一致。
# 查看当前内核版本
[root@localhost ~]# uname -r
5.14.0-362.8.1.el9_3.x86_64
# 载入公钥
[root@localhost ~]# rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# 安装 ELRepo
[root@localhost ~]# dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
Last metadata expiration check: 1:00:55 ago on Mon 04 Mar 2024 01:51:11 PM CST.
elrepo-release-9.el9.elrepo.noarch.rpm 9.6 kB/s | 12 kB 00:01
Dependencies resolved.
================================================================================================================================================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================================================================================================================================================
Installing:
elrepo-release noarch 9.1-1.el9.elrepo @commandline 12 k
Transaction Summary
================================================================================================================================================================================================================================================================
Install 1 Package
Total size: 12 k
Installed size: 5.0 k
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : elrepo-release-9.1-1.el9.elrepo.noarch 1/1
Verifying : elrepo-release-9.1-1.el9.elrepo.noarch 1/1
Installed:
elrepo-release-9.1-1.el9.elrepo.noarch
Complete!
# 设置国内源
# 1. 注释掉原生的镜像列表
# 2. 并将 elrepo.org/linux 地址替换为清华镜像源对应地址 mirrors.tuna.tsinghua.edu.cn/elrepo
[root@localhost ~]# sed -i 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/elrepo.repo
[root@localhost ~]# sed -i 's#elrepo.org/linux#mirrors.tuna.tsinghua.edu.cn/elrepo#g' /etc/yum.repos.d/elrepo.repo
[root@localhost ~]# dnf makecache
# 载入elrepo-kernel元数据
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel repolist
repo id repo name
elrepo-kernel ELRepo.org Community Enterprise Linux Kernel Repository - el9
# 列出的时候可以看到有 lt 与 ml 两个版本
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
ELRepo.org Community Enterprise Linux Kernel Repository - el9 403 kB/s | 2.0 MB 00:05
Last metadata expiration check: 0:00:01 ago on Mon 04 Mar 2024 02:56:10 PM CST.
Installed Packages
kernel.x86_64 5.14.0-362.8.1.el9_3 @minimal
kernel-core.x86_64 5.14.0-362.8.1.el9_3 @minimal
kernel-modules.x86_64 5.14.0-362.8.1.el9_3 @minimal
kernel-modules-core.x86_64 5.14.0-362.8.1.el9_3 @minimal
kernel-tools.x86_64 5.14.0-362.8.1.el9_3 @minimal
kernel-tools-libs.x86_64 5.14.0-362.8.1.el9_3 @minimal
Available Packages
kernel-lt.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-core.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-devel.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-devel-matched.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-doc.noarch 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-headers.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-modules.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-modules-extra.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-tools.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-tools-libs.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-lt-tools-libs-devel.x86_64 6.1.80-1.el9.elrepo elrepo-kernel
kernel-ml.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-core.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-devel.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-devel-matched.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-doc.noarch 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-headers.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-modules.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-modules-extra.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-tools.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-tools-libs.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
kernel-ml-tools-libs-devel.x86_64 6.7.8-1.el9.elrepo elrepo-kernel
# 安装最新版本的 kernel-lt 内核包
# lt long term,长期支持版本,更稳定
# ml main line,主线版本,特性更新
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt.x86_64
Last metadata expiration check: 0:00:43 ago on Mon 04 Mar 2024 02:56:10 PM CST.
Dependencies resolved.
================================================================================================================================================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================================================================================================================================================
Installing:
kernel-lt x86_64 6.1.80-1.el9.elrepo elrepo-kernel 36 k
Installing dependencies:
kernel-lt-core x86_64 6.1.80-1.el9.elrepo elrepo-kernel 46 M
kernel-lt-modules x86_64 6.1.80-1.el9.elrepo elrepo-kernel 45 M
Transaction Summary
================================================================================================================================================================================================================================================================
Install 3 Packages
Total download size: 91 M
Installed size: 130 M
Downloading Packages:
(1/3): kernel-lt-6.1.80-1.el9.elrepo.x86_64.rpm 48 kB/s | 36 kB 00:00
(2/3): kernel-lt-modules-6.1.80-1.el9.elrepo.x86_64.rpm 2.2 MB/s | 45 MB 00:20
(3/3): kernel-lt-core-6.1.80-1.el9.elrepo.x86_64.rpm 2.2 MB/s | 46 MB 00:20
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 4.2 MB/s | 91 MB 00:21
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kernel-lt-core-6.1.80-1.el9.elrepo.x86_64 1/3
Running scriptlet: kernel-lt-core-6.1.80-1.el9.elrepo.x86_64 1/3
Installing : kernel-lt-modules-6.1.80-1.el9.elrepo.x86_64 2/3
Running scriptlet: kernel-lt-modules-6.1.80-1.el9.elrepo.x86_64 2/3
Installing : kernel-lt-6.1.80-1.el9.elrepo.x86_64 3/3
Running scriptlet: kernel-lt-core-6.1.80-1.el9.elrepo.x86_64 3/3
Running scriptlet: kernel-lt-6.1.80-1.el9.elrepo.x86_64 3/3
Verifying : kernel-lt-6.1.80-1.el9.elrepo.x86_64 1/3
Verifying : kernel-lt-core-6.1.80-1.el9.elrepo.x86_64 2/3
Verifying : kernel-lt-modules-6.1.80-1.el9.elrepo.x86_64 3/3
Installed:
kernel-lt-6.1.80-1.el9.elrepo.x86_64 kernel-lt-core-6.1.80-1.el9.elrepo.x86_64 kernel-lt-modules-6.1.80-1.el9.elrepo.x86_64
Complete!
[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 5.14.0-362.8.1.el9_3 @minimal 788 k
kernel-tools-libs x86_64 5.14.0-362.8.1.el9_3 @minimal 30 k
Removing unused dependencies:
pciutils-libs x86_64 3.7.0-5.el9 @minimal 79 k
Transaction Summary
================================================================================================================================================================================================================================================================
Remove 3 Packages
Freed space: 897 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-5.14.0-362.8.1.el9_3.x86_64 1/3
Erasing : kernel-tools-5.14.0-362.8.1.el9_3.x86_64 1/3
Running scriptlet: kernel-tools-5.14.0-362.8.1.el9_3.x86_64 1/3
Erasing : kernel-tools-libs-5.14.0-362.8.1.el9_3.x86_64 2/3
Running scriptlet: kernel-tools-libs-5.14.0-362.8.1.el9_3.x86_64 2/3
Erasing : pciutils-libs-3.7.0-5.el9.x86_64 3/3
Running scriptlet: pciutils-libs-3.7.0-5.el9.x86_64 3/3
Verifying : kernel-tools-5.14.0-362.8.1.el9_3.x86_64 1/3
Verifying : kernel-tools-libs-5.14.0-362.8.1.el9_3.x86_64 2/3
Verifying : pciutils-libs-3.7.0-5.el9.x86_64 3/3
Removed:
kernel-tools-5.14.0-362.8.1.el9_3.x86_64 kernel-tools-libs-5.14.0-362.8.1.el9_3.x86_64 pciutils-libs-3.7.0-5.el9.x86_64
Complete!
# 因为在卸载旧版本的内核工具包的时候,删除了 pciutils-libs,造成安装新版本的内核工具包时报错,所以我们需要先安装 pciutils-libs,再安装新版本的内核工具包。(Rocky Linux 9.4 未发现此问题)
[root@localhost ~]# dnf install pciutils-libs
ELRepo.org Community Enterprise Linux Repository - el9 120 kB/s | 300 kB 00:02
Dependencies resolved.
================================================================================================================================================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================================================================================================================================================
Installing:
pciutils-libs x86_64 3.7.0-5.el9 baseos 41 k
Transaction Summary
================================================================================================================================================================================================================================================================
Install 1 Package
Total download size: 41 k
Installed size: 79 k
Is this ok [y/N]: y
Downloading Packages:
pciutils-libs-3.7.0-5.el9.x86_64.rpm 107 kB/s | 41 kB 00:00
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 27 kB/s | 41 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : pciutils-libs-3.7.0-5.el9.x86_64 1/1
Running scriptlet: pciutils-libs-3.7.0-5.el9.x86_64 1/1
Verifying : pciutils-libs-3.7.0-5.el9.x86_64 1/1
Installed:
pciutils-libs-3.7.0-5.el9.x86_64
Complete!
# 同样内核工具为 kernel-lt-tools.x86_64
[root@localhost ~]# dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64
Last metadata expiration check: 0:03:28 ago on Mon 04 Mar 2024 02:56:10 PM CST.
Dependencies resolved.
================================================================================================================================================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================================================================================================================================================
Installing:
kernel-lt-tools x86_64 6.1.80-1.el9.elrepo elrepo-kernel 272 k
Installing dependencies:
kernel-lt-tools-libs x86_64 6.1.80-1.el9.elrepo elrepo-kernel 46 k
Transaction Summary
================================================================================================================================================================================================================================================================
Install 2 Packages
Total download size: 318 k
Installed size: 932 k
Downloading Packages:
(1/2): kernel-lt-tools-libs-6.1.80-1.el9.elrepo.x86_64.rpm 45 kB/s | 46 kB 00:01
(2/2): kernel-lt-tools-6.1.80-1.el9.elrepo.x86_64.rpm 182 kB/s | 272 kB 00:01
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total 136 kB/s | 318 kB 00:02
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : kernel-lt-tools-libs-6.1.80-1.el9.elrepo.x86_64 1/2
Running scriptlet: kernel-lt-tools-libs-6.1.80-1.el9.elrepo.x86_64 1/2
Installing : kernel-lt-tools-6.1.80-1.el9.elrepo.x86_64 2/2
Running scriptlet: kernel-lt-tools-6.1.80-1.el9.elrepo.x86_64 2/2
Verifying : kernel-lt-tools-6.1.80-1.el9.elrepo.x86_64 1/2
Verifying : kernel-lt-tools-libs-6.1.80-1.el9.elrepo.x86_64 2/2
Installed:
kernel-lt-tools-6.1.80-1.el9.elrepo.x86_64 kernel-lt-tools-libs-6.1.80-1.el9.elrepo.x86_64
Complete!
设置内核启动顺序
设置默认启动顺序,通过 grubby --info=ALL
命令获取目前所有启动项,然后通过 grub2-set-default
命令设置或者通过 grubby --set-default
设置对应启动项。
# 查看所有内核启动项
[root@localhost ~]# grubby --info=ALL
index=0
kernel="/boot/vmlinuz-5.14.0-70.30.1.el9_0.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-5.14.0-70.30.1.el9_0.x86_64.img"
title="Rocky Linux (5.14.0-70.30.1.el9_0.x86_64) 9.0 (Blue Onyx)"
id="0af0a3c0bc4946a6bb4cc8daa8c8a1f7-5.14.0-70.30.1.el9_0.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-0af0a3c0bc4946a6bb4cc8daa8c8a1f7"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-0-rescue-0af0a3c0bc4946a6bb4cc8daa8c8a1f7.img"
title="Rocky Linux (0-rescue-0af0a3c0bc4946a6bb4cc8daa8c8a1f7) 9.0 (Blue Onyx)"
id="0af0a3c0bc4946a6bb4cc8daa8c8a1f7-0-rescue"
index=2
kernel="/boot/vmlinuz-6.0.10-1.el9.elrepo.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-6.0.10-1.el9.elrepo.x86_64.img"
title="Rocky Linux (6.0.10-1.el9.elrepo.x86_64) 9.1 (Blue Onyx)"
id="bae8b9faf30f473196d3a871e300f4dc-6.0.10-1.el9.elrepo.x86_64"
index=3
kernel="/boot/vmlinuz-5.14.0-162.6.1.el9_1.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-5.14.0-162.6.1.el9_1.x86_64.img"
title="Rocky Linux (5.14.0-162.6.1.el9_1.x86_64) 9.1 (Blue Onyx)"
# 这里看到内核 6.0 索引为2,所以这里设置默认内核为2
[root@localhost ~]# grubby --set-default 2
The default is /boot/loader/entries/bae8b9faf30f473196d3a871e300f4dc-6.0.10-1.el9.elrepo.x86_64.conf with index 2 and kernel /boot/vmlinuz-6.0.10-1.el9.elrepo.x86_64
# 查看默认内核
[root@localhost ~]# grubby --default-kernel
/boot/vmlinuz-6.0.10-1.el9.elrepo.x86_64
# 重启服务器
[root@localhost ~]# reboot
# 查看启动内核为6.0
[root@localhost ~]# uname -r
6.0.10-1.el9.elrepo.x86_64
# 查看当前 Linux 系统引导时传给内核的所有命令行参数
[root@localhost ~]# cat /proc/cmdline
BOOT_IMAGE=(hd0,msdos1)/vmlinuz-6.1.111-1.el9.elrepo.x86_64 root=/dev/mapper/rl-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap selinux=0 user_namespace.enable=1
删除旧内核
在这里我们保留系统上安装的最后两个内核并删除多余的旧内核。木子已经明确定义了 installonly_limit=2
使用 --setopt
来覆盖 /etc/dnf/dnf.conf
中的默认配置。如果您不指定 installonly_limit
参数,那么默认情况下 dnf remove
命令将采用 /etc/dnf/dnf.conf
中的 installonly_limit
值。
# 对应的limit值,可以修改配置文件
[root@localhost ~]# grep limit /etc/dnf/dnf.conf
installonly_limit=3
# 删除多余内核,只保留最后两个
[root@localhost ~]# dnf remove --oldinstallonly --setopt installonly_limit=2 kernel
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Removing:
kernel x86_64 5.14.0-70.30.1.el9_0 @baseos 0
kernel-core x86_64 5.14.0-70.30.1.el9_0 @baseos 73 M
kernel-modules x86_64 5.14.0-70.30.1.el9_0 @baseos 20 M
Transaction Summary
============================================================================================================================================================================
Remove 3 Packages
Freed space: 93 M
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Erasing : kernel-5.14.0-70.30.1.el9_0.x86_64 1/3
Running scriptlet: kernel-5.14.0-70.30.1.el9_0.x86_64 1/3
Erasing : kernel-modules-5.14.0-70.30.1.el9_0.x86_64 2/3
Running scriptlet: kernel-modules-5.14.0-70.30.1.el9_0.x86_64 2/3
Running scriptlet: kernel-core-5.14.0-70.30.1.el9_0.x86_64 3/3
Erasing : kernel-core-5.14.0-70.30.1.el9_0.x86_64 3/3
Running scriptlet: kernel-core-5.14.0-70.30.1.el9_0.x86_64 3/3
Verifying : kernel-5.14.0-70.30.1.el9_0.x86_64 1/3
Verifying : kernel-core-5.14.0-70.30.1.el9_0.x86_64 2/3
Verifying : kernel-modules-5.14.0-70.30.1.el9_0.x86_64 3/3
Removed:
kernel-5.14.0-70.30.1.el9_0.x86_64 kernel-core-5.14.0-70.30.1.el9_0.x86_64 kernel-modules-5.14.0-70.30.1.el9_0.x86_64
Complete!
# 这里我们看到还有两个内核,其中6.0是现在在用的,5.14.0-162是之前使用的
[root@localhost ~]# rpm -qa | grep kernel
kernel-core-5.14.0-162.6.1.el9_1.x86_64
kernel-modules-5.14.0-162.6.1.el9_1.x86_64
kernel-5.14.0-162.6.1.el9_1.x86_64
kernel-ml-core-6.0.10-1.el9.elrepo.x86_64
kernel-ml-modules-6.0.10-1.el9.elrepo.x86_64
kernel-ml-6.0.10-1.el9.elrepo.x86_64
kernel-ml-tools-libs-6.0.10-1.el9.elrepo.x86_64
kernel-ml-tools-6.0.10-1.el9.elrepo.x86_64
只保留现正使用的内核
正常情况下 installonly_limit
参数是不允许设置值为 1
的,那么如果我们只想保留目前正在使用的内核,删除其它所有多余的内核,怎么办了?
# 如果您只想保留当前活动内核,这样是不允许的。
[root@localhost ~]# dnf -y remove --oldinstallonly --setopt installonly_limit=1 kernel
Config error: Error parsing --setopt with key 'installonly_limit', value '1': value 1 is not allowed
# 删除内核5.14.0-162
[root@localhost ~]# dnf remove kernel-5.14.0-162.6.1.el9_1.x86_64 kernel-core-5.14.0-162.6.1.el9_1.x86_64 kernel-modules-5.14.0-162.6.1.el9_1.x86_64
Dependencies resolved.
============================================================================================================================================================================
Package Architecture Version Repository Size
============================================================================================================================================================================
Removing:
kernel x86_64 5.14.0-162.6.1.el9_1 @baseos 0
kernel-core x86_64 5.14.0-162.6.1.el9_1 @baseos 84 M
kernel-modules x86_64 5.14.0-162.6.1.el9_1 @baseos 31 M
Transaction Summary
============================================================================================================================================================================
Remove 3 Packages
Freed space: 114 M
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Erasing : kernel-5.14.0-162.6.1.el9_1.x86_64 1/3
Running scriptlet: kernel-5.14.0-162.6.1.el9_1.x86_64 1/3
Erasing : kernel-modules-5.14.0-162.6.1.el9_1.x86_64 2/3
Running scriptlet: kernel-modules-5.14.0-162.6.1.el9_1.x86_64 2/3
Running scriptlet: kernel-core-5.14.0-162.6.1.el9_1.x86_64 3/3
Erasing : kernel-core-5.14.0-162.6.1.el9_1.x86_64 3/3
Running scriptlet: kernel-core-5.14.0-162.6.1.el9_1.x86_64 3/3
Verifying : kernel-5.14.0-162.6.1.el9_1.x86_64 1/3
Verifying : kernel-core-5.14.0-162.6.1.el9_1.x86_64 2/3
Verifying : kernel-modules-5.14.0-162.6.1.el9_1.x86_64 3/3
Removed:
kernel-5.14.0-162.6.1.el9_1.x86_64 kernel-core-5.14.0-162.6.1.el9_1.x86_64 kernel-modules-5.14.0-162.6.1.el9_1.x86_64
Complete!
# 查看目前所有启动配置
[root@localhost ~]# grubby --info=ALL
index=0
kernel="/boot/vmlinuz-5.14.0-70.30.1.el9_0.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-5.14.0-70.30.1.el9_0.x86_64.img"
title="Rocky Linux (5.14.0-70.30.1.el9_0.x86_64) 9.0 (Blue Onyx)"
id="0af0a3c0bc4946a6bb4cc8daa8c8a1f7-5.14.0-70.30.1.el9_0.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-0af0a3c0bc4946a6bb4cc8daa8c8a1f7"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-0-rescue-0af0a3c0bc4946a6bb4cc8daa8c8a1f7.img"
title="Rocky Linux (0-rescue-0af0a3c0bc4946a6bb4cc8daa8c8a1f7) 9.0 (Blue Onyx)"
id="0af0a3c0bc4946a6bb4cc8daa8c8a1f7-0-rescue"
index=2
kernel="/boot/vmlinuz-6.0.10-1.el9.elrepo.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-6.0.10-1.el9.elrepo.x86_64.img"
title="Rocky Linux (6.0.10-1.el9.elrepo.x86_64) 9.1 (Blue Onyx)"
id="bae8b9faf30f473196d3a871e300f4dc-6.0.10-1.el9.elrepo.x86_64"
index=3
kernel="/boot/vmlinuz-0-rescue-bae8b9faf30f473196d3a871e300f4dc"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-0-rescue-bae8b9faf30f473196d3a871e300f4dc.img"
title="Rocky Linux (0-rescue-bae8b9faf30f473196d3a871e300f4dc) 9.1 (Blue Onyx)"
id="bae8b9faf30f473196d3a871e300f4dc-0-rescue"
# 删除不需要的内核启动项
[root@localhost ~]# grubby --remove-kernel=/boot/vmlinuz-5.14.0-70.30.1.el9_0.x86_64
[root@localhost ~]# grubby --remove-kernel=/boot/vmlinuz-0-rescue-0af0a3c0bc4946a6bb4cc8daa8c8a1f7
# 这时候我们看到只保留了 6.0 相关内核启动项了
[root@localhost ~]# grubby --info=ALL
index=0
kernel="/boot/vmlinuz-6.0.10-1.el9.elrepo.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-6.0.10-1.el9.elrepo.x86_64.img"
title="Rocky Linux (6.0.10-1.el9.elrepo.x86_64) 9.1 (Blue Onyx)"
id="bae8b9faf30f473196d3a871e300f4dc-6.0.10-1.el9.elrepo.x86_64"
index=1
kernel="/boot/vmlinuz-0-rescue-bae8b9faf30f473196d3a871e300f4dc"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap ipv6.disable=1 selinux=0"
root="/dev/mapper/rl-root"
initrd="/boot/initramfs-0-rescue-bae8b9faf30f473196d3a871e300f4dc.img"
title="Rocky Linux (0-rescue-bae8b9faf30f473196d3a871e300f4dc) 9.1 (Blue Onyx)"
id="bae8b9faf30f473196d3a871e300f4dc-0-rescue"
常见问题
更新内核后启动报错如下:
error: ../../grub-core/kern/efi/sb.c:182:bad shim signature. error: ../../grub-core/loader/i386/efi/linux.c:258:you need to load the kernel first.
原因:
因为服务器启动了安全引导(SecureBoot)功能。
解决方法:
方法一: BIOS 禁用服务器的安全引导(SecureBoot)。
方法二: 导入 ELRepo 密钥。
参考链接:
[1] secureboot [ELRepo Wiki]
[2] How to sign kernel modules for SecureBoot with "mokutil" ?
dnf install -y mokutil
wget https://elrepo.org/SECURE-BOOT-KEY-elrepo.org.der
mokutil --import /etc/pki/elrepo/SECURE-BOOT-KEY-elrepo.org.der
重启系统,注册密钥,参考链接:secureboot [ELRepo Wiki],即可。
ESXI 参考以下两个链接关闭安全引导:
[1] 管理 ESXi 安全配置
[2] 为虚拟机激活或停用 UEFI 安全引导
PVE 8.0 参考以下步骤关闭虚拟机的安全引导:
启动虚拟机出现 Proxmox 画面时,按 ESC
进入 BIOS,依次选择【Device Manager】–【Secure Boot Configuration】 — 取消勾选【Attempt Secure Boot】– 保存配置,重启生效。
变更记录
- 2024-03-04
- 拆分主线及长期支持两个版本更新。
- 2024-08-13
- 新增【常见问题】,补充物理服务器安全引导 ELRepo 密钥导入问题。
- 2024-09-09
- 新增【国内源配置】,添加国内源及配置说明。
- 2024-09-23
cat /proc/cmdline
查看内核引导参数。
1、ml是mainline版本的内容,内容较新,无需要的话,可以考虑lt是longterm长期支持的版本。对于Rocky8来说,dnf install elrepo-release来获取kernel的包。
2、一般都是建议保存2个版本的内核,防止内核不兼容导致无法正常启动,所以5.4的内核不建议立即删除,稳定后再删除
仅做补充说明,如有错误请指正
代码块,需要使用 markdown 格式,不然会出现格式混乱,建议参阅此文:Markdown 围栏代码块
简单的编写了一个bash脚本,方便的给想多次尝试部署,但是记不住代码的人使用,基本功能都是好的,如果有问题可以留言。
👍