Translated message

A translation of this page exists in English.

如何执行一个不被支持的、从基于 RHEL 的其他 Linux 发行版本到 RHEL 的转换

已更新 -

本文档提供了有关如何执行一个不被支持的、从其他 Linux 发行版本到 Red Hat Enterprise Linux (RHEL) 的转换的信息。

这个转换过程使用 Convert2RHEL 工具进行,它可以从 GitHub 上获得,且不被红帽支持。

红帽支持从 CentOS Linux 和 Oracle Linux 转换到 RHEL 7 和 8。如需更多信息,请参阅从基于 RPM 的 Linux 发行版转换到 RHEL。另请参阅 Convert2RHEL 支持政策

重要信息:
红帽建议您联系红帽咨询服务团队,以确保转换过程可以平稳进行。

作为成功转换系统的一部分所安装的红帽软件包,会自动获得红帽支持。对于在转换过程中保持不变的第三方软件包,红帽可能不会对它们提供支持。请参阅红帽对第三方软件的支持政策

如果您在使用 Convert2RHEL 工具时遇到问题,请在 GitHub 中报告问题

操作系统转换是如何进行的

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

备注:
对于只存在于原始发行版本中、且在 RHEL 软件仓库中没有对应软件包的软件包,或在原始发现版本中存在的、不是来自原始 Linux 发行版本或 RHEL 的第三方软件包,都不会受到转换的影响。

支持的转换和不支持的转换的区别

红帽允许从多个不同的基于 RHEL 的操作系统转换到 RHEL。但是,如果是红帽不支持的转换,则代表转换过程没有经过红帽测试,您需要自己承担转换可能会带来的风险。对于红帽支持的转换,代表红帽已对转换过程进行了全面的测试。

您可以从不同的系统转换到 RHEL,其中的一些转换是支持的转换,另外一些是不支持的转换。例如,从 CentOS Linux 6 转换到 RHEL 6 是不支持的转换,而从 CentOS Linux 7 转换到 RHEL 7 是支持的转换。有关不支持的转换的完整列表,请查看下表。有关支持的转换的完整列表,请参阅从基于 RPM 的 Linux 发行版转换到 RHEL 指南中的支持的转换

如果您需要进行一个不支持的转换,请使用此知识库文档来了解如何准备您的系统并执行转换。如果您要进行一个受支持的转换,请参阅从基于 RPM 的发行版本转换到 RHEL 指南。如果您在进行不受支持的转换时使用了受支持的转换的方法,或在进行受支持的转换时使用了不受支持的转换的方法,则可能会在转换过程中遇到问题。

可以进行的不受支持的转换

下表包括了目前可以进行的、不受支持的转换(将原生系统转换到对应的 RHEL 的次版本)。

原始操作系统 目标操作系统 架构
CentOS Linux 6 RHEL 6 64 位架构
Oracle Linux 6 RHEL 6 64 位架构
Scientific Linux 7 RHEL 7 64 位架构
Alma Linux 8 RHEL 8 64 位架构
Rocky Linux 8 RHEL 8 64 位架构

除了上面包括的不支持的转换,您也可以执行受支持的、从 CentOS Linux 和 Oracle Linux 7 和 8 到 RHEL 7 和 8 的转换。有关支持的转换信息,请参阅从基于 RPM 的 Linux 发行版转换到 RHEL

RHEL 6 处于其生命周期的维护支持 2 阶段。如果您在将系统转换到 RHEL 后无法将系统升级到 RHEL 7升级到 RHEL 8,且需要继续维护 RHEL 6 系统,我们建议您购买延长生命周期支持附加服务(ELS)

您不能直接从 Scientific Linux 转换到 RHEL 8。但是,您可以从 Scientific Linux 转换到 RHEL 7,然后执行到 RHEL 8 的原位升级。有关原位升级的详情,请参考从 RHEL 7 升级到 RHEL 8

重要:
对于某些特定的系统设置,目前还不支持进行转换。如需更多信息,请参阅 已知问题

先决条件

  • 备份您的系统,并确认您可以恢复该系统。
  • 确定引导的内核是标准内核:
    • Oracle Linux: Red Hat Compatible Kernel (RHCK)
    • CentOS Linux: 标准 CentOS Linux 内核
    • Scientific Linux: 标准 Scientific Linux 内核
      如果您的系统引导到的内核不是标准内核,如 Oracle Linux Unbreakable Enterprise Kernel(UEK)或 CentOS realtime 内核,将默认内核更改为标准内核并重启系统。如需更多信息,请参阅使用 grubby 工具对 GRUB 2 菜单进行永久性更改
  • 安装 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
      

      version_number 替换为适当的 OS 主版本,例如 67

    备注:
    您必须使用最新版本的 Convert2RHEL 仓库文件执行转换。如果您之前已安装了仓库文件的早期版本,请删除之前的版本并安装当前版本。

    • 安装 Convert2RHEL 工具:

      # yum -y install convert2rhel
      

    备注:
    所有 Convert2RHEL 依赖项都在标准的 CentOS Linux/Oracle Linux 软件仓库中提供,但 CentOS Linux 6 除外(其已结束其生命周期)。CentOS Linux 6 存储库在 Vault 中存档。重新配置 CentOS Linux 6 存储库来访问 Vault,以使 Convert2RHEL 依赖项可用。

  • 确保您可以使用以下方法之一访问 RHEL 软件包:

    • 通过 Red Hat Subscription Manager (RHSM) 提供的 Red Hat Content Delivery Network(CDN)。您需要有一个红帽帐户和一个适当的 RHEL 订阅来访问 RHSM。请注意,操作系统将转换为 RHEL 6.10,这是相应主版本的最新 RHEL 次版本。
    • Red Hat Satellite 可能是一个处于完全支持阶段的版本或处于维护支持阶段的版本。如需更多信息,请参阅 Red Hat Satellite 产品生命周期
      备注:
      确保 Satellite 服务器满足以下条件:

      • Satellite 带有一个导入的 RHEL 软件仓库的订阅清单。如需更多信息,请参阅特定 Red Hat Satellite 版本(如 6.8)的内容管理指南中的管理订阅部分。
      • 所有需要的软件仓库都已启用,并与最新更新进行了同步,且在 Satellite 中发布。最少启用 Red Hat Enterprise Linux 6 Server RPMs x86_64 6Server repository。
      • 您已在 Satellite 中创建了一个激活码,并将上述仓库分配给该激活码。如需更多信息,请参阅管理激活码
    • /etc/yum.repos.d/ 目录中配置自定义软件仓库,例如指向 RHEL ISO、FTP 或 HTTP。对于只能连接到本地网络而无法通过 RHSM 访问 Red Hat CDN 的系统,使用自定义软件仓库。请注意,操作系统将转换到这些软件仓库提供的 RHEL 版本。确保 RHEL 的次版本与原始操作系统的次版本相同或更新,以防止降级和潜在的转换失败。如需更多信息,请参阅创建本地仓库并与无连接/离线系统共享
  • 如果您通过 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 服务器的主机名。

  • 将原始操作系统中的软件包更新至系统可访问的软件仓库中的最新版本,并重启系统:

    # yum update -y
    # reboot
    

    如果没有执行此步骤,回滚功能将无法正常工作,在任何阶段中退出转换可能会导致系统无法正常工作。

转换系统

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

  • 提供机构 ID 和激活码。当转换多个系统,或使用脚本进行自动转换时,这是首选的方法。您必须是机构管理员才能创建激活码。如果您通过 RHSM 使用 Satellite 访问 RHEL 软件包,则必须使用此方法。如需更多信息,请参阅 Satellite 文档中的管理激活码,以及 RHSM 文档中的了解激活码

  • 提供用户名、密码和池 ID。任何通过 RHSM 使用 Red Hat CDN 访问 RHEL 软件包的用户都可以使用这个方法。

  1. 启动 Convert2RHEL 工具。
    您可以将 Convert2RHEL 与 RHSM 或自定义软件仓库搭配使用。

    • 使用 RHSM:

      • 使用机构 ID 和激活码:
      # convert2rhel --org <organization_ID> --activationkey <activation_key>
      

      使用机构 ID 和激活码(如果使用 Red Hat CDN,来自Red Hat Customer Portal;如果使用 Red Hat Satellite,来自 Satellite web UI)替换 organization_IDactivation_key
      备注:
      如果您使用 Satellite 访问 RHEL 软件包,则必须使用机构 ID 和激活码来运行 convert2rhel
      备注:
      如果您使用 Satellite 访问 RHEL 软件包,且您的系统不能访问互联网,添加 --keep-rhsm 选项。请注意,您必须已安装了 subscription-managerkatello-ca-consumer 软件包,且在运行 convert2rhel 命令时必须提供您的机构 ID 和激活码。

      • 使用用户名、密码和池 ID:
      # convert2rhel --username <username> --password <password> --pool <pool_id>
      

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

    • 使用自定义软件仓库:

    # convert2rhel --no-rhsm --enablerepo <RHEL_RepoID1> --enablerepo <RHEL_RepoID2> --debug
    

    RHEL_RepoID 替换为在 /etc/yum.repos.d/ 目录中配置的自定义软件仓库。

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

    # convert2rhel -h
    
  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 系统:

    • 安装 subscription-manager 命令行工具:
    # yum install subscription-manager -y
    
    # yum update -y
    
  5. 此时,系统仍然会使用在内存中已载入的原始发行版本的内核。重启系统后会引导到新安装的 RHEL 内核。

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

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

    使用适当的存储库 ID 替换 RHEL_RepoID

  7. 如有必要,在转换后重新配置系统服务。

故障排除

日志

Convert2RHEL 实用程序将 convert2rhel.log 文件存储在 /var/log/convert2rhel/ 目录中。其内容与标准输出中的内容相同。

rpm -Va 命令的输出(它会自动运行,除非使用了 --no-rpm-va 选项)存储在 /var/log/convert2rhel/rpm_va.log 文件中,用于调试目的。

回滚

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.
    

    接下来您会被询问是否希望继续这个过程。

  • 需要可以访问能够获得原始发行版本中提供的软件包的软件仓库,特别是 base 仓库。否则,Convert2RHEL 无法将系统恢复到原始状态,即使在转换的早期阶段也无法恢复。这是因为 Convert2RHEL 会在转换过程中删除某些软件包,它需要预先从原始仓库下载这些软件包才可以进行回滚操作。

  • 只有在系统中所有来自原始操作系统中的软件包都已更新到最新的版本,且存在于系统可访问的软件仓库中时,才可以进行回滚。因此,在开始转换过程前,请首先运行 yum update 命令。

注意:如果使用 -y 选项,则表明自动回滚无法再进行的问题将会被忽略。

警告:如果转换过程在 Convert2RHEL 替换软件包过程已开始后被取消或失败,则系统可能会变为无法正常工作。如果出现这种情况,则需要手动修复。请联络红帽咨询服务以获得帮助。

已知问题

  • 基于 UEFI 的系统无法转换为 RHEL 6。(BZ#1899314)
  • 如果有任何文件被直接挂载到 /mnt/ 目录,或者 /sys/ 目录以只读模式挂载,则转换会停止。
  • 目前,不支持使用由红帽或第三方提供的高可用性集群软件的系统转换到 RHEL。红帽建议,将这样的系统迁移到新安装的 RHEL 系统,以确保这些环境的完整性。
  • 目前,不支持对使用 RHEL 内核模块中不存在的内核模块的系统进行转换。不支持的内核模块包括:
    • 用于专用应用程序、GPU、网络驱动程序或存储驱动程序的内核模块
    • 由 DKMS 构建的定制编译的内核模块
      红帽建议,在转换前先禁用或卸载这些外部内核模块,然后在转换后再启用或重新安装这些内核模块。
  • 对于使用 HTTP 代理服务器连接到互联网的系统,无法使用通过 RHSM 提供的 Red Hat CDN 或 Satellite 进行转换。要临时解决这个问题,按照以下步骤为 yum 启用 HTTP 代理,然后为 RHSM 配置 HTTP 代理:

    1. 配置 yum 以使用 HTTP 代理。详情请参阅如何在 RHEL 上为 Yum 命令启用代理设置?
    2. 对于 Oracle Linux 转换,定义并启用指向以下 URL 的仓库:
      • Oracle Linux 7: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi/server/7/7Server/x86_64/os/
      • Oracle Linux 8: https://cdn-ubi.redhat.com/content/public/ubi/dist/ubi8/8/x86_64/baseos/os/
    3. 安装 subscription-manager 软件包。
    4. 为 RHSM 配置 HTTP 代理。详情请参阅如何为 Red Hat Subscription Management 配置 HTTP 代理
    5. 防止在转换过程中删除配置文件:

      chattr +i /etc/rhsm/rhsm.conf
      
    6. 执行到 RHEL 的转换。
      (BZ#1965487)

获得支持

重要信息:
目前,红帽还不支持从 CentOS Linux 6 和 Oracle Linux 6 转换到 RHEL 6,以及从 Scientific Linux 7 转换到 RHEL 7。红帽支持从 CentOS Linux 7 和 8、Oracle Linux 7 和 8 转换到 RHEL 7 和 8。有关支持的 CentOS Linux 和 Oracle Linux 转换的更多信息,请参阅从基于 RPM 的 Linux 发行版转换到 RHEL

要报告 Convert2RHEL 中的问题,请在 GitHub 中提交问题

额外资源

从基于 RPM 的 Linux 发行版本转换到 RHEL
Red Hat Enterprise Linux 的技术能力和限制
Red Hat Enterprise Linux 文档
迁移规划指南 - 迁移到 RHEL 6
迁移规划指南 - 迁移到 RHEL 7
从 RHEL 6 升级至 RHEL 7
使用 RHEL 8 时的注意事项
从 RHEL 7 升级至 RHEL 8
如何在不使用 Satellite 服务器的情况下,为 Red Hat Enterprise Linux 5、6、7、8 创建最新更新的本地镜像?
博客文章:通过 Convert2RHEL 和 Satellite 从 CentOS 转换到 RHEL