从基于 RPM 的 Linux 发行版转换到 RHEL

Red Hat Enterprise Linux 8

从 CentOS Linux 或 Oracle Linux 转换成 Red Hat Enterprise Linux 7 和 Red Hat Enterprise Linux 8 的说明

Red Hat Customer Content Services

摘要

本文档提供了有关如何将您的操作系统从 CentOS Linux 或 Oracle Linux 转换到 RHEL 7 和 RHEL 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 信息

对红帽文档提供反馈

我们感谢您对我们文档的反馈。让我们了解如何改进它。

根据具体内容提交评论

  1. 查看 Multi-page HTML 格式的文档,并确保在页面完全加载后看到右上角的 反馈 按钮。
  2. 使用光标突出显示您要评论的文本部分。
  3. 点击在高亮文本旁的 添加反馈 按钮。
  4. 添加您的反馈并点 Submit

通过 Bugzilla 提交反馈(需要帐户)

  1. 登录到 Bugzilla 网站。
  2. Version 菜单中选择正确的版本。
  3. Summary 字段中输入描述性标题。
  4. Description 字段中输入您的建议以改进。包括文档相关部分的链接。
  5. 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

流程

  1. 备份您的系统,并确认可以恢复系统。
  2. 检查已知问题和限制,验证您的系统是否支持进行转换。在适用的情况下应用临时解决方案。
  3. 确定标准内核是引导的内核:

    • CentOS Linux:标准的 CentOS Linux 内核
    • Oracle Linux:红帽兼容内核(RHCK)

      如果系统引导到的内核不是标准的内核,如 CentOS 实时内核或 Oracle Linux Unbreakable Enterprise Kernel(UEK),请将默认的内核更改为标准的内核,并重新启动系统。

  4. 如果从 CentOS Linux 8 转换,请从您的系统中删除任何 CentOS Stream 软件包。CentOS Stream 目前不支持进行转换,如果系统中存在任何软件包,转换可能会失败。
  5. 如果从 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

  6. 安装 Convert2RHEL:

    1. 下载 Red Hat GPG 密钥:

      # curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release https://www.redhat.com/security/data/fd431d51.txt
    2. 下载 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
    3. 安装 Convert2RHEL 存储库文件:

      # curl -o /etc/yum.repos.d/convert2rhel.repo https://ftp.redhat.com/redhat/convert2rhel/<version_number>/convert2rhel.repo

      使用合适的操作系统主版本,如 78 来替换 version_number

      注意

      您必须使用 Convert2RHEL 仓库文件的最新版本进行转换。如果您之前已经安装了旧版本的存储库文件,请删除较早的版本并安装当前版本。

    4. 安装 Convert2RHEL 工具:

      # yum -y install convert2rhel
  7. 确保您可以使用以下方法之一访问 RHEL 软件包:

    1. 通过 Red Hat Subscription Manager(RHSM)的 Red Hat Content Delivery Network(CDN)。您必须有一个红帽帐户和一个适当的 RHEL 订阅才能访问 RHSM。请注意,根据表 1.1 ,操作系统将被转换成相应的 RHEL 次要版本。
    2. 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.48.5,对于 Oracle Linux 转换,替换为 8.7

    3. /etc/yum.repos.d/ 目录中配置的自定义软件仓库,并指向目标操作系统存储库的镜像。对于只能访问本地网络或可移植介质的系统,因此无法通过 RHSM 访问 Red Hat CDN。确保软件仓库包含那个 RHEL 次版本的最新内容,以防止降级和潜在的转换失败。如需更多信息,请参阅创建本地仓库并与无连接/离线/Air-gapped 系统共享

      注意

      RHEL 8 内容由两个默认软件仓库(BaseOS 和 AppStream)发布。如果您要通过自定义软件仓库访问 RHEL 软件包,必须配置这两个默认软件仓库才能成功转换。运行 Convert2RHEL 工具时,请确保使用 --enablerepo 选项启用这两个软件库。有关 RHEL 8 软件仓库的详情,请参阅使用 RHEL 8 的注意事项

  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 服务器的主机名。

  9. 临时禁用防病毒软件以防止转换失败。
  10. 按照表 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 文档中的了解激活码

流程

  1. 启动 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-managerkatello-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-rpmsrhel-8-baseosrhel-8-appstream

      注意

      使用 RHSM 或自定义软件仓库转换时,您可以使用 --enablerepo 选项手动启用 RHEL 7 Extras 或 Optional 软件仓库,来以将其他软件包替换为 RHEL 的对应软件包。请注意,Optional 仓库中的软件包不被支持。如需更多信息,请参阅 Red Hat Enterprise Linux 中可选和附加频道的支持策略

  2. 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 在此之前所做的更改可以被自动恢复。确认您要继续转换过程。

  3. 等待 Convert2RHEL 安装 RHEL 软件包,并成功完成。
  4. 建议:如果您使用自定义软件仓库进行转换,请注册并订阅您的 RHEL 系统。如需更多信息,请参阅如何对红帽客户门户网站进行离线注册和订阅系统?
  5. 此时,系统仍然会使用原始发行内核在 RAM 中载入。重启系统以引导新安装的 RHEL 内核。

    # reboot
  6. 从原始操作系统中删除保持不变的第三方软件包(通常在 RHEL 中没有对应的软件包)。要获取这些软件包列表,请使用:

    # yum list extras --disablerepo="*" --enablerepo=<RHEL_RepoID>

    RHEL_RepoID 替换为您的软件仓库。

  7. 可选: 如果您转换为 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 的过程中,可能会在没有依赖软件包的情况下安装某些软件包。

先决条件

流程

  1. 找出与依赖关系相关的错误:

    # yum check dependencies

    如果该命令没有显示输出结果,则不需要进一步的操作。

  2. 要修复依赖关系错误,请重新安装受影响的软件包。在这个操作过程中,yum 工具会自动安装缺少的依赖软件包。如果系统中可用的软件仓库未提供所需的依赖软件包,请手动安装这些软件包。

6.3. 限制和已知问题

已知在转换过程中会出现以下问题和限制:

6.4. 获取支持

如果您在转换过程中遇到问题,请通知红帽以便解决这些问题。

重要

如果您在转换过程中遇到问题,请只引发严重级别 3 或严重级别 4 级的支持问题单。如需了解更多详细信息,请参阅 产品的服务支持条款

先决条件

  • 已安装 sos 软件包。您必须使用此软件包来生成为红帽支持团队创建支持问题单时所需的 sosreport

流程

  • 要获取支持,请执行以下步骤之一:

    • 创建一个支持问题单:

      • 选择 RHEL 7 或 RHEL 8 作为产品,并提供您系统的 sosreport
      • 在您的系统中生成 sosreport:

        # sosreport

        请注意:您可以将问题单 ID 留空。

    • 提交错误报告

      • 打开一个 bug ,选择 RHEL 7 或 RHEL 8 作为产品,然后选择 convert2rhel 作为组件。

有关生成 sosreport 的详情,请查看 sosreport 是什么,以及如何在 Red Hat Enterprise Linux 中创建它?

有关在客户门户网站中建立和管理支持问题单的详情,请参阅 How do I open and manage a support case on the Customer Portal?

有关红帽对 Linux 发行版转换的支持政策,请参阅 Convert2RHEL 支持策略

第 7 章 其它资源

法律通告

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.