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

Red Hat Enterprise Linux 8

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

摘要

本文档提供了有关如何将操作系统从 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。有关不支持转换的详情,请参考 如何从 CentOS Linux 6 或 Oracle Linux 6 转换到 RHEL 6

使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。请让我们了解如何改进文档。要做到这一点:

  • 关于特定内容的简单评论:

    1. 请确定您使用 Multi-page HTML 格式查看文档。另外,确定 Feedback 按钮出现在文档页的右上方。
    2. 用鼠标指针高亮显示您想评论的文本部分。
    3. 点在高亮文本上弹出的 Add Feedback
    4. 按照显示的步骤操作。
  • 要提交更复杂的反馈,请创建一个 Bugzilla ticket:

    1. 进入 Bugzilla 网站。
    2. 在 Component 中选择 Documentation
    3. Description 中输入您要提供的信息。包括文档相关部分的链接。
    4. 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 章 支持的转换路径

重要

红帽建议您联系红帽咨询服务,以确保转换过程可以平稳进行。

自动转换过程是在运行的系统中执行的。Convert2RHEL 工具程序将原始 Linux 发行本中的所有 RPM 软件包替换为其 RHEL 版本。在过程结束时,需要重启系统来引导 RHEL 内核。

在原始发行版中可用但在 RHEL 软件仓库中没有对应的软件包的软件包,以及第三方软件包(它们不来自原始 Linux 发行版本也不包括在 RHEL 中)不会受到转换的影响。对于在转换过程中没有变化的第三方软件包,红帽不提供支持。请参阅有关支持第三方软件的红帽策略

目前,可以将您的系统从以下 Linux 发行版、架构和版本转换为表 1.1 中列出的对应的 RHEL 次要版本。

表 1.1. 支持的转换路径

源操作系统目标操作系统构架

CentOS Linux 8.4

RHEL 8.4

64 位 Intel

CentOS Linux 7.9

RHEL 7.9

64 位 Intel

Oracle Linux 8.4

RHEL 8.4

64 位 Intel

Oracle Linux 7.9

RHEL 7.9

64 位 Intel

重要

目前无法从 CentOS Stream 转换到 RHEL。

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

第 2 章 准备 RHEL 转换

这个过程描述了执行从 CentOS Linux 或 Oracle Linux 转换到 Red Hat Enterprise Linux(RHEL)前需要进行的步骤。

先决条件

  • 已确认您的系统被支持切换到 RHEL。如需更多信息,请参阅支持的转换路径
  • 您已停止了重要应用程序、数据库服务以及存储数据的任何其他服务,以减少数据完整性问题的风险。
  • 您已经临时禁用了防病毒软件,以防止转换失败。
  • 您已禁用或重新配置了任何配置管理系统(如 Salt、Chef、Puppet、Ansible)以防止尝试恢复原始系统。

流程

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

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

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

  4. 安装 转换2RHEL:

    1. 下载 Red Hat GPG 密钥:

      # curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release https://www.redhat.com/security/data/fd431d51.txt
    2. 安装 Convert2RHEL 存储库:

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

      使用相应的操作系统主版本替换 version_number,如 7 或 8

    3. 安装 Convert2RHEL 工具:

      # yum -y install convert2rhel
  5. 确保您可以使用以下方法之一访问 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.8 的内容管理指南中的管理订阅部分。
      • 所有必需的软件仓库都启用并与最新的 RHEL 7.9 或 RHEL 8.4 更新同步,并在 Satellite 上发布。至少为相应的操作系统主版本启用以下软件仓库:

        • Red Hat Enterprise Linux 7 Server RPMs x86_64 7Server
        • Red Hat Enterprise Linux 8 for x86_64 - AppStream RPMs 8.4
        • Red Hat Enterprise Linux 8 for x86_64 - BaseOS RPMs 8.4
    3. /etc/yum.repos.d/ 目录中配置的自定义软件仓库,并指向 RHEL 7.9 或 RHEL 8.4 软件仓库的镜像。对于只能连接到本地网络,因此无法通过 RHSM 访问 Red Hat CDN 的系统,使用自定义软件仓库。确保软件仓库包含那个 RHEL 次版本的最新内容,以防止降级和潜在的转换失败。如需更多信息,请参阅创建本地仓库并与无连接/离线/Air-gapped 系统共享

      注意

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

  6. 如果您要通过 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 服务器的主机名。

  7. 按照表 1.1 所述,将原始操作系统更新为支持转换的次要版本,然后重新启动系统。

    您必须使用支持的操作系统次要版本的最新软件包进行转换,以便在转换失败时使用回滚功能。如需更多信息,请参阅 Rollback

第 3 章 转换为一个 RHEL 系统

这个过程描述了将您的系统从 CentOS Linux 或 Oracle Linux 转换为 Red Hat Enterprise Linux(RHEL)所需的步骤。

如果您要使用红帽 CDN 或 RHSM 访问 RHEL 软件包,在转换过程中有两种方法来注册和订阅您的系统:

  • 提供机构 ID 和激活码。当转换多个系统,或使用脚本自动转换过程时,这是首选的方法。您必须是机构管理员才能创建激活码。如果您要通过 RHSM 访问 Satellite 的 RHEL 软件包,则必须使用此方法。
  • 提供用户名、密码和池 ID。任何通过 RHSM 访问 RHEL 软件包的用户都可以使用这个方法。

先决条件

  • 您已完成了准备 RHEL 转换中列出的步骤。
  • 如果您提供用于注册和订阅您的系统的机构 ID 和激活码,您已在 Satellite 或 RHSM 中创建了激活码。如需更多信息,请参阅 Satellite 文档中的管理激活码,以及 RHSM 文档中的了解激活码

流程

  1. 启动 Convert2RHEL 工具程序。

    您可以将 Convert2RHEL 与 RHSM 或自定义软件仓库搭配使用。

    • 使用 RHSM:

      • 使用机构 ID 和激活码:

        # convert2rhel --org organization_ID --activationkey activation_key

        使用来自 Red Hat Customer Portal(如果使用 Red Hat CDN)或 Satellite web UI(如果使用 Red Hat Satellite)中的机构 ID 和激活码替换 organization_IDactivation_key

        注意

        如果使用 Satellite 访问 RHEL 软件包,则必须使用机构 ID 和激活密钥来运行 convert2rhel 命令。

      • 使用用户名、密码和池 ID:

        # convert2rhel --username username --password password --pool pool_ID

        使用您的红帽帐户凭证替换 usernamepassword。使用您要附加到该系统的订阅池 ID 替换 pool_ID。如果您不知道池 ID,请省略 --pool 选项,以生成可用于该帐户的所有订阅的列表。

    • 使用自定义软件仓库:

      # convert2rhel --no-rhsm --enablerepo RHEL_RepoID1 --enablerepo RHEL_RepoID2

      RHEL_RepoID 替换为您在 /etc/yum.repos.d/ 目录中配置的自定义存储库,如 rhel-7-server-rpms 或 rhel-8-baseosrhel-8-appstream

      要显示所有可用选项,请使用 -h, --help 选项:

      # convert2rhel -h
      注意

      使用 RHSM 或自定义存储库转换时,您可以使用 --enablerepo 选项将其他软件包替换为 RHEL 的对等程序包,手动启用 RHEL 7 Extras 或 Optional 存储库。请注意,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 替换为您的软件仓库。

验证

  • 验证您的系统是否如预期运行。如有必要,在转换并修复依赖关系错误后重新配置系统服务。如需更多信息,请参阅修复依赖关系错误

第 4 章 回滚(Rollback)

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 启动软件包替换阶段后取消转换过程或失败,系统可能会变得无法正常工作。在这种情况下,需要手动修复。请联络红帽咨询服务以获得帮助。

第 5 章 故障排除

本章列出了故障排除资源和提示。

5.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 命令。

5.2. 修复依赖关系错误

在从不同的 Linux 发行版本转换到 RHEL 的过程中,可能会在没有依赖软件包的情况下安装某些软件包。

先决条件

流程

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

    # yum check dependencies

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

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

5.3. 限制和已知问题

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

  • 基于 UEFI 的系统目前无法转换为 RHEL。(BZ#1898314)
  • 如果任何文件直接挂载到 /mnt/ 目录,或者 /sys/ 目录被挂载为只读,则转换将停止。
  • 目前还不支持将使用由红帽或第三方提供的高可用性集群软件的系统切换到 RHEL。红帽建议迁移至新安装的 RHEL 系统以确保这些环境的完整性。
  • 目前还不支持对使用了 RHEL 内核模块中不存在的内核模块的系统进行转换。红帽建议在转换前禁用或卸载外部内核模块,然后在转换完成后再启用或重新安装这些内核模块。不支持的内核模块包括:

    • 用于专用应用程序、GPU、网络驱动程序或存储驱动程序的内核模块
    • 由 DKMS 构建的自定义编译内核模块
  • FIPS 模式的系统不支持进行转换。
  • 在公共云实例中无法使用 Red Hat Update Infrastructure(RHUI)获得 RHEL 软件包。需要使用 RHSM、Red Hat Satellite 或自定义软件仓库。
  • 使用 HTTP 代理服务器连接到互联网的系统无法通过 RHSM 使用红帽 CDN 或卫星进行转换。要临时解决这个问题,为 yum 启用 HTTP 代理,然后为 RHSM 配置 HTTP 代理:

    1. 将 yum 配置为使用 HTTP 代理,如如何在 RHEL 上为 Yum 命令启用代理设置中所述?
    2. 对于 Oracle Linux 转换,定义并启用指向以下 URL 的软件仓库:

    3. 安装 subscription-manager 软件包。
    4. 为 RHSM 配置 HTTP 代理,如如何为红帽订阅管理配置 HTTP 代理所述
    5. 防止转换过程中删除配置文件:

      chattr +i /etc/rhsm/rhsm.conf
    6. 执行到 RHEL 的转换.

      (BZ#1965487)

  • 安装的 python39-psycopg2-debug 软件包的 RHEL 8 系统在转换过程中遇到依赖项问题,从而导致 RHEL 系统出现问题。要临时解决这个问题,请在转换前删除 python39-psycopg2-debug 软件包。

5.4. 获取支持

如果您在转换过程中遇到问题,请通知红帽以便解决这些问题。有几种获得支持的方法。

  • 创建一个支持问题单:

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

      # sosreport

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

  • 提交错误报告

    • 打开一个程序错误,选择 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 支持策略

第 6 章 其它资源