在离线环境中将 CentOS 7.x 原地迁移至 RHEL 7.9
说明
CentOS 7.x 需要先更新到 CentOS 7.9 后才能迁移到 RHEL 7.9,另外出于方便,以下所有操作都使用的是 root 用户
Red Hat Enterprise Linux (RHEL) 7.9的生命周期如下:
- 发布日期: 2019年9月10日
- 标准支持期: 2019年9月10日 - 2024年6月30日
- 延长生命周期支持(ELS): 2024年7月1日 - 2026年6月30日
Convert2RHEL 简介
Convert2RHEL 是 RedHat 提供的一个命令行工具,用于分析系操作统的情况,并将基于 RPM 的 Linux 操作系统转换为红帽企业 Linux。 它支持将 CentOS Linux 7 和 Oracle Linux 7 以及 Alma Linux 8、Oracle Linux 8、CentOS Linux 8 和 Rocky Linux 8 的转换到对应版本的 RHEL。
迁移步骤
配置 CentOS 7.9 和 RHEL 7.9 Yum Repo
将 CentOS-7-x86_64-DVD-2009.iso
和 rhel-server-7.9-x86_64-dvd.iso
挂载到运行 CentOS 7.x 的 VM 上
将 ISO 挂载到 文件系统
mkdir /mnt/centos79 /mnt/rhel79
mount /home/chenyh/CentOS-7-x86_64-DVD-2009-7.9.iso /mnt/centos79
mount /home/chenyh/rhel-server-7.9-x86_64-dvd.iso /mnt/rhel79
配置本地 Yum Repo
cat > /etc/yum.repos.d/centos79-local.repo << EOF
[centos79-local-repo]
name = centos79 local repo
baseurl=file:///mnt/centos79
enabled=1
gpgcheck=0
EOF
cat > /etc/yum.repos.d/rhel79-local.repo << EOF
[rhel79-local-repo]
name = rhel79 local repo
baseurl=file:///mnt/rhel79
enabled=1
gpgcheck=0
EOF
yum clean all
yum makecache
yum repolist
建议升级机器多,可配置一台ftp进行配置源,不然每台都要配置一遍
将 CentOS 7.x 原地更新至 CentOS 7.9(如果centos7.9转redhat7.9,此步骤可省略)
1.查看当前发行版和 kernel 版本
cat /etc/redhat-release
uname -r
2.确认 Yum Repo 只有 CentOS 7.9
如果有rhel79-local.repo
源先删除
# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
repo id repo name status
centos79-local-repo centos79 local repo 4,070
repolist: 4,070
3.查看当前环境中所有可更新的软件包
yum list updates
4.开始更新 CentOS 7.x
yum update
5.确认被更新的 Package 和使用的 Repository。
。。。
Dependencies Resolved
=======================================================================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================================================================
Installing:
grub2 x86_64 1:2.02-0.86.el7.centos centos79-local-repo 32 k
replacing grub2.x86_64 1:2.02-0.65.el7.centos.2
grub2-tools x86_64 1:2.02-0.86.el7.centos centos79-local-repo 1.8 M
replacing grub2-tools.x86_64 1:2.02-0.65.el7.centos.2
grub2-tools-extra x86_64 1:2.02-0.86.el7.centos centos79-local-repo 1.0 M
replacing grub2-tools.x86_64 1:2.02-0.65.el7.centos.2
grub2-tools-minimal x86_64 1:2.02-0.86.el7.centos centos79-local-repo 174 k
replacing grub2-tools.x86_64 1:2.02-0.65.el7.centos.2
iwl7260-firmware noarch 25.30.13.0-79.el7 centos79-local-repo 6.1 M
replacing iwl7265-firmware.noarch 22.0.7.0-62.el7
kernel x86_64 3.10.0-1160.el7 centos79-local-repo 50 M
Updating:
GeoIP x86_64 1.5.0-14.el7 centos79-local-repo 1.5 M
acl x86_64 2.2.51-15.el7 centos79-local-repo 81 k
alsa-lib x86_64 1.1.8-1.el7
6.完成后再次查看当前发行版和 kernel 版本
为了生效 kernel,需要重启 Linux
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ uname -r
3.10.0-862.el7.x86_64
将 CentOS 7.9 原地迁移至 RHEL 7.9
安装 convert2rhel
使用 rpm 安装 convert2rhel,下载地址:https://github.com/oamg/convert2rhel/releases/download/v1.7.1/convert2rhel-1.7.1-1.el7.noarch.rpm
yum localinstall convert2rhel-1.7.1-1.el7.noarch.rpm
将 CentOS 7.9 转换到 RHEL 7.9
查看内核
[root@host8 chenyh]# uname -r
5.19.10-1.el7.elrepo.x86_64
内核降级
如果是非默认内核会提示错误,需要进行内核降级处理
# 内核降级
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
grub2-set-default "CentOS Linux (3.10.0-1160.el7.x86_64) 7 (Core)"
1.执行以下命令查看已安装的非 CentOS 软件包及其供应商。
注意:convert2rhel 只转换由 CentOS 供应的软件。
rpm -qa --queryformat "%{VENDOR} = %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} \n" | sort | grep -v "CentOS"
(none):mongodb-org-tools
(none):rabbitmq-server
Oracle and/or its affiliates:mysql-community-client
Oracle and/or its affiliates:mysql-community-common
Oracle and/or its affiliates:mysql-community-libs
Oracle and/or its affiliates:mysql-community-libs-compat
Oracle and/or its affiliates:mysql-community-server
Remi's RPM repository <https://rpms.remirepo.net/>:redis
Remi's RPM repository <https://rpms.remirepo.net/> #StandWithUkraine:remi-release
VMware, Inc.:erlang
2.确认当前可用 Yum Repo 有 CentOS 7.9 和 RHEL 7.9
yum repolist
3.执行命令,在迁移前先进行分析
convert2rhel analyze --no-rhsm --enablerepo=rhel79-local-repo
4.根据分析结果的返回ERRO结果的提示,设置以下环境变量(每台机器都不一样)
#跳过是否升为最新内核的检查
export CONVERT2RHEL_SKIP_KERNEL_CURRENCY_CHECK=1
## 检查所有加载的内核模块在 RHEL 资源库中是否可用
export CONVERT2RHEL_ALLOW_UNAVAILABLE_KMODS=1
# 跳过污点内核模块检查
export CONVERT2RHEL_TAINTED_KERNEL_MODULE_CHECK_SKIP=1
#跳过对过期包的检查
export CONVERT2RHEL_OUTDATED_PACKAGE_CHECK_SKIP=1
5.执行迁移
convert2rhel --no-rhsm --enablerepo=rhel79-local-repo
6.成功迁移后会有 “Conversion successful!
” 提示。
迁移过程的日志会写到
/var/log/convert2rhel/convert2rhel.log
文件中
重启 Linux 后确认当前发行版和 kernel 版本已迁移到 RHEL 7.9
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
# uname -r
3.10.0-1160.el7.x86_64
查看之前防火墙规则
iptables -xvnL
systemctl restart iptables
iptables -xvnL
删除Centos7.9源,避免与RedHat7.9源冲突
mv /etc/yum.repos.d/centos79-local.repo /etc/yum.repos.d/centos79-local.repo.bak
yum clean all
yum makecache
yum repolist
参考
1.https://blog.csdn.net/weixin_43902588/article/details/138306029
2.https://www.bilibili.com/video/BV1ix4y1i7c8/?spm_id_from=333.337.search-card.all.click