Rocky Linux 9.x 内核升级至 6.x

默认情况下 Rocky Linux 9.1 内核是 5.14 版本,目前最新版本的内核为 6.x,这里以将内核升级至 6.x 为例。
注: 此升级方式不仅仅适用于 Rocky Linux 9.X,也适用于 Rocky Linux 8.X,以及所有 Red Hat 系 Linux 操作系统。

国内源配置

目前,elrepo 在国内有多个镜像源,包括:阿里云、清华大学、中国科学技术大学等。

由于清华大学源是官方认可的镜像源,相较于其他源,其更新通常更为及时。当然,如果其他源定期同步频率较高,更新速度也会很快。在木子于 2024 年 9 月 8 日进行的测试中,官方发布了 6.1.109-1.el9.elrepo 内核,而阿里云及中国科学技术大学源仍保持在 6.1.108-1.el9.elrepo 版本,但清华大学源已经更新至 6.1.109-1.el9.elrepo

以下是更换为清华大学源的步骤:

  1. 编辑 /etc/yum.repos.d/elrepo.repo 文件。
  2. mirrorlist= 开头的行前面加 # 注释掉。
  3. elrepo.org/linux 替换为 mirrors.tuna.tsinghua.edu.cn/elrepo
  4. 更新软件包缓存: yum makecache
  5. 开始进行内核升级操作。

这样,您就可以使用清华大学的镜像源,确保及时获取最新的 elrepo 更新。

升级内核

看到有同学留言关于 Linux 内核的两个不同版本,其实在升级配置中有注明,为了更加完善文档,这里将两者拆分说明。
Linux 内核的版本管理确实存在不同的分支,通常包括: 长期支持(Long Term Support, LTS)主线(Mainline) 版本。下面是这两个版本之间的主要区别:

  1. Mainline (ml):

    • 主线版本是 Linux 内核开发的最前沿,包含了最新的功能、改进和修复。
    • 主线内核由 Linux 内核之父 Linus Torvalds 直接管理,定期发布新版本。
    • 这个版本是持续发展的,通常每隔 2-3 个月会发布一个新的主线版本。
    • 主线版本在发布后不会得到长期的支持。当下一个主线版本发布后,除了安全修复和重要的 bug 修复外,之前的版本通常不会再接收更新。
    • 主线版本适合那些需要最新功能和改进的用户,以及开发者和贡献者。
  2. 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 查看内核引导参数。
Avatar photo

关于 木子

Founder of the Rocky Linux Chinese community, MVP、VMware vExpert、TVP, advocate for cloud native technologies, with over ten years of experience in site reliability engineering (SRE) and the DevOps field. Passionate about Cloud Computing、Microservices、CI&CD、DevOps、Kubernetes, currently dedicated to promoting and implementing Rocky Linux in Chinese-speaking regions.
用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。

评论

  1. 已编辑
    9月前
    2024-2-27 9:47:54

    1、ml是mainline版本的内容,内容较新,无需要的话,可以考虑lt是longterm长期支持的版本。对于Rocky8来说,dnf install elrepo-release来获取kernel的包。
    2、一般都是建议保存2个版本的内核,防止内核不兼容导致无法正常启动,所以5.4的内核不建议立即删除,稳定后再删除
    仅做补充说明,如有错误请指正

  2. Avatar photo
    博主
    已编辑
    4周前
    2024-11-08 10:22:26

    代码块,需要使用 markdown 格式,不然会出现格式混乱,建议参阅此文:Markdown 围栏代码块

  3. 2周前
    2024-11-20 12:26:13

    简单的编写了一个bash脚本,方便的给想多次尝试部署,但是记不住代码的人使用,基本功能都是好的,如果有问题可以留言。

    #!/bin/bash
    
    # 检查是否以root用户运行脚本
    if [ "$(id -u)" -ne 0 ]; then
      echo "请以root用户运行此脚本。"
      exit 1
    fi
    
    # 函数:查看当前内核版本
    function show_current_kernel() {
      echo "当前内核版本:"
      uname -r
    }
    
    # 函数:查看默认内核(在grub配置中)
    function show_default_kernel() {
      default_kernel=$(grubby --default-kernel)
      echo "默认内核(在grub配置中):$default_kernel"
    }
    
    
    # 定义变量
    ELREPO_KEY_URL="https://www.elrepo.org/RPM-GPG-KEY-elrepo.org"
    ELREPO_RPM_URL="https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm"
    RPM_PACKAGE="elrepo-release"
    
    # 函数:升级内核(选择长期支持版或主线版本)
    function upgrade_kernel() {
    
    # 检查是否已经载入了公钥
    echo "正在检查并导入 ELRepo 公钥..."
    curl -s -o /tmp/elrepo-key.asc $ELREPO_KEY_URL
    rpm --import /tmp/elrepo-key.asc 2>/dev/null
    if [ $? -eq 0 ]; then
        echo "公钥载入完成。"
    else
        echo "无法载入 ELRepo 公钥。"
        rm -f /tmp/elrepo-key.asc
        exit 1
    fi
    rm -f /tmp/elrepo-key.asc # 清理临时文件
    
    # 检查是否已安装 ELRepo
    if ! dnf list installed | grep -q $RPM_PACKAGE
    then
        echo "正在安装 ELRepo..."
        dnf install -y $ELREPO_RPM_URL &>/dev/null
        sed -i 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/elrepo.repo
        sed -i 's#elrepo.org/linux#mirrors.tuna.tsinghua.edu.cn/elrepo#g' /etc/yum.repos.d/elrepo.repo
        dnf makecache &>/dev/null
        dnf --disablerepo=\* --enablerepo=elrepo-kernel repolist
        echo "ELRepo 安装完成。"
    else
        echo "ELRepo 已安装。"
    fi
    
    # 验证 ELRepo 是否成功安装
    if dnf list installed | grep -q $RPM_PACKAGE
    then
        echo "ELRepo 成功安装并可用。"
    else
        echo "ELRepo 安装失败或未找到。"
        exit 1
    fi
    
        # 显示可用的内核包
        echo "可用内核包:"
        dnf --disablerepo=\* --enablerepo=elrepo-kernel list 'kernel*'
        echo "选择要升级的内核版本:"
        echo "1. 长期支持版(tl)"
        echo "2. 主线版本(ml)"
        echo -n "请输入选项 (1-2): "
        read -r kernel_type
    
        case $kernel_type in
        1)
        # 升级长期支持版内核(通常是默认行为)
        echo "正在升级长期支持版内核,请稍候..."
        dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt.x86_64 &>/dev/null1
        dnf remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y &>/dev/null
        dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64 &>/dev/null
    
        if [ $? -eq 0 ]; then   
            echo "长期支持版内核升级完成。"
          else
            echo "无法找到或升级长期支持版内核,请检查您的仓库配置。"
          fi
          ;;
        2)
        # 尝试升级主线版本内核(需要额外的仓库配置)
        echo "正在尝试升级主线版本内核,请确保已配置好相关仓库..."
        dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64 &>/dev/null
        dnf remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y &>/dev/null
        dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64 &>/dev/null
    
          if [ $? -eq 0 ]; then 
            echo "主线版本内核升级完成。"
          else
            echo "无法找到或升级主线版本内核,请检查您的仓库配置。"
          fi
          ;;
        *)
          echo "无效选项,请重新输入。"
          ;;
      esac
    }
    
    # 函数: 修改启动内核
    function modify_kernel() {
        echo "内核版本的index"
        grubby --info=ALL | grep -E '^(index=|kernel=)'
        echo -n "请输入需要修改的index数"
        read -r modir_type
        grubby --set-default $modir_type
        echo "默认启动项修改成功"
        grubby --default-kernel
        # 询问用户是否需要重启电脑
        read -p "是否需要重启电脑?(y/n): " response
    
        # 根据用户的响应执行相应的操作
        case "$response" in
            [yY][eE][sS]|[yY])
                echo "电脑将在几秒钟后重启..."
            reboot
                ;;
            *)
                echo "电脑不会重启。"
                ;;
        esac
    
    }
    
    # 函数:删除内核
    function delete_kernel() {
    
    # 列出所有已安装的内核包
    INSTALLED_KERNELS=$(rpm -qa | grep kernel | grep -v "^kernel-devel" | grep -v "^kernel-headers" | grep -v "^kernel-tools" | sort -V)
    
    # 获取当前运行的内核版本
    CURRENT_KERNEL=$(uname -r)
    
    # 显示所有已安装的内核版本
    echo "已安装的内核版本:"
    echo "$INSTALLED_KERNELS"
    echo
    
    # 提示用户输入要删除的内核版本(可以输入多个,用空格分隔)
    read -p "请输入要删除的内核版本(用空格分隔,或输入'all'删除除当前运行外的所有内核): " KERNELS_TO_REMOVE
    
    # 如果用户输入'all',则设置要删除的内核为除当前运行外的所有内核
    if [ "$KERNELS_TO_REMOVE" == "all" ]; then
      KERNELS_TO_REMOVE=$(echo "$INSTALLED_KERNELS" | grep -v "$CURRENT_KERNEL")
    fi
    
    # 遍历用户输入的内核版本,并检查是否包含当前运行的内核
    for KERNEL in $KERNELS_TO_REMOVE; do
      if [ "$KERNEL" == "$CURRENT_KERNEL" ]; then
        echo "错误: 不能删除当前运行的内核 $CURRENT_KERNEL"
        exit 1
      fi
    done
    
    # 询问用户是否确定要删除这些内核
    read -p "你确定要删除以下内核吗?$KERNELS_TO_REMOVE (y/n): " CONFIRM
    
    if [ "$CONFIRM" != "y" ] && [ "$CONFIRM" != "Y" ]; then
      echo "操作已取消。"
      exit 0
    fi
    
    # 删除指定的内核包
    for KERNEL in $KERNELS_TO_REMOVE; do
      echo "正在删除内核 $KERNEL..."
      rpm -e --nodeps "$KERNEL"
      if [ $? -ne 0 ]; then
        echo "错误: 无法删除内核 $KERNEL"
      else
        echo "内核 $KERNEL 已成功删除。"
      fi
    done
    
    echo "操作完成。"
    }
    
    
    
    # 显示菜单
    function show_menu() {
      echo "欢迎使用Rocky Linux内核管理脚本!"
      echo "请选择以下选项:"
      echo "1. 查看当前内核版本"
      echo "2. 查看默认内核"
      echo "3. 升级内核"
      echo "4. 修改启动内核"
      echo "5. 删除内核"
      echo "0. 退出"
    }
    
    # 主脚本逻辑
    while true; do
      show_menu
      read -p "请输入选项 (0-3): " choice
    
      case $choice in
        1)
          show_current_kernel
          ;;
        2)
          show_default_kernel
          ;;
        3)
          upgrade_kernel
          ;;
        4)
         modify_kernel
          ;;
        5)
        delete_kernel
        ;;
        0)
          echo "脚本执行完毕。"
          exit 0
          ;;
        *)
          echo "无效选项,请重新输入。"
          ;;
      esac
    done

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇