清除原有的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