从 RHEL 7 升级至 RHEL 8
把 Red Hat Enterprise Linux 7 原位(in-place)升级到 Red Hat Enterprise Linux 8
摘要
使开源包含更多
红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 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 7 操作系统(OS)替换为 RHEL 8 版本。
目前,可以执行从 RHEL 7 原位升级到以下目标 RHEL 8 次版本:
表 1.1. 支持的升级路径
架构和系统配置 | 源操作系统版本 | 目标操作系统版本 | 支持结束 |
---|---|---|---|
64 位 Intel、IBM POWER 8(little endian)和 64 位 IBM Z | RHEL 7.9 | RHEL 8.6 | 2024 年 5 月 31 日(EUS) |
RHEL 8.8 | 2025 年 5 月 31 日(EUS) | ||
RHEL 8.9 (默认) | 2024 年 5 月 31 日 | ||
带有 SAP HANA 的 RHEL | RHEL 7.9 | RHEL 8.6 | 2024 年 5 月 31 日(EUS) |
RHEL 8.8 (默认) | 2025 年 5 月 31 日(EUS) |
有关支持的升级路径的更多信息,请参阅 支持的 Red Hat Enterprise Linux 原位升级路径。
第 2 章 计划升级
原位升级(in-place upgrade)是把系统升级到下一个主要 RHEL 版本的推荐并支持的方法。
在升级到 RHEL 8 前请考虑以下几点:
操作系统 — 在以下情况下使用
Leapp
程序升级操作系统:64 位 Intel、IBM POWER 8 (little endian)和 64 位 IBM Z 架构上的 Server 7.9 的 RHEL 7.9 安装在 64 位 Intel 架构上。
- 满足 RHEL 8 的最低硬件要求。
- 您可以访问最新的 RHEL 7.9 和目标操作系统(OS)版本(如 RHEL 8.6)内容。如需更多信息,请参阅 为升级准备 RHEL 7 系统。
-
应用程序 - 您可以使用
Leapp
迁移安装在系统上的应用程序。然而,在某些情况下,您必须创建 custom actors,它用来在升级过程中指定Leapp
要执行的操作,例如: 重新配置应用程序或安装特定的硬件驱动程序。如需更多信息,请参阅处理自定义应用程序和第三方应用程序的迁移。请注意,红帽不支持自定义参与者。 安全性 - 您应该在升级前评估这个方面,并在升级过程完成后采取其他步骤。请特别考虑以下几点:
- 在升级前,定义您系统需要满足的安全标准,并了解 RHEL 8 中的安全变化。
-
在升级过程中,
Leapp
会将 SELinux 的模式设置为 permissive。 Leapp
无法完全自动升级联邦信息处理标准(FIPS)模式的系统。如果您需要升级在 FIPS 模式运行的 RHEL 7 系统,您必须:重要为确保所有加密密钥都符合 FIPS 140-2 标准,请在 FIPS 模式下启动新安装,而不是对已部署的系统执行原位升级。只有在您公司的安全策略允许这个替代升级过程,且您可以确保在升级的系统上重新生成和重新评估所有加密密钥时,才执行以下步骤。。
- 在 RHEL 7 中 禁用 FIPS 模式。
-
使用
Leapp
升级系统。您必须遵循与其它原位升级一样的预升级、升级和升级后的说明。 - 在 RHEL 8 中启用 FIPS 模式。详情请参阅 RHEL 8 安全强化文档中的将系统切换到 FIPS 模式。
- 在您的系统中重新生成加密密钥。如需更多信息,请参阅 附录 C, RHEL 8 中加密密钥的位置。
- 升级完成后,重新评估并重新应用您的安全策略。有关应用升级过程中禁用的安全策略或 RHEL 8 中新引进的安全策略的详情,请参阅应用安全策略。
存储和文件系统 - 总是在升级前备份您的系统。例如,您可以使用 Relax-and-Recover (ReaR)实用程序、LVM 快照、RAID splitting 或虚拟机快照。
注意文件系统格式没有改变。因此,文件系统有与最初创建时相同的限制。
- 高可用性 - 如果您使用高可用性附加组件,请按照 对 RHEL 高可用性或弹性存储集群应用软件升级的推荐的实践 知识库文章。
- 停机时间 — 升级过程可能会需要几分钟到几小时。
- Satellite - 如果您通过 Satellite 管理主机,您可以使用 Satellite Web UI 同时将多个主机从 RHEL 7 升级到 RHEL 8。如需更多信息,请参阅 将主机升级到下一个 Red Hat Enterprise Linux 版本。
- SAP HANA - 如果您正在使用 SAP HANA,请遵循如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8。请注意,使用 SAP HANA 的 RHEL 的升级路径可能会有所不同。
- RHEL for Real Time - 支持实时系统升级。
- 支持 Red Hat OpenStack Platform 中的网络功能虚拟化(NFV)实时 - 支持实时系统 升级。
- 公有云 - 支持在带有 Red Hat Update Infrastructure (RHUI) 的 Amazon Web Services (AWS)、Microsoft Azure 和 Google Cloud Platform 中的 Pay-As-You-Go (PAYG) 实例进行原位升级。原位升级还支持在所有使用 Red Hat Subscription Manager (RHSM)进行 RHEL 订阅的公有云上的 Bring Your Own Subscription 实例。
-
语言 - 无论语言配置如何,所有
Leapp
报告、日志和其他生成的文档均为英语。 - 引导装载程序 - 在 RHEL 7 或 RHEL 8 中无法将引导装载程序从 BIOS 切换到 UEFI。如果您的 RHEL 7 系统使用 BIOS,而您希望 RHEL 8 系统使用 UEFI,请执行全新的 RHEL 8 安装,而不是原位升级。如需更多信息,请参阅 是否可以在预安装的 Red Hat Enterprise Linux 机器上将 BIOS 引导切换到 UEFI 引导?
已知的限制 - 目前已知的重要的
Leapp
限制包括:- 目前,对整个磁盘或者分区进行加密,或对文件系统加密还不能用于计划进行原位升级的系统中。
- 升级不支持使用以太网或 Infiniband 的基于网络的多路径和网络存储。这包括使用 FCoE 的 SAN,并使用 FC 从 SAN 引导。请注意,支持使用 FC 的 SAN。
- 目前,在使用 Red Hat Update Infrastructure 而不是 RHEL 订阅的 RHSM 的其余公有云(Huawei Cloud、Alibabawei Cloud)上的按需 PAYG 实例不支持原位升级。
- 安装了任何 Ansible 产品(包括 Ansible Tower)的系统不支持原位升级。要在 RHEL 8 上使用 RHEL 7 Ansible Tower 安装,请参阅 如何将我的 Ansible Automation Platform 安装从一个环境迁移到另一个环境?知识库解决方案.
请参阅 已知问题。
您可以使用 Red Hat Insights 确定您注册到 Insights 的哪些系统位于 RHEL 8 的升级路径中。要做到这一点,请进入到 Insights 中相应的 顾问建议,在 Actions 下拉菜单下启用建议,并检查 Affected systems 标题下的列表。请注意: Advisor 推荐只会考虑 RHEL 7 次要版本,它不会执行系统升级前评估。另请参阅 Advisor-service 建议概述。
第 3 章 准备升级
要防止升级后出现问题,并确保您的系统已准备好升级到 RHEL 的下一个主要版本,请在升级前完成所有必要的准备步骤。
您必须在所有系统上执行 为升级准备 RHEL 7 系统 中所描述的准备步骤。另外,在注册到 Satellite 服务器的系统上,还必须执行 为升级准备 Satellite 注册系统 中描述的准备步骤。
3.1. 为升级准备 RHEL 7 系统
这个流程描述了在使用 Leapp
工具执行原位升级到 RHEL 8 前必需执行的步骤。
如果您在升级过程中不计划使用 Red Hat Subscription Manager,请参阅在没有 Red Hat Subscription Manager 的情况下升级到 RHEL 8。
先决条件
- 系统满足规划升级中列出的条件。
流程
- 使用 Red Hat Subscription Manager 确保您的系统已被成功注册到 Red Hat Content Delivery Network (CDN)或 Red Hat Satellite。
如果您的系统已注册到 Satellite 服务器,请完成 为升级准备 Satellite 注册系统 中的步骤,以确保您的系统满足升级要求。
重要如果您的系统已注册到 Satellite 服务器,则必须完成 为升级准备注册了 Satellite 的系统 的步骤,然后才能继续这个过程中的步骤以防止问题的发生。
使用 subscription-manager 验证系统是否已订阅:
如果您的系统使用启用了 Simple Content Access (SCA)的帐户注册,请验证
Content Access Mode 是否已设置为 Simple Content Access
信息:# 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
如果您的系统使用禁用 SCA 的帐户注册,请验证是否已附加 Red Hat Linux Server 订阅,产品名称为
Server
,其状态为Subscribed
:# subscription-manager list --installed +-------------------------------------------+ Installed Product Status +-------------------------------------------+ Product Name: Red Hat Enterprise Linux Server Product ID: 69 Version: 7.9 Arch: x86_64 Status: Subscribed
确定启用了适当的软件仓库。以下命令列出 64 位 Intel 架构的软件仓库 ; 有关其他架构请参阅 RHEL 7 软件仓库。
启用 Base 软件仓库:
# subscription-manager repos --enable rhel-7-server-rpms
启用提供
Leapp
及其依赖软件包的 Extras 软件仓库:# subscription-manager repos --enable rhel-7-server-extras-rpms
注意另外,您还可以启用 Optional (也称为 CodeReady Linux Builder)或 Supplementary 存储库。有关存储库 ID 的更多信息,请参阅 RHEL 7 软件仓库中的 Optional 和 Supplementary 软件仓库 列表。有关这些软件仓库的内容的更多信息,请参阅 CodeReady Linux Builder 存储库 和 Supplementary 存储库。
设置 Red Hat Subscription Manager ,以使用最新的 RHEL 7 内容:
# subscription-manager release --unset
- 可选: 要使用自定义软件仓库,请参阅配置自定义软件仓库 知识库文章。
如果您使用
yum-plugin-versionlock
插件把软件包锁定到特定版本,请运行以下命令来清除锁:# yum versionlock clear
详情请查看 How to restrict yum to install or upgrade a package to a fixed specific package version?。
如果您要在公有云上使用 Red Hat Update Infrastructure (RHUI) 升级,请启用所需的 RHUI 软件仓库并安装所需的 RHUI 软件包,以确保您的系统已准备好升级。
对于 AWS:
# yum-config-manager --enable rhui-client-config-server-7 # yum-config-manager --enable rhel-7-server-rhui-extras-rpms # yum -y install rh-amazon-rhui-client leapp-rhui-aws
对于 Microsoft Azure:
# yum-config-manager --enable rhui-microsoft-azure-rhel7 # yum -y install rhui-azure-rhel7 # yum-config-manager --enable rhui-rhel-7-server-rhui-extras-rpms # yum -y install leapp-rhui-azure
注意如果您将 Azure 虚拟机 (VM) 锁定到一个次发行版本,请删除版本锁定。如需更多信息,请参阅将 RHEL 7.x 虚拟机切回到非 EUS。
- 对于 Google Cloud Platform,请遵循 Google Cloud Platform (GCP) 知识库文章。
- 如果您在 Docker 中管理容器,请通过 Podman 使用合适的容器镜像重新创建这些容器,然后附加任何使用的卷。如需更多信息,请参阅如何在从 Red Hat Enterprise Linux 7 迁移到 Red Hat Enterprise Linux 8 之前将 Docker 容器迁移到 Podman?
将所有软件包更新到最新的 RHEL 7 版本:
# yum update
重启系统:
# reboot
安装
Leapp
:# yum install leapp-upgrade
请注意,您目前需要版本 0.16.0 或更高版本的
leapp
软件包,版本 0.19.0 或更高版本的leapp-repository
软件包,其中包含leapp-upgrade-el7toel8
RPM 软件包。注意如果您的系统无法访问互联网,请从红帽客户门户网站下载以下软件包 :
-
leapp
-
Leapp-deps
-
python2-leapp
-
leapp-upgrade-el7toel8
-
leapp-upgrade-el7toel8-deps
了解如何在离线系统中为 RHEL 7.9 升级到 RHEL 8.X 的 leapp 软件包?如需更多信息,知识库文章。
-
-
leapp-upgrade-el7toel8
软件包的最新版本包含所有所需的数据文件。如果您使用旧版本替换了这些数据文件,请删除/etc/leapp/files
目录中的所有 JSON 文件,并重新安装leapp-upgrade-el7toel8
软件包,以确保您的数据文件是最新的。 - 临时禁用防病毒软件以防止升级失败。
确保任何配置管理系统都不会干扰原位升级过程:
-
如果您使用客户端-服务器架构的配置管理系统(如 Puppet、Salt 或 Chef ),请在运行
leapp preupgrade
命令前禁用系统。在升级完成前,请不要启用配置管理系统,以防止升级过程中出现问题。 如果您使用无代理架构的配置管理系统(如 Ansible ),在原位升级过程中不要执行配置和部署文件(如 Ansible playbook),如 执行从 RHEL 7 到 RHEL 8 的升级 中所述。
红帽不支持使用配置管理系统进行预升级和升级过程的自动化。如需更多信息,请参阅 使用配置管理系统在 Red Hat Enterprise Linux 上自动化部分 Leapp 预升级和升级过程。
-
如果您使用客户端-服务器架构的配置管理系统(如 Puppet、Salt 或 Chef ),请在运行
-
请确定您的系统没有使用多于一个的、名称基于内核使用的前缀(
eth
)的网络接口卡(NIC)。如需了解如何在原位升级到 RHEL 8 前迁移到另外一个命名模式的更多信息,请参阅 How to perform an in-place upgrade to RHEL 8 when using kernel NIC names on RHEL 7。 -
如果您要使用 ISO 镜像升级,请验证 ISO 镜像是否包含目标操作系统版本,如 RHEL 8.8,并被保存到持久本地挂载点,以确保
Leapp
实用程序可以在升级过程中访问镜像。 - 确定您有完整的系统备份或者虚拟机快照。请确定您可以按照您的环境中的标准灾难恢复步骤,把系统恢复到升级前的状态。例如,使用 Relax-and-Recover (ReaR) 程序进行备份。如需更多信息,请参阅 ReaR 文档以及 Relax and Recover (ReaR) 是什么以及如何使用它进行灾难恢复?或者,您可以使用 LVM 快照 或 RAID splitting。如果升级虚拟机,您可以创建整个虚拟机的快照。
3.2. 为升级准备注册了 Satellite 的系统
此流程描述了为升级到 RHEL 8 准备已注册到 Satellite 的系统所需的步骤。
请注意,如果您计划升级 Satellite 系统本身,请按照 使用 Leapp 将 Satellite 或 Capsule 升级到 Red Hat Enterprise Linux 8 原位 中所描述的流程。
Satellite 系统上的用户必须完成此流程和 为升级准备 RHEL 7 系统 中所描述的步骤。
先决条件
- 您有对 Satellite 服务器的管理特权。
流程
- 验证 Satellite 是否是完全支持或维护支持的版本。如需更多信息,请参阅 Red Hat Satellite 产品生命周期。
- 将带有 RHEL 8 存储库的订阅清单导入到 Satellite 服务器。如需更多信息,请参阅 Red Hat Satellite 特定版本的 管理内容指南中的管理红帽订阅一章,例如 6.12 版本。
在 Satellite 服务器上启用并同步所有所需的 RHEL 7 和 RHEL 8 软件仓库与 RHEL 7.9 和目标操作系统版本的最新更新,如 RHEL 8.6。所需的软件仓库必须在内容视图中找到,并在关联的激活码中启用。
注意对于 RHEL 8 软件仓库,启用每个软件仓库的目标操作系统版本,如 8.6。如果您只启用 RHEL 8 版本的软件仓库,则禁止原位升级。
例如,对于没有延长更新支持(EUS)订阅的 Intel 构架,至少启用以下软件仓库:
Red Hat Enterprise Linux 7 Server (RPMs)
rhel-7-server-rpms
x86_64 7Server
Red Hat Enterprise Linux 7 Server - Extras (RPMs)
rhel-7-server-extras-rpms
x86_64
Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-appstream-rpms
x86_64 <target_os_version>
Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
rhel-8-for-x86_64-baseos-rpms
x86_64 <target_os_version>
将 target_os_version 替换为目标操作系统版本,如 8.6。
有关其他构架,请参阅 RHEL 7 软件仓库 和 RHEL 8 软件仓库。
如需更多信息,请参阅 Red Hat Satellite 特定版本的 管理内容指南中的 导入内容章节,例如 版本 6.12。
将内容主机附加到包含所需的 RHEL 7 和 RHEL 8 软件仓库的内容视图。
如需更多信息,请参阅特定版本的 Red Hat Satellite 的 管理内容视图一章,例如 6.12 版本。
验证
验证 Satellite 服务器上正确的 RHEL 7 和 RHEL 8 软件仓库是否已添加到正确的内容视图中。
- 在 Satellite Web UI 中,导航到 Content > Lifecycle > Content Views,然后点击内容视图的名称。
点 Repositories 选项卡,并验证存储库是否正确出现。
注意您还可以使用以下命令验证存储库是否已添加到内容视图中:
# hammer repository list --search 'content_label ~ rhel-7' --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>
将 <content_view_name > 替换为内容视图的名称,& lt;organization > 替换为机构,< lifecycle_environement> 替换为生命周期阶段的名称。
验证与内容视图关联的激活码中是否启用了正确的 RHEL 8 软件仓库:
- 在 Satellite Web UI 中,导航到 Content > Lifecycle > Activation Keys,然后点击激活码的名称。
-
单击 Repository Sets 选项卡,再验证所需存储库的状态
是否已启用
。
验证主机上是否启用了所有预期的 RHEL 7 软件仓库。例如:
# subscription-manager repos --list-enabled | grep "^Repo ID" Repo ID: rhel-7-server-extras-rpms Repo ID: rhel-7-server-rpm
第 4 章 查看升级前报告
要评估系统的可升级性,请使用 leapp preupgrade
命令启动预升级过程。在这个阶段,Leapp
会收集有关系统的数据,评估可升级性,并生成预升级报告。预升级报告总结了潜在的问题,并推荐推荐的解决方案。本次报告还帮助您决定升级是否可行。
始终查看整个预升级报告,即使报告没有禁止升级。预升级报告包含在升级前完成的建议操作,以确保升级的系统正常工作。
如果要进行全新的 RHEL 8 系统安装而不是原位升级过程,请查看预升级报告也很有用。
您可以使用以下方法之一评估预升级阶段的可升级性:
-
查看生成的
leapp-report.txt
文件中的预升级报告,并使用命令行界面手动解决问题。 - 使用 Web 控制台查看报告,在可用的情况下应用自动修复,并使用推荐的修复提示修复剩余的问题。
您可以使用自己的自定义脚本处理预升级报告,例如,比较不同环境中多个报告的结果。如需更多信息,请参阅自动 Red Hat Enterprise Linux 预升级报告工作流。
预升级报告无法模拟整个原位升级过程,因此无法识别系统的所有禁止问题。因此,即使您审核并修复报告中的所有问题,您的原位升级仍然被终止。例如,预升级报告无法检测与有问题的软件包下载相关的问题。
4.1. 从命令行评估可升级性
使用命令行界面在预升级阶段识别潜在的升级问题。
先决条件
- 准备升级 中列出的步骤已完成。
流程
在 RHEL 7 系统中,执行预升级阶段:
# leapp preupgrade --target <target_os_version>
将 <target_os_version > 替换为目标操作系统版本,如 8.6。如果没有定义目标操作系统版本,
Leapp
将使用在 支持的升级路径 中的表 1.1 中所指定的默认目标操作系统版本。如果您使用
/etc/yum.repos.d/
目录中的 自定义软件仓库 进行升级,请启用所选软件仓库,如下所示:# leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
-
如果您要在没有 RHSM 的情况下升级或使用 RHUI,请添加
--no-rhsm
选项。 -
如果您有 扩展升级支持(EUS)、高级更新支持(AUS) 或 Update Services for SAP Solutions (E4S) 订阅,请添加
--channel < channel>
选项。将 < channel> 替换为频道名称,如eus
、aus
或e4s
。请注意,SAP HANA 客户应该使用 如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8 指南来 执行原位升级。
检查
/var/log/leapp/leapp-report.txt
文件中的报告,并手动解决问题。有些报告的问题包含补救建议。禁止问题 阻止您升级,直到您解决了它们。这个报告包含以下风险因素级别:
- 高
- 很有可能导致系统状态。
- Medium
- 可能会影响系统和应用程序。
- 低
- 不应影响系统,但可能会影响应用程序。
- info
- 对系统或应用程序没有预期的影响。
在某些系统配置中,
Leapp
工具会生成 true 或 false 问题,您必须手动回答。如果预升级报告 在回答文件消息中包含 Missing required answers,请完成以下步骤:-
打开
/var/log/leapp/answerfile
文件,并查看 true 或 false 问题。 手动编辑
/var/log/leapp/answerfile 文件
,通过删除 sVirt 符号取消对文件的 confirm 行的注释,并确认您的回答为True
或False
。如需更多信息,请参阅 Leapp answerfile。
注意另外,您可以通过运行以下命令来回答 true 或 false 问题:
# leapp answer --section <question_section>.<field_name>=<answer>
例如,要确认对 Disable pam_pkcs11 module in PAM configuration? 问题的
False
回答,请执行以下命令:# leapp answer --section remove_pam_pkcs11_module_check.confirm=False
-
打开
- 重复前面的步骤重新运行预升级报告,以验证您是否解决了所有关键问题。
4.2. 通过 web 控制台评估可升级性,并应用自动化修复方法
识别预升级阶段中的潜在问题,并使用 Web 控制台应用自动补救。
先决条件
- 您已完成了 准备升级 中列出的步骤。
流程
安装
cockpit-leapp
插件:# dnf install cockpit-leapp
以
root
或具有sudo
输入管理命令权限的用户登录到 web 控制台。如需有关 web 控制台的更多信息,请参阅使用 RHEL web 控制台管理系统。在 RHEL 7 系统中,从命令行界面或 web 控制台终端执行预升级:
# leapp preupgrade --target <target_os_version>
将 <target_os_version > 替换为目标操作系统版本,如 8.6。如果没有定义目标操作系统版本,
Leapp
将使用在 支持的升级路径 中的表 1.1 中所指定的默认目标操作系统版本。如果您使用
/etc/yum.repos.d/
目录中的 自定义软件仓库 进行升级,请启用所选软件仓库,如下所示:# leapp preupgrade --enablerepo <repository_id1> --enablerepo <repository_id2> ...
-
如果您要在没有 RHSM 的情况下升级或使用 RHUI,请添加
--no-rhsm
选项。 -
如果您有 扩展升级支持(EUS)、高级更新支持(AUS) 或 Update Services for SAP Solutions (E4S) 订阅,请添加
--channel < channel>
选项。将 < channel> 替换为频道名称,如eus
、aus
或e4s
。请注意,SAP HANA 客户应该使用 如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8 知识库文章来执行原位升级。
在 Web 控制台中,从导航菜单中选择 Upgrade Report 来查看所有报告的问题。禁止问题 阻止您升级,直到您解决了它们。要详细查看问题,请选择行以打开详情面板。
图 4.1. Web 控制台中的原位升级报告
这个报告包含以下风险因素级别:
- 高
- 很有可能导致系统状态。
- Medium
- 可能会影响系统和应用程序。
- 低
- 不应影响系统,但可能会影响应用程序。
- info
- 对系统或应用程序没有预期的影响。
在某些配置中,
Leapp
工具会生成 true 或 false 问题,您必须手动回答。如果升级报告 在回答文件行中包含 Missing required answers,请完成以下步骤:- 在回答文件行中选择 Missing required answers 以打开 Details 窗格。默认回答在补救命令的末尾声明。
- 要确认默认回答,请选择 Add to Remediation Plan 以稍后执行补救或 Run Remediation 来立即执行补救。
要选择非默认回答,请在终端中执行
leapp answer
命令,指定您要回答的问题以及您已确认的回答。# leapp answer --section <question_section>.<field_name>=<answer>
例如,要确认对 Disable pam_pkcs11 module in PAM configuration? 问题的
False
响应?# leapp answer --section remove_pam_pkcs11_module_check.confirm=False
注意您还可以手动编辑
/var/log/leapp/answerfile
文件,通过删除 sVirt 符号取消对文件的 confirm 行的注释,并确认您的回答为True
或False
。如需更多信息,请参阅 Leapp answerfile 示例。
有些问题会运行修复命令来自动解决问题。您可以在补救命令中单独或全部运行补救命令。
- 要运行单个补救命令,请打开 此问题的 详情面板,然后点 Run Remediation。
要在补救计划中添加补救命令,请打开此问题的详情面板,然后点击 Add to Remediation Plan。
图 4.2. 详细信息面板
- 要运行包含所有添加的补救命令的补救计划,请点击报告右上角的 Remediation plan 链接。点 Execute Remediation Plan 执行所有列出的命令。
- 检查报告并解决所有报告的问题后,重复第 3-7 步重新运行报告,以验证您是否解决了所有关键问题。
第 5 章 执行从 RHEL 7 到 RHEL 8 的升级
使用 Leapp
程序升级到 RHEL 8。
流程
在 RHEL 7 系统中,启动升级过程:
# leapp upgrade --target <target_os_version>
将 <target_os_version > 替换为目标操作系统(OS)版本,如 8.6。如果没有定义目标操作系统版本,
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/rhel8.iso
。如果您有 扩展升级支持(EUS)、高级更新支持(AUS) 或 Update Services for SAP Solutions (E4S) 订阅,请添加
--channel < channel>
选项。将 <channel > 替换为您与leapp preupgrade
命令一起使用的值,如eus
、aus
或e4s
。请注意,您必须在leapp preupgrade
和leapp upgrade
命令中对--channel
选项使用同样的值。在升级过程开始时,
Leapp
会执行预升级阶段,如 检查预升级报告 中所述。如果系统是可升级的,
Leapp
会下载必要的数据,并为升级准备 RPM 事务。如果您的系统没有达到可靠的条件,
Leapp
会终止升级进程,并在/var/log/leapp/leapp-report.txt
文件中提供描述这个问题和推荐解决方案的记录。如需更多信息,请参阅 故障排除。手动重启系统:
# reboot
在这个阶段,系统会引导进入基于 RHEL 8 的初始 RAM 磁盘镜像 initramfs。
Leapp
升级所有软件包,然后自动重启到 RHEL 8 系统。另外,您可以使用
--reboot
选项输入leapp upgrade
命令并跳过这个手动步骤。如果发生故障,请按照故障排除中所述调查日志。
- 登录到 RHEL 8 系统并验证其状态, RHEL 8 系统升级后状态的验证中所述。
- 执行升级报告和升级后任务中描述的所有 升级后任务。特别是,重新检查并重新应用您的安全策略。
- 如果升级一个系统,并将以 FIPS 模式运行,请删除任何 RHEL 7 内核。然后,重新生成并确保所有加密密钥的 FIPS 合规性。如需更多信息 ,请参阅 RHEL 8 中的加密密钥位置。
第 6 章 验证 RHEL 8 系统升级后的状态
此流程列出了在升级到 RHEL 8 后建议执行的验证步骤。
先决条件
- 该系统已根据从 RHEL 7 升级到 RHEL 8 中的步骤进行了升级,并可登录到 RHEL 8。
流程
升级完成后,请确定系统是否处于所需状态,至少:
验证当前的 OS 版本是否为 Red Hat Enterprise Linux 8:
# cat /etc/redhat-release Red Hat Enterprise Linux release <target_os_version> (Ootpa)
将 target_os_version 替换为目标操作系统版本,如 8.6。
检查 OS 内核版本:
# uname -r 4.18.0-305.el<target_os>.x86_64
target_os 应该是
8
或目标操作系统版本,如8_6
。请注意,.el8
很重要,版本不应早于 4.18.0-305。如果您使用 Red Hat Subscription Manager:
验证是否安装了正确的产品:
# subscription-manager list --installed +-----------------------------------------+ Installed Product Status +-----------------------------------------+ Product Name: Red Hat Enterprise Linux for x86_64 Product ID: 479 Version: <target_os_version> Arch: x86_64 Status: Subscribed
将 target_os_version 替换为目标操作系统版本,如 8.6。
升级后,验证发行版本是否马上设置为目标操作系统版本:
# subscription-manager release Release: <target_os_version>
将 target_os_version 替换为目标操作系统版本,如 8.6。
- 例如,验证网络服务是否可操作,试着使用 SSH 连接到服务器。
- 检查应用程序的升级后状态。在某些情况下,您可能需要手动执行迁移和配置更改。例如,要迁移您的数据库,请按照 RHEL 8 数据库服务器文档中的说明操作。
第 7 章 执行升级后的任务
在原位升级到 RHEL 8 后,建议执行以下主要任务。
先决条件
- 您已 根据从 RHEL 7 升级到 RHEL 8 中描述的步骤进行了升级,并可登录到 RHEL 8。
- 您已按照 RHEL 8 系统升级后状态验证原位升级的状态验证。
流程
执行升级后,完成以下任务:
从
/etc/dnf/dnf.conf
配置文件中的排除列表中删除任何剩余的Leapp
软件包,包括snactor
软件包。在原位升级过程中,使用Leapp
工具安装的Leapp
软件包会自动添加到 排除列表中,以防止删除或更新重要的文件。原位升级后,您必须在从系统中删除它们之前,从排除列表中删除这些Leapp
软件包。-
要从排除列表中手动删除软件包,请编辑
/etc/dnf/dnf.conf
配置文件,并从exclude
列表中删除所需的Leapp
软件包。 从
exclude
列表中删除所有软件包:# yum config-manager --save --setopt exclude=''
-
要从排除列表中手动删除软件包,请编辑
删除剩余的 RHEL 7 软件包,包括剩余的
Leapp
软件包。确定旧的内核版本:
# cd /lib/modules && ls -d *.el7*
从旧内核中删除弱模块。如果您有多个旧内核,请对每个内核重复此步骤:
# [ -x /usr/sbin/weak-modules ] && /usr/sbin/weak-modules --remove-kernel <version>
将 <version> 替换为上一步中决定的内核版本,例如:
# [ -x /usr/sbin/weak-modules ] && /usr/sbin/weak-modules --remove-kernel 3.10.0-1160.25.1.el7.x86_64
注意忽略以下错误信息,如果内核包已被删除,就会产生这个错误信息:
/usr/sbin/weak-modules: line 1081: cd: /lib/modules/<version>/weak-updates: No such file or directory
从引导装载程序条目中删除旧内核。如果您有多个旧内核,请对每个内核重复此步骤:
# /bin/kernel-install remove <version> /lib/modules/<version>/vmlinuz
使用上一步中决定的内核版本替换 version,例如:
# /bin/kernel-install remove 3.10.0-1160.25.1.el7.x86_64 /lib/modules/3.10.0-1160.25.1.el7.x86_64/vmlinuz
找到剩余的 RHEL 7 软件包:
# rpm -qa | grep -e '\.el[67]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort
-
从 RHEL 8 系统中删除剩余的 RHEL 7 软件包,包括旧的内核软件包和
kernel-workaround
软件包。 删除剩余的
Leapp
依赖软件包:# yum remove leapp-deps-el8 leapp-repository-deps-el8
删除任何剩余的空目录:
# rm -r /lib/modules/*el7*
可选:从系统中删除所有与升级相关的数据:
# rm -rf /var/log/leapp /root/tmp_leapp_py3 /var/lib/leapp
重要删除这些数据可能会限制红帽支持在升级后调查并进行故障排除的能力。
禁用在 RHEL 8 中无法安装或使用软件包的 YUM 软件仓库。由 RHSM 管理的软件仓库会自动处理。禁用这些软件仓库:
# yum config-manager --set-disabled <repository_id>
将 <repository_id& gt; 替换为存储库 ID。
将旧的救援内核和初始 RAM 磁盘替换为当前的内核和磁盘:
删除现有救援内核和初始 RAM 磁盘:
# rm /boot/vmlinuz-*rescue* /boot/initramfs-*rescue*
重新安装救援内核和相关初始 RAM 磁盘:
# /usr/lib/kernel/install.d/51-dracut-rescue.install add "$(uname -r)" /boot "/boot/vmlinuz-$(uname -r)"
注意如果您的系统的内核软件包有不同的名称,比如实时系统上,请使用正确的软件包名称替换
kernel-core
。
- 重新检查并重新应用您的安全策略。特别是,需要将 SELinux 模式改为 enforcing。详情请参阅应用安全策略。
验证步骤
验证旧内核是否已从 bootloader 条目中删除:
# grubby --info=ALL | grep "\.el7" || echo "Old kernels are not present in the bootloader."
验证之前为当前内核创建了救援初始 RAM 磁盘文件:
# ls /boot/vmlinuz-*rescue* /boot/initramfs-*rescue* # lsinitrd /boot/initramfs-*rescue*.img | grep -qm1 "$(uname -r)/kernel/" && echo "OK" || echo "FAIL"
验证救援引导条目是否引用现有的救援文件。请参阅 grubby 输出:
# grubby --info $(ls /boot/vmlinuz-*rescue*)
第 8 章 应用安全策略
在原位升级过程中,必须禁用某些安全策略。RHEL 8 引进了系统范围加密策略的新概念,同时安全配置可能包含主要发行本之间的更改。本小节介绍了升级的 RHEL 系统的安全性的信息。
8.1. 将 SELinux 模式改为 enforcing
在原位升级过程中,Leapp
会将 SELinux 的模式设置为 permissive。当成功升级系统时,您必须手动将 SELinux 模式改为 enforcing。
先决条件
- 系统已被升级,并执行了 RHEL 8 系统升级后状态 中描述的验证步骤。
流程
确保没有 SELinux denials,例如,使用
ausearch
工具程序:# ausearch -m AVC,USER_AVC -ts boot
请注意,上一步只涵盖最常见的情况。要检查所有可能的 SELinux denials,请查看使用 SELinux 中的 识别 SELinux denials 部分。
在您选择的文本编辑器中打开
/etc/selinux/config
文件,例如:# vi /etc/selinux/config
配置
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
保存更改,重启系统:
# reboot
验证
系统重启后,确认
getenforce
命令返回Enforcing
:$ getenforce Enforcing
8.2. 设置系统范围的加密策略
系统范围的加密策略是一个系统组件,它配置核心加密子系统,包括 TLS、IPSec、SSH、DNSSec 和 Kerberos 协议。
在成功安装或原位升级后,系统范围的加密策略会自动设置为 DEFAULT
。DEFAULT
系统范围的加密政策级别为当前的威胁模型提供了安全设置。
要查看或更改当前系统范围的加密策略,请使用 update-crypto-policies 工具:
$ update-crypto-policies --show
DEFAULT
例如,以下命令可将系统范围内的加密策略切换到 FUTURE
,这样可防止任何近期可能出现的安全攻击:
# update-crypto-policies --set FUTURE
Setting system policy to FUTURE
您还可以自定义系统范围的加密策略。详情请参阅 使用 subpolicies 自定义系统范围的加密策略 和 创建并设置自定义系统范围的加密策略 部分。
其他资源
- 使用系统范围的加密策略
-
update-crypto-policies(8)
手册页。
8.3. 将强化的系统升级到安全基线
要在成功升级到 RHEL 8 后获得完全强化的系统,您可以使用 OpenSCAP 套件提供的自动化补救功能。OpenSCAP 修复使您的系统符合安全基线,如 PCI-DSS、OSPP 或 ACSC Essential Eight。由于安全产品的发展,配置合规性建议在 Red Hat Enterprise Linux 的主版本之间有所不同。
当升级一个强化的 RHEL 7 系统时,Leapp
工具 不 提供保持完整强化的直接方法。根据组件配置中的更改,该系统可能会在升级过程中偏离 RHEL 8 的建议。
您不能使用同样的 SCAP 内容来扫描 RHEL 7 和 RHEL 8。如果系统的合规性是由像 Red Hat Satellite 或 Red Hat Insights 这样的工具管理的,则更新管理平台。
作为自动化修复的替代方法,您可以按照 OpenSCAP 生成的报告手动进行更改。有关生成合规性报告的详情,请参考 扫描系统以了解安全合规和漏洞。
根据流程自动强化带有 PCI-DSS 配置文件的系统。
在默认配置中,自动化修复支持 RHEL 系统。因为安装后已更改了系统升级,因此运行修复可能无法使其完全遵从所需的安全配置文件。您可能需要手动修复一些要求。
先决条件
-
scap-security-guide
软件包安装在 RHEL 8 系统上。
流程
查找合适的安全合规数据流
.xml
文件:$ ls /usr/share/xml/scap/ssg/content/ ssg-firefox-cpe-dictionary.xml ssg-rhel6-ocil.xml ssg-firefox-cpe-oval.xml ssg-rhel6-oval.xml ... ssg-rhel6-ds-1.2.xml ssg-rhel8-oval.xml ssg-rhel8-ds.xml ssg-rhel8-xccdf.xml ...
如需更多信息,请参阅 查看合规性配置文件 章节。
根据从合适的数据流所选的配置文件来修复系统:
# oscap xccdf eval --profile pci-dss --remediate /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
您可以根据您要强化系统的配置文件的 ID 来替换
--profile
参数中的pci-dss
值。有关 RHEL 8 中所支持的配置文件的完整列表,请参阅 RHEL 中所支持的 SCAP 安全配置文件。警告如果没有谨慎使用,在启用 Remediate 选项的情况下运行系统评估可能会导致系统无法正常工作。红帽不提供任何自动的方法来恢复由强化安全的修复所做的更改。在 RHEL 系统上的默认配置中支持修复。如果在安装后更改了您的系统,运行修复可能无法使其遵守所需的安全配置文件。
重启您的系统:
# reboot
验证
验证系统是否遵从配置文件,并将结果保存到 HTML 文件中:
$ oscap xccdf eval --report pcidss_report.html --profile pci-dss /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
其他资源
-
scap-security-guide(8)
和oscap(8)
手册页 - 扫描系统以了解安全合规和漏洞
- Red Hat Insights 安全策略文档
- Red Hat Satellite 安全策略文档
第 9 章 故障排除
您可以参阅以下内容排除从 RHEL 7 升级到 RHEL 8 时出现的问题。
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
会阻止升级。问题示例:- 在 PAM 配置中禁用 pam_pkcs11 模块?
- 在 PAM 配置中禁用 pam_krb5 模块?
- 使用以下 authselect 调用来配置 PAM 和 nsswitch.conf?
-
请确定您解决了在预升级报告(位于
/var/log/leapp/leapp-report.txt
)中发现的所有问题。您也可以使用 web 控制台来达到此目的,如评估可升级性并通过 web 控制台应用自动化修复 中所述。
例 9.1. Leapp answerfile
以下是一个未编辑的 /var/log/leapp/answerfile
文件,它有一个未回答的问题:
[remove_pam_pkcs11_module_check] # Title: None # Reason: Confirmation # =================== remove_pam_pkcs11_module_check.confirm ================== # Label: Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted. # Description: PAM module pam_pkcs11 is no longer available in RHEL-8 since it was replaced by SSSD. # Type: bool # Default: None # Available choices: True/False # Unanswered question. Uncomment the following line with your answer # confirm =
Label
字段指定需要回答的问题。在这个示例中,问题是 Disable pam_pkcs11 module in PAM configuration?
要回答这个问题,请取消对 confirm
行的注释并输入 True
或 False
作为回答。在本例中,所选答案为 True
:
[remove_pam_pkcs11_module_check]
...
# 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 7 内核引导,重启系统并检查 GRUB 中默认条目的内核版本。
- 确保您遵循了 RHEL 8 系统升级后状态的验证中推荐的步骤。
如果您的应用程序或服务在您将 SELinux 切换到 enforcing 模式后停止工作或者行为不正确,请使用 ausearch, journalctl, 或 dmesg 检查拒绝:
# ausearch -m AVC,USER_AVC -ts boot # journalctl -t setroubleshoot # dmesg | grep -i -e selinux -e type=1400
最常见的问题是由错误的标记造成的。更多详情请参阅SELinux 故障排除。
9.3. 已知问题
从 RHEL 7 升级到 RHEL 8 时可能会遇到的已知问题。
- 在进行原位升级时,如果 Network Manager 被禁用或没有安装,则 network teaming 功能无法正常工作。
-
如果您使用 HTTP 代理,则必须将 Red Hat Subscription Manager 配置为使用代理服务器,或在执行
subscription-manager
命令时使用--proxy <hostname>
选项 。否则,subscription-manager
命令的执行会失败。如果您使用--proxy
选项而不是配置更改,升级过程会失败,因为Leapp
无法检测到代理。要防止这个问题发生,请手动编辑rhsm.conf
文件,如 How to configure HTTP Proxy for Red Hat Subscription Management 所述。(BZ#1689294)
-
如果您的 RHEL 7 系统使用由红帽提供但在 RHEL 8 中不可用的设备驱动程序,
Leapp
将会限制升级。但是,如果 RHEL 7 系统使用了第三方设备驱动程序,而Leapp
在/etc/leapp/files/device_driver_deprecation_data.json
文件中没有数据,则Leapp
不会检测这样的驱动程序并进行升级。然后,该系统可能会在升级后无法引导。
如果在
/etc/nsswitch.conf
文件中使用了winbind
和wins
Samba 模块,则不能执行原位升级。升级事务失败并显示以下出错信息,Lapp
会阻止升级:upgrade[469]: STDERR: upgrade[469]: Error in PREIN scriptlet in rpm package unbound-libs upgrade[469]: Error: Transaction failed upgrade[469]: Container el8userspace failed with error code 1. unbound-libs has a PREIN failure
要临时解决这个问题,请配置系统以便在更新的过程中只使用本地供应商的
user
,groups
, 和hosts
数据库。-
打开系统
/etc/nsswitch.conf
配置文件并搜索包含winbind
或者wins
字符串的条目。 -
如果您找到这样的条目,请创建一个
/etc/nsswitch.conf
的备份。 -
编辑
/etc/nsswitch.conf
并从包含它们的条目中删除winbind
或者wins
。 - 执行原位升级。
升级后,根据您的系统配置要求,将
winbind
和wins
字符串添加到/etc/nsswitch.conf
中的条目中。(BZ#1410154)
-
打开系统
Leapp
实用程序不会在升级过程中更改自定义验证配置。如果您使用已弃用的authconfig
工具在 RHEL 7 系统中配置身份验证,则 RHEL 8 的身份验证可能无法正常工作。要确保您的自定义配置在 RHEL 8 系统中正常工作,请使用authselect
程序重新配置您的 RHEL 8 系统。重要在原位升级过程中,删除已弃用的
pam_krb5
或pam_pkcs11
可插拔验证模块 (PAM)。因此,如果 RHEL 7 系统上的 PAM 配置包含pam_krb5
或pam_pkcs11
模块,如果这些模块具有required
或requisite
控制值,则如果执行原位升级,则您可能会被锁在系统之外。要临时解决这个问题,请在开始升级前将您的 RHEL 7 系统配置为不使用pam_krb5
或者pam_pkcs11
。
如果系统上安装的第三方软件包(不是红帽签名的)的名称与红帽提供的软件包名称相同,则原位升级会失败。要临时解决这个问题,请在升级前选择以下选项之一:
- 删除第三方软件包
- 使用红帽提供的软件包替换第三方软件包
为了安全起见,已从 RHEL 8 中删除了对 single-DES (DES)和 triple-DES (3DES)加密类型的支持。RHEL 7 Identity Management(IdM)仍支持 3DES 加密。
有可能升级 IdM 客户端或将整个 IdM 环境从 RHEL 7 迁移到 RHEL 8,因为两个 RHEL 版本都首选更强大的 AES 加密类型:IdM 的版本 默认加密类型 其他支持的加密类型 RHEL 7
aes256-cts
aes128-cts
camellia256-cts
camellia128-cts
des3-hmac
arcfour-hmac
RHEL 8
aes256-cts
aes128-cts
aes256-sha2
aes128-sha2
camellia256-cts
camellia128-cts
arcfour-hmac
[a][a] RHEL 8 中默认弃用并禁用了 RC4 加密,因为它被视为不如较新的 AES-128 和 AES-256 加密类型安全。有关启用对与传统活动目录环境兼容的 RC4 支持的更多信息,请参阅 确保 AD 和 RHEL 中对通用加密类型的支持。如果您手动配置了一个非 IdM Kerberos 发行中心(KDC)、任何服务或任何用户为只使用 DES 或 3DES 加密的用户,您可能会在升级到 RHEL 8 中最新 Kerberos 软件包后遇到服务中断,例如:
- Kerberos 验证错误
-
unknown enctype
加密错误 -
带有 DES 加密数据库主密钥 (
K/M
) 的 KDC 无法启动
红帽建议不要在您的环境中使用 DES 或者 3DES 加密。有关重新加密 Kerberos 主体以使用更强大的加密类型的更多信息,请参阅 MIT Kerberos 文档中的 退出 DES。
- 在带有软件冗余磁盘阵列(RAID)的系统中,原位升级可能会失败。(BZ#1957192)
- 禁用 GRUB 引导装载程序规格的系统(如使用 Puppet 的系统)无法为较新的内核创建新的 initramfs。要临时解决这个问题,请从引导装载程序条目中手动删除软件包和旧内核,如 第 6 章:执行升级后的任务 中所述。(BZ#1955099)
- IBM Z 构架中没有 Relax-and-Recover (ReaR) 程序。因此,IBM Z 系统无法完全由 OpenSCAP 套件修复,且可能无法与安全基准完全兼容。(BZ#1958939)
在原位升级过程中,
Leapp
工具通常会保留 RHEL 7 和 RHEL 8 之间的网络接口控制器(NIC)名称。但是,在某些系统中,如带有网络绑定的系统,NIC 名称需要在 RHEL 7 和 RHEL 8 之间更新。在这些系统中,执行以下步骤:-
设置
LEAPP_NO_NETWORK_RENAMING=1
环境变量,以防止Leapp
工具错误地保留原始 RHEL 7 NIC 名称。 - 执行原位升级。
验证您的网络是否正常工作。如果需要,请手动更新网络配置。
(BZ#1919382)
-
设置
如果您的系统使用 BIOS 启动,如果引导磁盘的嵌入区域不包含内核镜像安装的足够空间,则升级 GRUB2 引导装载程序会失败。这会导致系统中断,在手动分区磁盘时可能会出现,例如使用 RHEL 6
fdisk
工具。要验证这个问题是否会影响您,请执行以下步骤:确定哪个扇区使用安装的引导装载程序在磁盘中启动第一个分区:
# fdisk -l
标准分区(确保内核镜像有足够的空间)从扇区 2048 开始。
确定启动扇区是否有足够的空间。RHEL 8 核心镜像至少需要 32 KiB。例如,如果扇区大小为标准 512 字节,则从扇区 66 或较低开始不会提供足够的空间。
注意RHEL 8 核心镜像可能大于 32 KiB,需要更高的启动扇区。始终验证当前 RHEL 8 内核所需的空间。
如果嵌入区域不包含足够的存储空间,请执行全新的 RHEL 8 系统安装,而不是执行原位升级。
(BZ#2181380)
原位升级后,如果系统满足以下条件,则 SSH 密钥将不再自动生成:
- 系统处于云上。
- 已安装 cloud-init 软件包。
ssh_genkeytypes 配置在 /etc/cloud/cloud.cfg 文件中被设置为 ~,这是默认设置。
如果删除了原始密钥,则系统无法使用 SSH 连接。要防止这个问题,在 将模板升级到 RHEL 8.7 或 9 知识库解决方案后,请参阅 Unable to SSH to new Virtual Machine。(BZ#2210012)
- 在硬件级别 13 时创建的 VMware 虚拟机并在升级过程中使用 UEFI 引导可能会遇到问题,因为 NVRAM 文件太小。有关此问题以及如何解决问题的更多信息,请参阅 VMWare: Getting "No space left on device" when perform efibootmgr 或 mokutil 命令来添加条目。(RHEL-3362)
-
如果您使用带有 ISO 镜像的 RHUI 升级,升级可能会失败。您不能将
--iso
选项与升级搭配使用,或者 按照使用 ISO 离线 Leapp 升级中的说明进行操作,并带有 "Failed to synchronize cache for repo 'rhul-microsoft-azure-rhel8',忽略这个 repo。(RHEL-3296)
9.4. 获取支持
要创建一个支持问题单,请选择 RHEL 7 作为产品,并提供您系统的 sosreport
。
-
要在您的系统中生成
sosreport
,请运行:
# sosreport
请注意:您可以将问题单 ID 留空。
有关生成 sosreport 的详情,请参阅 What is an sosreport and how to create one in Red Hat Enterprise Linux?。
有关在客户门户网站中提交和管理支持问题单的更多信息,请参阅 How do I open and manage a case on the Customer Portal?。
第 10 章 相关信息
您可以参考以下说明:
- 升级 Red Hat Enterprise Linux 基础架构
- Red Hat Enterprise Linux 的技术功能及限制
- 支持的 Red Hat Enterprise Linux 原位升级路径
- 使用 RHEL 8 时的注意事项
- 定制 Red Hat Enterprise Linux 原位升级
- 自动执行 Red Hat Enterprise Linux 预升级报告工作流
- 使用配置管理系统在 Red Hat Enterprise Linux 上自动化部分 Leapp 预升级和升级过程
- 从 RHEL 6 升级至 RHEL 7
- 从 RHEL 6 升级至 RHEL 8
- 从基于 RPM 的 Linux 发行版转换到 RHEL
- 在 Red Hat Satellite 中将主机从 RHEL 7 升级到 RHEL 8
- 如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8
- Red Hat Insights 文档
- 升级相关的知识库文章和解决方案
- 使用 Leapp 执行 RHEL 升级的最佳实践和建议
- Leapp 升级常见问题解答(常见问题)
附录 A. RHEL 7 软件仓库
在升级前,确定您启用了合适的软件仓库,如 为升级准备 RHEL 7 系统 流程中的第 4 步所述。
如果您计划在升级过程中使用 Red Hat Subscription Manager,您 需要在升级前使用 subscription-manager repos --enable repository_id
命令启用以下软件仓库:
构架 | 软件仓库 | 仓库 ID |
---|---|---|
64-bit Intel | Base |
|
Extras |
| |
IBM POWER8 (little endian) | Base |
|
Extras |
| |
IBM Z | Base |
|
Extras |
|
升级前,可以使用 subscription-manager repos --enable repoid
命令启用以下仓库:
构架 | 软件仓库 | 仓库 ID |
---|---|---|
64-bit Intel | Optional |
|
Supplementary |
| |
IBM POWER8 (little endian) | Optional |
|
Supplementary |
| |
IBM Z | Optional |
|
Supplementary |
|
如果您在原位升级前已经启用了 RHEL 7 Optional 或 RHEL 7 Supplementary 软件仓库, Leapp
会相应地启用 RHEL 8 CodeReady Linux Builder 或 RHEL 8 软件仓库。
如果您决定使用自定义软件仓库,请根据配置自定义软件仓库中的内容启用它们。
附录 B. RHEL 8 软件仓库
如果您的系统使用 Red Hat Subscription Manager(RHSM)注册到 Red Hat Content Delivery Network(CDN),则 RHEL 8 软件仓库会在原位升级过程中自动启用。但是,在使用 RHSM 注册到 Red Hat Satellite 的系统上,您必须在运行预升级报告前手动启用和同步 RHEL 7 和 RHEL 8 软件仓库。
确保启用每个软件仓库的目标操作系统(OS)版本,如 RHEL 8.6。如果您只启用了 RHEL 8 版本的软件仓库,则会禁止原位升级。
如果您计划在升级过程中使用 Red Hat Satellite,在使用 Satellite Web UI 或 hammer repository-set enable
以及 hammer product synchronize
命令进行升级之前,您 必须启用并同步 以下 RHEL 8 存储库:
将 <target_os_version > 替换为目标操作系统(OS)版本,如 8.6。
表 B.1. RHEL 8 软件仓库
架构 | 软件仓库 | 仓库 ID | 仓库名称 | 发行版本 |
---|---|---|---|---|
64 位 Intel | BaseOS |
| Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) | x86_64 <target_os_version> |
AppStream |
| Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) | x86_64 <target_os_version> | |
IBM Power8 (little endian) | BaseOS |
| Red Hat Enterprise Linux 8 for Power, little endian - BaseOS(RPMs) | ppc64le <target_os_version> |
AppStream |
| Red Hat Enterprise Linux 8 for Power, little endian - AppStream(RPMs) | ppc64le <target_os_version> | |
IBM Z | BaseOS |
| Red Hat Enterprise Linux 8 for IBM z Systems - BaseOS(RPMs) | s390x <target_os_version> |
AppStream |
| Red Hat Enterprise Linux 8 for IBM z Systems - AppStream (RPMs) | s390x <target_os_version> |
附录 C. RHEL 8 中加密密钥的位置
升级在联邦信息处理标准(FIPS)模式下运行的系统后,您必须重新生成,并确保所有加密密钥的 FIPS 合规性。下表中列出了此类密钥的一些已知位置。请注意,该列表没有完成,您也可以检查其他位置。
表 C.1. RHEL 8 中加密密钥的位置
Application(应用程序) | 密钥位置 | 备注 |
---|---|---|
Apache mod_ssl |
|
如果 |
Bind9 RNDC |
|
|
Cyrus IMAPd |
|
|
DNSSEC-Trigger |
|
|
Dovecot |
|
|
OpenPegasus |
|
|
OpenSSH |
|
Ed25519 和 DSA 密钥不兼容 FIPS。 |
Postfix |
|
|
RHEL web 控制台 |
|
Web 控制台运行 |
sendmail |
|
|
要确保对第三方应用程序的加密密钥的 FIPS 合规性,请参阅相应应用程序的对应文档。另外:
打开端口的任何服务都可以使用 TLS 证书。
- 并非所有服务都会自动生成加密密钥,但许多默认自动启动的服务通常会这样做。
- 还侧重于使用任何加密库的服务,如 NSS、GnuTLS、OpenSSL 和 libgcrypt。
- 也检查备份、disk-encryption、file-encryption 和类似的应用程序。
因为 RHEL 8 中的 FIPS 模式限制 DSA 密钥、DH 参数、小于 1024 位的 RSA 密钥以及其它密码,所以旧的加密密钥在从 RHEL 7 升级后停止工作。如需更多信息,请参阅采用 RHEL 8 的注意事项文档中的 核心加密组件中的变化 部分和 RHEL 8 安全强化文档中的 使用系统范围的加密策略 一章。
其他资源
- 在 RHEL 8 安全强化文档中将系统切换到 FIPS 模式
-
update-crypto-policies (8)
和fips-mode-setup (8)
man page