从 RHEL 9 升级到 RHEL 10


Red Hat Enterprise Linux 10

从 Red Hat Enterprise Linux 9 原位升级到 Red Hat Enterprise Linux 10 的说明

Enter your first name here. Enter your surname here.

Enter your organisation's name here. Enter your organisational division here.

摘要

RHEL 原位升级使用 Leapp 工具从 Red Hat Enterprise Linux 9 升级到 Red Hat Enterprise Linux 10。在原位升级过程中,现有的 RHEL 9 操作系统将被 RHEL 10 版本替代。

对红帽文档提供反馈

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

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

  1. 登录到 Jira 网站。
  2. 在顶部导航栏中点 Create
  3. Summary 字段中输入描述性标题。
  4. Description 字段中输入您对改进的建议。包括文档相关部分的链接。
  5. 点对话框底部的 Create

主要迁移术语

尽管以下与迁移相关的术语在软件业中常用,但这里的定义特定于 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 章 支持的升级路径

原位升级使用 RHEL 10 版本替换系统上的 RHEL 9 操作系统。

重要

您可以只执行一个从主 RHEL 版本到下一个连续版本的原位升级,例如:从 RHEL 8 升级到 RHEL 9,或从 RHEL 9 升级到 RHEL 10。如果要跨多个版本(如从 RHEL 8 升级到 RHEL 10)升级系统,您必须执行多个原位升级,才能达到您的目标版本。

目前,您可以执行从以下源 RHEL 9 次版本到以下目标 RHEL 10 次版本的原位升级:

Expand
表 1.1. 支持的升级路径
系统配置源操作系统版本目标操作系统版本

RHEL

RHEL 9.6

RHEL 10.0 (EUS)

RHEL

RHEL 9.7

RHEL 10.1

重要

这个表中的原位升级路径只对使用 Red Hat Subscription Manager (RHSM)的系统保证。对于使用 Red Hat Update Infrastructure (RHUI)的 Pay-As-You-Go (PAYG) RHEL 系统,只支持最新的可用升级路径。请注意,这不会影响安装了 SAP HANA 的 RHEL 系统。

第 2 章 计划到 RHEL 10 的升级

原位升级允许您在不丢失现有配置和系统订阅的情况下升级到最新版本的 RHEL。通常,与全新 RHEL 安装相比,原位升级的成本要低得多。但是,并非所有系统都有资格进行原位升级。在开始从 RHEL 9 升级到 RHEL 10 之前,请查看系统要求、限制和其他注意事项。

2.1. 规划从 RHEL 9 到 RHEL 10 的升级

原位升级(in-place upgrade)是把系统升级到下一个主要 RHEL 版本的推荐并支持的方法。

升级到 RHEL 10 之前,请考虑以下几点:

  • 应用程序 - 您可以使用 Leapp 工具迁移安装在系统上的应用程序。然而,在某些情况下,您必须创建自定义操作程序,它指定要在升级过程中 Leapp 要执行的操作,例如重新配置应用程序或安装特定的硬件驱动程序。如需更多信息,请参阅处理自定义应用程序和第三方应用程序的迁移。请注意,红帽不支持 custom actor。

    重要

    SHA-1 算法在 RHEL 9 中已弃用。如果您的系统具有 RSA/SHA-1 签名的任何软件包,则升级会被禁止。在升级前,删除这些软件包或联系具有 RSA/SHA-256 签名的软件包的厂商。如需更多信息,请参阅 Red Hat Enterprise Linux 9 中的 SHA-1 弃用

  • 引导装载程序 - 您不能在 RHEL 9 或 RHEL 10 中将引导装载程序从 BIOS 切换到 UEFI。如果您的 RHEL 9 系统使用 BIOS,而您希望 RHEL 10 系统使用 UEFI,请执行全新的 RHEL 9 安装,而不是原位升级。如需更多信息,请参阅 是否可以在预安装的 Red Hat Enterprise Linux 机器上将 BIOS 引导切换到 UEFI 引导?
  • 自定义 - 要使用自定义存储库,请参阅 配置自定义存储库 知识库文章。
  • 停机时间 — 升级过程可能会需要几分钟到几小时。
  • 高可用性 - 如果您使用高可用性附加组件,请按照 对 RHEL 高可用性或弹性存储集群应用软件升级的推荐的实践 知识库文章。
  • 语言 - 无论语言配置如何,所有 Leapp 报告、日志和其他生成的文档均为英语。
  • 操作系统 - 在以下情况下可以由 Leapp 程序升级操作系统:

    • 源操作系统版本安装在有以下支持的构架的系统中:

      • 64 位 Intel、AMD 和 ARM

        重要

        对于 64 位 ARM 架构,只有运行 4k 页大小内核的系统上才支持原位升级。如果系统使用 64k 页大小内核引导,Leapp 不支持原位升级。

      • IBM POWER(little endian)
      • 64-bit IBM Z

        如需更多信息,请参阅红帽认证硬件

    • 满足 RHEL 10 的最低 硬件要求
    • 您有访问所选源和目标操作系统版本的最新内容的权限。如需更多信息,请参阅 为升级准备一个 RHEL 9 系统
  • 公有云

    • pay-As-You-Go

      • RHUI - 在所有支持的构架中,支持在 Amazon Web Services (AWS)上使用 Red Hat Update Infrastructure (AWS)的 Pay-As-You-Go (PAYG)实例进行原位升级,且仅在 Microsoft Azure 和 Google Cloud 上。对于使用 RHUI,但不支持使用 PAYG (但不支持 SAP HANA)的所有支持的云和架构,但只支持最新的升级路径。
      • cdn- 使用 Red Hat Content Delivery Network ( CDN )的 Pay-As-You-Go (PAYG)实例支持原位升级。

        注意

        您可以通过确认已安装了 redhat-cloud-client-configuration-cdn 软件包,来验证 RHEL 云实例是否消耗来自 CDN 的 RHEL 内容。如果没有安装,您将消耗来自 RHUI 的内容。

    • 使用您自己的订阅 - 支持在所有使用 RHSM 进行 RHEL 订阅的公有云上提供您自己的订阅实例。
  • Red Hat OpenStack Platform 中的 Real Time for Network Functions Virtualization (NFV) - 支持对实时系统的升级。
  • RHEL for Real Time - 支持对实时系统的升级。
  • SAP HANA - 目前不支持使用 SAP HANA 进行升级。
  • Satellite

  • 安全性 - 在升级之前对此进行评估,并在升级过程完成后执行额外的步骤。请特别考虑以下几点:

    • 在升级前,定义您的系统必须遵守的安全标准,并了解 RHEL 10 中的安全更改
    • 在升级过程中,Leapp 工具将 SELinux 模式设置为 permissive。
    • Leapp 支持在联邦信息处理标准(FIPS) 140 模式下 RHEL 9.6 及更新版本系统到启用了 FIPS 模式的 RHEL 9 系统的原位升级。在整个升级过程中,FIPS 模式 会保持启用。
    • 升级完成后,重新评估并重新应用您的安全策略。有关应用和更新安全策略的详情,请参考 应用安全策略
  • 存储和文件系统

Leapp 工具的重要的已知限制包括:

  • 已知限制 -Leapp 的重要的已知限制当前包括:

    • 不支持对使用以太网或 Infiniband 的基于网络的多路径和网络存储的升级。这包括使用 FCoE 的 SAN,以及从使用 FC 的 SAN 引导。请注意,支持使用 FC 的 SAN。
    • 对于安装了 Ansible Automation Platform 的系统不支持原位升级。要在 RHEL 10 上使用 RHEL 9 Ansible Automation Platform 安装,请参阅红帽知识库解决方案 如何将 Ansible Automation Platform 安装从一个环境迁移到另一个环境?
    • 不支持将 Red Hat JBoss Enterprise Application Platform (EAP)升级到 RHEL 10 。升级后,您必须在系统上手动安装和配置 JBoss EAP。
    • 不支持升级 Stratis 文件系统。

您可以使用 Red Hat Lightspeed 确定您注册到红帽 Lightspeed 的哪些系统位于受支持的 RHEL 10 的升级路径中。请注意,顾问建议只考虑 RHEL 9 次版本,不执行对系统的预升级评估。另请参阅 Advisor-service 建议概述

第 3 章 准备升级

要防止升级后出现问题,并确保您的系统已准备好升级到 RHEL 的下一个主要版本,请在升级前完成所有必要的准备步骤。

您必须在所有系统上执行 为升级准备一个 RHEL 9 系统 中描述的准备步骤。此外,在注册到 Satellite 服务器的系统上,您还必须执行 为升级准备一个注册了 Satellite 的系统 中描述的准备步骤。

3.1. 为升级准备一个 RHEL 9 系统

在原位升级到 RHEL 10 前,您必须安装与升级相关的文件,并为升级准备系统。跳过这些所需步骤可能会导致升级过程中出现严重的问题。

如果您不计划在升级过程中使用 Red Hat Subscription Manager (RHSM),请参阅 不使用 Red Hat Subscription Manager 执行原位升级 中的说明。

先决条件

流程

  1. 可选:卸载升级不需要的非系统操作系统文件系统,并从 /etc/fstab 文件中注释掉它们。例如,这包括只包含与系统本身不相关的数据文件的文件系统。这可减少升级过程所需的时间,并防止与自定义或第三方参与者在升级过程中未正确迁移的第三方应用程序相关的潜在问题。
  2. 如果使用 RHSM 进行升级,请验证系统是否已注册到启用了 简单内容访问 (SCA)的帐户:

    # subscription-manager status
    +-------------------------------------------+
       System Status Details
    +-------------------------------------------+
    Overall Status: Disabled
    Content Access Mode is set to Simple Content Access. This host has access to content, regardless of subscription status.
    System Purpose Status: Disabled
  3. 确定启用了适当的存储库。以下命令为 64 位 Intel 和 AMD 架构启用 Base 和 AppStream 软件仓库 ; 对于其他架构,请参阅 RHEL 9 软件仓库

    # subscription-manager repos --enable rhel-9-for-x86_64-baseos-rpms --enable rhel-9-for-x86_64-appstream-rpms
    注意

    可选:启用 CodeReady Linux Builder (也称为可选的)或补充存储库。有关这些存储库的内容的更多信息,请参阅 软件包清单

  4. 将系统发行版本设置为源操作系统版本,例如:

    # subscription-manager release --set <source_os_version>

    <source_os_version> 替换为源操作系统版本,如 9.6

    1. 如果您要在公有云上使用 Red Hat Update Infrastructure (RHUI)升级,请手动设置期望的系统发行版本:

      # rhui-set-release --set 9.7
      重要

      如果系统上没有提供 rhui-set-release 命令,您可以通过更新 /etc/dnf/vars/release 文件来设置期望的系统发行版本:

      # echo "9.7" > /etc/dnf/vars/releasever
  5. 如果您使用 dnf versionlock 插件将软件包锁定为特定版本,请运行以下命令清除锁:

    # dnf versionlock clear
  6. 如果您要在公有云上使用 Red Hat Update Infrastructure (RHUI)升级,请启用所需的 RHUI 存储库,并安装所需的 RHUI 软件包,以确保您的系统已准备好升级:

    1. 对于 AWS:

      # dnf config-manager --set-enabled rhui-client-config-server-9
      # dnf -y install leapp-rhui-aws
    2. 对于 Microsoft Azure:

      # dnf config-manager --set-enabled rhui-microsoft-azure-rhel9
      # dnf -y install rhui-azure-rhel8 leapp-rhui-azure
    3. 对于 Google Cloud,请遵循 Google Cloud 的 Leapp RHUI 软件包 知识库文章。
  7. 确定您有最新的 leappleapp-repository 软件包:

    1. RHEL 9.6: leapp 软件包的版本 0.19.0leapp-repository 软件包的版本 0.22.0
    2. RHEL 9.6: leapp 软件包和版本 0.23.0 的版本 0.20.0

      leapp-repository 软件包包含 leapp-upgrade-el9toel10 RPM 软件包。

      注意

      仅对断开连接的系统:从 红帽客户门户网站 下载以下软件包 :

      • leapp
      • leapp-deps
      • python3-leapp
      • leapp-upgrade-el9toel10
      • leapp-upgrade-el9toel10-deps
      • leapp-upgrade-el9toel10-fapolicyd

        • 仅在系统上安装 fapolicyd RPM 软件包时包括。
  8. 安装 Leapp 工具:

    # dnf install leapp-upgrade
  9. 将所有软件包更新到最新的 RHEL 9 版本,并重启:

    # dnf update
    # reboot
  10. 可选:查看、修复,然后删除 rpmnewrpmsave 文件。
  11. 如果您使用配置管理系统,请确定它不会影响原位升级进程:

    • 如果您的配置管理系统有客户端-服务器架构,如 Puppet、Salt 或 Chef,请在运行 leapp preupgrade 命令前禁用该系统。在升级完成前,请不要启用配置管理系统,以防止升级过程中出现问题。
    • 如果您的配置管理系统有无代理架构,请不要执行配置和部署文件。例如,如果您的系统有 Ansible,请在升级过程中不要执行 Ansible playbook。

      警告

      红帽不支持使用配置管理系统进行预升级和升级过程的自动化。如需更多信息,请参阅 使用配置管理系统在 Red Hat Enterprise Linux 上自动化部分 Leapp 预升级和升级过程

  12. 如果您使用 ISO 镜像进行升级,请验证 ISO 镜像是否包含目标操作系统版本,如 RHEL 10.0,并保存到持久本地挂载点,以确保 Leapp 工具在整个升级过程中可以访问镜像。

3.2. 为升级准备注册了 Satellite 的系统

在您可以对注册到 Satellite 的系统执行 RHEL 10 的原位升级前,您必须准备您的系统。执行以下步骤在 Satellite 服务器上执行。

重要

Satellite 系统上的用户必须完成此流程和 为升级准备一个 RHEL 9 系统 中描述的步骤。

先决条件

流程

  1. 将带有 RHEL 9 存储库的订阅清单导入到 Satellite 服务器。如需更多信息,请参阅特定版本的 Red Hat Satellite 的管理内容指南中的管理红帽订阅一章。
  2. 使用源和目标操作系统版本的最新更新在 Satellite 服务器上启用并同步所有所需的 RHEL 9 和 RHEL 10 存储库。所需的存储库必须在内容视图中可用,并在关联的激活密钥中启用。

    注意

    对于 RHEL 10 存储库,启用每个存储库的目标操作系统版本,如 RHEL 10.0。如果您只启用存储库的 RHEL 10 版本,则会禁止原位升级。

    例如,对于没有延长更新支持(EUS)订阅的 Intel 构架,至少启用以下软件仓库:

    • Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)

      rhel-9-for-x86_64-appstream-rpms

      x86_64 <source_os_version>

    • Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)

      rhel-9-for-x86_64-baseos-rpms

      x86_64 <source_os_version>

    • Red Hat Enterprise Linux 10 for x86_64 - AppStream (RPMs)

      rhel-10-for-x86_64-appstream-rpms

      x86_64 <target_os_version>

    • Red Hat Enterprise Linux 10 for x86_64 - BaseOS (RPMs)

      rhel-10-for-x86_64-baseos-rpms

      x86_64 <target_os_version>

      <source_os_version><target_os_version> 分别替换为源操作系统版本和目标操作系统版本,如 9.6 和 10.0。

      对于其他构架,请参阅 RHEL 9 存储库RHEL 10 存储库

      如需更多信息,请参阅特定版本的 Red Hat Satellite管理内容指南 中的 导入内容 一章。

  3. 将内容主机附加到包含所需 RHEL 9 和 RHEL 10 软件仓库的内容视图。

    如需更多信息,请参阅特定版本的 Red Hat Satellite管理内容指南 中的 管理内容视图 一章。

验证

  1. 验证正确的 RHEL 9 和 RHEL 10 软件仓库是否已添加到 Satellite 服务器上的正确的内容视图中。

    1. 在 Satellite Web UI 中,进入到 Content > Lifecycle > Content Views,然后点内容视图的名称。
    2. 单击 Repositories 选项卡,验证存储库是否如预期显示。

      注意

      您还可以使用以下命令验证仓库是否已添加到内容视图中:

      # hammer repository list --search 'content_label ~ rhel-9' --content-view <content_view_name> --organization <organization> --lifecycle-environment <lifecycle_environment>
      # hammer repository list --search 'content_label ~ rhel-10' --content-view <content_view_name> --organization <organization> --lifecycle-environment <lifecycle_environment>

      <content_view_name > 替换为内容视图的名称,& lt;organization > 替换为机构,< lifecycle_environement > 替换为生命周期环境的名称。

  2. 验证与内容视图关联的激活码中是否启用了正确的 RHEL 10 软件仓库:

    1. 在 Satellite Web UI 中,导航到 Content > Lifecycle > Activation Keys,然后点击激活码的名称。
    2. 单击 Repository Sets 选项卡,验证所需存储库的状态是否为 Enabled
  3. 验证所有预期的 RHEL 9 存储库是否已在主机中启用了。例如:

    # subscription-manager repos --list-enabled | grep "^Repo ID"
    Repo ID:   rhel-9-for-x86_64-baseos-rpms
    Repo ID:   rhel-9-for-x86_64-appstream-rpms

3.3. 使用 LiveMode 配置从 RHEL 9.7 升级到 RHEL 10.1

LiveMode 是当从 RHEL 9.7 升级到 64 位 Intel 架构上的 RHEL 10.1 时准备和引导到升级环境的替代方法。LiveMode 使用标准引导过程。标准引导过程可能会阻止或帮助诊断升级过程中发生的某些问题,比如与存储初始化相关的问题。请注意,LiveMode 需要大约 700 MB 的额外磁盘空间,以便在重启前创建和存储升级环境。

重要

LiveMode 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

使用 LiveMode 时,您还可以配置超过默认规格的升级体验。这在在升级过程中进行故障排除或者您要使用 SSH 连接查看升级进度时很有用。

如果您在没有对默认设置进行任何修改的情况下使用 LiveMode,则不需要在升级前完成 LiveMode 的任何准备步骤。如果要更改默认规格,必须创建并修改 YAML 文件。

流程

  1. 如果要修改 LiveMode 的默认规格,请在 /etc/leapp/actor_conf.d/ 文件中创建一个 YAML 文件,如 livemode.yaml
  2. 在 YAML 文件中输入所需的 LiveMode 配置。

    Expand
    表 3.1. LiveMode 配置
    配置字段值类型default描述

    additional_packages

    List[str]

    []

    要安装到升级镜像中的其他软件包。

    autostart_upgrade_after_reboot

    bool

    True

    如果设置为 True,则升级重启后会自动启动。否则,需要手动触发器。

    capture_strace_info_into

    str

    ''

    如果设置为非空字符串,则 leapp 会在 strace 下执行,结果存储在提供的文件路径中。

    dracut_network

    str

    ''

    dracut 网络参数。如果 'url_to_load_squashfs_'from 选项设置为非空字符串,则需要此项。

    setup_network_manager

    bool

    False

    如果设置为 False,Leapp 工具会在升级镜像中启用 Network Manager。

    setup_opensshd_using_auth_keys

    str

    ''

    如果设置为非空字符串,则使用提供的授权密钥文件在升级镜像中设置 openssh 守护进程。

    setup_passwordless_root

    bool

    False

    如果设置为 True,则升级镜像的 root 帐户具有空密码。请谨慎使用。

    squashfs_image_path

    str

    /var/lib/leapp/live-upgrade.img

    最小目标系统的升级镜像所需的位置。

    url_to_load_squashfs_image_from

    str

    ''

    所需升级镜像的 URL。

    以下是 /etc/leapp/actor_conf.d/livemode.yaml 文件示例:

    livemode:
      additional_packages : [ vim ]
      autostart_upgrade_after_reboot : false
      setup_network_manager : true
      setup_opensshd_using_auth_keys : /root/.ssh/authorized_keys

    示例文件会产生以下操作:

    • Leapp 实用程序将 vim 软件包安装到升级环境中。
    • 升级不会在重启后自动启动。您必须手动重启它。这可让您手动检查系统,并验证升级是否如预期完成,并在启动前系统已准备好使用。
    • Leapp 工具尝试使用源系统的网络配置集在升级环境中启用 NetworkManager。
    • Leapp 工具启用 opensshd 服务。如果系统成功建立网络访问,您可以使用 SSH 使用 root 帐户登录到升级环境,并与系统交互。

第 4 章 查看升级前报告

要评估系统的可升级性,请使用 leapp preupgrade 命令启动预升级过程。在这个阶段中,Leapp 工具收集有关系统的数据,评估可升级性,并生成一个预升级报告。

4.1. 关于预升级报告

预升级报告总结了潜在的问题,并建议推荐的解决方案。报告还帮助您决定升级是否可行。

如果要执行 RHEL 9 系统的全新安装,而不是原位升级过程,查看预升级报告也很有用。

始终查看整个预升级报告,即使报告中没有发现升级的阻碍因素。预升级报告包含升级前要完成的建议操作,以确保升级的系统正常工作。

重要

预升级评估不会修改系统配置,但它消耗 /var/lib/leapp 目录中不可忽略的空间。在大多数情况下,预升级评估最多需要 4 GB 空间,但实际大小取决于您的系统配置。如果在托管的文件系统上没有足够的空间,预升级报告可能无法显示分析的完整结果。要防止问题,请确定您的系统在 /var/lib/leapp 目录中有足够的空间,或者将目录移到一个专用的分区,以便空间消耗不会影响系统的其他部分。

您可以使用以下方法之一评估预升级阶段中的可升级性:

  • 查看生成的 leapp-report.txt 文件中的预升级报告,并使用命令行手动解决报告的问题。
  • 使用 Web 控制台查看报告,在可用的情况下应用自动修复,并使用推荐的修复提示修复剩余的问题。
注意

您可以使用自己的自定义脚本处理预升级报告,例如,比较不同环境中多个报告的结果。如需更多信息,请参阅自动 Red Hat Enterprise Linux 预升级报告工作流

重要

预升级报告无法模拟整个原位升级过程,因此无法识别系统的所有阻碍问题。因此,在您检查并修复报告中的所有问题后,Leapp 仍可能会终止您的原位升级。例如,预升级报告无法检测与损坏的软件包下载相关的问题。

您可以使用命令行在升级前识别预升级阶段潜在的升级问题。

先决条件

  • 您完成了 准备升级过程中的
  • 您以具有 unconfined SELinux 角色的 root 用户身份登录。

    注意

    如果使用 sudo 命令,必须在输入每个 leapp 命令时使用 unconfined_r -t unconfined_t 选项,例如:

    $ sudo -r unconfined_r -t unconfined_t leapp preupgrade

流程

  1. 在 RHEL 9 系统上,执行预升级阶段:

    # leapp preupgrade --target <_target_os_version_>

    target_os_version 替换为目标操作系统版本,如 10.0。如果没有定义目标操作系统版本,Leapp 将使用 支持的升级路径 中表 1.1 中指定的默认目标操作系统版本。

    • 如果您使用 /etc/yum.repos.d/ 目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:

      # leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...

      使用存储库 ID 替换 repository_id

    • 如果您要 不使用 RHSM 进行升级,或使用 RHUI 进行升级,请添加 --no-rhsm 选项。
    • 如果您有 延长升级支持(EUS) 或高级升级支持(AUS)订阅,请添加 --channel <channel> 选项。将 <channel> 替换为渠道名称,如 eusaus
    • 如果您在 Red Hat OpenStack Platform 中使用 RHEL for Real Time 或 Real Time for Network Functions Virtualization (NFV),请使用 --enablerepo 选项启用部署。例如:

      # leapp preupgrade --enablerepo rhel-10-for-x86_64-rt-rpms

      如需更多信息,请参阅 配置实时计算

  2. 检查 /var/log/leapp/leapp-report.txt 文件中的报告,并手动解决所有报告的问题。有些报告的问题包含补救建议。抑制因素 问题阻止您升级,直到您解决了它们。

    报告包含以下风险因素级别:

    • - 很可能会导致系统状态恶化。
    • - 可能会影响系统和应用程序。
    • - 应该不会影响系统,但可能会影响应用程序。
    • Info - 对系统或应用程序没有预期影响的信息。
  3. 在某些系统配置中,Leapp 工具会产生您必须手动回答的 true 或 false 问题。如果预升级报告包含 Missing required answers in the answer file 消息,请完成以下步骤:

    1. 打开 /var/log/leapp/answerfile 文件,并查看 true 或 false 问题。
    2. 手动编辑 /var/log/leapp/answerfile 文件,通过删除 # 符号取消对文件的确认行的注释,并确认您的回答为 TrueFalse。如需更多信息,请参阅 故障排除提示

      注意

      另外,您可以通过运行以下命令来回答 true 或 false 问题:

      # leapp answer --section <question_section>.<field_name>=<answer>
  4. 重复前面的步骤来重新运行预升级报告,以验证您是否解决了所有关键问题。

您可以在升级前发现潜在的问题,并使用 web 控制台应用自动化补救方法。请参阅 RHEL web 控制台入门,以了解有关 web 控制台的更多信息

先决条件

  • 您完成了 准备升级过程中的
  • 您以具有 unconfined SELinux 角色的 root 用户身份登录。

    注意

    如果使用 sudo 命令,必须在输入每个 leapp 命令时使用 unconfined_r -t unconfined_t 选项,例如:

    $ sudo -r unconfined_r -t unconfined_t leapp preupgrade

流程

  1. 安装 cockpit-leapp 插件:

    # dnf install cockpit-leapp
  2. root 或有权使用 sudo 输入管理命令的用户身份登录到 web 控制台。
  3. 在 RHEL 9 系统上,从命令行或从 web 控制台终端执行预升级阶段:

    # leapp preupgrade --target <target_os_version>

    target_os_version 替换为目标操作系统版本,如 10.0。如果没有定义目标操作系统版本,Leapp 将使用 支持的升级路径 中表 1.1 中指定的默认目标操作系统版本。

    • 如果您使用 /etc/yum.repos.d/ 目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:

      # leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
    • 如果您要 不使用 RHSM 进行升级,或使用 RHUI 进行升级,请添加 --no-rhsm 选项。
    • 如果您有 延长升级支持(EUS) 或高级升级支持(AUS)订阅,请添加 --channel <channel> 选项。将 <channel> 替换为渠道名称,如 eus 或'aus'。
    • 如果您在 Red Hat OpenStack Platform 中使用 RHEL for Real Time 或 Real Time for Network Functions Virtualization (NFV),请使用 --enablerepo 选项启用部署。例如:

      # leapp preupgrade --enablerepo rhel-10-for-x86_64-rt-rpms

      如需更多信息,请参阅 配置实时计算

  4. 在 web 控制台中,从导航菜单中选择 Upgrade Report 来查看所有报告的问题。抑制因素 问题阻止您升级,直到您解决了它们。要详细查看问题,请选择行来打开详情面板。

    图 4.1. Web 控制台中的原位升级报告

    Web 控制台中的原位升级报告

    报告包含以下风险因素级别:

    • - 很可能会导致系统状态恶化。
    • - 可能会影响系统和应用程序。
    • - 应该不会影响系统,但可能会影响应用程序。
    • Info - 对系统或应用程序没有预期影响的信息。
  5. 在某些配置中,Leapp 工具会生成您必须手动回答的 true 或 false 问题。如果升级报告包含 Missing required answers in the answer file 行,请完成以下步骤:

    1. 选择 Missing required answers in the answer file 行,来打开 Details 面板。默认回答在补救命令的末尾说明。
    2. 要确认默认答案,请选择 Add to Remediation Plan 以在以后启动补救或 Run Remediation 来立即启动补救。
    3. 要选择非默认答案,请在终端中运行 leapp answer 命令,指定您要响应的问题以及您确认的回答。

      # leapp answer --section <question_section>.<field_name>=<answer>
      注意

      您还可以手动编辑 /var/log/leapp/answerfile 文件,通过删除 # 符号取消对文件的确认行的注释,并确认您的回答为 TrueFalse。如需更多信息,请参阅 故障排除提示

  6. 有些问题有您可以运行的修复命令来自动解决问题。您可以在补救命令中单独或一起运行补救命令。

    1. 要运行单个补救命令,请打开此问题的 Detail 面板,然后点 Run Remediation
    2. 要在补救计划中添加补救命令,请打开此问题的Detail 面板,然后点击 Add to Remediation Plan

      图 4.2. 详细信息面板

      详细信息面板
    3. 要运行包含所有添加了补救命令的补救计划,请点击报告右上角的 Remediation plan 链接。点击 Execute Remediation Plan 运行所有列出的命令。
  7. 审核报告并解决所有报告的问题后,重复第 3-7 步来重新运行报告,以验证您是否解决了所有关键问题。

第 5 章 执行升级

完成准备步骤并审核和解决了预升级报告中发现的问题后,您可以在系统上执行原位升级。

5.1. 执行从 RHEL 9.7 升级到 RHEL 10.1

您可以使用 Leapp 工具执行从 RHEL 9 升级到 RHEL 10。

先决条件

  • 您完成了 准备升级过程, 包括完整系统备份。
  • 您完成了 预升级报告 过程,以及所有报告的问题已解决。
  • 您已临时禁用了防病毒软件,以防止升级失败。

流程

  1. 确定您有一个完整的系统备份或虚拟机快照。您可以使用以下备份选项:

  2. 在 RHEL 9 系统上,启动升级进程:

    # leapp upgrade --target <_target_os_version_>

    target_os_version 替换为目标操作系统版本,如 10.0。如果没有定义目标操作系统版本,Leapp 将使用 支持的升级路径 中表 1.1 中指定的默认目标操作系统版本。

    • 如果您使用 /etc/yum.repos.d/ 目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:

      # leapp upgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
    • 如果您要 不使用 RHSM 进行升级,或使用 RHUI 进行升级,请添加 --no-rhsm 选项。
    • 如果您使用 ISO 镜像升级,请添加 --no-rhsm--iso <file_path> 选项。将 <file_path > 替换为保存的 ISO 镜像的文件路径,例如 /home/rhel9.iso
    • 如果您有 扩展升级支持(EUS) 或高级更新支持(AUS)订阅,请添加 --channel channel 选项。使用 leapp preupgrade 命令使用的值替换 channel,如 eusaus。请注意,您必须在 leapp preupgradeleapp upgrade 命令中对 --channel 选项使用同样的值。
    • 如果您在 Red Hat OpenStack Platform 中使用 RHEL for Real Time 或 Real Time for Network Functions Virtualization (NFV),请使用 --enablerepo 选项启用部署。例如:

      # leapp upgrade --enablerepo rhel-10-for-x86_64-rt-rpms

      如需更多信息,请参阅 配置实时计算

    • 如果您使用 LiveMode 升级,请设置 LEAPP_UNSUPPORTED=1 环境变量,并将 --enable-experimental-feature 选项与 livemode 值一起使用。例如:

      # LEAPP_UNSUPPORTED=1 leapp upgrade --enable-experimental-feature livemode

      如需更多信息,请参阅使用 LiveMode 配置从 RHEL 9.7 升级到 RHEL 10.1

      重要

      LiveMode 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

      有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

  3. 在升级过程开始时,Leapp 会重复预升级阶段,如 检查预升级报告 中所述:

    • 如果系统是可升级的,则 Leapp 会下载必要的数据,并为升级准备一个 RPM 事务。
    • 如果您的系统没有满足可靠升级的参数,Leapp 会终止升级进程,并在 /var/log/leapp/leapp-report.txt 文件中提供一个描述问题和推荐的解决方案的记录。如需更多信息,请参阅 故障排除
  4. 手动重启系统:

    # reboot

    系统引导至基于 RHEL 10 的初始 RAM 磁盘镜像 initramfs。Leapp 升级所有软件包,并自动重启到 RHEL 10 系统。

    另外,您可以使用 --reboot 选项运行 leapp upgrade 命令并跳过这个手动步骤。

    如果发生故障,请调查日志和已知问题,如 故障排除 中所述。

  5. 登录到 RHEL 10 系统,并验证其状态,如 验证升级后状态 中所述。
  6. 执行升级报告和 执行升级后的任务 中描述的所有升级后任务。

5.2. 执行从 RHEL 9.6 升级到 RHEL 10.0

您可以使用 Leapp 工具执行从 RHEL 9 升级到 RHEL 10。

先决条件

  • 您完成了 准备升级过程, 包括完整系统备份。
  • 您完成了 预升级报告 过程,以及所有报告的问题已解决。
  • 您已临时禁用了防病毒软件,以防止升级失败。

流程

  1. 确定您有一个完整的系统备份或虚拟机快照。您可以使用以下备份选项:

  2. 在 RHEL 9 系统上,启动升级进程:

    # leapp upgrade --target <_target_os_version_>

    target_os_version 替换为目标操作系统版本,如 10.0。如果没有定义目标操作系统版本,Leapp 将使用 支持的升级路径 中表 1.1 中指定的默认目标操作系统版本。

    • 如果您使用 /etc/yum.repos.d/ 目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:

      # leapp upgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
    • 如果您要在没有 RHSM 的情况下升级,请添加 the -no-rhsm 选项。
    • 如果您使用 ISO 镜像升级,请添加 --no-rhsm--iso <file_path> 选项。将 <file_path > 替换为保存的 ISO 镜像的文件路径,例如 /home/rhel9.iso
    • 如果您有 扩展升级支持(EUS) 或高级更新支持(AUS)订阅,请添加 --channel channel 选项。使用 leapp preupgrade 命令使用的值替换 channel,如 eusaus。请注意,您必须在 leapp preupgradeleapp upgrade 命令中对 --channel 选项使用同样的值。
    • 如果您在 Red Hat OpenStack Platform 中使用 RHEL for Real Time 或 Real Time for Network Functions Virtualization (NFV),请使用 --enablerepo 选项启用部署。例如:

      # leapp upgrade --enablerepo rhel-10-for-x86_64-rt-rpms

      如需更多信息,请参阅 配置实时计算

  3. 在升级进程开始时,Leapp 会重复 检查预升级报告 中所述的预升级阶段。

    • 如果系统是可升级的,则 Leapp 会下载必要的数据,并为升级准备一个 RPM 事务。
    • 如果您的系统没有满足可靠升级的参数,Leapp 会终止升级进程,并在 /var/log/leapp/leapp-report.txt 文件中提供一个描述问题和推荐的解决方案的记录。如需更多信息,请参阅 故障排除
  4. 手动重启系统:

    # reboot

    在这个阶段,系统引导到基于 RHEL 10 的初始 RAM 磁盘镜像 initramfs。Leapp 升级所有软件包,并自动重启到 RHEL 10 系统。

    另外,您可以使用 --reboot 选项运行 leapp upgrade 命令并跳过这个手动步骤。

    如果发生故障,请调查日志和已知问题,如 故障排除 中所述。

  5. 登录到 RHEL 10 系统,并验证其状态,如 验证升级后状态 中所述。
  6. 执行升级报告和 执行升级后的任务 中描述的所有升级后任务。

第 6 章 验证升级后状态

执行到 RHEL 10 的原位升级后,请验证系统是否处于正确的状态。这样做可让您识别并更正可能会影响您系统的任何关键错误。

6.1. 验证 RHEL 10 系统的升级后状态

完成到 RHEL 10 的升级后,请确定系统是否处于所需状态。

先决条件

  • 系统已根据 执行升级 中描述的步骤进行了升级,并能够登录到 RHEL 10。

流程

  • 验证 Leapp 工具是否完成了升级过程中的所有操作,且系统已就绪:

    # [ -e "/etc/systemd/system/leapp_resume.service" ] || ps -e | grep -q leapp && echo "Leapp has not finished the execution yet!"
    重要

    如果您在升级完成前尝试使用该系统,则会出现严重的问题。

  • 验证当前操作系统版本是否为 RHEL 10。例如:

    # cat /etc/redhat-release
    Red Hat Enterprise Linux release 10.1 (Coughlan)
  • 检查 OS 内核版本。例如:

    # uname -r
    6.12.0-55.2.1.el10_0.x86_64

    请注意,.el10 很重要,版本不应早于 6.12.0。

  • 如果您使用 Red Hat Subscription Manager:

    • 验证是否安装了正确的产品。例如:

      # subscription-manager list --installed
      +-----------------------------------------+
          	  Installed Product Status
      +-----------------------------------------+
      Product Name: Red Hat Enterprise Linux for x86_64
      Product ID:   479
      Version:      10.1
      Arch:         x86_64
      Status:       Subscribed
    • 升级后,验证发行版本是否立即设置为预期的目标操作系统版本。例如:

      # subscription-manager release
      Release: 10.1
  • 例如,验证网络服务是否可操作,试着使用 SSH 连接到服务器。
  • 检查应用程序的升级后状态。在某些情况下,您可能需要手动执行迁移和配置更改。例如,要迁移您的数据库,请按照 配置和使用数据库服务器 中的说明进行操作。

第 7 章 在 RHEL 10 系统上执行升级后任务

原位升级后,通过删除不需要的软件包、禁用不兼容的存储库并更新救援内核和初始 RAM 磁盘来清理 RHEL 10 系统。

7.1. 执行升级后的任务

执行到 RHEL 10 的升级后,完成以下推荐的主要任务。

先决条件

* 您完成了 执行升级过程,并可以登录到 RHEL 10。

  • 您验证了原位升级的状态,如 验证升级后状态 中所述。这包括 Leapp 工具完成升级过程的验证。

流程

  1. /etc/dnf/dnf.conf 配置文件中的 exclude 列表中删除剩余的 Leapp 软件包,其中包括 snactor 软件包,这是升级扩展开发的工具。在原位升级过程中,使用 Leapp 工具安装的Leapp 软件包会自动添加到 排除列表中,以防止删除或更新重要的文件。在原位升级后,在从系统中删除 Leapp 软件包之前,必须将它们从排除列表中删除。

    • 要从 exclude 列表中手动删除软件包,请编辑 /etc/dnf/dnf.conf 配置文件并从 exclude 列表中删除所需的 Leapp 软件包。
    • 从 exclude 列表中删除所有软件包:

      # dnf config-manager --save --setopt exclude=''
  2. 删除剩余的 RHEL 9 软件包,包括剩余的 Leapp 软件包。

    1. 找到剩余的 RHEL 9 软件包:

      # rpm -qa | grep -e '\.el[789]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort
    2. 从 RHEL 10 系统中删除剩余的 RHEL 9 软件包。要确保 RPM 依赖项被维护,请使用 dnf remove 命令。

      例如:

      # dnf remove $(rpm -qa | grep \.el[789] | grep -vE 'gpg-pubkey|libmodulemd|katello-ca-consumer')
      重要

      此步骤也可以删除第三方软件包。在接受之前检查交易,以确保没有任何软件包被意外删除。

    3. 删除剩余的 Leapp 依赖软件包:

      # dnf remove leapp-deps-el10 leapp-repository-deps-el10
  3. 可选:从系统中删除所有剩余的与升级相关的数据:

    # rm -rf /var/log/leapp /root/tmp_leapp_py3 /var/lib/leapp
    重要

    删除这些数据可能会限制红帽支持调查并故障排除升级后问题的能力。

  4. 禁用其软件包与 RHEL 10 不兼容的 DNF 存储库。由 RHSM 管理的存储库被自动处理。禁用这些存储库:

    # dnf config-manager --set-disabled <repository_id>

    使用存储库 ID 替换 repository_id

  5. 将旧的救援内核和初始 RAM 磁盘替换为当前的内核和磁盘:

    1. 删除现有救援内核和初始 RAM 磁盘:

      # rm /boot/vmlinuz-*rescue* /boot/initramfs-*rescue* 
    2. 重新安装救援内核和相关的初始 RAM 磁盘:

      # /usr/lib/kernel/install.d/51-dracut-rescue.install add "$(uname -r)" /boot "/boot/vmlinuz-$(uname -r)"
    3. 如果您的系统在 IBM Z 构架上,请更新 zipl 引导装载程序:

      # zipl
  6. 检查现有配置文件:

    • 检查、修复,然后删除 rpmnewrpmsaveleappsave 文件。请注意,rpmsaveleappsave 是等效的,可以用类似的方式处理。如需更多信息,请参阅 什么是 rpmnew 和 rpmsave 文件?
    • /etc/dnf/modules.d/ 目录中删除不再有效的 RHEL 9 DNF 模块的配置文件。请注意,当相关的 DNF 模块不存在时,这些文件对系统没有影响。
  7. 重新检查并重新应用您的安全策略。特别是,需要将 SELinux 模式改为 enforcing。详情请参阅 应用安全策略

验证

  1. 验证之前删除的救援内核和救援初始 RAM 磁盘文件是否已为当前内核创建:

    # ls /boot/vmlinuz-*rescue* /boot/initramfs-*rescue* 
    # lsinitrd /boot/initramfs-*rescue*.img | grep -qm1 "$(uname -r)/kernel/" && echo "OK" || echo "FAIL"
  2. 验证救援引导条目是否指向现有救援文件。查看 grubby 输出:

    # grubby --info /boot/vmlinuz-*rescue*
  3. 查看 grubby 输出,并验证没有配置 RHEL 9 引导条目:

    # grubby --info ALL
  4. 验证 /boot/loader/entries 文件中没有与之前 RHEL 相关的文件:

    # grep -r ".el9" "/boot/loader/entries/" || echo "Everything seems ok."

第 8 章 应用安全策略

在原位升级过程中,Leapp 必须将 SELinux 策略切换到 permissive 模式。另外,安全配置集可能包含主要版本之间的更改。

要恢复系统安全性,请再次将 SELinux 切换到 enforcing 模式。您可能还希望修复系统,使其符合特定的安全配置文件。另外,一些与安全相关的组件需要正确升级的预更新步骤。

原位升级过程会保留您在 RHEL 9 中使用的系统范围的加密策略。自定义加密策略也会在原位升级过程中保留。

8.1. 将 SELinux 模式改为 enforcing

在原位升级过程中,Leapp 会将 SELinux 模式设置为 permissive。完成系统升级后,您必须手动将 SELinux 模式改为 enforcing。

先决条件

流程

  1. 确保没有 SELinux denials,例如,使用 ausearch 工具程序:

    # ausearch -m AVC,USER_AVC -ts boot

    请注意,上一步只涵盖最常见的情况。要检查所有可能的 SELinux 拒绝,请参阅使用 SELinux 标题中的 识别 SELinux 拒绝 部分,它提供了一个完整的流程。

  2. 在您选择的文本编辑器中打开 /etc/selinux/config 文件,例如:

    # vi /etc/selinux/config
  3. 配置 SELINUX=enforcing 选项:

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
  4. 保存更改,重启系统:

    # reboot

验证

  1. 系统重启后,确认 getenforce 命令返回 Enforcing:

    $ getenforce
    Enforcing

8.2. 升级系统强化到安全基点

要在成功升级到 RHEL 10 后获得完全强化的系统,您可以使用 OpenSCAP 套件提供的自动补救功能。

OpenSCAP 修复使您的系统符合安全基线,如 PCI-DSS、OSPP 或 ACSC Essential Eight。由于安全产品的演进,配置合规性建议在 RHEL 的主要版本之间有所不同。

当升级一个强化的 RHEL 9 系统时,Leapp 工具 不提供 保持完整强化的直接方法。根据组件配置中的更改,系统可能会在升级过程中偏离对 RHEL 10 的建议。

注意

您不能使用相同的 SCAP 内容来扫描 RHEL 9 和 RHEL 10。如果系统的合规性是由 Red Hat Satellite 或 Red Hat Lightspeed 等工具管理的,则更新管理平台。

作为自动化修复的替代方法,您可以按照 OpenSCAP 生成的报告手动进行更改。有关生成合规性报告的详情,请参考 扫描系统以检查配置合规性

重要

在默认配置中,自动化修复支持 RHEL 系统。因为升级后更改了系统配置,因此运行自动补救可能无法使系统完全与所需的安全配置集兼容。您可能需要手动修复一些要求。

以下示例流程根据 PCI-DSS 配置集强化您的系统设置。

先决条件

  • scap-security-guide 软件包已安装在 RHEL 10 系统上。

流程

  1. 查找合适的安全合规数据流 .xml 文件:

    $ ls /usr/share/xml/scap/ssg/content/
    …
    ssg-rhel10-ds.xml
    …

    如需更多信息,请参阅 查看配置合规性的配置文件 部分。

  2. 根据从合适的数据流所选的配置文件来修复系统:

    # oscap xccdf eval --profile <profile_ID> --remediate /usr/share/xml/scap/ssg/content/ssg-rhel10-ds.xml

    根据您要强化系统哪一部分,将 <profile_ID> 替换为配置文件的 ID。有关 RHEL 10 中支持的配置文件的完整列表,请参阅 RHEL 10 中支持的 SCAP 安全指南配置文件

    警告

    如果没有谨慎使用,在启用 --remediate 选项的情况下运行系统评估可能会导致系统无法正常工作。红帽不提供任何自动的方法来恢复由强化安全的修复所做的更改。默认配置的 RHEL 系统支持自动安全补救功能。如果在安装后更改了您的系统,运行修复可能无法使其遵守所需的安全配置文件。

  3. 重启您的系统:

    # reboot

验证

  1. 验证系统是否遵从配置文件,并将结果保存到 HTML 文件中:

    $ oscap xccdf eval --report pcidss_report.html --profile pci-dss /usr/share/xml/scap/ssg/content/ssg-rhel10-ds.xml

第 9 章 故障排除

原位升级是一个复杂的过程,通常会遇到问题和障碍。有关解决这些问题的帮助,请参阅以下故障排除资源和提示。

9.1. 故障排除资源

您可以使用各种故障排除资源来诊断并排除升级过程中遇到的问题。

控制台输出

默认情况下,只将 Leapp 产生的 error 和 critical 日志级别的消息输出到控制台上。要更改日志级别,请在 leapp upgrade 命令中使用 --verbose--debug 选项。

  • verbose 模式下,Leapp 会输出 info, warning, error 和 critical 消息。
  • debug 模式中,Leapp 打印 debug、info、warning、error 和 critical 消息。

日志

  • /var/log/leapp/leapp-upgrade.log 文件列出了 initramfs 阶段里的问题。
  • /var/log/leapp/dnf-debugdata/ 目录包含了事务故障排除数据。只有在使用 --debug 选项执行 leapp upgrade 命令时,此目录才存在。
  • /var/log/leapp/answerfile 包含需要 Leapp 回答的问题。
  • journalctl 工具提供完整的日志。

Reports

9.2. 故障排除窍门

当诊断和故障排除在原位升级过程中出现的问题时,请确保检查这些频繁跳过的步骤并使用这些有用的资源。

预升级阶段

  • 验证您的系统是否满足 规划升级 中列出的所有条件。
  • 确定您已遵循了 准备升级 中描述的所有步骤,例如:您的系统没有使用多个其名称是基于内核使用的前缀(eth)的网络接口卡(NIC),。
  • 确保您已回答了 /var/log/leapp/answerfile 文件中 Leapp 要求的所有问题。如果缺少任何回答,Leapp 会阻止升级。例如:

    • 系统中没有 VDO 设备?
  • 请确定您解决了在预升级报告(位于 /var/log/leapp/leapp-report.txt )中发现的所有问题。要达到此目的,您也可以使用 Web 控制台,如 评估可升级性并通过 web 控制台应用自动修复 中所述。

例 9.1. Leapp answerfile

以下是一个未编辑的 /var/log/leapp/answerfile 文件,它有一个未回答的问题:

[check_vdo]
# Title:              None
# Reason:             Confirmation
# ============================= check_vdo.confirm =============================
# Label:              Are all VDO devices, if any, successfully converted to LVM management?
# Description:        Enter True if no VDO devices are present on the system or all VDO devices on the system have been successfully converted to LVM management. Entering True will circumvent check of failures and undetermined devices. Recognized VDO devices that have not been converted to LVM management can still block the upgrade despite the answer.All VDO devices must be converted to LVM management before upgrading.
# Reason:             To maximize safety all block devices on a system that meet the criteria as possible VDO devices are checked to verify that, if VDOs, they have been converted to LVM management. If the devices are not converted and the upgrade proceeds the data on unconverted VDO devices will be inaccessible. In order to perform checking the 'vdo' package must be installed. If the 'vdo' package is not installed and there are any doubts the 'vdo' package should be installed and the upgrade process re-run to check for unconverted VDO devices. If the check of any device fails for any reason an upgrade inhibiting report is generated. This may be problematic if devices are dynamically removed from the system subsequent to having been identified during device discovery. If it is certain that all VDO devices have been successfully converted to LVM management this dialog may be answered in the affirmative which will circumvent block device checking.
# Type:               bool
# Default:            None
# Available choices: True/False
# Unanswered question. Uncomment the following line with your answer
# confirm =

Label 字段指定需要回答的问题。在本例中,问题是 Are all VDO devices, if any, successfully converted to LVM management?

要回答问题,请取消对最后一行的注释并输入回答 TrueFalse。在本例中,所选答案为 True

[check_vdo]
...
# Available choices: True/False
# Unanswered question. Uncomment the following line with your answer
confirm = True

下载阶段

  • 如果在下载 RPM 软件包时出现问题,请检查位于 /var/log/leapp/dnf-debugdata/ 目录的事务调试数据。

    注意

    如果没有生成事务调试数据,/var/log/leapp/dnf-debugdata/ 目录为空,则不存在。当所需的软件仓库不可用时,会出现这种情况。

initramfs 阶段

  • 在此阶段,潜在的故障会进入 Dracut shell。检查 Journal 日志:

    # journalctl

    或者,使用 reboot 命令从 Dracut shell 重启系统,并检查 /var/log/leapp/leapp-upgrade.log 文件。

升级后阶段

  • 如果您的系统看起来已成功升级,但使用旧的 RHEL 9 内核引导,请重启系统并检查 GRUB 中默认条目的内核版本。
  • 确保您已遵循了 验证升级后状态 中建议的步骤。
  • 如果您的应用程序或服务在将 SELinux 切换到 enforcing 模式后停止工作或行为不正确,请使用 ausearchjournalctldmesg 工具搜索拒绝:

    # ausearch -m AVC,USER_AVC -ts boot
    # journalctl -t setroubleshoot
    # dmesg | grep -i -e selinux -e type=1400

    最常见的问题是由错误的标记造成的。如需了解更多详细信息,请参阅 故障排除与 SELinux 有关的问题

9.3. RHEL 9.7 升级到 RHEL 10.1 的已知问题

从 RHEL 9.7 升级到 RHEL 10.1 时,您可能会遇到各种已知问题。

  • 如果您的 RHEL 9 系统使用红帽提供的、但在 RHEL 10 中未提供的设备驱动程序,Leapp 会阻止升级。但是,如果 RHEL 9 系统使用 Leapp/etc/leapp/files/device_driver_deprecation_data.json 文件中没有数据的第三方设备驱动程序,Leapp 不会检测到这样的驱动程序,并继续执行升级。然后,该系统可能会在升级后无法引导。
  • 如果不是红帽签名的第三方软件包的名称与红帽提供的软件包名称相同,则原位升级会失败。要临时解决这个问题,请在升级前选择以下选项之一:

    1. 删除第三方软件包
    2. 使用红帽提供的软件包替换第三方软件包
  • 在带有独立磁盘的软件冗余阵列(RAID)的系统上,原位升级可能会失败。(BZ#1957192)
  • 在原位升级过程中,Leapp 工具通常会在 RHEL 9 和 RHEL 10 之间保留网络接口控制器(NIC)名称。但是,在某些系统上,如带有网络绑定的系统,可能需要在 RHEL 9 和 RHEL 10 之间更新 NIC 名称。在这些系统上,执行以下步骤:

    1. 设置 LEAPP_NO_NETWORK_RENAMING=1 环境变量,以防止 Leapp 程序错误地保留原始 RHEL 9 NIC 名称。
    2. 执行原位升级。
    3. 验证您的网络是否正常工作。如果需要,请手动更新网络配置。

      (BZ#1919382)

  • 如果 /etc/fstab 文件中定义的任何挂载的文件系统没有设置 shared 传播标志,则升级可能会失败。要防止这个问题,请重新挂载这些文件系统,来将其设置为 shared :

    # mount -o remount --make-shared <mountpoint>

    使用每个文件系统的挂载点替换 mountpoint

    如需更多信息,请参阅红帽知识库解决方案 在 DNF 事务检查过程中,Leapp 报错"Can not load RPM file"。(RHEL-23449)

  • 如果使用 HTTP 代理,您必须将 Red Hat Subscription Manager (RHSM)配置为使用这样的代理,或者您必须使用--proxy < hostname> 选项执行 subscription-manager 命令。否则,subscription-manager 命令的执行会失败。如果您使用 --proxy 选项而不是配置更改,升级过程会因为 Leapp 无法检测到代理而失败。要防止这个问题发生,请手动编辑 rhsm.conf 文件。如需更多信息,请参阅红帽知识库解决方案 如何为红帽订阅管理配置 HTTP 代理。(BZ#1689294)
  • 对于需要代理访问 RHEL 9 内容的系统,您通常需要在 /etc/dnf/dnf.conf 配置文件中通过 DNF 配置代理的使用。如果当前的 DNF 配置与目标系统上的 DNF 版本不兼容,请在 /etc/leapp/files/dnf.conf 配置文件中指定有效的目标配置。如需更多信息,请参阅红帽知识库解决方案 Leapp 如何使用代理?
  • 如果其被配置为对 root 证书使用已弃用的 /etc/ssl/certs/ca-certificates.crt 文件,则升级后 kerberos 客户端可能会出现故障。要修复配置,请改为使用 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem 文件。(RHEL-65265)
  • 在 IBM Z 机器上,如果系统在多路径 LVM SCSI LUN 上,则升级可能会失败。(RHEL-76159)
  • 如果您使用带有 ISO 镜像的 Red Hat Update Infrastructure (RHUI)升级,升级可能会失败。您可以通过不将 --iso 选项与升级一起使用来临时解决这个问题,或者查看红帽知识库解决方案 使用 ISO 离线 Leapp 升级失败并显示 'Failed to synchronize cache for repo 'rhul-microsoft-azure-rhel8', ignoring this repo。(RHEL-3296)
  • 如果您使用 Red Hat Update Infrastructure (RHUI)升级,/usr/share/leapp-repository/repositories/system_upgrade/common/files/rhui/ 目录中的文件会错误地报告为预升级报告中的自定义文件。除非手动修改这些文件,否则您可以忽略报告中有关这些文件的警告,原位升级将不会受到影响。(RHEL-40115)
  • 当使用 Red Hat Upgrade Infrastructure (RHUI)升级系统时,如果系统的 RHUI 设置与 Leapp 程序预期的 RHUI 系统实施的默认值不同,则升级可能会失败。要解决这个问题,请配置升级过程以针对您的 RHUI 设置进行调整。如需更多信息,请参阅使用 RHUI 配置原位升级

9.4. RHEL 9.6 到 RHEL 10.0 升级的已知问题

从 RHEL 9.6 升级到 RHEL 10.1 时,您可能会遇到各种已知问题。

  • 如果您的 RHEL 9 系统使用红帽提供的、但在 RHEL 10 中未提供的设备驱动程序,Leapp 会阻止升级。但是,如果 RHEL 9 系统使用 Leapp/etc/leapp/files/device_driver_deprecation_data.json 文件中没有数据的第三方设备驱动程序,Leapp 不会检测到这样的驱动程序,并继续执行升级。然后,该系统可能会在升级后无法引导。
  • 如果不是红帽签名的第三方软件包的名称与红帽提供的软件包名称相同,则原位升级会失败。要临时解决这个问题,请在升级前选择以下选项之一:

    1. 删除第三方软件包
    2. 使用红帽提供的软件包替换第三方软件包
  • 在带有独立磁盘的软件冗余阵列(RAID)的系统上,原位升级可能会失败。(BZ#1957192)
  • 在原位升级过程中,Leapp 工具通常会在 RHEL 9 和 RHEL 10 之间保留网络接口控制器(NIC)名称。但是,在某些系统上,如带有网络绑定的系统,可能需要在 RHEL 9 和 RHEL 10 之间更新 NIC 名称。在这些系统上,执行以下步骤:

    1. 设置 LEAPP_NO_NETWORK_RENAMING=1 环境变量,以防止 Leapp 程序错误地保留原始 RHEL 9 NIC 名称。
    2. 执行原位升级。
    3. 验证您的网络是否正常工作。如果需要,请手动更新网络配置。

      (BZ#1919382)

  • 如果 /etc/fstab 文件中定义的任何挂载的文件系统没有设置 shared 传播标志,则升级可能会失败。要防止这个问题,请重新挂载这些文件系统,来将其设置为 shared :

    # mount -o remount --make-shared <mountpoint>

    使用每个文件系统的挂载点替换 mountpoint

    如需更多信息,请参阅红帽知识库解决方案 在 DNF 事务检查过程中,Leapp 报错"Can not load RPM file"。(RHEL-23449)

  • 如果您使用 HTTP 代理,则必须将 Red Hat Subscription Manager 配置为使用代理服务器,或在执行 subscription-manager 命令时使用 --proxy <hostname> 选项 。否则,subscription-manager 命令的执行会失败。如果您使用 --proxy 选项而不是配置更改,升级过程会因为 Leapp 无法检测到代理而失败。要防止这个问题发生,请手动编辑 rhsm.conf 文件。如需更多信息,请参阅红帽知识库解决方案 如何为红帽订阅管理配置 HTTP 代理。(BZ#1689294)
  • 对于需要代理访问 RHEL 9 内容的系统,您通常需要在 /etc/dnf/dnf.conf 配置文件中通过 DNF 配置代理的使用。如果当前的 DNF 配置与目标系统上的 DNF 版本不兼容,请在 /etc/leapp/files/dnf.conf 配置文件中指定有效的目标配置。如需更多信息,请参阅红帽知识库解决方案 Leapp 如何使用代理?
  • 如果其被配置为对 root 证书使用已弃用的 /etc/ssl/certs/ca-certificates.crt 文件,则升级后 kerberos 客户端可能会出现故障。要修复配置,请改为使用 /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem 文件。(RHEL-65265)
  • 在 IBM Z 机器上,如果系统在多路径 LVM SCSI LUN 上,则升级可能会失败。(RHEL-76159)
  • 如果 dracut 配置为包含已弃用的 network-legacy 模块,则升级后系统不会引导。这个问题通常在已原位升级到 RHEL 9 的系统中发生。要防止这个问题,请执行以下操作:

    1. dracut 配置中删除 network-legacy 模块。
    2. 重建现有的 initramfs 镜像。
    3. 在开始升级前重启系统。

      如需更多信息,请参阅 升级到 RHEL 10.0 知识库解决方案后 leapp 升级无法引导

      (RHEL-102591)

9.5. 获取支持

要开一个支持问题单,请选择 RHEL 9 作为产品,并提供您系统的 sosreport

  • 要在您的系统中生成 sosreport,请运行:
# sosreport

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

有关生成 sosreport 的更多信息,请参阅红帽知识库解决方案 什么是 sosreport 以及如何在 Red Hat Enterprise Linux 上创建它?

有关在客户门户网站上开和管理支持问题单的更多信息,请参阅红帽知识库解决方案、如何在客户门户网站上开和管理支持问题单?

附录 A. RHEL 9 软件仓库

如果您的系统使用 Red Hat Subscription Manager(RHSM)注册到 Red Hat Content Delivery Network(CDN),则 RHEL 9 软件仓库会在原位升级过程中自动启用。但是,在使用 RHSM 注册到 Red Hat Satellite 的系统上,在运行预升级报告之前,您必须手动启用并同步 RHEL 9 和 RHEL 10 存储库。

注意

确保启用每个存储库的源操作系统版本,如 9.6。如果您只启用了 RHEL 9 版本,则禁止原位升级。

如果您计划在升级过程中使用 Red Hat Satellite,您必须在升级之前使用 Satellite Web UI 或 hammer repository-set enablehammer product synchronize 命令来启用并同步至少以下 RHEL 9 存储库:

Expand
表 A.1. RHEL 9 存储库
架构存储库存储库 ID存储名称发行版本

64 位 Intel 和 AMD

BaseOS

rhel-9-for-x86_64-baseos-rpms

Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)

x86_64 <source_os_version>

AppStream

rhel-9-for-x86_64-appstream-rpms

Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)

x86_64 <source_os_version>

64-bit ARM

BaseOS

rhel-9-for-aarch64-baseos-rpms

Red Hat Enterprise Linux 9 for ARM 64 - BaseOS (RPMs)

aarch64 <source_os_version>

AppStream

rhel-9-for-aarch64-appstream-rpms

Red Hat Enterprise Linux 9 for ARM 64 - AppStream (RPMs)

aarch64 <source_os_version>

IBM Power (little endian)

BaseOS

rhel-9-for-ppc64le-baseos-rpms

Red Hat Enterprise Linux 9 for Power, little endian - BaseOS (RPMs)

ppc64le <source_os_version>

AppStream

rhel-9-for-ppc64le-appstream-rpms

Red Hat Enterprise Linux 9 for Power, little endian - AppStream (RPMs)

ppc64le <source_os_version>

IBM Z

BaseOS

rhel-9-for-s390x-baseos-rpms

Red Hat Enterprise Linux 9 for IBM z Systems - BaseOS (RPMs)

s390x <source_os_version>

AppStream

rhel-9-for-s390x-appstream-rpms

Red Hat Enterprise Linux 9 for IBM z Systems - AppStream (RPMs)

s390x <source_os_version>

<source_os_version> 替换为源操作系统版本,如 9.6

附录 B. RHEL 10 存储库

如果您的系统已使用 Red Hat Subscription Manager (RHSM)注册到 Red Hat Content Delivery Network (CDN),则 RHEL 10 存储库会在原位升级过程中自动启用。但是,在使用 RHSM 注册到 Red Hat Satellite 的系统上,您必须在运行预升级报告之前手动启用并同步 RHEL 9 和 RHEL 10 存储库。

注意

确保启用每个存储库的目标操作系统版本,如 10.0。如果您只启用了存储库的 RHEL 10 版本,则原位升级会被禁止。

如果您计划在升级过程中使用 Red Hat Satellite,则您必须在升级之前使用 Satellite Web UI 或 hammer repository-set enablehammer product synchronize 命令来启用并同步以下 RHEL 10 存储库,:

Expand
表 B.1. RHEL 10 存储库
架构存储库存储库 ID存储名称发行版本

64 位 Intel 和 AMD

BaseOS

rhel-10-for-x86_64-baseos-rpms

Red Hat Enterprise Linux 10 for x86_64 - BaseOS (RPMs)

x86_64 <target_os_version>

AppStream

rhel-10-for-x86_64-appstream-rpms

Red Hat Enterprise Linux 10 for x86_64 - AppStream (RPMs)

x86_64 <target_os_version>

64-bit ARM

BaseOS

rhel-10-for-aarch64-baseos-rpms

Red Hat Enterprise Linux 10 for ARM 64 - BaseOS (RPMs)

aarch64 <target_os_version>

AppStream

rhel-10-for-aarch64-appstream-rpms

Red Hat Enterprise Linux 10 for ARM 64 - AppStream (RPMs)

aarch64 <target_os_version>

IBM Power (little endian)

BaseOS

rhel-10-for-ppc64le-baseos-rpms

Red Hat Enterprise Linux 10 for Power, little endian - BaseOS (RPMs)

ppc64le <target_os_version>

AppStream

rhel-10-for-ppc64le-appstream-rpms

Red Hat Enterprise Linux 10 for Power, little endian - AppStream (RPMs)

ppc64le <target_os_version>

IBM Z

BaseOS

rhel-10-for-s390x-baseos-rpms

Red Hat Enterprise Linux 10 for IBM z Systems - BaseOS (RPMs)

s390x <target_os_version>

AppStream

rhel-10-for-s390x-appstream-rpms

Red Hat Enterprise Linux 10 for IBM z Systems - AppStream (RPMs)

s390x <target_os_version>

<target_os_version> 替换为目标操作系统版本,如 10.0

法律通告

Copyright © 2026 | You need to change the HOLDER entity in the en-US/Upgrading_from_RHEL_9_to_RHEL_10.ent file |.
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.
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部