目 录CONTENT

文章目录

CentOS 9 升级、切换、删除内核版本

ABin
2024-08-05 / 0 评论 / 0 点赞 / 163 阅读 / 0 字

安装内核

看下目前是什么版本内核
uname -r
安装公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

安装ELRepo

dnf install https://www.elrepo.org/elrepo-release-9.el9.elrepo.noarch.rpm
上次元数据过期检查:0:37:17 前,执行于 2024年08月10日 星期六 14时31分02秒。
elrepo-release-9.el9.elrepo.noarch.rpm                               12 kB/s |  12 kB     00:01    
依赖关系解决。
====================================================================================================
 软件包                   架构             版本                        仓库                    大小
====================================================================================================
安装:
 elrepo-release           noarch           9.1-1.el9.elrepo            @commandline            12 k

事务概要
====================================================================================================
安装  1 软件包

总计:12 k
安装大小:5.0 k
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                     1/1 
  安装    : elrepo-release-9.1-1.el9.elrepo.noarch                                              1/1 
  验证    : elrepo-release-9.1-1.el9.elrepo.noarch                                              1/1 

已安装:
  elrepo-release-9.1-1.el9.elrepo.noarch                                                            

完毕!

设置国内源

1. 注释掉原生的镜像列表

2. 并将 elrepo.org/linux 地址替换为中科大镜像对应的地址 mirrors.ustc.edu.cn/elrepo (如果是想要使用清华镜像就替换为:mirrors.tuna.tsinghua.edu.cn/elrepo

sed -i 's/mirrorlist=/#mirrorlist=/g' /etc/yum.repos.d/elrepo.repo
sed -i 's#elrepo.org/linux#mirrors.ustc.edu.cn/elrepo#g' /etc/yum.repos.d/elrepo.repo

建立缓存

yum makecache
ELRepo.org Community Enterprise Linux Repository - el9              1.4 MB/s | 261 kB     00:00    
Extra Packages for Enterprise Linux 9 - x86_64                       43 kB/s |  16 kB     00:00    
Extra Packages for Enterprise Linux 9 openh264 (From Cisco) - x86_6 1.0 kB/s | 993  B     00:00    
Rocky Linux 9 - BaseOS                                              5.3 kB/s | 4.1 kB     00:00    
Rocky Linux 9 - AppStream                                           6.4 kB/s | 4.5 kB     00:00    
Rocky Linux 9 - Extras                                              2.0 kB/s | 2.9 kB     00:01    
元数据缓存已建立。

载入elrepo-kernel元数据

dnf --disablerepo=\* --enablerepo=elrepo-kernel repolist
仓库 id                   仓库名称
elrepo-kernel             ELRepo.org Community Enterprise Linux Kernel Repository - el9

查看可用内核包

dnf --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
ELRepo.org Community Enterprise Linux Kernel Repository - el9        11 MB/s | 3.1 MB     00:00    
上次元数据过期检查:0:00:01 前,执行于 2024年08月10日 星期六 15时14分06秒。
已安装的软件包
kernel.x86_64                                    5.14.0-427.13.1.el9_4                 @anaconda    
kernel-core.x86_64                               5.14.0-427.13.1.el9_4                 @anaconda    
kernel-devel.x86_64                              5.14.0-427.13.1.el9_4                 @AppStream   
kernel-headers.x86_64                            5.14.0-427.13.1.el9_4                 @AppStream   
kernel-modules.x86_64                            5.14.0-427.13.1.el9_4                 @anaconda    
kernel-modules-core.x86_64                       5.14.0-427.13.1.el9_4                 @anaconda    
kernel-srpm-macros.noarch                        1.0-13.el9                            @AppStream   
kernel-tools.x86_64                              5.14.0-427.13.1.el9_4                 @anaconda    
kernel-tools-libs.x86_64                         5.14.0-427.13.1.el9_4                 @anaconda    
可安装的软件包
kernel-lt.x86_64                                 6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-core.x86_64                            6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-devel.x86_64                           6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-devel-matched.x86_64                   6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-doc.noarch                             6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-headers.x86_64                         6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-modules.x86_64                         6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-modules-extra.x86_64                   6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-tools.x86_64                           6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-tools-libs.x86_64                      6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-lt-tools-libs-devel.x86_64                6.1.103-1.el9.elrepo                  elrepo-kernel
kernel-ml.x86_64                                 6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-core.x86_64                            6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-devel.x86_64                           6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-devel-matched.x86_64                   6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-doc.noarch                             6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-headers.x86_64                         6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-modules.x86_64                         6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-modules-extra.x86_64                   6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-tools.x86_64                           6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-tools-libs.x86_64                      6.10.3-1.el9.elrepo                   elrepo-kernel
kernel-ml-tools-libs-devel.x86_64                6.10.3-1.el9.elrepo                   elrepo-kernel

安装最新版本的kernel

lt long term,长期支持版本,更稳定

ml main line,主线版本,特性更新

#我这里安装的是lt  安装ml  改为 kernel-ml.x86_64 即可
dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt.x86_64 
上次元数据过期检查:0:03:06 前,执行于 2024年08月10日 星期六 15时14分06秒。
依赖关系解决。
====================================================================================================
 软件包                    架构           版本                          仓库                   大小
====================================================================================================
安装:
 kernel-lt                 x86_64         6.1.103-1.el9.elrepo          elrepo-kernel          39 k
安装依赖关系:
 kernel-lt-core            x86_64         6.1.103-1.el9.elrepo          elrepo-kernel          46 M
 kernel-lt-modules         x86_64         6.1.103-1.el9.elrepo          elrepo-kernel          45 M

事务概要
====================================================================================================
安装  3 软件包

总下载:91 M
安装大小:130 M
下载软件包:
(1/3): kernel-lt-6.1.103-1.el9.elrepo.x86_64.rpm                    406 kB/s |  39 kB     00:00    
(2/3): kernel-lt-modules-6.1.103-1.el9.elrepo.x86_64.rpm             34 MB/s |  45 MB     00:01    
(3/3): kernel-lt-core-6.1.103-1.el9.elrepo.x86_64.rpm               8.8 MB/s |  46 MB     00:05    
----------------------------------------------------------------------------------------------------
总计                                                                 17 MB/s |  91 MB     00:05     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                     1/1 
  安装    : kernel-lt-core-6.1.103-1.el9.elrepo.x86_64                                          1/3 
  运行脚本: kernel-lt-core-6.1.103-1.el9.elrepo.x86_64                                          1/3 
  安装    : kernel-lt-modules-6.1.103-1.el9.elrepo.x86_64                                       2/3 
  运行脚本: kernel-lt-modules-6.1.103-1.el9.elrepo.x86_64                                       2/3 
  安装    : kernel-lt-6.1.103-1.el9.elrepo.x86_64                                               3/3 
  运行脚本: kernel-lt-core-6.1.103-1.el9.elrepo.x86_64                                          3/3 
  运行脚本: kernel-lt-6.1.103-1.el9.elrepo.x86_64                                               3/3 
  验证    : kernel-lt-6.1.103-1.el9.elrepo.x86_64                                               1/3 
  验证    : kernel-lt-core-6.1.103-1.el9.elrepo.x86_64                                          2/3 
  验证    : kernel-lt-modules-6.1.103-1.el9.elrepo.x86_64                                       3/3 

已安装:
  kernel-lt-6.1.103-1.el9.elrepo.x86_64              kernel-lt-core-6.1.103-1.el9.elrepo.x86_64     
  kernel-lt-modules-6.1.103-1.el9.elrepo.x86_64     

完毕

删除旧版本工具包

dnf remove kernel-tools-libs.x86_64 kernel-tools.x86_64
依赖关系解决。
====================================================================================================
 软件包                     架构            版本                           仓库                大小
====================================================================================================
移除:
 kernel-tools               x86_64          5.14.0-427.13.1.el9_4          @anaconda          848 k
 kernel-tools-libs          x86_64          5.14.0-427.13.1.el9_4          @anaconda           30 k

事务概要
====================================================================================================
移除  2 软件包

将会释放空间:878 k
确定吗?[y/N]: y
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                     1/1 
  运行脚本: kernel-tools-5.14.0-427.13.1.el9_4.x86_64                                           1/2 
  删除    : kernel-tools-5.14.0-427.13.1.el9_4.x86_64                                           1/2 
  运行脚本: kernel-tools-5.14.0-427.13.1.el9_4.x86_64                                           1/2 
  删除    : kernel-tools-libs-5.14.0-427.13.1.el9_4.x86_64                                      2/2 
  运行脚本: kernel-tools-libs-5.14.0-427.13.1.el9_4.x86_64                                      2/2 
  验证    : kernel-tools-5.14.0-427.13.1.el9_4.x86_64                                           1/2 
  验证    : kernel-tools-libs-5.14.0-427.13.1.el9_4.x86_64                                      2/2 

已移除:
  kernel-tools-5.14.0-427.13.1.el9_4.x86_64      kernel-tools-libs-5.14.0-427.13.1.el9_4.x86_64     

完毕!

安装新版本内核工具包

#这里我选择的依然是lt 版本
dnf --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-lt-tools.x86_64
上次元数据过期检查:0:07:15 前,执行于 2024年08月10日 星期六 15时14分06秒。
依赖关系解决。
====================================================================================================
 软件包                      架构          版本                          仓库                  大小
====================================================================================================
安装:
 kernel-lt-tools             x86_64        6.1.103-1.el9.elrepo          elrepo-kernel        273 k
安装依赖关系:
 kernel-lt-tools-libs        x86_64        6.1.103-1.el9.elrepo          elrepo-kernel         49 k

事务概要
====================================================================================================
安装  2 软件包

总下载:323 k
安装大小:833 k
下载软件包:
(1/2): kernel-lt-tools-libs-6.1.103-1.el9.elrepo.x86_64.rpm         362 kB/s |  49 kB     00:00    
(2/2): kernel-lt-tools-6.1.103-1.el9.elrepo.x86_64.rpm              1.8 MB/s | 273 kB     00:00    
----------------------------------------------------------------------------------------------------
总计                                                                2.1 MB/s | 323 kB     00:00     
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                     1/1 
  安装    : kernel-lt-tools-libs-6.1.103-1.el9.elrepo.x86_64                                    1/2 
  运行脚本: kernel-lt-tools-libs-6.1.103-1.el9.elrepo.x86_64                                    1/2 
  安装    : kernel-lt-tools-6.1.103-1.el9.elrepo.x86_64                                         2/2 
  运行脚本: kernel-lt-tools-6.1.103-1.el9.elrepo.x86_64                                         2/2 
  验证    : kernel-lt-tools-6.1.103-1.el9.elrepo.x86_64                                         1/2 
  验证    : kernel-lt-tools-libs-6.1.103-1.el9.elrepo.x86_64                                    2/2 

已安装:
  kernel-lt-tools-6.1.103-1.el9.elrepo.x86_64    kernel-lt-tools-libs-6.1.103-1.el9.elrepo.x86_64   

完毕!

安装新版本的内核工具包时报错

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,再安装新版本的内核工具包。

dnf install pciutils-libs

设置内核启动顺序

设置默认启动顺序,通过grubby --info=ALL命令获取目前所有启动项,然后通过grub2-set-default命令设置或者通过grubby --set-default设置对应启动项。

查看默认内核启动项 (是新版本就不用继续设置了)

grubby --default-kernel
/boot/vmlinuz-6.1.103-1.el9.elrepo.x86_64

设置内核启动项

查看所有内核启动项

grubby --info=ALL
index=0
kernel="/boot/vmlinuz-6.1.103-1.el9.elrepo.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl_server-swap rd.lvm.lv=rl_server/root rd.lvm.lv=rl_server/swap rhgb quiet $tuned_params"
root="/dev/mapper/rl_server-root"
initrd="/boot/initramfs-6.1.103-1.el9.elrepo.x86_64.img $tuned_initrd"
title="Rocky Linux (6.1.103-1.el9.elrepo.x86_64) 9.4 (Blue Onyx)"
id="81b09f3ffcbb4fe8a06c5ba9a914e2da-6.1.103-1.el9.elrepo.x86_64"
index=1
kernel="/boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl_server-swap rd.lvm.lv=rl_server/root rd.lvm.lv=rl_server/swap rhgb quiet $tuned_params"
root="/dev/mapper/rl_server-root"
initrd="/boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img $tuned_initrd"
title="Rocky Linux (5.14.0-427.13.1.el9_4.x86_64) 9.4 (Blue Onyx)"
id="81b09f3ffcbb4fe8a06c5ba9a914e2da-5.14.0-427.13.1.el9_4.x86_64"
index=2
kernel="/boot/vmlinuz-0-rescue-81b09f3ffcbb4fe8a06c5ba9a914e2da"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl_server-swap rd.lvm.lv=rl_server/root rd.lvm.lv=rl_server/swap rhgb quiet"
root="/dev/mapper/rl_server-root"
initrd="/boot/initramfs-0-rescue-81b09f3ffcbb4fe8a06c5ba9a914e2da.img"
title="Rocky Linux (0-rescue-81b09f3ffcbb4fe8a06c5ba9a914e2da) 9.4 (Blue Onyx)"
id="81b09f3ffcbb4fe8a06c5ba9a914e2da-0-rescue"

这里看到内核 5.14 索引为1,所以这里设置默认内核为1

grubby --set-default 1
The default is /boot/loader/entries/81b09f3ffcbb4fe8a06c5ba9a914e2da-5.14.0-427.13.1.el9_4.x86_64.conf with index 1 and kernel /boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64

查看默认启动内核

grubby --default-kernel
/boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64

已经成功设置为 5.14

重启

reboot

重启之后再看一下内核版本

uname -r
6.1.103-1.el9.elrepo.x86_64

删除旧内核 (建议保留两个)

在这里我们保留系统上安装的最后两个内核并删除多余的旧内核。已经明确定义了installonly_limit=2使用--setopt来覆盖/etc/dnf/dnf.conf中的默认配置。如果您不指定installonly_limit参数,那么默认情况下dnf remove命令将采用/etc/dnf/dnf.conf中的installonly_limit值。

对应的limit值,可以修改配置文件

grep limit /etc/dnf/dnf.conf
installonly_limit=3

删除多余内核,只保留最后两个

我这里只有两个所以会提示没有找到

dnf remove --oldinstallonly --setopt installonly_limit=2 kernel
错误:没有找到需要删除的旧的 installonly 软件包。

查看安装的内核

rpm -qa | grep kernel
kernel-headers-5.14.0-427.13.1.el9_4.x86_64
kernel-srpm-macros-1.0-13.el9.noarch
kernel-devel-5.14.0-427.13.1.el9_4.x86_64
kernel-modules-core-5.14.0-427.13.1.el9_4.x86_64
kernel-core-5.14.0-427.13.1.el9_4.x86_64
kernel-modules-5.14.0-427.13.1.el9_4.x86_64
kernel-5.14.0-427.13.1.el9_4.x86_64
kernel-lt-core-6.1.103-1.el9.elrepo.x86_64
kernel-lt-modules-6.1.103-1.el9.elrepo.x86_64
kernel-lt-6.1.103-1.el9.elrepo.x86_64
kernel-lt-tools-libs-6.1.103-1.el9.elrepo.x86_64
kernel-lt-tools-6.1.103-1.el9.elrepo.x86_64

只保留现正使用的内核

正常情况下installonly_limit参数是不允许设置值为1的,那么如果我们只想保留目前正在使用的内核,删除其它所有多余的内核,怎么办了?

查看目前所有启动配置

grubby --info=ALL
index=0
kernel="/boot/vmlinuz-6.1.103-1.el9.elrepo.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl_server-swap rd.lvm.lv=rl_server/root rd.lvm.lv=rl_server/swap rhgb quiet $tuned_params"
root="/dev/mapper/rl_server-root"
initrd="/boot/initramfs-6.1.103-1.el9.elrepo.x86_64.img $tuned_initrd"
title="Rocky Linux (6.1.103-1.el9.elrepo.x86_64) 9.4 (Blue Onyx)"
id="81b09f3ffcbb4fe8a06c5ba9a914e2da-6.1.103-1.el9.elrepo.x86_64"
index=1
kernel="/boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl_server-swap rd.lvm.lv=rl_server/root rd.lvm.lv=rl_server/swap rhgb quiet $tuned_params"
root="/dev/mapper/rl_server-root"
initrd="/boot/initramfs-5.14.0-427.13.1.el9_4.x86_64.img $tuned_initrd"
title="Rocky Linux (5.14.0-427.13.1.el9_4.x86_64) 9.4 (Blue Onyx)"
id="81b09f3ffcbb4fe8a06c5ba9a914e2da-5.14.0-427.13.1.el9_4.x86_64"
index=2
kernel="/boot/vmlinuz-0-rescue-81b09f3ffcbb4fe8a06c5ba9a914e2da"
args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl_server-swap rd.lvm.lv=rl_server/root rd.lvm.lv=rl_server/swap rhgb quiet"
root="/dev/mapper/rl_server-root"
initrd="/boot/initramfs-0-rescue-81b09f3ffcbb4fe8a06c5ba9a914e2da.img"
title="Rocky Linux (0-rescue-81b09f3ffcbb4fe8a06c5ba9a914e2da) 9.4 (Blue Onyx)"
id="81b09f3ffcbb4fe8a06c5ba9a914e2da-0-rescue"

删除 5.14 版本的内核

grubby --remove-kernel=/boot/vmlinuz-5.14.0-427.13.1.el9_4.x86_64

*手动编译的内核次目录下还有残留文件

cd /lib/modules

0

评论区