重要:升级前请做好数据备份以及重要配置备份!!!

升级前确保磁盘空间足够,大约需要空闲磁盘5G

  1. 清除原有的yum,epel源等

dnf -y remove rpmconf yum-utils epel-release

  2. 安装最新系统的重要三个内核文件,选取自己系统适合的内核文件(Centos自行在官方的BaseOS查找)

#Rocky Linux 9 _x64
dnf -y install https://os.iso.st/r9/minimal/Packages/rocky-release-9.1-1.10.el9.noarch.rpm https://os.iso.st/r9/minimal/Packages/rocky-repos-9.1-1.10.el9.noarch.rpm https://os.iso.st/r9/minimal/Packages/rocky-gpg-keys-9.1-1.10.el9.noarch.rpm
#Rocky Linux 9 _aarch64
dnf -y install https://os.iso.st/r9arch/minimal/Packages/rocky-release-9.1-1.10.el9.noarch.rpm https://os.iso.st/r9arch/minimal/Packages/rocky-repos-9.1-1.10.el9.noarch.rpm https://os.iso.st/r9arch/minimal/Packages/rocky-gpg-keys-9.1-1.10.el9.noarch.rpm

显示下图即可进行下一步

  3. 升级Rocky Linux 8 (注意centos stream9 --releaserver=9-stream)

dnf -y --releasever=9 --allowerasing --setopt=deltarpm=false distro-sync

等待时间根据网络情况或许很久,请耐心等待;

下载结束后可能会出现以下两个错误,需进行处理,其他错误自行参考解决,或者留言进行辅助解决

  ①:file  /usr/share/redhat-logos   ... el8   ...el9 类似的长文。此错误表示原有的文件和el9不兼容,删除该目录即可,稍后会自动生成创建

rm -rf /usr/share/redhat-logos

  ②:file ... epel-rpm-macros-systemd.el8     .... el9  类似的长文,等同上述,存在兼容问题,卸载稍后重装即可

dnf remove -y epel-rpm-macros-systemd

  此处根据CPU性能,可能会等待许久。等待结束即表示升级成功。

升级成功后,卸载已存在旧的内核。需要先查看最新内核是否已经安装;

  4. 查看已存在的内核,最新的内核应该为5.x

rpm -qa | grep kernel

输出如下:

[root@sp ~]# rpm -qa | grep kernel
警告:Found bdb_ro Packages database while attempting sqlite backend: using bdb_ro backend.
kernel-tools-libs-5.14.0-70.13.1.el9_0.x86_64
kernel-srpm-macros-1.0-11.el9.noarch
kernel-headers-5.14.0-70.13.1.el9_0.x86_64
kernel-modules-5.14.0-70.13.1.el9_0.x86_64
kernel-modules-4.18.0-372.13.1.el8_6.x86_64
kernel-core-4.18.0-372.16.1.el8_6.x86_64
kernel-core-4.18.0-372.13.1.el8_6.x86_64
kernel-4.18.0-372.16.1.el8_6.x86_64
kernel-4.18.0-372.13.1.el8_6.x86_64
kernel-devel-4.18.0-372.16.1.el8_6.x86_64
kernel-5.14.0-70.13.1.el9_0.x86_64
kernel-tools-5.14.0-70.13.1.el9_0.x86_64
kernel-modules-4.18.0-372.16.1.el8_6.x86_64
kernel-core-5.14.0-70.13.1.el9_0.x86_64
kernel-devel-5.14.0-70.13.1.el9_0.x86_64
kernel-devel-4.18.0-372.13.1.el8_6.x86_64

 上面出现警告,我们需要重建rpm仓库

cd /var/lib/rpm
rm -f __db.00*
rpm --rebuilddb

重新运行即可正常;对于输出存在5.x内核的,直接卸载旧内核

rpm -e --nodeps `rpm -qa|grep -i kernel|grep 4.18`

如果没有5.x内核,进行内核安装在卸载即可

dnf -y install kernel kernel-core shim

  5. 此时有人注意到执行dnf命令时,会有如下报错

上次元数据过期检查:0:11:03 前,执行于 2022年07月18日 星期一 09时45分49秒。
模块依赖问题:

 问题 1: 冲突的请求
  - 没有东西提供 module(platform:el8)(模块 perl:5.26:8050020211109115414:b4937e53.x86_64 需要它)
 问题 2: 冲突的请求
  - 没有东西提供 module(platform:el8)(模块 perl-IO-Socket-SSL:2.066:8060020220513050719:bc93984d.x86_64 需要它)
 问题 3: 冲突的请求
  - 没有东西提供 module(platform:el8)(模块 perl-libwww-perl:6.34:8060020220513153220:9168a43d.x86_64 需要它)
 问题 4: 冲突的请求
  - 没有东西提供 module(platform:el8)(模块 python36:3.6:8050020211109130820:982725ab.x86_64 需要它)
依赖关系解决。
无需任何处理。
完毕!

不要担心,因为这些插件都已经升级最新版本的el9了,内核这种也没有这种模块了,我们将它禁用即可(禁用后重启会自动删除这些不存在的模块)

禁用时记得带着版本,不然会出问题,当然可能不止以上

dnf module disable perl:5.26 perl-IO-Socket-SSL:2.066 perl-libwww-perl:6.34 python36:3.6

再次执行dnf即可正常

至此系统升级完毕,重启使最新内核生效即可

dnf update -y
reboot