从 RHEL 8 升级至 RHEL 9
把 Red Hat Enterprise Linux 8 原位(in-place)升级到 Red Hat Enterprise Linux 9
摘要
对红帽文档提供反馈 复制链接链接已复制到粘贴板!
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 在顶部导航栏中点 Create
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 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 8 操作系统替换为 RHEL 9 版本。
无法执行从 RHEL 7 直接升级到 RHEL 9 的原位升级。但是,您可以执行从 RHEL 7 原位升级到 RHEL 8,然后再执行到 RHEL 9 的第二个原位升级。如需更多信息,请参阅 使用 Leapp 对多个 RHEL 主版本进行原位升级。
目前,可以执行从以下源 RHEL 8 次版本的原位升级到以下目标 RHEL 9 次版本:
| 系统配置 | 源操作系统版本 | 目标操作系统版本 |
|---|---|---|
| RHEL | RHEL 8.10 | RHEL 9.4 (EUS) |
| RHEL 9.6 | ||
| 带有 SAP HANA 的 RHEL | RHEL 8.10 | RHEL 9.4 (EUS) |
| RHEL 9.6 |
有关支持的升级路径的更多信息,请参阅 支持的 Red Hat Enterprise Linux 的原位升级路径 和 原位升级支持策略。
第 2 章 计划一个到 RHEL 9 的升级 复制链接链接已复制到粘贴板!
在开始从 RHEL 8 升级到 RHEL 9 之前,请查看系统要求、限制和其他注意事项。
2.1. 规划从 RHEL 8 升级到 RHEL 9 复制链接链接已复制到粘贴板!
原位升级(in-place upgrade)是把系统升级到下一个主要 RHEL 版本的推荐并支持的方法。
您应该在升级到 RHEL 9 前考虑以下问题:
操作系统 — 在以下情况下使用
Leapp程序升级操作系统:源操作系统版本安装在有以下支持的构架的系统中:
- 64 位 Intel、AMD 和 ARM
- IBM POWER(little endian)
64-bit IBM Z
如需更多信息,请参阅红帽认证硬件。
- 满足 RHEL 9 的最低 硬件要求。
- 您有访问所选源和目标操作系统版本的最新内容的权限。如需更多信息,请参阅 为升级准备 RHEL 8 系统。
应用程序 - 您可以使用
Leapp迁移安装在系统中的应用程序。然而,在某些情况下,您必须创建 custom actors,它用来在升级过程中指定Leapp要执行的操作,例如: 重新配置应用程序或安装特定的硬件驱动程序。如需更多信息,请参阅处理自定义应用程序和第三方应用程序的迁移。请注意,红帽不支持 custom actor。重要SHA-1 算法在 RHEL 9 中已弃用。如果您的系统具有 RSA/SHA-1 签名的任何软件包,则升级会被禁止。在升级前,删除这些软件包或联系具有 RSA/SHA-256 签名的软件包的厂商。如需更多信息,请参阅 Red Hat Enterprise Linux 9 中的 SHA-1 弃用。
安全性 - 您应该在升级前评估这个方面,并在升级过程完成后采取其他步骤。请特别考虑以下几点:
- 在升级前,定义您的系统必须遵守的安全标准,并了解 RHEL 9 中的安全更改。
-
在升级过程中,
Leapp会将 SELinux 的模式设置为 permissive。 -
Leapp支持将联邦信息处理标准(FIPS) 140 模式下的 RHEL 8.8 和之后系统的原位升级到启用了 FIPS 模式的 RHEL 9 系统。在完成升级过程中 FIPS 模式 始终处于启用状态。 - 升级完成后,重新评估并重新应用您的安全策略。有关应用和更新安全策略的详情,请参阅应用安全策略。
存储和文件系统
backup - 您应该在升级前备份您的系统。例如,您可以使用 Relax-and-Recover (ReaR)工具、LVM 快照、RAID 拆分 或虚拟机快照。
注意文件系统格式没有改变。因此,文件系统的限制与最初创建的限制相同。
- 如果存储使用了使用 Clevis TPM 2.0 令牌配置的 LUKS2 格式,则可以升级带有加密存储的加密系统。如需更多信息,请参阅使用 TPM 2.0 策略配置 LUKS 加密卷的手动注册。
- 高可用性 - 如果您使用高可用性附加组件,请按照 对 RHEL 高可用性或弹性存储集群应用软件升级的推荐的实践 知识库文章。
- 停机时间 — 升级过程可能会需要几分钟到几小时。
Satellite
- 客户端 - 如果您通过 Satellite 管理主机,您可以使用 Satellite Web UI 同时将多个主机从 RHEL 8 升级到 RHEL 9。如需更多信息,请参阅 将主机升级到下一个主 Red Hat Enterprise Linux 版本。
- 服务器和 Capsule - 从 Satellite 6.16 开始,您可以升级 Satellite 服务器和 Capsule。如需更多信息,请参阅 使用 Leapp 将 Satellite 或 Capsule 原位升级到 RHEL 9。
- SAP HANA - 如果您正在使用 SAP HANA,请按照 将 SAP 环境从 RHEL 8 升级到 RHEL 9 指南操作。请注意,使用 SAP HANA 的 RHEL 的升级路径可能会有所不同。
- RHEL for Real Time - 支持实时系统上的升级。
- 支持实时系统上 Red Hat OpenStack Platform 中Real Time for Network Functions Virtualization 的升级。
公有云
- pay-As-You-Go - 在 Amazon Web Services (AWS)和 Google Cloud Platform (GCP)上使用 Red Hat Update Infrastructure (RHUI) 和 Google Cloud Platform (GCP)支持原位升级。在 Intel 架构上,只有 Microsoft Azure 上的 RHUI 上的 on-demand PAYG 实例也支持升级。
- 使用您自己的 服务 - 在所有使用 RHSM 进行 RHEL 订阅的公有云上支持自带订阅实例。
-
语言 - 无论语言配置如何,所有
Leapp报告、日志和其他生成的文档均为英语。 - 引导装载程序 - 在 RHEL 8 或 RHEL 9 上无法将引导装载程序从 BIOS 切换到 UEFI。如果您的 RHEL 8 系统使用 BIOS,而您希望 RHEL 9 系统使用 UEFI,请执行全新的 RHEL 9 安装,而不是原位升级。如需更多信息,请参阅 是否可以在预安装的 Red Hat Enterprise Linux 机器上将 BIOS 引导切换到 UEFI 引导?
已知的限制 - 目前已知的重要的
Leapp限制包括:- 不支持对使用以太网或 Infiniband 的基于网络的多路径和网络存储的升级。这包括使用 FCoE 的 SAN 以及使用 FC 从 SAN 引导。请注意,支持使用 FC 的 SAN。
- 目前,对使用 Red Hat Update Infrastructure 而不是 RHEL 订阅的 Red Hat Subscription Manager (RHSM)的其余公有云中的按需 PAYG 实例不支持原位升级。
- 安装了任何 Ansible 产品(包括 Ansible Tower)的系统不支持原位升级。有关在 RHEL 9 上使用 RHEL 8 Ansible Tower 安装的更多信息,请参阅红帽知识库解决方案 如何将 Ansible Automation Platform 安装从一个环境迁移到另一个环境?知识库解决方案。
- 升级到 RHEL 9 不支持 Red Hat JBoss Enterprise Application Platform (EAP)。升级后,您必须在系统上手动安装和配置 JBoss EAP。如需更多信息,请参阅红帽知识库解决方案 使用 leapp 工具对 Jboss EAP 和 websphere 服务器以及 Linux 进行原位迁移 。
请参阅 已知问题。
您可以使用 Red Hat Insights 确定您注册到 Insights 的哪些系统位于 RHEL 9 的升级路径中。要做到这一点,进入 Insights 中的相应的顾问建议,在 Actions 下拉菜单下启用建议,并检查受影响的系统标题下的列表。请注意: Advisor 推荐只会考虑 RHEL 8 次要版本,它不会执行系统升级前评估。另请参阅 顾问服务建议概述。
第 3 章 准备升级 复制链接链接已复制到粘贴板!
要防止升级后出现问题,并确保您的系统已准备好升级到 RHEL 的下一个主要版本,请在升级前完成所有必要的准备步骤。
您必须在所有系统上执行 为升级准备 RHEL 8 系统中所描述的准备步骤。此外,在注册到 Satellite 服务器的系统上,您还必须执行 为升级准备一个注册了 Satellite 的系统 中描述的准备步骤。
3.1. 为升级准备 RHEL 8 系统 复制链接链接已复制到粘贴板!
这个流程描述了在使用 Leapp 工具对 RHEL 9 执行原位升级前必需的步骤。
如果您在升级过程中不计划使用 Red Hat Subscription Manager (RHSM),请参阅在没有 Red Hat Subscription Manager 的情况下升级到 RHEL 9。
先决条件
流程
- 可选:查看 使用 Leapp 执行 RHEL 升级的最佳实践和建议知识库文章中的最佳实践。
- 使用 Red Hat Subscription Manager 确保您的系统已被成功注册到 Red Hat Content Delivery Network (CDN)或 Red Hat Satellite。
如果您已将您的系统注册到 Satellite 服务器,请完成 为升级准备一个注册了 Satellite 的系统 中的步骤,以确保您的系统满足升级要求。
重要如果您的系统已注册到 Satellite 服务器,则您必须完成 为升级准备一个注册了 Satellite 的系统 中的步骤,然后才能继续此流程中的步骤,以防止问题发生。
-
可选:卸载升级不需要的非系统操作系统文件系统(例如,仅包含与系统本身不相关的数据文件的文件系统),并从
/etc/fstab文件中注释掉它们。这可减少升级过程所需的时间,并防止与自定义或第三方参与者在升级期间未正确迁移的第三方应用程序相关的潜在问题。 使用 subscription-manager 验证系统是否已订阅:
如果您的系统是使用启用了 Simple Content Access (SCA)的帐户注册的,请验证
Content Access Mode is set to Simple Content Access消息是否出现:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的系统是使用禁用了 SCA 的帐户注册的,请验证是否已附加了 Red Hat Linux Server 订阅,产品名称为
Server,其状态为Subscribed。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
确定启用了适当的存储库。以下命令为 64 位 Intel 架构启用 Base 和 AppStream 软件存储库 ; 对于其他架构,请参阅 RHEL 8 存储库。
subscription-manager repos --enable rhel-8-for-x86_64-baseos-rpms --enable rhel-8-for-x86_64-appstream-rpms
# subscription-manager repos --enable rhel-8-for-x86_64-baseos-rpms --enable rhel-8-for-x86_64-appstream-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意另外,您可以启用 CodeReady Linux Builder (也称为 Optional)或 Supplementary 存储库。有关存储库 ID 的更多信息,请参阅 RHEL 8 存储库。有关这些存储库内容的更多信息,请参阅 软件包清单。
设置系统发行版本:
对于使用 RHSM 订阅的系统,请将系统锁定到源操作系统版本:
subscription-manager release --set 8.10
# subscription-manager release --set 8.10Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您要在公有云上使用 Red Hat Update Infrastructure (RHUI)升级,请手动设置期望的系统发行版本:
rhui-set-release --set 8.10
# rhui-set-release --set 8.10Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要如果系统上没有提供
rhui-set-release命令,您可以通过更新/etc/dnf/vars/release文件来设置期望的系统发行版本:echo "8.10" > /etc/dnf/vars/releasever
# echo "8.10" > /etc/dnf/vars/releaseverCopy to Clipboard Copied! Toggle word wrap Toggle overflow
- 可选:要使用自定义存储库,请参阅 配置自定义存储库 知识库文章。
如果您使用
dnf versionlock插件将软件包锁定为特定版本,请运行以下命令清除锁:dnf versionlock clear
# dnf versionlock clearCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅红帽知识库解决方案 如何限制 dnf 来将软件包安装或升级到一个固定的特定软件包版本?
如果您执行从 RHEL 7 原位升级到 RHEL 8,请确保在开始安装
leapp-upgrade软件包前没有与升级相关的文件:rm -rf /usr/share/leapp-repository/repositories
# rm -rf /usr/share/leapp-repository/repositoriesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您要在公有云上使用 Red Hat Update Infrastructure (RHUI)升级,请启用所需的 RHUI 存储库,并安装所需的 RHUI 软件包,以确保您的系统已准备好升级:
对于 AWS:
dnf config-manager --set-enabled rhui-client-config-server-8 dnf -y install leapp-rhui-aws
# dnf config-manager --set-enabled rhui-client-config-server-8 # dnf -y install leapp-rhui-awsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 Microsoft Azure:
dnf config-manager --set-enabled rhui-microsoft-azure-rhel8 dnf -y install rhui-azure-rhel8 leapp-rhui-azure
# dnf config-manager --set-enabled rhui-microsoft-azure-rhel8 # dnf -y install rhui-azure-rhel8 leapp-rhui-azureCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 对于 Google Cloud Platform,请遵循 Google Cloud Platform (GCP) 知识库文章。
安装
Leapp:dnf install leapp-upgrade
# dnf install leapp-upgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,您需要最新的
leapp和软件包,即leapp-repositoryleapp软件包和leapp-repository 软件包的版本0.22.0的 leapp 版本0.19.0。注意leapp-repository软件包包含leapp-upgrade-el8toel9RPM 软件包。注意如果您的系统无法访问互联网,请从红帽客户门户网站下载以下软件包 :
-
leapp -
leapp-deps -
python3-leapp -
leapp-upgrade-el8toel9 -
leapp-upgrade-el8toel9-deps
-
将所有软件包更新到最新的 RHEL 8 版本,并重启:
dnf update reboot
# dnf update # rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
leapp-upgrade-el8toel9软件包的最新版本包含所有所需的数据文件。如果您使用旧版本替换了这些数据文件,请删除/etc/leapp/files目录中的所有 JSON 文件,并重新安装leapp-upgrade-el8toel9软件包,以确保您的数据文件是最新的。 -
可选:查看、修复并删除
rpmnew和rpmsave文件。如需更多信息,请参阅 什么是 rpmnew 和 rpmsave 文件? - 临时禁用防病毒软件以防止升级失败。
确保任何配置管理系统都不会干扰原位升级过程:
-
如果您使用客户端-服务器架构的配置管理系统(如 Puppet、Salt 或 Chef ),请在运行
leapp preupgrade命令前禁用系统。在升级完成前,请不要启用配置管理系统,以防止升级过程中出现问题。 如果您使用无代理架构的配置管理系统(如 Ansible ),在原位升级过程中不要执行配置和部署文件(如 Ansible playbook),如 执行升级 中所述。
红帽不支持使用配置管理系统进行预升级和升级过程的自动化。如需更多信息,请参阅 使用配置管理系统在 Red Hat Enterprise Linux 上自动化部分 Leapp 预升级和升级过程。
-
如果您使用客户端-服务器架构的配置管理系统(如 Puppet、Salt 或 Chef ),请在运行
- 如果在 RHEL 7 或更早版本中创建您的 NSS 数据库,请验证数据库已从 DBM 数据库格式转换为 SQLite。如需更多信息,请参阅将 NSS 数据库从 DBM 更新到 SQLite。
-
RHEL 9 不支持旧的
network-scripts软件包,该软件包在 RHEL 8 中已弃用。在升级前,移动自定义网络脚本,并编写执行现有自定义脚本的 NetworkManager 分配程序脚本。如需更多信息,请参阅红帽知识库解决方案 将自定义网络脚本迁移到 NetworkManager 分配程序脚本。 -
如果您要使用 ISO 镜像进行升级,请验证 ISO 镜像是否包含目标操作系统版本,如 RHEL 9.4,并保存到持久本地挂载点,以确保
Leapp工具可以在升级过程中访问镜像。 确定您有一个完整的系统备份或虚拟机快照。请确定您可以按照您的环境中的标准灾难恢复步骤,把系统恢复到升级前的状态。您可以使用以下备份选项:
- 使用 Relax-and-Recover (ReaR)工具创建一个系统的完整备份。如需更多信息,请参阅 ReaR 文档 和红帽知识库解决方案 什么是 Relax 和 Recover (ReaR),以及如何使用它进行灾难恢复?
使用 LVM 快照 或 RAID 拆分 来创建系统的快照。如果升级虚拟机,您可以创建整个虚拟机的快照。您还可以使用 Boom 工具管理快照和回滚引导条目。如需更多信息,请参阅红帽知识库解决方案 什么是 BOOM 以及如何安装它? 以及如何使用 快照指南管理系统升级。
注意因为 LVM 快照不创建系统的完整备份,所以您可能无法在某些升级失败后恢复您的系统。因此,使用 ReaR 工具创建一个完整备份是安全的。
3.2. 为升级准备注册了 Satellite 的系统 复制链接链接已复制到粘贴板!
此流程描述了为升级到 RHEL 9 准备已注册到 Satellite 的系统所需的步骤。在 Satellite Server 上执行几个步骤。
Satellite 系统上的用户必须完成此流程和 为升级准备 RHEL 8 系统 中所描述的步骤。
先决条件
- 您有对 Satellite 服务器的管理特权。
流程
- 验证 Satellite 是否是完全支持或维护支持的版本。如需更多信息,请参阅 Red Hat Satellite 产品生命周期。
- 将带有 RHEL 9 存储库的订阅清单导入到 Satellite 服务器。如需更多信息,请参阅特定 Red Hat Satellite 版本(例如 6.17) 的管理内容指南中的管理红帽订阅章节。
启用并将 Satellite 服务器上所有所需的 RHEL 8 和 RHEL 9 存储库与源和目标操作系统版本的最新更新同步。所需的存储库必须在内容视图中提供,并在关联的激活码中启用。
注意对于 RHEL 9 存储库,启用每个存储库的目标 OS 版本,如 RHEL 9.4。如果您只启用存储库的 RHEL 9 版本,则会禁止原位升级。
例如,对于没有延长更新支持(EUS)订阅的 Intel 构架,至少启用以下软件仓库:
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-appstream-rpms
x86_64 <source_os_version>
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
rhel-8-for-x86_64-baseos-rpms
x86_64 <source_os_version>
Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs)
rhel-9-for-x86_64-appstream-rpms
x86_64 <target_os_version>
Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs)
rhel-9-for-x86_64-baseos-rpms
x86_64 <target_os_version>
将 <source_os_version> 和 <target_os_version> 分别替换为源 OS 版本和目标 OS 版本,如 8.10 和 9.4。
有关其他架构,请参阅 RHEL 8 软件仓库和 RHEL 9 软件仓库。
如需更多信息,请参阅特定 Red Hat Satellite 版本(例如 6.17) 的管理 内容指南中的 导入内容章节。
将内容主机附加到包含所需的 RHEL 8 和 RHEL 9 软件仓库的内容视图。
如需更多信息,请参阅特定 Red Hat Satellite 版本(例如 6.17) 的管理 内容指南中的管理 内容视图 一章。
验证
验证是否 Satellite 服务器上正确的 RHEL 8 和 RHEL 9 存储库已添加到正确的内容视图中。
- 在 Satellite Web UI 中,进入到 Content > Lifecycle > Content Views,点 Content View 的名称。
单击 Repositories 选项卡,验证存储库是否如预期显示。
注意您还可以使用以下命令验证仓库是否已添加到内容视图中:
hammer repository list --search 'content_label ~ rhel-8' --content-view <content_view_name> --organization <organization> --lifecycle-environment <lifecycle_environment> 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-8' --content-view <content_view_name> --organization <organization> --lifecycle-environment <lifecycle_environment> # hammer repository list --search 'content_label ~ rhel-9' --content-view <content_view_name> --organization <organization> --lifecycle-environment <lifecycle_environment>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 <content_view_name> 替换为 Content View 的名称,将 <organization> 替换为机构,将 <lifecycle_environement> 替换为生命周期环境的名称。
验证与内容视图关联的激活码中是否已启用了正确的 RHEL 9 存储库:
- 在 Satellite Web UI 中,进入到 Content > Lifecycle > Activation Keys ,并点激活码的名称。
-
单击 Repository Sets 选项卡,再验证所需存储库的状态是否为
Enabled。
.验证主机上是否启用了所有期望的 RHEL 8 存储库。例如:
subscription-manager repos --list-enabled | grep "^Repo ID"
# subscription-manager repos --list-enabled | grep "^Repo ID" Repo ID: rhel-8-for-x86_64-baseos-rpms Repo ID: rhel-8-for-x86_64-appstream-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第 4 章 查看升级前报告 复制链接链接已复制到粘贴板!
要评估系统的可升级性,请使用 leapp preupgrade 命令启动预升级过程。在这个阶段,Leapp 工具会收集有关系统的数据,评估可升级性,并生成一个预升级报告。预升级报告总结了潜在的问题,并推荐建议的解决方案。报告还帮助您决定升级是否可行。
预升级评估不会修改系统配置,但它会消耗 /var/lib/leapp 目录下不可忽略的空间。在大多数情况下,预升级评估需要最多 4 GB 空间,但实际大小取决于您的系统配置。如果托管的文件系统中没有足够的空间,则预升级报告可能无法显示分析的完整结果。要防止问题,请确定您的系统在 /var/lib/leapp 目录中有足够的空间,或者将目录移到专用的分区,以便空间消耗不会影响系统的其他部分。
始终查看整个预升级报告,即使报告没有发现升级的阻碍因素。预升级报告包含升级前要完成的建议操作,以确保升级的系统正常工作。
如果要执行 RHEL 9 系统的全新安装,而不是原位升级过程,查看预升级报告也很有用。
您可以使用以下方法之一评估预升级阶段的可升级性:
-
查看生成的
leapp-report.txt文件中的预升级报告,并使用命令行手动解决报告的问题。 - 使用 Web 控制台查看报告,在可用的情况下应用自动修复,并使用推荐的修复提示修复剩余的问题。
您可以使用自己的自定义脚本处理预升级报告,例如,从不同环境的多个报告中比较结果。如需更多信息,请参阅自动 Red Hat Enterprise Linux 预升级报告工作流。
预升级报告无法模拟整个原位升级过程,因此无法识别系统中的所有阻碍问题。因此,即使您已检查并修复了报告中的所有问题,原位升级可能仍然被终止。例如,预升级报告无法检测与有问题的软件包下载相关的问题。
4.1. 从命令行评估 RHEL 8 到 RHEL 9 的可升级性 复制链接链接已复制到粘贴板!
使用命令行在升级前识别预升级阶段的潜在升级问题。
先决条件
- 准备升级中列出的步骤已完成。
您使用未受限的 SELinux 角色登录到 root。如果使用
sudo,在运行每个 leapp 命令时必须使用-r unconfined_r -t unconfined_t选项,例如:sudo -r unconfined_r -t unconfined_t leapp preupgrade
$ sudo -r unconfined_r -t unconfined_t leapp preupgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
在 RHEL 8 系统中,执行预升级阶段:
leapp preupgrade --target <_target_os_version_>
# leapp preupgrade --target <_target_os_version_>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 target_os_version 替换为目标操作系统版本,如
9.6。如果没有定义目标操作系统版本,Leapp将使用在 支持的升级路径 中的表 1.1 中指定的默认目标操作系统版本。如果您使用
/etc/yum.repos.d/目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
# leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您要在 没有 RHSM 的情况下升级 或使用RHUI 升级,请添加
--no-rhsm选项。 -
如果您有一个 扩展升级支持(EUS)、高级更新支持(AUS) 或 SAP 解决方案的更新服务(E4S)(红帽知识库)订阅,请添加
--channel <channel>选项。将 <channel> 替换为渠道名称,如eus、aus或e4s。请注意,SAP HANA 客户必须使用 将 SAP 环境从 RHEL 8 升级到 RHEL 9 指南来执行原位升级。 如果您在 Red Hat OpenStack Platform 中使用 RHEL for Real Time 或 Real Time for Network Functions Virtualization (NFV),请使用
--enablerepo选项启用部署。例如:leapp preupgrade --enablerepo rhel-9-for-x86_64-rt-rpms
# leapp preupgrade --enablerepo rhel-9-for-x86_64-rt-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 配置实时计算。
检查
/var/log/leapp/leapp-report.txt文件中的报告,并手动解决所有报告的问题。有些报告的问题包含补救建议。阻碍 问题会阻止您升级,直到解决了它们为止。报告包含以下风险因素级别:
- High
- 很有可能造成严重的系统状态。
- Medium
- 可能会影响系统和应用程序。
- Low
- 不应影响系统,但可能会对应用程序有影响。
- info
- 信息性,对系统或应用程序没有预期的影响。
在某些系统配置中,
Leapp工具会生成您必须手动回答的 true 或 false 问题。如果预升级报告包含 Missing required answers in the answer file 消息,请完成以下步骤:-
打开
/var/log/leapp/answerfile文件,查看 true 或 false 问题。 手动编辑
/var/log/leapp/answerfile文件,通过删除#符号取消对文件的确认行的注释,并确认您的回答为True或False。如需更多信息,请参阅 Leapp answerfile。注意或者,您可以通过运行以下命令回答 true 或 false 问题:
leapp answer --section <question_section>.<field_name>=<answer>
# leapp answer --section <question_section>.<field_name>=<answer>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,要对问题 Are all VDO devices, if any, successfully converted to LVM management? 确认一个
True的响应,请执行以下命令:leapp answer --section check_vdo.confirm=True
# leapp answer --section check_vdo.confirm=TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
打开
- 重复前面的步骤,重新运行预升级报告,以验证您已解决了所有关键问题。
4.2. 评估 RHEL 8 到 RHEL 9 的可升级性,并通过 web 控制台应用自动化补救方法 复制链接链接已复制到粘贴板!
在升级前识别预升级阶段中的潜在问题,并使用 Web 控制台应用自动化补救。
先决条件
- 您已完成了 准备升级 中列出的步骤。
您使用未受限的 SELinux 角色登录到 root。如果使用
sudo,在运行每个 leapp 命令时必须使用-r unconfined_r -t unconfined_t选项,例如:sudo -r unconfined_r -t unconfined_t leapp preupgrade
$ sudo -r unconfined_r -t unconfined_t leapp preupgradeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
流程
安装
cockpit-leapp插件:dnf install cockpit-leapp
# dnf install cockpit-leappCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
以
root或有使用sudo权限进入管理命令的用户身份登录到 Web 控制台。如需有关 Web 控制台的更多信息,请参阅使用 RHEL 8 Web 控制台管理系统 。 在 RHEL 8 系统中,从命令行或 web 控制台终端执行预升级:
leapp preupgrade --target <target_os_version>
# leapp preupgrade --target <target_os_version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 target_os_version 替换为目标操作系统版本,如
9.6。如果没有定义目标操作系统版本,Leapp将使用在 支持的升级路径 中的表 1.1 中指定的默认目标操作系统版本。如果您使用
/etc/yum.repos.d/目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
# leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您要在 没有 RHSM 的情况下升级 或使用RHUI 升级,请添加
--no-rhsm选项。 -
如果您有 扩展升级支持(EUS)、高级更新支持(AUS)或 SAP 解决方案(E4S)的更新服务 订阅,请添加
--channel <channel>选项。将 <channel> 替换为渠道名称,如eus、aus或e4s。请注意,SAP HANA 客户应该使用 将 SAP 环境从 RHEL 8 升级到 RHEL 9 指南来执行原位升级。 如果您在 Red Hat OpenStack Platform 中使用 RHEL for Real Time 或 Real Time for Network Functions Virtualization (NFV),请使用
--enablerepo选项启用部署。例如:leapp preupgrade --enablerepo rhel-9-for-x86_64-rt-rpms
# leapp preupgrade --enablerepo rhel-9-for-x86_64-rt-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 配置实时计算。
在 web 控制台中,从导航菜单中选择 Upgrade Report,以查看所有报告的问题。阻碍 问题会阻止您升级,直到解决了它们为止。要查看问题的详情,请选择行以打开 Details 窗格。
图 4.1. Web 控制台中的原位升级报告
报告包含以下风险因素级别:
- High
- 很有可能造成严重的系统状态。
- Medium
- 可能会影响系统和应用程序。
- Low
- 不应影响系统,但可能会对应用程序有影响。
- info
- 信息性,对系统或应用程序没有预期的影响。
在某些配置中,
Leapp会生成您必须手动回答的 true 或 false 问题。如果升级报告包含 Missing required answers in the answer file 行,请完成以下步骤:- 选择 Missing required answers in the answer file 行,来打开 Details 窗格。默认回答在修复命令的末尾说明。
- 要确认默认回答,请选择 Add to Remediation Plan 以稍后执行补救或 Run Remediation 来立即执行补救。
要改为选择非默认回答,请在终端中执行
leapp answer命令,指定您要响应的问题以及您确认的回答。leapp answer --section <question_section>.<field_name>=<answer>
# leapp answer --section <question_section>.<field_name>=<answer>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,要对问题 Are all VDO devices, if any, successfully converted to LVM management? 确认一个
True的响应,请执行以下命令:leapp answer --section check_vdo.confirm=True
# leapp answer --section check_vdo.confirm=TrueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您还可以手动编辑
/var/log/leapp/answerfile文件,删除#符号以取消对文件确认行的注释,并确认您的回答为True或False。如需更多信息,请参阅 Leapp answerfile 示例。
有些问题有修复命令,您可以运行来自动解决问题。您可以单独运行补救命令,或者在补救命令中一起运行补救命令。
- 要运行单个补救命令,请打开问题的 Detail 窗格,并点 Run Remediation。
要在修复计划中添加修复命令,请打开问题的 Details 窗格,并点 Add to Remediation Plan。
图 4.2. 详细信息面板
- 要运行包含所有添加的补救命令的补救计划,请点击报告右上角的 Remediation plan 链接。点 Execute Remediation Plan 执行所有列出的命令。
- 检查报告并解决所有报告的问题后,重复步骤 3-7 重新运行报告,以验证您是否解决了所有关键问题。
第 5 章 执行升级 复制链接链接已复制到粘贴板!
完成准备步骤并审核和解决了预升级报告中发现的问题后,您可以在系统上执行原位升级。
5.1. 执行从 RHEL 8 升级到 RHEL 9 复制链接链接已复制到粘贴板!
此流程列出了使用 Leapp 工具执行升级所需的步骤。
流程
在 RHEL 8 系统中,启动升级过程:
leapp upgrade --target <_target_os_version_>
# leapp upgrade --target <_target_os_version_>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 target_os_version 替换为目标操作系统版本,如
9.6。如果没有定义目标操作系统版本,Leapp将使用在 支持的升级路径 中的表 1.1 中指定的默认目标操作系统版本。如果您使用
/etc/yum.repos.d/目录中的 自定义存储库 进行升级,请启用所选的存储库,如下所示:leapp upgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
# leapp upgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您要 在没有 RHSM 的情况下升级 或使用 RHUI,请添加
--no-rhsm选项。 -
如果您使用 ISO 镜像升级,请添加
--no-rhsm和--iso <file_path>选项。将 <file_path > 替换为保存的 ISO 镜像的文件路径,例如/home/rhel9.iso。 -
如果您有 扩展升级支持(EUS)、高级更新支持(AUS) 或 SAP 解决方案的更新服务 (E4S)(红帽知识库)订阅,请添加
--channel channel选项。使用leapp preupgrade命令使用的值替换 channel,如eus、aus或e4s。请注意,您必须在leapp preupgrade和leapp upgrade命令中对--channel选项使用同样的值。 如果您在 Red Hat OpenStack Platform 中使用 RHEL for Real Time 或 Real Time for Network Functions Virtualization (NFV),请使用
--enablerepo选项启用部署。例如:leapp upgrade --enablerepo rhel-9-for-x86_64-rt-rpms
# leapp upgrade --enablerepo rhel-9-for-x86_64-rt-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 配置实时计算。
在升级过程开始时,
Leapp会执行预升级阶段,如检查预升级报告中所述。-
如果系统是可升级的,
Leapp会下载必要的数据,并为升级准备 RPM 事务。 -
如果您的系统没有达到可靠的条件,
Leapp会终止升级进程,并在/var/log/leapp/leapp-report.txt文件中提供描述这个问题和推荐解决方案的记录。如需更多信息,请参阅故障排除。
-
如果系统是可升级的,
手动重启系统:
reboot
# rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在这个阶段,系统会引导进入基于 RHEL 9 的初始 RAM 磁盘镜像 initramfs。
Leapp升级所有软件包,然后自动重启到 RHEL 9 系统。另外,您可以使用
--reboot选项运行leapp upgrade命令并跳过这个手动步骤。如果发生故障,请调查日志和已知问题,如故障排除中所述。
- 登录到 RHEL 9 系统,并验证其状态,如 验证升级后状态 中所述。
- 执行升级报告及 执行升级后任务 中所描述的所有升级后任务。
第 6 章 验证升级后状态 复制链接链接已复制到粘贴板!
在执行到 RHEL 9 的原位升级后,请验证系统是否处于正确的状态。这样做可让您识别并更正可能会影响您系统的任何关键错误。
6.1. 验证 RHEL 9 系统的升级后状态 复制链接链接已复制到粘贴板!
此流程列出了原位升级到 RHEL 9 后建议执行的验证。
先决条件
- 系统已根据 执行升级 中所描述的步骤进行了升级,并且您可以登录到 RHEL 9。
流程
升级完成后,请确定系统是否处于所需状态,至少:
验证当前操作系统版本是否为 RHEL 9。例如:
cat /etc/redhat-release Red Hat Enterprise Linux release 9.4 (Plow)
# cat /etc/redhat-release Red Hat Enterprise Linux release 9.4 (Plow)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查 OS 内核版本。例如:
uname -r
# uname -r 5.14.0-70.10.1.el9_0.x86_64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,
.el9很重要,且版本不能早于 5.14.0。如果您使用 Red Hat Subscription Manager:
验证是否安装了正确的产品。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 升级后,验证发行版本是否立即设置为预期的目标操作系统版本。例如:
subscription-manager release
# subscription-manager release Release: 9.4Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 例如,验证网络服务是否可操作,试着使用 SSH 连接到服务器。
- 检查应用程序的升级后状态。在某些情况下,您可能需要手动执行迁移和配置更改。例如,要迁移您的数据库,请按照配置和使用数据库服务器的说明进行。
第 7 章 在 RHEL 9 系统上执行升级后任务 复制链接链接已复制到粘贴板!
原位升级后,通过删除不需要的软件包,禁用不兼容的存储库来清理 RHEL 9 系统,并更新救援内核和初始 RAM 磁盘。
7.1. 执行升级后的任务 复制链接链接已复制到粘贴板!
此流程列出了在向 RHEL 9 进行原位升级后推荐执行的主要任务。
先决条件
- 系统已按照 执行升级 中描述的步骤进行了升级
并且您可以登录到 RHEL 9。
- 已按照 验证升级后状态 中描述的步骤验证了原位升级的状态。
流程
执行升级后,完成以下任务:
从
/etc/dnf/dnf.conf配置文件中的 exclude 列表中删除剩余的Leapp软件包,其中包括snactor软件包,这是升级扩展开发的工具。在原位升级过程中,使用Leapp工具安装的Leapp软件包会自动添加到 排除列表中,以防止删除或更新重要的文件。在原位升级后,在从系统中删除Leapp软件包之前,必须将它们从排除列表中删除。-
要从 exclude 列表中手动删除软件包,请编辑
/etc/dnf/dnf.conf配置文件并从 exclude 列表中删除所需的Leapp软件包。 从 exclude 列表中删除所有软件包:
dnf config-manager --save --setopt exclude=''
# dnf config-manager --save --setopt exclude=''Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
要从 exclude 列表中手动删除软件包,请编辑
删除剩余的 RHEL 8 软件包,包括剩余的
Leapp软件包。- 从 RHEL 9 系统中删除旧的内核软件包。有关删除内核软件包的更多信息,请参阅红帽知识库解决方案 从 Red Hat Enterprise Linux 系统中删除旧内核的合适的方法是什么?
找到剩余的 RHEL 8 软件包:
rpm -qa | grep -e '\.el[78]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort
# rpm -qa | grep -e '\.el[78]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sortCopy to Clipboard Copied! Toggle word wrap Toggle overflow 从 RHEL 9 系统中删除剩余的 RHEL 8 软件包。要确保保留 RPM 依赖项,请在执行此操作时使用
DNF。在接受之前检查交易,以确保没有任何软件包被意外删除。例如:
dnf remove $(rpm -qa | grep \.el[78] | grep -vE 'gpg-pubkey|libmodulemd|katello-ca-consumer')
# dnf remove $(rpm -qa | grep \.el[78] | grep -vE 'gpg-pubkey|libmodulemd|katello-ca-consumer')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除剩余的
Leapp依赖软件包:dnf remove leapp-deps-el9 leapp-repository-deps-el9
# dnf remove leapp-deps-el9 leapp-repository-deps-el9Copy to Clipboard Copied! Toggle word wrap Toggle overflow
可选:从系统中删除所有剩余的与升级相关的数据:
rm -rf /var/log/leapp /root/tmp_leapp_py3 /var/lib/leapp
# rm -rf /var/log/leapp /root/tmp_leapp_py3 /var/lib/leappCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要删除这些数据可能会限制红帽调查和故障排除升级后问题的支持能力。
禁用 DNF 存储库,其软件包与 RHEL 9 不兼容。由 RHSM 管理的存储库被自动处理。禁用这些存储库:
dnf config-manager --set-disabled <repository_id>
# dnf config-manager --set-disabled <repository_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用存储库 ID 替换 repository_id。
将旧的救援内核和初始 RAM 磁盘替换为当前的内核和磁盘:
删除现有的救援内核和初始 RAM 磁盘:
rm /boot/vmlinuz-*rescue* /boot/initramfs-*rescue*
# rm /boot/vmlinuz-*rescue* /boot/initramfs-*rescue*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重新安装救援内核和相关的初始 RAM 磁盘:
/usr/lib/kernel/install.d/51-dracut-rescue.install add "$(uname -r)" /boot "/boot/vmlinuz-$(uname -r)"
# /usr/lib/kernel/install.d/51-dracut-rescue.install add "$(uname -r)" /boot "/boot/vmlinuz-$(uname -r)"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您的系统在 IBM Z 构架上,请更新
zipl引导装载程序:zipl
# ziplCopy to Clipboard Copied! Toggle word wrap Toggle overflow
.可选:检查现有的配置文件:
-
检查、修复,然后删除
rpmnew、rpmsave和leappsave文件。请注意,rpmsave和leappsave是等效的,可以用类似的方式处理。如需更多信息,请参阅 什么是 rpmnew 和 rpmsave 文件? -
从
/etc/dnf/modules.d/目录中删除不再有效的 RHEL 8 DNF 模块的配置文件。请注意,当相关的 DNF 模块不存在时,这些文件对系统没有影响。
-
检查、修复,然后删除
- 重新检查并重新应用您的安全策略。特别是,需要将 SELinux 模式改为 enforcing。详情请参阅应用安全策略。
验证
验证之前删除的救援内核和救援初始 RAM 磁盘文件是否已为当前内核创建:
ls /boot/vmlinuz-*rescue* /boot/initramfs-*rescue* lsinitrd /boot/initramfs-*rescue*.img | grep -qm1 "$(uname -r)/kernel/" && echo "OK" || echo "FAIL"
# ls /boot/vmlinuz-*rescue* /boot/initramfs-*rescue* # lsinitrd /boot/initramfs-*rescue*.img | grep -qm1 "$(uname -r)/kernel/" && echo "OK" || echo "FAIL"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证救援引导条目是否指向现有的救援文件。请参阅 grubby 输出:
grubby --info /boot/vmlinuz-*rescue*
# grubby --info /boot/vmlinuz-*rescue*Copy to Clipboard Copied! Toggle word wrap Toggle overflow 查看 grubby 输出,并验证没有配置 RHEL 8 引导条目:
grubby --info ALL
# grubby --info ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证 /boot/loader/entries 文件中没有与之前的 RHEL 相关的文件:
grep -r ".el8" "/boot/loader/entries/" || echo "Everything seems ok."
# grep -r ".el8" "/boot/loader/entries/" || echo "Everything seems ok."Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 8 章 应用安全策略 复制链接链接已复制到粘贴板!
在原位升级过程中,SELinux 策略必须切换到 permissive 模式。另外,安全配置集可能包含主要版本之间的更改。要恢复系统安全性,请再次将 SELinux 切换到 enforcing 模式,并验证系统范围的加密策略。您可能还希望修复系统,使其符合特定的安全配置文件。另外,一些与安全相关的组件需要正确升级的预更新步骤。
8.1. 将 SELinux 模式改为 enforcing 复制链接链接已复制到粘贴板!
在原位升级过程中,Leapp 会将 SELinux 的模式设置为 permissive。当成功升级系统时,您必须手动将 SELinux 模式改为 enforcing。
先决条件
- 系统已升级,且您已执行了 验证升级后状态 中描述的验证。
流程
确保没有 SELinux denials,例如,使用
ausearch工具程序:ausearch -m AVC,USER_AVC -ts boot
# ausearch -m AVC,USER_AVC -ts bootCopy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,上一步只涵盖最常见的情况。要检查所有可能的 SELinux denials,请查看使用 SELinux 中的 识别 SELinux denials 部分。
在您选择的文本编辑器中打开
/etc/selinux/config文件,例如:vi /etc/selinux/config
# vi /etc/selinux/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
SELINUX=enforcing选项:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 保存更改,重启系统:
reboot
# rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
系统重启后,确认
getenforce命令返回Enforcing:getenforce
$ getenforce EnforcingCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. 系统范围的加密策略 复制链接链接已复制到粘贴板!
系统范围的加密策略是一个系统组件,它配置核心加密子系统,包括 TLS、IPSec、SSH、DNSSec 和 Kerberos 协议。
原位升级过程会保留您在 RHEL 8 中使用的加密策略。例如,如果您在 RHEL 8 中使用 DEFAULT 加密策略,您的系统升级到 RHEL 9 也可以使用 DEFAULT。请注意,预定义的策略中的特定设置有所不同,RHEL 9 加密策略包含更为严格且更安全的默认值。例如,RHEL 9 DEFAULT 加密策略限制 SHA-1 使用签名,而 LEGACY 策略不再允许 DH 和 RSA 密码小于 2048 位。如需更多信息,请参阅 安全强化 文档中的 使用系统范围的加密策略 部分。自定义加密策略会在原位升级过程中保留。
要查看或更改当前系统范围的加密策略,请使用 update-crypto-policies 工具:
update-crypto-policies --show
$ update-crypto-policies --show
DEFAULT
例如,以下命令可将系统范围内的加密策略切换到 FUTURE,这样可防止任何近期可能出现的安全攻击:
update-crypto-policies --set FUTURE
# update-crypto-policies --set FUTURE
Setting system policy to FUTURE
如果您需要使用 SHA-1 来验证现有或第三方加密签名,您可以输入以下命令启用它:
update-crypto-policies --set DEFAULT:SHA1
# update-crypto-policies --set DEFAULT:SHA1
或者,您可以将系统范围的加密策略切换到 LEGACY 策略。但是,LEGACY 还支持许多不安全的其他算法。
启用 SHA 子策略会使您的系统比默认的 RHEL 9 设置更加容易。切换到 LEGACY 策略甚至不太安全,您应该谨慎使用。
您还可以自定义系统范围的加密策略。详情请参阅 使用子策略自定义系统范围的加密策略 和 创建并设置自定义系统范围的加密策略 部分。如果您使用自定义加密策略,请考虑查看和更新策略,以便在加密和计算机硬件中提前缓解出现的威胁。
8.3. 升级系统强化到安全基点 复制链接链接已复制到粘贴板!
要在成功升级到 RHEL 9 后获得完全强化的系统,您可以使用 OpenSCAP 套件提供的自动化补救功能。OpenSCAP 修复使您的系统符合安全基线,如 PCI-DSS、OSPP 或 ACSC Essential Eight。由于安全产品的演进,配置合规性建议在 RHEL 的主要版本之间有所不同。
当升级一个强化的 RHEL 8 系统时,Leapp 工具 不 提供保持完整强化的直接方法。根据组件配置中的更改,该系统可能会在升级过程中偏离 RHEL 9 的建议。
您不能使用相同的 SCAP 内容扫描 RHEL 8 和 RHEL 9。如果系统的合规性(如 Red Hat Satellite 或 Red Hat Insights )进行管理,则更新管理平台。
作为自动化修复的替代方法,您可以按照 OpenSCAP 生成的报告手动进行更改。有关生成合规性报告的详情,请参考 扫描系统的安全合规性和漏洞。
在默认配置中,自动化修复支持 RHEL 系统。因为升级后更改了系统配置,因此运行自动补救可能无法使系统完全与所需的安全配置集兼容。您可能需要手动修复一些要求。
以下示例流程根据 PCI-DSS 配置集强化您的系统设置。
先决条件
-
scap-security-guide软件包会在 RHEL 9 系统中安装。
流程
查找合适的安全合规数据流
.xml文件:ls /usr/share/xml/scap/ssg/content/
$ ls /usr/share/xml/scap/ssg/content/ ... ssg-rhel9-ds.xml ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如需更多信息,请参阅 Viewing compliance profiles 部分。
根据从合适的数据流所选的配置文件来修复系统:
oscap xccdf eval --profile pci-dss --remediate /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
# oscap xccdf eval --profile pci-dss --remediate /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以根据您要强化系统的配置集 ID 替换
--profile参数中的pci-dss值。有关 RHEL 9 支持的配置集的完整列表,请参阅 RHEL 支持的 SCAP 安全配置集。警告如果没有谨慎使用,在启用
--remediate选项的情况下运行系统评估可能会导致系统无法正常工作。红帽不提供任何自动的方法来恢复由强化安全的修复所做的更改。默认配置的 RHEL 系统支持自动安全补救功能。如果在安装后更改了您的系统,运行修复可能无法使其遵守所需的安全配置文件。重启您的系统:
reboot
# rebootCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证系统是否遵从配置文件,并将结果保存到 HTML 文件中:
oscap xccdf eval --report pcidss_report.html --profile pci-dss /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xml
$ oscap xccdf eval --report pcidss_report.html --profile pci-dss /usr/share/xml/scap/ssg/content/ssg-rhel9-ds.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4. 验证 USBGuard 策略 复制链接链接已复制到粘贴板!
使用 USBGuard 软件框架,您可以使用基于内核中 USB 设备的授权功能,保护您的系统不受入侵 USB 设备的影响。
先决条件
- 您已为 USB 设备创建了一个规则集,它会在升级前反映您的要求。
-
usbguard服务已安装在您的 RHEL 9 系统上运行。
流程
-
备份
/etc/usbguard/目录中存储的 *.conf 文件。 -
使用
usbguard generate-policy生成新的策略文件。请注意,命令只为当前可用的 USB 设备生成规则。 将新生成的规则与前面策略中的规则进行比较:
- 如果您在为同一设备生成新策略和预升级规则时识别规则中的不同,请针对以后插入的设备相应地修改原始规则。
- 如果新生成的和预升级规则之间没有区别,您可以在不修改的情况下使用在 RHEL 8 中创建的策略文件。
8.5. 更新 fapolicyd 数据库 复制链接链接已复制到粘贴板!
fapolicyd 软件框架根据用户定义的策略来控制应用程序的执行。
在个别情况下,可能会出现 fapolicyd 信任数据库格式的问题。重建数据库:
停止该服务:
systemctl stop fapolicyd
# systemctl stop fapolicydCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除数据库:
fapolicyd-cli --delete-db
# fapolicyd-cli --delete-dbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动服务:
systemctl start fapolicyd
# systemctl start fapolicydCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您将自定义信任文件添加到信任数据库中,请使用 fapolicyd-cli -f update <FILE> 命令单独进行更新,或使用 fapolicyd-cli -f update 以前进行更新。要应用这些更改,请使用 fapolicyd-cli --update 命令或重启 fapolicyd 服务。
另外,自定义二进制文件可能需要为新 RHEL 版本重新构建。在更新 fapolicyd 数据库前执行任何这样的更新。
8.6. 将 NSS 数据库从 DBM 更新至 SQLite 复制链接链接已复制到粘贴板!
在将 NSS_DEFAULT_DB_TYPE 环境变量设置为系统上的 sql 值后,许多应用程序会自动将 NSS 数据库格式从 DBM 转换为 SQLite。您可以使用 certutil 工具来确保转换所有数据库。
在升级到 RHEL 9 前,将存储在 DBM 格式的 NSS 数据库转换。换句话说,在您要升级到 RHEL 9 的 RHEL 系统(6、7 和 8)中执行以下步骤。
先决条件
-
nss-tools软件包已安装在您的系统上。
流程
将系统上的
NSS_DEFAULT_DB_TYPE设置为sql:export NSS_DEFAULT_DB_TYPE=sql
# export NSS_DEFAULT_DB_TYPE=sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在每个目录中使用转换命令[1] 其中包括 DBM 格式的 NSS 数据库文件,例如:
certutil -K -X -d /etc/ipsec.d/
# certutil -K -X -d /etc/ipsec.d/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意,如果您的数据库文件受密码保护,则必须提供密码或密码文件的路径作为
-f选项的值,例如:certutil -K -X -f /etc/ipsec.d/nsspassword -d /etc/ipsec.d/
# certutil -K -X -f /etc/ipsec.d/nsspassword -d /etc/ipsec.d/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
/etc/pki/nssdb 目录中包含系统范围 NSS 数据库。其他位置取决于您使用的应用程序。例如,Libreswan 将数据库存储在 /etc/ipsec.d/ 目录中,Firefox 使用 /home/<username>/.mozilla/firefox/ 目录。
8.7. 将 Cyrus SASL 数据库从 Berkeley DB 格式迁移到 GDBM 复制链接链接已复制到粘贴板!
RHEL 9 cyrus-sasl 软件包构建时没有 libdb 依赖项,sasldb 插件使用 GDBM 数据库格式而不是 Berkeley DB。
先决条件
-
cyrus-sasl-lib软件包已安装在您的系统中。
流程
要迁移以旧 Berkeley DB 格式存储的现有简单身份验证和安全层(SASL)数据库,请使用
cyrusbdb2current工具,语法如下:cyrusbdb2current <sasldb_path> <new_path>
# cyrusbdb2current <sasldb_path> <new_path>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第 9 章 故障排除 复制链接链接已复制到粘贴板!
您可以参阅以下内容来排除从 RHEL 8 升级到 RHEL 9 进行故障排除。
9.1. 故障排除资源 复制链接链接已复制到粘贴板!
您可以参考以下故障排除资源。
控制台输出
默认情况下,Leapp 只会将错误和严重日志级别的信息输出到控制台输出中要改变日志级别,在leapp upgrade 命令中使用 --verbose 或 --debug 选项。
-
在 verbose 模式中,
Leapp会输出 info, warning, error, 和 critical 信息。 -
在 debug 模式中,
Lapp会输出 debug、info、warning、error 和 critical 信息。
日志
-
/var/log/leapp/leapp-upgrade.log文件列出了 initramfs 阶段里的问题。 -
/var/log/leapp/dnf-debugdata/目录包含了事务故障排除数据。只有在leapp upgrade命令使用了--debug选项执行时,才会生成这个目录。 -
/var/log/leapp/answerfile包含Leapp回答所需的问题。 -
Journalctl实用程序提供完整的日志。
Reports
-
/var/log/leapp/leapp-report.txt文件列出了在预升级阶段里发现的问题。这个报告也可以在 web 控制台中获得,请参阅 评估可升级性并通过 web 控制台应用自动化修复。 -
/var/log/leapp/leapp-report.json文件以机器可读格式列出了在预升级阶段发现的问题,它可让您使用自定义脚本处理报告。如需更多信息,请参阅自动 Red Hat Enterprise Linux 预升级报告工作流。
9.2. 故障排除窍门 复制链接链接已复制到粘贴板!
您可以参考以下故障排除信息。
预升级阶段
- 验证您的系统是否满足 规划一个升级 中列出的所有条件。
-
请确定您遵循了 准备升级 中描述的所有步骤,例如:您的系统没有使用多个网络接口卡(NIC),它们的名称基于内核使用的前缀(
eth)。 确保您已回答了
/var/log/leapp/answerfile文件中Leapp所需的所有问题。如果缺少回答,Leapp会阻止升级。例如:- 系统中没有 VDO 设备?
-
请确定您解决了在预升级报告(位于
/var/log/leapp/leapp-report.txt)中发现的所有问题。您也可以使用 web 控制台来达到此目的,如评估可升级性并通过 web 控制台应用自动化修复中所述。
例 9.1. Leapp answerfile
以下是一个未编辑的 /var/log/leapp/answerfile 文件,它有一个未回答的问题:
Label 字段指定需要回答的问题。在本例中,问题是 Are all VDO devices, if any, successfully converted to LVM management?
要回答问题,请取消对最后一行的注释并输入回答 True 或 False。在本例中,所选答案为 True :
[check_vdo] ... # Available choices: True/False # Unanswered question. Uncomment the following line with your answer confirm = 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
# journalctlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,使用
reboot命令从 Dracut shell 重启系统,并检查/var/log/leapp/leapp-upgrade.log文件。
升级后阶段
- 如果您的系统看上去成功升级,但是使用旧的 RHEL 8 内核引导,重启系统并检查 GRUB 中默认条目的内核版本。
- 确保您已遵循了 验证升级后状态 中推荐的步骤。
如果您的应用程序或服务在您将 SELinux 切换到 enforcing 模式后停止工作或者行为不正确,请使用 ausearch, journalctl, 或 dmesg 检查拒绝:
ausearch -m AVC,USER_AVC -ts boot journalctl -t setroubleshoot dmesg | grep -i -e selinux -e type=1400
# ausearch -m AVC,USER_AVC -ts boot # journalctl -t setroubleshoot # dmesg | grep -i -e selinux -e type=1400Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最常见的问题是由错误的标记造成的。更多详情请参阅SELinux 故障排除。
9.3. RHEL 8 升级到 RHEL 9 的已知问题 复制链接链接已复制到粘贴板!
以下是您升级时可能遇到的已知问题。
- 在进行原位升级时,如果 Network Manager 被禁用或没有安装,则 network teaming 功能无法正常工作。
-
如果您的 RHEL 8 系统使用由红帽提供但在 RHEL 9 中不可用的设备驱动程序,
Leapp将会限制升级。但是,如果 RHEL 8 系统使用Leapp在/etc/leapp/files/device_driver_deprecation_data.json文件中没有数据的第三方设备驱动程序,Leapp不会检测这样的驱动程序并进行升级。然后,该系统可能会在升级后无法引导。 如果系统上安装的第三方软件包(不是红帽签名的)的名称与红帽提供的软件包名称相同,则原位升级会失败。要临时解决这个问题,请在升级前选择以下选项之一:
- 删除第三方软件包
- 使用红帽提供的软件包替换第三方软件包
- 在 RHEL 8 中,您可以使用 VDO 管理器或逻辑卷管理器(LVM)管理 Virtual Data Optimizer (VDO)卷。在 RHEL 9 中,只能使用 LVM 管理 VDO 卷。要在 RHEL 9 上继续使用 VDO 管理的卷,请在升级前将这些卷导入到 LVM 管理的 VDO 卷。如需更多信息,请参阅 将现有 VDO 卷导入到 LVM。
- 在带有独立磁盘的软件冗余阵列(RAID)的系统上,原位升级可能会失败。(BZ#1957192)
原位升级后,如果系统满足以下条件,SSH 密钥将不再自动生成:
- 系统在云上。
- cloud-init 软件包已安装。
ssh_genkeytypes 配置在 /etc/cloud/cloud.cfg 文件中被设置为 ~,这是默认设置。
如果删除了原始密钥,则此问题会阻止系统使用 SSH 连接。有关防止这个问题的更多信息,请参阅红帽知识库解决方案 将模板升级到 RHEL 8.7 或 9 后的无法 SSH 到新的虚拟机。(BZ#2210012)
- 在硬件级别 13 上创建的,并使用 UEFI 引导的 VMware 虚拟机可能会在升级过程中遇到问题,因为 NVRAM 文件太小了。如需更多信息,请参阅红帽知识库解决方案 在执行 efibootmgr 或 mokutil 命令添加条目时,得到 VMWare:"No space left on device"。(RHEL-3362)
-
如果您使用带有 ISO 镜像的 RHUI 进行升级,则升级可能会失败。您可以通过在升级时不使用
--iso选项来临时解决这个问题,或者查看红帽知识库解决方案 使用 ISO 进行离线 Leapp 升级失败,并显示“Failed to synchronize cache for repo 'rhul-microsoft-azure-rhel8',ignoring this repo“。(RHEL-3296)
如果
/etc/fstab文件中定义的任何挂载的文件系统没有设置shared传播标志,则升级可能失败。要防止这个问题,请重新挂载这些文件系统,以将其设置为 shared :mount -o remount --make-shared <mountpoint>
# mount -o remount --make-shared <mountpoint>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用每个文件系统的挂载点替换 mountpoint。
如需更多信息,请参阅红帽知识库解决方案 Leapp 在 DNF 事务检查过程中 "Can not load RPM file" 。(RHEL-23449)
-
如果您使用 RHUI 进行升级,则
/usr/share/leapp-repository/repositories/system_upgrade/common/files/rhui/目录中的文件在预升级报告中被错误地报告为自定义文件。除非手动修改这些文件,否则您可以忽略报告中有关这些文件的警告,原位升级将不会受到影响。(RHEL-40115) 默认情况下,在升级后
logrotate没有激活。logrotate以前在 RHEL 8 及更早版本中由cron管理。在 RHEL 9 中,它由systemd管理。要永久激活logrotate,请在升级后运行以下命令:systemctl enable --now logrotate.timer
# systemctl enable --now logrotate.timerCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您使用 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 如何使用代理? 当以下条件都满足时,升级可能会失败,并显示
MountError消息:-
/etc/fstab中定义的挂载点包含下划线字符。 如果下划线字符被替换为正斜杠,则
/etc/stab中定义的另一个挂载点具有相同的名称。例如,在
/etc/fstab中定义的/var/tmp和/var_tmp挂载点导致升级失败。要防止这个问题,请卸载包含下划线字符的挂载点,并在升级之前注释掉
/etc/fstab文件中的挂载点。您可以在升级后恢复配置。
-
-
当使用 Red Hat Upgrade Infrastructure (RHUI)升级系统时,如果系统的 RHUI 设置与
Leapp程序预期的 RHUI 系统实施的默认值不同,则升级可能会失败。要解决这个问题,请配置升级过程以针对您的 RHUI 设置进行调整。如需更多信息,请参阅使用 RHUI 配置原位升级。 您不能在安装了
kernel-rt软件包的系统中执行升级。要防止这个问题,请在升级前运行以下命令以便在升级过程中删除软件包:echo kernel-rt >>/etc/leapp/transaction/to_remove
# echo kernel-rt >>/etc/leapp/transaction/to_removeCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 在具有 Non-Volatile Memory Express over Fibre Channel (NVME-FC)的系统中,原位升级可能会失败。(oscapRHEL-46807)
从 RHEL 7 升级到 RHEL 8 的系统可能包含与升级相关的文件,它们可能会导致 RHEL 8 到 RHEL 9 原位升级的问题。要防止这些问题,请完成以下步骤:
如果您已经安装了 RHEL 8 到 RHEL 9 升级软件包,请删除它们:
dnf remove "*leapp*" -y
# dnf remove "*leapp*" -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow 删除 RHEL 7 到 RHEL 8 升级相关的文件:
rm -rf /usr/share/leapp-repository/repositories
# rm -rf /usr/share/leapp-repository/repositoriesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 RHEL 8 安装到 RHEL 9 升级软件包:
dnf install leapp-upgrade -y
# dnf install leapp-upgrade -yCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4. 获取支持 复制链接链接已复制到粘贴板!
要创建一个支持问题单,请选择 RHEL 8 作为产品,并提供您系统的 sosreport。
-
要在您的系统中生成
sosreport,请运行:
sosreport
# sosreport
请注意:您可以将问题单 ID 留空。
有关生成 sosreport 的更多信息,请参阅红帽知识库解决方案 什么是 sosreport 以及如何在 Red Hat Enterprise Linux 中创建它?。
有关在客户门户网站上开和管理支持问题单的更多信息,请参阅红帽知识库解决方案 如何在客户门户网站上开和管理一个支持问题单?。
附录 A. RHEL 8 软件仓库 复制链接链接已复制到粘贴板!
在升级前,请确保启用了适当的软件仓库,如 为升级准备 RHEL 8 系统 的步骤 6 所述。
如果您计划在升级过程中使用 Red Hat Subscription Manager,您 需要在升级前使用 subscription-manager repos --enable repository_id 命令启用以下软件仓库:
| 架构 | 软件仓库 | 仓库 ID |
|---|---|---|
| 64 位 Intel 和 AMD | Base |
|
| AppStream |
| |
| 64-bit ARM | Base |
|
| Extras |
| |
| IBM POWER(little endian) | Base |
|
| AppStream |
| |
| IBM Z | Base |
|
| AppStream |
|
升级前,可以使用 subscription-manager repos --enable repoid 命令启用以下仓库:
| 架构 | 软件仓库 | 仓库 ID |
|---|---|---|
| 64 位 Intel 和 AMD | Code Ready Linux Builder |
|
| Supplementary |
| |
| 64-bit ARM | Code Ready Linux Builder |
|
| Supplementary |
| |
| IBM POWER(little endian) | Code Ready Linux Builder |
|
| Supplementary |
| |
| IBM Z | Code Ready Linux Builder |
|
| Supplementary |
|
如果您在原位升级前启用了 RHEL 8 Code Ready Linux Builder 或 RHEL 8 Supplementary 软件仓库,Leapp 会相应地启用 RHEL 8 CodeReady Linux Builder 或 RHEL 8 Supplementary 软件仓库。有关更多信息,请参阅软件包清单。
如果您决定使用自定义软件仓库,请根据配置自定义软件仓库中的内容启用它们。
附录 B. RHEL 9 软件仓库 复制链接链接已复制到粘贴板!
如果您的系统使用 Red Hat Subscription Manager(RHSM)注册到 Red Hat Content Delivery Network(CDN),则 RHEL 9 软件仓库会在原位升级过程中自动启用。但是,在使用 RHSM 注册了 Red Hat Satellite 的系统中,在运行预升级报告前手动启用并同步 RHEL 8 和 RHEL 9 软件仓库。
确保启用每个存储库的目标 OS 版本,如 9.4。如果您只启用了 RHEL 9 版本,则禁止原位升级。
如果您计划在升级过程中使用 Red Hat Satellite,在升级前,使用 Satellite Web UI 或 hammer repository-set enable 和 hammer product synchronize 命令启用并同步至少以下的 RHEL 9 仓库:
| 架构 | 软件仓库 | 仓库 ID | 仓库名称 | 发行版本 |
|---|---|---|---|---|
| 64 位 Intel 和 AMD | BaseOS |
| Red Hat Enterprise Linux 9 for x86_64 - BaseOS (RPMs) | x86_64 <target_os_version> |
| AppStream |
| Red Hat Enterprise Linux 9 for x86_64 - AppStream (RPMs) | x86_64 <target_os_version> | |
| 64-bit ARM | BaseOS |
| Red Hat Enterprise Linux 9 for ARM 64 - BaseOS (RPMs) | aarch64 <target_os_version> |
| AppStream |
| Red Hat Enterprise Linux 9 for ARM 64 - AppStream (RPMs) | aarch64 <target_os_version> | |
| IBM Power (little endian) | BaseOS |
| Red Hat Enterprise Linux 9 for Power, little endian - BaseOS (RPMs) | ppc64le <target_os_version> |
| AppStream |
| Red Hat Enterprise Linux 9 for Power, little endian - AppStream (RPMs) | ppc64le <target_os_version> | |
| IBM Z | BaseOS |
| Red Hat Enterprise Linux 9 for IBM z Systems - BaseOS (RPMs) | s390x <target_os_version> |
| AppStream |
| Red Hat Enterprise Linux 9 for IBM z Systems - AppStream (RPMs) | s390x <target_os_version> |
将 <target_os_version> 替换为目标 OS 版本,如 9.4。