从基于 RPM 的 Linux 发行版转换到 RHEL
从 CentOS Linux 或 Oracle Linux 转换成 Red Hat Enterprise Linux 7 和 Red Hat Enterprise Linux 8 的说明
摘要
前言
本文档提供了有关如何将您的操作系统从不同的 Linux 发行版本(即 CentOS Linux 或 Oracle Linux)转换成 Red Hat Enterprise Linux(RHEL)7 或 RHEL 8 的说明。转换是由 Convert2RHEL
工具来执行的。
红帽目前不支持从 CentOS Linux 6 或 Oracle Linux 6 转换成 RHEL 6。有关不支持转换的详情,请参考 如何执行从 RHEL-derived Linux 发行版到 RHEL 的不支持转换。
使开源包含更多
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息。
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
根据具体内容提交评论
- 查看 Multi-page HTML 格式的文档,并确保在页面完全加载后看到右上角的 反馈 按钮。
- 使用光标突出显示您要评论的文本部分。
- 点击在高亮文本旁的 添加反馈 按钮。
- 添加您的反馈并点 Submit。
通过 Bugzilla 提交反馈(需要帐户)
- 登录到 Bugzilla 网站。
- 从 Version 菜单中选择正确的版本。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您的建议以改进。包括文档相关部分的链接。
- 点 Submit Bug。
主要迁移术语
尽管以下与迁移相关的术语在软件业中常用,但这里的定义特定于 Red Hat Enterprise Linux (RHEL)。
Update(更新)
更新(有时称为软件补丁)是您正在运行的应用程序、操作系统或软件的一个补充。软件更新用于解决存在的问题或漏洞,以便提供更好的使用体验。在 RHEL 中,更新与次版本相关,例如,从 RHEL 8.1 更新到 8.2。
Upgrade(升级)
升级是使用一个新的版本替换当前运行的应用程序、操作系统或软件的版本。通常情况下,您需要首先根据红帽的指导对数据进行备份。升级 RHEL 时,有两个选项:
- 原位升级(In-place upgrade):在原位升级过程中,您可以在不先删除旧版本的情况下将旧版本替换为新版本。安装的应用程序和实用程序,以及相关的配置和首选项都会融合到新版本中。
- 全新安装(Clean install):干净安装会删除之前安装的操作系统、系统数据、配置和应用程序的所有数据,并安装最新版本的操作系统。如果您不需要之前的数据或应用程序,或者您要部署的新项目不依赖于以前的构建,则全新安装是一个理想的选择。
操作系统转换
转换是将操作系统从不同的 Linux 发行版转换为 Red Hat Enterprise Linux。通常情况下,您需要首先根据红帽的指导对数据进行备份。
Migration(迁移)
通常,迁移表示对平台(软件或硬件)进行更改。从 Windows 变为 Linux 是一种迁移.用户从使用一个笔记本电脑换为使用另外一个笔记本电脑,公司从使用一个服务器换为使用另一台服务器,都是迁移。但是,大多数迁移都涉及到升级,因此有时此术语可以互换使用。
- 迁移到 RHEL:将现有操作系统转换到 RHEL
- 跨 RHEL 迁移:从一个 RHEL 升级到另一个版本
第 1 章 支持的转换路径
红帽建议您联系红帽咨询服务,以确保转换过程可以平稳进行。
目前,可以将您的系统从以下 Linux 发行版、架构和版本转换成表 1.1 中列出的相应 RHEL 的次要版本。
表 1.1. 支持的转换路径
源操作系统 | 目标操作系统 | 构架 | 产品变体 |
---|---|---|---|
CentOS Linux 8.5 | RHEL 8.5 | 64 位 Intel | 不适用 |
CentOS Linux 8.4 | RHEL 8.4 | 64 位 Intel | 不适用 |
CentOS Linux 7.9 | RHEL 7.9 | 64 位 Intel | Server |
Oracle Linux 8.7 | RHEL 8.7 | 64 位 Intel | 不适用 |
Oracle Linux 7.9 | RHEL 7.9 | 64 位 Intel | Server |
由于 CentOS Linux 的最后一个次版本是 CentOS Linux 8.5,因此无法直接从 CentOS Linux 8 转换为 RHEL 8 的最新可用次版本,而这是当前 RHEL 8.7。
除了上面支持的转换路径外,还可以执行不支持的、从 CentOS Linux 6 和 Oracle Linux 6 转换到 RHEL 6 的转换,以及从 Rocky Linux、Aandma Linux 和 Scientific Linux 到 RHEL 的转换。有关不支持转换的详情,请参考 如何执行从 RHEL-derived Linux 发行版到 RHEL 的不支持转换。
目前无法从 CentOS Stream 转换到 RHEL。
有关红帽对 Linux 发行版转换的支持政策,请参阅 Convert2RHEL 支持策略。
如果要转换为 RHEL 8.4 或 RHEL 8.5,建议在转换后将您的系统更新至 RHEL 8.7。
第 2 章 规划 RHEL 转换
自动转换过程是在运行的系统中执行的。Convert2RHEL
工具将原始 Linux 发行版中的所有 RPM 软件包替换为其 RHEL 版本。在过程结束时,需要重启系统来引导 RHEL 内核。
在原始发行版中可用但在 RHEL 软件仓库中没有对应的软件包的软件包,以及第三方软件包(它们不来自原始 Linux 发行版本也不包括在 RHEL 中)不会受到转换的影响。对于在转换过程中没有变化的第三方软件包,红帽不提供支持。请参阅有关支持第三方软件的红帽策略。
Convert2RHEL
工具不会影响 /home
和 /srv
目录中的本地用户及其数据。但是,Convert2RHEL 无法控制 RPM 软件包脚本在转换过程中执行的操作。
在将系统转换为 RHEL 前,您应该考虑以下几点:
- 架构 - 必须在具有 64 位 Intel 架构的系统中安装源操作系统。不能与其他系统架构转换。
- 安全 - FIPS 模式中的系统不支持进行转换。
Kernel - 目前不支持对使用 RHEL 内核模块中不存在的内核模块的系统的转换。红帽建议在转换前禁用或卸载外部内核模块,然后在转换完成后再启用或重新安装这些内核模块。不支持的内核模块包括:
- 用于专用应用程序、GPU、网络驱动程序或存储驱动程序的内核模块
- 由 DKMS 构建的自定义编译内核模块
公有云 - 在以下情况下支持公有云上的转换:
CentOS Linux - 使用 RHSM 进行以下操作:
- 在 Amazon Web Services(AWS)、Microsoft Azure 和 Google Cloud 上启动您的 Own 订阅实例
- 所有公有云上的用户提供的自定义镜像
Oracle Linux - 使用 RHSM 在所有公有云上提供用户提供自定义镜像。
在 CentOS Linux 和 Oracle Linux 的公共云实例中,无法使用 Red Hat Update Infrastructure (RHUI)的 Pay-As-You-Go (PAYG)实例访问 RHEL 软件包。
- 高可用性 - 目前,使用由红帽或第三方提供的高可用性集群软件的系统当前没有被测试或支持转换为 RHEL。红帽建议迁移至新安装的 RHEL 系统以确保这些环境的完整性。
第 3 章 准备 RHEL 转换
这个流程描述了执行从 CentOS Linux 或 Oracle Linux 转换到 Red Hat Enterprise Linux(RHEL)前所需的步骤。
先决条件
- 已确认您的系统被支持切换到 RHEL。如需更多信息,请参阅支持的转换路径。
- 您已停止了重要应用程序、数据库服务以及存储数据的任何其他服务,以减少数据完整性问题的风险。
- 您已经临时禁用了防病毒软件,以防止转换失败。
- 您已禁用或重新配置了任何配置管理系统(如 Salt、Chef、Puppet、Ansible)以防止尝试恢复原始系统。
-
已安装
sos
软件包。您必须使用此软件包来生成为红帽支持团队创建支持问题单时所需的sosreport
。
流程
- 备份您的系统,并确认可以恢复系统。
- 检查已知问题和限制,验证您的系统是否支持进行转换。在适用的情况下应用临时解决方案。
确定标准内核是引导的内核:
- CentOS Linux:标准的 CentOS Linux 内核
Oracle Linux:红帽兼容内核(RHCK)
如果系统引导到的内核不是标准的内核,如 CentOS 实时内核或 Oracle Linux Unbreakable Enterprise Kernel(UEK),请将默认的内核更改为标准的内核,并重新启动系统。
- 如果从 CentOS Linux 8 转换,请从您的系统中删除任何 CentOS Stream 软件包。CentOS Stream 目前不支持进行转换,如果系统中存在任何软件包,转换可能会失败。
如果从 CentOS Linux 8 转换,更新 CentOS 存储库 URL:
# sed -i 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* # sed -i 's|#baseurl=http://mirror.centos.org|baseurl=https://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
重要CentOS Linux 8 已结束生命周期。如需更多信息,请参阅 CentOS Linux EOL。
安装
Convert2RHEL
:下载 Red Hat GPG 密钥:
# curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release https://www.redhat.com/security/data/fd431d51.txt
下载 https://cdn.redhat.com 服务器的 SSL 证书,其中包含
Convert2RHEL
软件仓库:# curl --create-dirs -o /etc/rhsm/ca/redhat-uep.pem https://ftp.redhat.com/redhat/convert2rhel/redhat-uep.pem
安装
Convert2RHEL
存储库文件:# curl -o /etc/yum.repos.d/convert2rhel.repo https://ftp.redhat.com/redhat/convert2rhel/<version_number>/convert2rhel.repo
使用合适的操作系统主版本,如
7
或8
来替换 version_number。注意您必须使用
Convert2RHEL
仓库文件的最新版本进行转换。如果您之前已经安装了旧版本的存储库文件,请删除较早的版本并安装当前版本。安装
Convert2RHEL
工具:# yum -y install convert2rhel
确保您可以使用以下方法之一访问 RHEL 软件包:
- 通过 Red Hat Subscription Manager(RHSM)的 Red Hat Content Delivery Network(CDN)。您必须有一个红帽帐户和一个适当的 RHEL 订阅才能访问 RHSM。请注意,根据表 1.1 ,操作系统将被转换成相应的 RHEL 次要版本。
Red Hat Satellite 是一个完全支持或维护支持的版本。如需更多信息,请参阅 Red Hat Satellite 产品生命周期。
注意确保 Satellite 服务器满足以下条件:
- Satellite 带有一个 RHEL 软件仓库的订阅清单。如需更多信息,请参阅特定 Red Hat Satellite 版本(例如 6.10 )的内容管理指南中的管理订阅章节。
所有需要的软件仓库都会与最新的目标操作系统更新启用并同步,并在 Satellite 中发布。至少为相应的操作系统主版本启用以下软件仓库:
- Red Hat Enterprise Linux 7 Server RPMs x86_64 7Server
- Red Hat Enterprise Linux 8 for x86_64 - AppStream RPMs <target_os>
- Red Hat Enterprise Linux 8 for x86_64 - BaseOS RPMs <target_os>
对于 CentOS Linux 转换,将 target_os 替换为
8.4
或8.5
,对于 Oracle Linux 转换,替换为8.7
。在
/etc/yum.repos.d/
目录中配置的自定义软件仓库,并指向目标操作系统存储库的镜像。对于只能访问本地网络或可移植介质的系统,因此无法通过 RHSM 访问 Red Hat CDN。确保软件仓库包含那个 RHEL 次版本的最新内容,以防止降级和潜在的转换失败。如需更多信息,请参阅创建本地仓库并与无连接/离线/Air-gapped 系统共享。注意RHEL 8 内容由两个默认软件仓库(BaseOS 和 AppStream)发布。如果您要通过自定义软件仓库访问 RHEL 软件包,必须配置这两个默认软件仓库才能成功转换。运行
Convert2RHEL
工具时,请确保使用--enablerepo
选项启用这两个软件库。有关 RHEL 8 软件仓库的详情,请参阅使用 RHEL 8 的注意事项。
如果您通过 Red Hat Satellite 服务器访问 RHEL 软件包,请将消费者 RPM 下载到
/usr/share/convert2rhel/subscription-manager/
目录中:# curl --insecure --output /usr/share/convert2rhel/subscription-manager/katello-ca-consumer-latest.noarch.rpm https://<satellite.example.com>/pub/katello-ca-consumer-latest.noarch.rpm
将 satellite.example.com 替换为 Satellite 服务器的主机名。
- 临时禁用防病毒软件以防止转换失败。
按照表 1.1 的规定,将原始操作系统更新到支持转换的次要版本,然后重新启动系统。
您必须使用来自支持转换的操作系统的次要版本的最新软件包进行转换,以便在转换失败时使用回滚功能。如需更多信息,请参阅 转换回滚。
第 4 章 转换为一个 RHEL 系统
这个流程描述了将您的系统从 CentOS Linux 或 Oracle Linux 转换成 Red Hat Enterprise Linux(RHEL)所需的步骤。
在将系统从 CentOS Linux 转换为 RHEL 后,您可以使用 Leapp 工具将 RHEL 系统升级到 RHEL 的下一个主要版本。
有关使用 Leapp 工具进行原位升级的更多信息,请参阅 从 RHEL 7 升级到 RHEL 8 或从 RHEL 8 升级到 RHEL 9。
如果您要使用红帽 CDN 或 RHSM 访问 RHEL 软件包,在转换过程中有两种方法来注册和订阅您的系统:
- 提供机构 ID 和激活码。当转换多个系统,或使用脚本自动转换过程时,这是首选的方法。您必须是机构管理员才能创建激活码。如果您要通过 RHSM 访问 Satellite 的 RHEL 软件包,则必须使用此方法。
- 提供用户名、密码和池 ID。任何通过 RHSM 访问 RHEL 软件包的用户都可以使用这个方法。
先决条件
- 您已完成了准备 RHEL 转换中列出的步骤。
- 如果您提供用于注册和订阅您的系统的机构 ID 和激活码,您已在 Satellite 或 RHSM 中创建了激活码。如需更多信息,请参阅 Satellite 文档中的 管理激活码,以及 RHSM 文档中的了解激活码。
流程
启动
Convert2RHEL
工具。您可以将
Convert2RHEL
与 RHSM 或自定义软件仓库搭配使用。要显示所有可用的选项,请使用-h
,--help
选项:# convert2rhel -h
要使用带有机构 ID 和激活码的 RHSM 进行转换,请完成以下步骤。如果要使用 Satellite 访问 RHEL 软件包,则必须使用此方法:
创建包含激活码的配置文件,并使用
.ini
文件格式保存文件:[subscription_manager] activation_key = <activation_key>
如果您使用 Red Hat CDN 或 Satellite Web UI,请使用红帽客户门户网站中的激活码替换 activation_key。
启动
Convert2RHEL
工具:# convert2rhel --org <organization_ID> --config-file <config_file_name>
如果您使用 Red Hat CDN 或 Satellite Web UI,请使用红帽客户门户网站中的 机构 ID 替换 organization_ID。将 config_file_name 替换为您创建的配置文件的名称,如
convert2rhel.ini
。注意如果您使用 Satellite 访问 RHEL 软件包,且您的系统无法访问互联网,请添加
--keep-rhsm
选项。请注意,您必须已安装subscription-manager
和katello-ca-consumer
软件包,且在运行convert2rhel
命令时必须提供您的机构 ID 和包含激活码的配置文件。
要使用带有用户名、密码和池 ID 的 RHSM 转换,请完成以下步骤:
创建包含密码的配置文件,并使用
.ini
文件格式保存文件:[subscription_manager] password = <password>
使用您的红帽帐户密码凭证替换 password。
启动
Convert2RHEL
工具:# convert2rhel --username <username> --config-file <config_file_name> --pool <pool_ID>
使用您的红帽帐户用户名凭证替换 username。将 config_file_name 替换为您创建的配置文件的名称,如
convert2rhel.ini
。使用您要附加到该系统的订阅池 ID 替换 pool_ID。如果您不知道池 ID,请省略--pool
选项,以生成帐户的所有可用的订阅列表。
要使用自定义软件仓库进行转换,请启动
Convert2RHEL
工具:# convert2rhel --no-rhsm --enablerepo <RHEL_RepoID1> --enablerepo <RHEL_RepoID2>
将 RHEL_RepoID 替换为您在
/etc/yum.repos.d/
目录中配置的自定义软件仓库,如rhel-7-server-rpms
或rhel-8-baseos
和rhel-8-appstream
。注意使用 RHSM 或自定义软件仓库转换时,您可以使用
--enablerepo
选项手动启用 RHEL 7 Extras 或 Optional 软件仓库,来以将其他软件包替换为 RHEL 的对应软件包。请注意,Optional 仓库中的软件包不被支持。如需更多信息,请参阅 Red Hat Enterprise Linux 中可选和附加频道的支持策略。
在
Convert2RHEL
开始使用 RHEL 软件包替换原始发行版本中的软件包前,会显示以下警告信息:The tool allows rollback of any action until this point. By continuing, all further changes on the system will need to be reverted manually by the user, if necessary.
Convert2RHEL
在此之前所做的更改可以被自动恢复。确认您要继续转换过程。-
等待
Convert2RHEL
安装 RHEL 软件包,并成功完成。 - 建议:如果您使用自定义软件仓库进行转换,请注册并订阅您的 RHEL 系统。如需更多信息,请参阅如何对红帽客户门户网站进行离线注册和订阅系统?
此时,系统仍然会使用原始发行内核在 RAM 中载入。重启系统以引导新安装的 RHEL 内核。
# reboot
从原始操作系统中删除保持不变的第三方软件包(通常在 RHEL 中没有对应的软件包)。要获取这些软件包列表,请使用:
# yum list extras --disablerepo="*" --enablerepo=<RHEL_RepoID>
将 RHEL_RepoID 替换为您的软件仓库。
可选: 如果您转换为 RHEL 8.4 或 RHEL 8.5,将您的系统更新至最新的次版本:
# yum update -y
验证
- 验证您的系统是否如预期运行。如有必要,在转换并修复依赖关系错误后重新配置系统服务。如需更多信息,请参阅修复依赖关系错误。
第 5 章 转换回滚
Convert2RHEL
工具提供有限的回滚功能。如果用户取消转换或者失败,工具会在以下条件下回滚在转换过程中所做的更改:
只有在
Convert2RHEL
开始用 RHEL 软件包替换原始发行版的软件包之前执行的更改才能被恢复。此时会显示相应的警告信息:The tool allows rollback of any action until this point. By continuing all further changes on the system will need to be reverted manually by the user, if necessary.
接下来会询问您是否希望继续这个过程。
注意如果将
-y
选项与convert2rhel
命令一起使用,则指示时间后自动回滚不再可能的问题会被跳过。-
要执行回滚,需要可以访问从原始发行版本提供的软件包库,特别是访问基础(base)仓库。如果不访问这些软件仓库,
convert2RHEL
就无法将系统恢复到原始状态,即使工具的执行在转换过程的早期阶段就停止了,因为Convert2RHEL
在转换过程中会删除某些软件包,并需要从原始软件仓库中预先下载它们以进行回滚。 -
只有在系统中所有来自原始操作系统中的软件包都更新到系统可访问的软件仓库中所提供的最新版本时,才可以进行回滚。因此,请在开始转换过程前使用
yum
update 命令。
如果转换过程在 Convert2RHEL
开始了软件包替换阶段后被取消或失败,则系统可能会无法正常工作。在这种情况下,需要手动修复。请联络红帽咨询服务以获得帮助。
第 6 章 转换故障排除
本章列出了故障排除资源和提示。
6.1. 故障排除资源
要帮助您排除在转换过程中可能会出现的问题,请查看输出到控制台和日志文件中的日志信息。
控制台输出
默认情况下,Convert2RHEL
工具只会将 info、warning、error 和 critical 日志级别的信息打印到控制台输出。要同时打印调试消息,请将 --debug
选项与 convert2rhel
命令一起使用。
日志
-
/var/log/convert2rhel/convert2rhel.log
文件列出了 debug、info、warning、error 和 critical 信息。 -
/var/log/convert2rhel/rpm_va.log
文件列出了未转换系统上用户已修改了的所有软件包文件。此输出由rpm -Va
命令产生,该命令将自动运行,除非将--no-rpm-va
选项与convert2rhel
命令一起使用。
6.2. 修复依赖关系错误
在从不同的 Linux 发行版本转换到 RHEL 的过程中,可能会在没有依赖软件包的情况下安装某些软件包。
先决条件
- 您已成功完成了到 RHEL 的转换过程。如需更多信息,请参阅转换到 RHEL 系统。
流程
找出与依赖关系相关的错误:
# yum check dependencies
如果该命令没有显示输出结果,则不需要进一步的操作。
-
要修复依赖关系错误,请重新安装受影响的软件包。在这个操作过程中,
yum
工具会自动安装缺少的依赖软件包。如果系统中可用的软件仓库未提供所需的依赖软件包,请手动安装这些软件包。
6.3. 限制和已知问题
已知在转换过程中会出现以下问题和限制:
-
如果任何文件被直接挂载到
/mnt/
目录,或者/sys/
目录被挂载为只读,则转换将停止。 使用 HTTP 代理服务器连接到互联网的系统无法使用红帽 CDN 或 通过 RHSM 的 Satellite 进行转换。要临时解决这个问题,为 yum 启用 HTTP 代理,然后为 RHSM 配置 HTTP 代理:
- 将 yum 配置为使用 HTTP 代理,如 如何在 RHEL 上为 yum 命令启用代理设置所述?
配置存储库,如 配置 Yum 和 Yum 存储库,指向以下 URL 之一:
- 对于 CentOS Linux 和 Oracle Linux 7 :https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi/server/7/7Server/x86_64/os/
- 对于 CentOS Linux 和 Oracle Linux 8 :https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/x86_64/baseos/os/
-
从您配置的存储库安装
subscription-manager
软件包。 - 为 RHSM 配置 HTTP 代理,如 如何为红帽订阅管理配置 HTTP 代理 中所述。
使用
--keep-rhsm
选项执行到 RHEL 的转换。
- 启用安全引导机制的 UEFI 系统不支持进行转换。要临时解决这个问题,请在转换前禁用安全引导,然后在转换完成后重新启用。(BZ#2057229)
6.4. 获取支持
如果您在转换过程中遇到问题,请通知红帽以便解决这些问题。
如果您在转换过程中遇到问题,请只引发严重级别 3 或严重级别 4 级的支持问题单。如需了解更多详细信息,请参阅 产品的服务支持条款。
先决条件
-
已安装
sos
软件包。您必须使用此软件包来生成为红帽支持团队创建支持问题单时所需的sosreport
。
流程
要获取支持,请执行以下步骤之一:
创建一个支持问题单:
-
选择 RHEL 7 或 RHEL 8 作为产品,并提供您系统的
sosreport
。 在您的系统中生成
sosreport
:# sosreport
请注意:您可以将问题单 ID 留空。
-
选择 RHEL 7 或 RHEL 8 作为产品,并提供您系统的
-
打开一个 bug ,选择 RHEL 7 或 RHEL 8 作为产品,然后选择
convert2rhel
作为组件。
-
打开一个 bug ,选择 RHEL 7 或 RHEL 8 作为产品,然后选择
有关生成 sosreport
的详情,请查看 sosreport 是什么,以及如何在 Red Hat Enterprise Linux 中创建它?
有关在客户门户网站中建立和管理支持问题单的详情,请参阅 How do I open and manage a support case on the Customer Portal?。
有关红帽对 Linux 发行版转换的支持政策,请参阅 Convert2RHEL 支持策略。