8.10 发行注记
Red Hat Enterprise Linux 8.10 发行注记
摘要
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 单击顶部导航栏中的 Create。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 概述
1.1. RHEL 8.10 中的主要变化
安装程序和镜像创建
RHEL 镜像构建器的主要亮点:
-
您可以创建不同的分区模式,如
auto-lvm
、lvm
和raw
。 - 您可以使用所选的和未选的选项来为配置文件自定义定制选项,并将其添加到蓝图自定义中,以添加和删除规则。
如需更多信息,请参阅 新功能 - 安装程序和镜像创建。
安全性
SCAP 安全指南 0.1.72 包含更新的 CIS 配置文件、与 PCI DSS 策略版本 4.0 一致的配置文件,以及最新 DISA STIG 策略的配置文件。
Linux 内核加密 API (libkcapi) 1.4.0 引入了新的工具和选项。值得注意的是,使用新的 -T
选项,您可以在哈希-和计算中指定目标文件名。
stunnel TLS/SSL 隧道服务 5.71 更改了 FIPS 模式下 OpenSSL 1.1 及更新版本的行为。除了这个更改外,版本 5.71 还提供了许多新功能,如支持现代 PostgreSQL 客户端。
OpenSSL TLS 工具包现在包含对 RSA PKCS #1 v1.5 解密过程的类似 Bleichenbacher 攻击的 API 级别的保护。
如需更多信息,请参阅 新功能 - 安全性。
动态编程语言、网页和数据库服务器
以下应用程序流的后续版本现在可用:
- Python 3.12
- Ruby 3.3
- PHP 8.2
- nginx 1.24
- MariaDB 10.11
- PostgreSQL 16
以下组件已升级:
- Git 升级到版本 2.43.0
- Git LFS 升级到版本 3.4.1
如需更多信息,请参阅 新功能 - 动态编程语言、Web 和数据库服务器。
身份管理
RHEL 8.10 中的身份管理(IdM)引入了将用户身份验证委派给支持 OAuth 2 设备授权流的外部身份提供方(IdP)。现在,这是一个完全支持的功能。
在外部 IdP 执行身份验证和授权后,IdM 用户会收到一个具有单点登录功能的 Kerberos 票据。
如需更多信息,请参阅 新功能 - 身份管理
容器
主要变更包括:
-
用于创建多架构容器镜像的
podman farm build
命令作为技术预览提供。 -
Podman 现在支持
containers.conf
模块,来加载一组预先确定的配置。 - Container Tools 软件包已更新。
- Podman v4.9 RESTful API 现在在拉取或将镜像推送到注册中心时显示进度数据。
- SQLite 现在作为 Podman 的默认数据库后端被完全支持。
-
Containerfile
现在支持多行 HereDoc 指令。 -
pasta
作为网络名称已弃用。 - BoltDB 数据库后端已被弃用。
-
container-tools:4.0
模块已弃用。 - Container Network Interface (CNI)网络堆栈已弃用,并将在以后的发行版本中删除。
如需更多信息,请参阅 新功能 - 容器。
1.2. 原位升级和操作系统转换
RHEL 7 原位升级到 RHEL 8
目前可能的原位升级路径是:
- 在 64 位 Intel、IBM POWER 8 (little endian)和 IBM Z 构架上,从 RHEL 7.9 升级到 RHEL 8.8 和 RHEL 8.10
- 在 64 位 Intel 构架上带有 SAP HANA 的系统上,从 RHEL 7.9 升级到 RHEL 8.8 和 RHEL 8.10。
如需更多信息,请参阅支持的 Red Hat Enterprise Linux 原位升级路径。
有关执行原位升级的步骤,请参阅 从 RHEL 7 升级到 RHEL 8。
有关在带有 SAP 环境的系统上执行原位升级的说明,请参阅 如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8。
有关红帽如何支持原位升级过程的详情,请查看 原位升级支持策略。
主要改进包括:
-
已实现了新的逻辑,以确定升级后
systemd
服务的期望的状态。 - 本地存储的 DNF 存储库现在可用于原位升级。
- 您现在可以配置 DNF ,以能够使用代理进行升级。
- 使用 HTTPS 访问的自定义 DNF 存储库执行原位升级的问题已修复。
-
如果已修改了
/etc/pki/tls/openssl.cnf
配置文件,则该文件现在在升级过程中被目标默认 OpenSSL 配置文件替代,以防止升级后出现问题。如需更多信息,请参阅预升级报告。
从 RHEL 6 原位升级到 RHEL 8
不可能直接执行从 RHEL 6 到 RHEL 8 的原位升级。但是,您可以执行从 RHEL 6 到 RHEL 7 的原位升级,然后执行到 RHEL 8 的第二个原位升级。如需更多信息,请参阅 从 RHEL 6 升级到 RHEL 7。
从 RHEL 8 原位升级到 RHEL 9
文档 从 RHEL 8 升级到 RHEL 9 中提供了有关如何使用 Leapp 工具执行从 RHEL 8 原位升级到 RHEL 9 的说明。RHEL 8 和 RHEL 9 的主要区别记录在 采用 RHEL 9 时的注意事项 中。
从不同的 Linux 发行版转换到 RHEL
如果您使用 Alma Linux 8、CentOS Linux 8、Oracle Linux 8 或 Rocky Linux 8,您可以使用红帽支持的 Convert2RHEL
工具将操作系统转换为 RHEL 8。如需更多信息,请参阅从基于 RPM 的 Linux 发行版转换到 RHEL。
如果您使用 CentOS Linux 7 或 Oracle Linux 7,您可以将操作系统转换为 RHEL,然后执行到 RHEL 8 的原位升级。
有关红帽如何支持从其他 Linux 发行本转换到 RHEL 的详情,请参考 Convert2RHEL 支持政策文档。
1.3. 红帽客户门户网站 Labs
红帽客户门户网站 Labs 是客户门户网站的一个部分中的一组工具,地址为 https://access.redhat.com/labs/。红帽客户门户网站 Labs 中的应用程序可帮助您提高性能、快速解决问题、发现安全问题以及快速部署和配置复杂应用程序。一些最常用的应用程序有:
- Registration Assistant
- Product Life Cycle Checker
- Kickstart Generator
- Kickstart Converter
- Red Hat Enterprise Linux Upgrade Helper
- Red Hat Satellite Upgrade Helper
- Red Hat Code Browser
- JVM Options Configuration Tool
- Red Hat CVE Checker
- Red Hat Product Certificates
- Load Balancer Configuration Tool
- Yum Repository Configuration Helper
- Red Hat Memory Analyzer
- Kernel Oops Analyzer
- Red Hat Product Errata Advisory Checker
1.4. 其它资源
- 与其他版本系统相比, Red Hat Enterprise Linux 8 的能力和限制可在知识库文章Red Hat Enterprise Linux 技术能力和限制 中获得。
- 有关 Red Hat Enterprise Linux 生命周期 的详情请查看 Red Hat Enterprise Linux 生命周期文档。
- 软件包清单文档 为 RHEL 8 提供软件包列表。
- RHEL 7 和 RHEL 8 间的主要区别(包括删除的功能)记录在 采用RHEL 8 时的注意事项。
- 有关如何从 RHEL 7 原位升级到 RHEL 8 的说明,请参阅 从 RHEL 7 升级到 RHEL 8 的文档。
- Red Hat Insights 服务可让您主动发现、检查并解决已知的技术问题,所有 RHEL 订阅都可以使用它。有关如何安装 Red Hat Insights 客户端并将您的系统注册到该服务的说明,请查看 Red Hat Insights 入门页面。
发行注记包括访问原始跟踪票据的链接。私有票据没有链接,取而代之的是这个脚注。[1]
第 2 章 构架
Red Hat Enterprise Linux 8.10 与内核版本 4.18.0-553 一起分发,它提供对以下构架的支持:
- AMD 和 Intel 64 位构架
- 64 位 ARM 架构
- IBM Power Systems, Little Endian
- 64-bit IBM Z
请确定为每个构架购买正确的订阅。如需更多信息,请参阅 Red Hat Enterprise Linux 入门 - 附加构架。有关可用订阅列表,请查看客户门户网站中的 订阅使用。
第 3 章 RHEL 8 中的内容发布
3.1. 安装
Red Hat Enterprise Linux 8 使用 ISO 镜像安装。AMD64、Intel 64 位、64 位 ARM、IBM Power Systems 和 IBM Z 架构有两种类型的 ISO 镜像:
二进制 DVD ISO:包含 BaseOS 和 AppStream 软件仓库的完整安装镜像,并允许您在没有附加软件仓库的情况下完成安装。
注意安装 ISO 镜像的大小为几个 GB,因此可能不适用于光盘介质格式。当使用安装 ISO 镜像时,建议使用 USB 盘或 USB 硬盘驱动器创建可引导安装介质。您还可以使用 Image Builder 工具创建自定义的 RHEL 镜像。有关镜像构建器的更多信息,请参阅 编写自定义的 RHEL 系统镜像文档。
- 引导 ISO:用来引导到安装程序的最小引导 ISO 镜像。这个选项需要访问 BaseOS 和 AppStream 软件仓库来安装软件包。软件仓库是二进制 DVD ISO 镜像的一部分。
有关下载 ISO 镜像、创建安装介质和完成 RHEL 安装的说明,请参阅 执行标准的 RHEL 8 安装 文档。有关自动的 Kickstart 安装和其他高级主题,请参阅 执行高级的 RHEL 8 安装 文档。
3.2. 软件仓库
Red Hat Enterprise Linux 8 由两个主要软件仓库发布:
- BaseOS
- AppStream
两个软件仓库都需要一个基本的 RHEL 安装,所有 RHEL 订阅都包括它们。
BaseOS 仓库的内容旨在提供底层操作系统功能的核心组件,为所有安装提供基础操作系统的基础。这部分内容采用 RPM 格式,它的支持条款与之前的 RHEL 版本相似。有关通过 BaseOS 发布的软件包的列表,请查看 软件包清单。
Application Stream 仓库的内容包括额外的用户空间应用程序、运行时语言和数据库来支持各种工作负载和使用案例。Application Streams(应用程序流)以熟悉的 RPM 格式,作为RPM 格式的扩展,名为 模块(modules),或作为 Software Collections(软件集合)。有关 AppStream 中可用软件包的列表,请查看 软件包清单。
另外,所有 RHEL 订阅都可以使用 CodeReady Linux Builder 软件仓库。它为开发人员提供了额外的软件包。不支持包括在 CodeReady Linux Builder 存储库中的软件包。
有关 RHEL 8 软件仓库的详情,请查看 软件包清单。
3.3. 应用程序流
Red Hat Enterprise Linux 8 引进了应用程序流(Application Streams)的概念。现在,用户空间组件多个版本的交付和更新比核心操作系统软件包更频繁。应用程序流为用户提供了,在不影响底层平台或特定部署的稳定性的情况下,对 Red Hat Enterprise Linux 进行定制的更大的灵活性。
作为 Application Streams 提供的组件可打包为模块(module)或 RPM 软件包,并通过 RHEL 8 中的 AppStream 软件仓库提供。每个 Application Stream 组件都有其特定的生命周期,可能和 RHEL 8 的生命周期相同或更短。详情请查看 Red Hat Enterprise Linux 生命周期。
模块是代表逻辑单元的软件包集合: 应用程序、语言堆栈、数据库或一组工具。这些软件包被一同构建、测试并发布。
模块流代表 Application Stream 组件的版本。例如,PostgreSQL 数据库服务器的几个流(版本)在带有默认的 postgresql:10
流的 postgresql
模块中提供。在系统中只能安装 一 个模块流。不同的容器可以使用不同的版本。
详细的模块命令,请参考 安装、管理和删除用户空间组件文档。有关 AppStream 中可用模块列表,请查看 软件包清单。
3.4. 使用 YUM/DNF 的软件包管理
在 Red Hat Enterprise Linux 8 上,安装软件是由 YUM 工具来保证的,该工具基于 DNF 技术。我们有意坚持使用 yum
术语,以便与以前的 RHEL 主版本保持一致。但是,如果您输入 dnf
而不是 yum
,则命令可以按预期工作,因为 yum
是 dnf
的别名,以便兼容。
如需了解更多详细信息,请参阅以下文档:
第 4 章 新功能
这部分论述了 Red Hat Enterprise Linux 8.10 中引入的新功能和主要改进。
4.1. 安装程序和镜像创建
能够对蓝图文件系统自定义使用分区模式
有了此更新,在使用 RHEL 镜像构建器时,您可以使用所选的文件系统定制自定义蓝图。您可以在创建镜像时选择以下分区模式之一:
-
默认:
auto-lvm
- LVM:镜像使用逻辑卷管理器(LVM),即使没有额外的分区
- raw :镜像使用原始分区,即使有额外的分区
Jira:RHELDOCS-16337[1]
镜像构建器中的文件系统自定义策略更改
当在蓝图中使用 RHEL 镜像构建器文件系统自定义时,会有以下策略更改:
目前,可以设置 mountpoint
和最小分区 minsize
。以下镜像类型不支持文件系统自定义:image-installer
edge-installer
edge-simplified-installer
,以下镜像类型不创建已分区的操作系统镜像自定义其文件系统无意义:edge-commit
edge-container
tar
container
。蓝图现在支持 tpm
及其子目录的 mountpoint
自定义。
Jira:RHELDOCS-17261[1]
4.2. 安全性
SCAP 安全指南 rebase 到 0.1.72
SCAP 安全指南(SSG)软件包已 rebase 到上游版本 0.1.72。此版本提供了bug 修正和各种改进,最重要的是:
- CIS 配置文件已被更新为与最新的基准一致。
- PCI DSS 配置文件与 PCI DSS 策略版本 4.0 一致。
- STIG 配置文件与最新的 DISA STIG 策略一致。
如需更多信息,请参阅 SCAP 安全指南发行注记。
Jira:RHEL-25250[1]
OpenSSL 现在包含针对类似 Bleichenbacher 的攻击的保护
这个 OpenSSL TLS 工具包发行版本引入了类似对 RSA PKCS #1 v1.5 解密过程的 Bleichenbacher 攻击的保护。如果 RSA 解密在 PKCS #1 v1.5 解密过程中检测到一个错误,则它现在返回一个随机生成的确定性消息,而不是一个错误。这个变化提供了对漏洞的通用保护,如 CVE-2020-25659 和 CVE-2020-25657。
您可以通过对 RSA 解密上下文调用 EVP_PKEY_CTX_ctrl_str (ctx, "rsa_pkcs1_implicit_rejection"."0")
函数来禁用这个保护,但这会使您的系统更易受攻击。
Jira:RHEL-17689[1]
librdkafka
rebase 到 1.6.1
Apache Kafka 协议的 librdkafka
实现已 rebase 到上游版本 1.6.1。这是 RHEL 8 的第一个主功能发行版本。rebase 提供了很多重要的改进和 bug 修复。对于所有相关更改,请参阅 librdkafka
软件包中提供的 CHANGELOG.md
文档。
此更新更改了配置默认值,并弃用了一些配置属性。如需更多详细信息,请参阅 CHANGELOG.md
中的升级注意事项部分。此版本中的 API (C 和 C++)和 ABI © 与旧版本的 librdkafka
兼容,但一些对配置属性的更改可能需要对现有应用程序进行更改。
Jira:RHEL-12892[1]
libkcapi
rebase 到 1.4.0
提供对 Linux 内核加密 API 访问的 libkcapi
库已 rebase 到上游版本 1.4.0。更新包括各种改进和 bug 修复,最重要的是:
-
添加了
sm3sum
和sm3hmac
工具。 -
添加了
kcapi_md_sm3
和kcapi_md_hmac_sm3
API。 - 添加了 SM4 方便功能。
- 修复了对链接时间优化(LTO)的支持。
- 修复了 LTO 回归测试。
-
修复了对任意大小的
kcapi-enc
的 AEAD 加密的支持。
Jira:RHEL-5366[1]
stunnel
rebase 到 5.71
stunnel
TLS/SSL 隧道服务已 rebase 到上游版本 5.71。此更新更改了 FIPS 模式下 OpenSSL 1.1 及更新版本的行为。如果 OpenSSL 在 FIPS 模式下,且 stunnel
默认 FIPS 配置被设置为 no
,则 stunnel
适应 OpenSSL ,且 FIPS 模式被启用。
其他新功能包括:
- 添加了对现代 PostgreSQL 客户端的支持。
-
您可以使用
protocolHeader
服务级选项来插入自定义的connect
协议协商标头。 -
您可以使用
protocolHost
选项控制客户端 SMTP 协议协商 HELO/EHLO 值。 -
添加了对客户端
protocol = ldap
的客户端支持。 -
现在,您可以使用服务级
sessionResume
选项配置会话恢复。 -
添加了服务器模式下使用
CApath
请求客户端证书的支持(以前,只支持使用CAfile
)。 - 改进了文件读和日志记录性能。
-
添加了对
retry
选项的可配置延迟的支持。 -
在客户端模式下,当设置了
verifyChain
时,请求和验证 OCSP 装订。 - 在服务器模式下,始终提供 OCSP 装订。
-
不确定的 OCSP 验证会破坏 TLS 协商。您可以通过设置
OCSPrequire = no
来禁用它。
Jira:RHEL-2340[1]
OpenSSH 限制身份验证中的人工延迟
登录失败后 OpenSSH 的响应被人工延迟,以防止用户枚举攻击。此更新引入了一个上限,以便在远程身份验证用时很长(例如在特权访问管理(PAM)处理中)时,这种人工延迟不会过长。
libkcapi
现在提供了一个用于在哈希-和计算中指定目标文件名的选项
这个 libkcapi
(Linux 内核加密 API)软件包的更新引进了新选项 -T
,用于在哈希-和计算中指定目标文件名。此选项的值覆盖处理后的 HMAC 文件中指定的文件名。您只能通过 -c
选项使用这个选项,例如:
$ sha256hmac -c <hmac_file> -T <target_file>
Jira:RHEL-15300[1]
audit
rebase 到 3.1.2
Linux Audit 系统已更新至版本 3.1.2,与之前发布的版本 3.0.7 相比,它提供了 bug 修复、功能增强和性能改进。主要改进包括:
-
auparse
库现在解释未命名的和匿名的套接字。 -
您可以在
ausearch
和aureport
工具的start
和end
选项中使用新关键字this-hour
。 -
在
auditctl
程序中添加了用于信号的用户友好的关键字。 -
改进了对
auparse
中损坏的日志的处理。 -
现在,
ProtectControlGroups
选项在auditd
服务中默认被禁用。 - 对 exclude 过滤器的规则检查已修复。
-
OPENAT2
字段的解释已改进。 -
audispd af_unix
插件已移到独立的程序。 - Python 绑定已被修改,以防止从 Python API 设置审计规则。这个更改是由于 Simplified Wrapper 和 Interface Generator (SWIG)中的一个 bug 而做的。
Jira:RHEL-15001[1]
4.3. Shell 和命令行工具
openCryptoki
rebase 到版本 3.22.0
opencryptoki
软件包已更新至版本 3.22.0。主要变更包括:
-
使用
CPACF
保护的密钥添加了对AES-XTS
密钥类型的支持。 - 添加了对管理证书对象的支持。
-
添加了对使用
no-login
选项的公共会话的支持。 - 添加了对以 Security Officer (SO)身份登录的支持。
-
添加了对导入和导出
Edwards
和Montgomery
密钥的支持。 -
添加了对导入
RSA-PSS
密钥和证书的支持。 - 为安全起见,AES-XTS 密钥的两个密钥部分不应相同。此更新增加了对密钥生成和导入过程的检查,以确保这一点。
- 实施了各种 bug 修复。
Jira:RHEL-11413[1]
4.4. 基础架构服务
chrony
rebase 到版本 4.5
chrony
套件已更新至版本 4.5。主要变更包括:
-
添加了由 hostname 指定的网络时间协议(NTP)源的定期刷新。默认间隔为两周,可以通过向
chrony.conf
文件中添加refresh 0
来禁用它。 - 改进了自动替换无法访问的 NTP 源。
-
改进了
chronyc
工具所做的重要更改的日志记录。 - 改进了源选择失败和 falsetickers 的日志记录。
-
添加了
hwtstimeout
指令,来为延迟硬件传输时间戳配置超时时间。 - 添加了对 Precision Time Protocol (PTP)透明时钟提供的修正的实验性支持,以达到具有硬件时间戳的 PTP 的精度。
-
修复了
interleaved
下的presend
选项。 -
修复了从
sourcedir
目录中重新载入由 IP 地址指定的修改源。
linuxptp
rebase 到版本 4.2
linuxptp
协议已更新至版本 4.2。主要变更包括:
-
添加了对
phc2sys
工具中多个域的支持。 - 添加了对时钟更新以及 Precision Time Protocol (PTP)父数据集中通知的支持,如 clock 类。
- 添加了对 PTP Power Profile 的支持,即 IEEE C37.238-2011 和 IEEE C37.238-2017。
Jira:RHEL-21326[1]
4.5. 网络
firewalld
现在避免不必要的防火墙规则刷新
如果以下两个条件都满足,firewalld
服务不会从 iptables
配置中删除所有现有的规则:
-
firewalld
使用nftables
后端。 -
没有使用
--direct
选项创建的防火墙规则。
这个变化旨在减少不必要的操作(防火墙规则刷新),并改进了与其他软件的集成。
ss
工具向 TCP 绑定的非活动套接字添加了可见性改进
iproute2
套件提供了控制 TCP/IP 网络流量的工具集。TCP 绑定的非活动套接字附加到 IP 地址和端口号,但不连接或侦听 TCP 端口。套接字服务(ss
)工具添加了对内核的支持,以转储 TCP 绑定的非活动套接字。您可以使用以下命令选项查看这些套接字:
-
ss --all
: 转储包括 TCP 绑定的非活动套接字的所有套接字 -
ss --bound-inactive
: 只转储绑定的非活动套接字
Jira:RHEL-6113[1]
nispor
rebase 到版本 1.2.10
nispor
软件包已升级到上游版本 1.2.10,它提供一些改进和程序错误修复:
-
添加了对
NetStateFilter
的支持,以在网络路由和接口上使用内核过滤器。 - 单根输入和输出虚拟化(SR-IOV)接口可以为每个(VF)查询 SR-IOV 虚拟功能(SR-IOV VF)信息。
-
新支持的绑定选项:
lacp_active
,arp_missed_max
和ns_ip6_target
.
4.6. 内核
RHEL 8.10 中的内核版本
Red Hat Enterprise Linux 8.10 与内核版本 4.18.0-553 一起分发。
rtla
rebase 到上游 内核
源代码的 6.6 版本
rtla
工具已升级到最新的上游版本,其提供多个 bug 修复和增强。主要变更包括:
-
添加了
-C
选项,来为rtla
线程指定要在其中运行的其他控制组,除了主rtla
线程。 -
添加了
--house-keeping
选项,来将rtla
线程放在一个内务 CPU 上,并将测量线程放在不同的 CPU 上。 -
添加了对
timerlat
追踪器的支持,以便您可以在用户空间中运行timerlat hist
和timerlat top
线程。
Jira:RHEL-10081[1]
rteval
已升级至上游版本 3.7
使用此更新,rteval
工具已升级到上游版本 3.7。此更新中最重要的功能涉及 isolcpus
内核参数。这包括检测和在 rteval
中使用测量模块的 isolcpus
机制的能力。因此,isolcpus
用户很容易使用 rteval
获取准确的延迟数,并实现在实时内核上测量的最佳延迟结果。
Jira:RHEL-8967[1]
SGX 现在被完全支持
软件扩展(SGX)是一个 Intel® 技术,用于保护软件代码和数据不受公开和修改的影响。
RHEL 内核提供 SGX 版本 1 和 2 功能。版本 1 使用 Flexible Launch Control 机制启用平台,以使用 SGX 技术。版本 2 添加了 Enclave Dynamic Memory Management (EDMM)。主要特性包括:
- 修改属于初始化 enclave 的常规 enclave 页的 EPCM 权限。
- 动态将常规 enclave 页添加到初始化的 enclave。
- 扩展初始化的 enclave ,以容纳更多线程。
- 从初始化的 enclave 中删除常规的 enclave 页和 TCS 页。
在本发行版本中,SGX 从技术预览变为完全支持的功能。
Bugzilla:2041881[1]
现在完全支持 Intel 数据流加速器驱动程序
Intel 数据流加速器驱动程序(IDXD)是一个提供 Intel CPU 集成加速器的内核驱动程序。它包括一个带有进程地址空间 ID (pasid
)提交和共享虚拟内存(SVM)的共享工作队列。
在本发行版本中,IDXD 从技术预览变为完全支持的功能。
Jira:RHEL-10097[1]
rteval
现在支持从默认测量 CPU 列表中添加和删除任意 CPU
使用 rteval
工具,您可以在使用 --measurement-cpulist
参数时将 CPU 添加(使用 + 符号)或减少(使用 - 符号)到默认测量 CPU 列表中,而不必指定整个新列表。另外,还引进了 --measurement-run-on-isolcpus
,来将所有隔离的 CPU 集合添加到默认测量 CPU 列表中。这个选项涵盖运行在隔离 CPU 上的实时应用程序的最常见用例。其他用例需要更通用的功能。例如,一些实时应用程序使用一个隔离的 CPU 进行内务处理,需要将其从默认的测量 CPU 列表中排除。现在,您可以不仅能够添加,还可以以灵活的方式从默认测量 CPU 列表中删除任意 CPU。删除的优先级高于添加。此规则适用于使用 +/- 符号指定的 CPU 和通过 --measurement-run-on-isolcpus
定义的 CPU。
Jira:RHEL-21926[1]
4.7. 引导加载程序
在预引导阶段支持 DEP/NX
内存保护功能称为 Data Execution Prevention (DEP)、No Execute (NX)或 Execute Disable (XD),阻止标记为不可执行的代码的执行。DEP/NX 已在 RHEL 的操作系统级别中提供。
此发行版本在 GRUB 和 shim
引导装载程序中添加了 DEP/NX 支持。这可以防止预引导阶段中的某些漏洞,如恶意 EFI 驱动程序,它们可能在没有 DEP/NX 保护的情况下执行某些攻击。
Jira:RHEL-15856[1]
支持 GRUB 和 shim 中的 TD RTMR 测量
Intel® Trust Domain Extension (Intel® TDX)是一种机密的计算技术,它部署称为信任域(TDs)的硬件隔离的虚拟机(VM)。
TDX 使用 TD 虚拟机客户机扩展了虚拟机扩展(VMX)指令和多密钥总内存加密(MKTME)功能。在 TD 客户机虚拟机中,引导链中的所有组件(如 grub2
和 shim
)都必须将事件和测量哈希记录到运行时测量寄存器(RTMR)中。
RTMR 中的 TD 客户机运行时测量是证明应用程序的基础。TD 客户机上的应用程序依赖 TD 测量提供信任证据来获取机密信息,如通过证明服务从转发部分获取的密钥。
有了此版本,GRUB 和 shim
引导装载程序现在支持 TD 测量协议。
有关 Intel® TDX 的更多信息,请参阅 Intel® 信任域扩展的文档。
Jira:RHEL-15583[1]
4.8. 文件系统和存储
Storage RHEL 系统角色现在支持共享的 LVM 设备管理
RHEL 系统角色现在支持创建和管理共享逻辑卷和卷组。
multipathd
现在支持检测 NVMe 设备的 FPIN-Li 事件
在以前的版本中,multipathd
命令只监控 SCSI 设备上的 Integrity Fabric Performance Impact Notification(PFIN-Li)事件。multipathd
可以侦听光纤通道光纤发送的 Link Integrity 事件,并使用它来将路径标记为 marginal。这个功能只支持 SCSI 设备上的多路径设备,multipathd
无法通过限制该功能的使用,来将 Non-volatile Memory Express (NVMe)设备路径标记为 marginal。
有了此更新,multipathd
支持检测 SCSI 和 NVMe 设备的 FPIN-Li 事件。因此,多路径在不使用没有良好光纤连接的路径,而其它路径可用。这有助于在这种情况下避免 IO 延迟。
4.9. 动态编程语言、网页和数据库服务器
RHEL 8 中提供的 Python 3.12
RHEL 8.10 引入了 Python 3.12,由新软件包 python3.12
提供,以及为其构建的软件包套件,以及 ubi8/python-312
容器镜像。
与之前发布的 Python 3.11 相比,显著改进包括:
-
Python 引入了一个用于通用类和函数的新
type
语句和新类型参数语法。 - 格式化的字符串字面(f-string)已在语法中被正式化,现在被直接集成到解析器中。
- Python 现在提供一个唯一的每解释器全局解释器锁(GIL)。
- 现在,您可以使用 Python 代码中的缓冲协议。
-
为提高安全性,SHA1、SHA3、SHA2-384、SHA2-512 和 MD5 加密算法的内置
hashlib
实现已被 HACL* 项目的正式验证代码替代。如果 OpenSSL 没有提供它们,则内置的实现仍可用。 -
CPython
中的字典、列标和理解现在是内联的。这显著提高了理解执行的速度。 -
CPython
现在支持 Linuxperf
分析器。 -
CPython
现在对支持的平台提供堆栈溢出保护。
要从 python3.12
堆栈安装软件包,请使用,例如:
# yum install python3.12 # yum install python3.12-pip
要运行解释器,请使用,例如:
$ python3.12 $ python3.12 -m pip --help
如需更多信息,请参阅 安装和使用 Python。
有关 Python 3.12 的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Python 中的一个控制电子邮件地址解析的新环境变量
为缓解 CVE-2023-27043,一个向后兼容的更改,以确保在 Python 3 中引入了更严格的电子邮件地址的解析。
此更新引入了一个新的 PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING
环境变量。当您将此变量设置为 true
时,以前的、不太严格的解析行为是整个系统的默认设置:
export PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING=true
但是,对受影响函数的单个调用可能仍然启用更严格的行为。
您可以通过使用以下内容创建 /etc/python/email.cfg
配置文件来取得相同的结果:
[email_addr_parsing] PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING = true
如需更多信息,请参阅知识库文章 缓解 Python 中引入更严格的电子邮件地址解析的 CVE-2023-27043。
Jira:RHELDOCS-17369[1]
新模块流:ruby:3.3
RHEL 8.10 在新的 ruby:3.3
模块流中引入了 Ruby 3.3.0。与 RHEL 8.7 一起发布的 Ruby 3.1
相比,这个版本提供了几个性能改进、程序错误和安全修复以及新功能。
主要改进包括:
-
您可以使用新的
Prism
解析器而不是Ripper
。Prism
是 Ruby 语言的一个可移植的、容错的和可维护的递归下降解析器。 - YJIT,Ruby 即时(JIT)编译器实现,不再是实验性的,它提供了主要的性能改进。
-
改进了
Regexp
匹配算法,以减少潜在的正则表达式拒绝服务(ReDoS)漏洞的影响。 - 新的实验性 RJIT (一个纯 Ruby JIT)编译器取代了 MJIT。在生产环境中使用 YJIT。
- 现在提供了一个新的 M:N 线程调度程序。
其他显著变化:
-
现在,您必须使用
Lrama
LALR 解析器生成器,而不是Bison
。 - 已删除了几个弃用的方法和常量。
-
Racc
gem 已从默认 gem 提升到捆绑 gem。
要安装 ruby:3.3
模块流,请使用:
# yum module install ruby:3.3
如果要从以前的 ruby
模块流升级,请参阅 切换到后期的流。
有关 Ruby 3.3 的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Jira:RHEL-17090[1]
新模块流:php:8.2
RHEL 8.10 添加了 PHP 8.2,它比版本 8.0 提供了几个程序错误修复和增强。
使用 PHP 8.2
,您可以:
- 使用枚举(Enums)功能,定义一个仅限于离散的可能值之一的自定义类型。
-
使用
readonly
修饰符声明一个属性,以防止在初始化后修改属性。 - 使用光纤、全栈和可中断功能。
- 使用只读类。
- 声明几个新的独立类型。
-
使用一个新的
Random
扩展。 - 在特征中定义约束。
要安装 php:8.2
模块流,请使用以下命令:
# yum module install php:8.2
如果要从以前的 php
流升级,请参阅 切换到后期的流。
有关 RHEL 8 上 PHP 用法的详情,请参阅 使用 PHP 脚本语言。
有关 php
模块流的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Jira:RHEL-14705[1]
perl-DateTime-TimeZone
模块的 name()
方法现在返回时区名称
perl-DateTime-TimeZone
模块已更新至版本 2.62,它将 name()
方法返回的值从时区别名改为主时区名称。
如需更多信息和示例,请参阅知识库文章 perl-DateTime-TimeZone API 中与时区名称和别名相关的更改 。
一个新模块流:nginx:1.24
nginx 1.24 web 和代理服务器现在作为 nginx:1.24
模块流提供。与之前发布的版本 1.22 相比,这个版本提供了几个程序错误修复、安全修复、新功能和增强。
与传输层安全(TLS)相关的新功能和更改:
-
当在
ssl_session_cache
指令中使用共享内存时,加密密钥现在会自动为 TLS 会话票据进行轮转。 - 内存使用率已在带有安全套接字层(SSL)代理的配置中进行了优化。
-
现在,您可以使用
resolver
指令的ipv4=off
参数在解析时禁用查找 IPv4 地址。 -
nginx 现在支持
$proxy_protocol_tlv_*
变量,其存储出现在 PROXY v2 TLV 协议中的 Type-Length-Value (TLV)字段的值。 -
ngx_http_gzip_static_module
模块现在支持字节范围。
其他更改:
- 标头行现在在内部 API 中表示为链接列表。
-
nginx 现在在
ngx_http_perl_module
的$r->header_in()
方法中和查找$http_...
,$sent_http_...
,$sent_trailer_...
,$upstream_http_...
和$upstream_trailer_..
变量的过程中连接传递给 FastCGI、SCGI 和 uwsgi 后端的相同名称的头字符串。 - 如果重新定义侦听套接字的协议参数,nginx 现在会显示一个警告。
- 如果管道被客户端使用了,则 nginx 现在关闭与 lingering 的连接。
-
各种 SSL 错误的日志记录级别已降低,例如从
Critical
降到Informational
。
要安装 nginx:1.24
流,请使用:
# yum module install nginx:1.24
要从以前的 nginx
流升级,请 切换到后期流。
如需更多信息,请参阅设置和配置 NGINX。
有关 nginx
模块流的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期 文章。
Jira:RHEL-14714[1]
一个新模块流:mariadb:10.11
MariaDB 10.11 现在作为新模块流 mariadb:10.11
提供。与之前可用的版本 10.5 相比,显著的改进包括:
-
一个新的
sys_schema
功能。 - 原子数据定义语言(DDL)语句。
-
一个新的
GRANT ...TO PUBLIC
特权。 -
单独的
SUPER
和READ ONLY ADMIN
特权。 -
一个新的
UUID
数据库数据类型。 - 支持安全套接字层(SSL)协议版本 3;MariaDB 服务器现在需要正确配置的 SSL 才能启动。
-
通过
natural_sort_key()
函数支持自然排序顺序。 -
一个新的用于任意文本格式化的
SFORMAT
函数。 - 对 UTF-8 字符集和 UCA-14 排序规则的更改。
-
systemd
套接字激活文件在/usr/share/
目录中提供。请注意,与上游相反,它们不是 RHEL 中默认配置的一部分。 -
包含
MariaDB
字符串而不是MySQL
的错误消息。 - 中文语言中提供的错误消息。
- 对默认 logrotate 文件的更改。
-
对于 MariaDB 和 MySQL 客户端,命令行上指定的连接属性(如
--port=3306
)现在强制客户端和服务器之间通信的协议类型,如tcp
、socket
、管道
或memory
。
有关 MariaDB 10.11 中更改的更多信息,请参阅 MariaDB 10.5 和 MariaDB 10.11 之间的显著区别。
有关 MariaDB 的更多信息,请参阅 使用 MariaDB。
要安装 mariadb:10.11
流,请使用:
# yum module install mariadb:10.11
如果要从 mariadb:10.5
模块流升级,请参阅 从 MariaDB 10.5 升级到 MariaDB 10.11。
有关 mariadb
模块流的支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
一个新模块流:postgresql:16
RHEL 8.10 引入了 PostgreSQL 16,它比版本 15 提供了几个新功能和增强。
主要改进包括:
- 增强的批量加载提高了性能。
-
libpq
库现在支持连接级负载均衡。您可以使用新的load_balance_hosts
选项来获得更有效的负载平衡。 -
现在,您可以创建自定义配置文件,并将其包含在
pg_hba.conf
和pg_ident.conf
文件中。 -
PostgreSQL 现在支持与
pg_hba.conf
文件中的数据库和角色条目匹配的正则表达式。
其他更改包括:
-
PostgreSQL 不再与
postmaster
二进制文件一起分发。使用提供的systemd
单元文件(systemctl start postgres
命令)启动postgresql
服务器的用户不受这个更改的影响。如果您之前通过postmaster
二进制文件直接启动了postgresql
服务器,则您现在必须使用postgres
二进制文件。 - PostgreSQL 不再在软件包中提供 PDF 格式的文档。改为使用 在线文档。
另请参阅 使用 PostgreSQL。
要安装 postgresql:16
流,请使用以下命令:
# yum module install postgresql:16
如果要从 RHEL 8 中早期的 postgresql
流升级,请按照 切换到后期流 中描述的流程操作,然后迁移 PostgreSQL 数据,如 迁移到 PostgreSQL 的 RHEL 8 版本 中所述。
有关支持的 postgresql
模块流长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Git rebase 到版本 2.43.0
Git 版本控制系统已更新至版本 2.43.0,与之前发布的版本 2.39 相比,它提供了 bug 修复、增强和性能改进。
主要改进包括:
-
现在,您可以将新的
--source
选项与git check-attr
命令一起使用,来从提供的 tree-ish 对象,而不是当前工作目录读取.gitattributes
文件。 -
Git 现在可以将信息从
WWW-Authenticate
response-type 标头的传递到凭证帮助程序。 -
对于空提交,
git format-patch
命令现在会写一个包含提交标头的输出文件,而不是创建一个空文件。 -
现在,您可以使用
git blame --contents=<file> <revision> -- <path>
命令,来通过指向<revision>
的历史记录查找在<file>
内容开始的行的源。 -
git log --format
命令现在接受%(decorate)
占位符来进一步自定义,以扩展--decorate
选项提供的能力。
Jira:RHEL-17103[1]
Git LFS rebase 到版本 3.4.1
Git 大文件存储(LFS)扩展已更新至版本 3.4.1,与之前发布的版本 3.2.0 相比,它提供了 bug 修复、增强和性能改进。
主要变更包括:
-
git lfs push
命令现在从标准输入读取引用和对象 ID。 - Git LFS 现在在不依赖 Git 来处理替代的 remote。
-
Git LFS 现在支持
WWW-Authenticate
response-type 标头作为凭证帮助程序。
Jira:RHEL-17102[1]
提高了 Python 解释器的性能
RHEL 8 中所有支持的 Python 版本现在使用 -O3
优化标记编译,这是上游中的默认设置。因此,您可以观察到 Python 应用程序和解释器本身的性能的提高。
以下公告发行版本提供了这些更改:
-
python3.12
- RHSA-2024:6961 -
python3.11
- RHSA-2024:6962 -
python3
- RHSA-2024:6975 -
python39
模块 - RHSA-2024:5962
Jira:RHEL-49614[1], Jira:RHEL-49636, Jira:RHEL-49644, Jira:RHEL-49638
4.10. 编译器和开发工具
新的 GCC 工具集 14
GCC Toolset 14 是一个编译器工具集,提供开发工具的最新版本。它以 AppStream 存储库中的 Software Collection 的形式作为 Application Stream 提供。
以下工具和版本由 GCC Toolset 14 提供,以及 RHEA-2024:8851 公告的发布:
- GCC 14.2
- GDB 14.2
-
binutils
2.41 -
annobin
12.70 -
dwz
0.14
要安装 GCC Toolset 14,以 root 用户身份运行以下命令:
# yum install gcc-toolset-14
要从 GCC Toolset 14 运行工具:
$ scl enable gcc-toolset-14 <tool>
要运行一个 shell 会话,其中 GCC Toolset 14 中的工具版本会覆盖这些工具的系统版本:
$ scl enable gcc-toolset-14 bash
GCC Toolset 14 组件也可以在 gcc-toolset-14-toolchain
容器镜像中找到。
如需更多信息,请参阅 GCC Toolset 14 和 使用 GCC Toolset。
Jira:RHEL-34596[1], Jira:RHEL-30411
GCC Toolset 14: GCC rebase 到版本 14.2
在 GCC Toolset 14 中,GNU Compiler Collection (GCC)已更新至版本 14.2,并发布 RHEA-2024:8864 公告。
主要变更包括:
- 优化和诊断改进
-
新的
强化型 umbrella
选项,该选项启用一组强化标记 -
new
-fharden-control-flow-redundancy
选项,用于检测将控制传输到功能中间的攻击 -
新的
strub
type 属性来控制功能和变量的堆栈清理属性 -
一个 new
-finline-stringops
选项,用于强制扩展某些mem*
功能 - 支持新的 OpenMP 5.1、5.2 和 6.0 功能
- 多个新的 C23 功能
- 多个新的 C++23 和 C++26 功能
- 几个已解决的 C++ 缺陷报告
- 新的并改进了对 C++20、C++23 和 C++26 的实验性支持
- 支持 64 位 ARM 架构中的新 CPU
- 64 位 Intel 架构中的多个新指令集架构(ISA)扩展,例如:AVX10.1、AVX-VNNI-INT16、SHA512 和 SM4
- GCC 的静态分析器中的新警告
- 某些警告被更改为错误 ; 详情请参阅 移植到 GCC 14
- 各种程序错误修复
有关 GCC 14 中更改的更多信息,请参阅上游 GCC 发行注记。
Jira:RHEL-30412[1]
GCC Toolset 14: GDB rebase 到版本 14.2
在 GCC Toolset 14 中,GDB 已更新至版本 14.2,并发布 RHBA-2024:8862 公告。以下段落列出了 GDB 12.1 后的显著变化。
概述:
-
info breakpoints
命令现在将禁用的断点的启用的断点位置显示为y-
状态。 -
添加了对使用 ELF 的 Zstandard (
ELFCOMPRESS_ZSTD
)压缩的 debug 部分的支持。 -
默认情况下,文本用户界面(TUI)不再为当前位置指示器突出显示的源代码和汇编代码设置样式。要重新启用样式,请使用新命令
set style tui-current-position
。 -
新的
$_inferior_thread_count
方便变量包含当前 下级中活跃线程的数量。 -
对于具有多个代码位置的断点,GDB 现在使用
<breakpoint_number>.<location_number>
语法打印代码位置。 -
当命中断点时,GDB 现在将
$_hit_bpnum
和$_hit_locno
方便变量设置为命中断点数和代码位置号。现在,您可以使用disable $_hit_bpnum
命令禁用最后命中的断点,或使用disable $_hit_bpnum.$_hit_locno
命令禁用特定的断点代码位置。 -
添加了对
NO_COLOR
环境变量的支持。 - 添加了对大于 64 位的整数类型的支持。
-
您可以使用多目标功能配置的新命令来配置远程目标功能集(请参阅命令中的
set remote <name>-packet
和show remote <name>-packet
)。 - 添加了对 Debugger Adapter 协议的支持。
-
现在,您可以使用新的
inferior
关键字使断点特定于下级(请参阅命令中的break
或watch
)。 -
您现在可以使用新的
$_shell()
方便函数来在表达式评估过程中执行 shell 命令。
对现有命令的更改:
break
,watch
-
现在,在
break
和watch
命令中多次使用thread
或task
关键字会导致错误,而不是使用关键字的最后一个实例的线程或任务 ID。 -
现在在同一
break
或watch
命令中使用多个thread
、task
和inferior
关键字无效。
-
现在,在
printf
,dprintf
-
printf
和dprintf
命令现在接受%V
输出格式,它与print
命令格式化表达式的方式相同。您还可以通过在命令后使用方括号[…]
中的附加打印选项来修改输出格式,例如:printf "%V[-array-indexes on]", <array>
。
-
list
-
您现在可以使用
.
参数打印当前帧内执行点附近的位置,或者,如果 inferior 尚未启动,则打印main()
函数开头附近的位置。 -
尝试列出文件中比可用的更多的源行,现在会发出一个警告,让用户参考
.
参数。
-
您现在可以使用
记录用户定义的
- 现在,可以记录用户定义的别名。
新命令:
-
set print nibbles [on|off]
(默认值:off
),show print nibbles
- 控制print/t
命令是否以四位组(nibbles)的形式显示二进制值。 -
set debug infcall [on|off]
(默认值:off
),show debug infcall
- 显示关于 inferior 功能调用的额外的调试信息。 -
set debug solib [on|off]
(默认值:off
),show debug solib
- 打印有关共享的库处理的额外的调试信息。 -
set print characters <LIMIT>
、show print characters
、print -characters <LIMIT>
- 控制可打印一个字符串的多少个字符。 -
set debug breakpoint [on|off]
(默认值:off
),show debug breakpoint
- 打印有关断点插入和删除的额外的调试信息。 -
maintenance print record-instruction [ N
- 打印给定指令的记录信息。 -
maintenance info frame-unwinders
- 以优先级顺序(第一个最高)列出当前有效的帧 unwinders。 -
maintenance wait-for-index-cache
- 等待所有等待对索引缓存的写完成。 -
info main
- 打印有关主符号的信息,以识别程序的入口点。 -
set tui mouse-events [on|off]
(默认值:on
),show tui mouse-events
- 控制鼠标点击事件是否被发送到 TUI 和 Python 扩展( 当为on
时)或终端(当为off
时)。
机器接口(MI)更改:
- MI 版本 1 已被删除。
-
MI 现在在反向执行历史记录耗尽时报告
no-history
。 -
在
-break-insert
命令的输出中,thread
和task
断点字段不再被报告两次。 - 不再对不存在的线程 ID 创建特定于线程的断点。
-
-stack-list-arguments
、-stack-list-locals
、-stack-list-variables
和-var-list-children
命令中的--simple-values
参数现在将引用类型视为 simple(如果目标是 simple)。 -
-break-insert
命令现在接受一个新的-g thread-group-id
选项,来创建特定于 inferior 的断点。 -
断点创建的通知和
-break-insert
命令的输出现在可以包括一个可选的用于主断点和每个断点位置的inferior
字段。 -
说明
breakpoint-hit
停止原因的异步记录现在包含一个可选字段locno
,在多位置断点时提供代码位置号。
GDB Python API 中的更改:
事件
-
一个新的
gdb.ThreadExitedEvent
事件。 -
一个新的
gdb.executable_changed
事件注册表,它发出具有progspace
和reload
属性的ExecutableChangedEvent
对象。 -
新的
gdb.events.new_progspace
和gdb.events.free_progspace
事件注册表,它发出NewProgpspaceEvent
和FreeProgspaceEvent
事件类型。这两个事件类型都有一个属性progspace
,来指定添加到 GDB 中,或从 GDB 删除的gdb.Progspace
程序空间。
-
一个新的
gdb.unwinder.Unwinder
类-
name
属性现在是只读的。 -
__init__
函数的 name 参数必须是str
类型,否则会引发一个TypeError
。 -
enabled
属性现在只接受bool
类型。
-
gdb.PendingFrame
类-
新方法:
name
,is_valid
,pc
,language
,find_sal
,block
和function
,它们镜像gdb.Frame
类的类似方法。 -
create_unwind_info
函数的frame-id
参数现在可以是一个整数,也可以是pc
、sp
和special
属性的gdb.Value
对象。
-
新方法:
-
一个新的
gdb.unwinder.FrameId
类,它可以传递给gdb.PendingFrame.create_unwind_info
函数。 -
gdb.disassembler.DisassemblerResult
类不能再细分。 -
gdb.disassembler
模块现在包含样式支持。 -
一个新的
gdb.execute_mi (COMMAND, [ARG]…)
函数,它调用 GDB/MI 命令,并将结果返回为一个 Python 字典。 -
一个新的
gdb.block_signals()
函数,它返回一个阻止 GDB 需要处理的任何信号的上下文管理器。 -
threading.Thread
类的一个新gdb.Thread
子类,它在start
方法中调用gdb.block_signals
函数。 -
gdb.parse_and_eval
函数有一个新的global_context
参数,来限制对全局符号的解析。 gdb.Inferior
类-
一个新
arguments
属性,其保留 inferior 的命令行参数(如果已知)。 -
一个新的
main_name
属性,它包含 inferior 的main
函数的名称(如果已知)。 -
新的
clear_env
、set_env
和unset_env
方法,它们可在启动前修改 inferior 的环境。
-
一个新
gdb.Value
类-
一个分配对象值的新的
assign
方法。 -
一个将类数组值转换为数组的新的
to_array
方法。
-
一个分配对象值的新的
gdb.Progspace
类-
一个新的
objfile_for_address
方法,它返回涵盖给定地址的gdb.Objfile
对象(如果存在)。 -
一个新的
symbol_file
属性,保存对应于Progspace.filename
变量的gdb.Objfile
对象(或None
,如果文件名为None
)。 -
一个新的
executable_filename
属性,其保存具有由exec-file
或file
命令设置的文件名的字符串,如果没有设置可执行文件,则为None
。
-
一个新的
gdb.Breakpoint
类-
一个新的
inferior
属性,其包含特定于 inferior 的断点的 inferior ID(一个整数),或None
,如果没有设置这样的断点 。
-
一个新的
gdb.Type
类-
新的
is_array_like
和is_string_like
方法,其反映一个类型可以是类似数组或类似字符串,无论类型的实际类型代码是什么。
-
新的
-
一个新的
gdb.ValuePrinter
类,可用作应用 pretty-printer 的结果的基类。 -
一个新实现的
gdb.LazyString.__str__
方法。 gdb.Frame
类-
一个新的
static_link
方法,它返回嵌套的函数帧的外部帧。 -
一个新的
gdb.Frame.language
方法,它返回帧语言的名称。
-
一个新的
gdb.Command
类-
GDB 现在重新格式化
gdb.Command
类的 doc 字符串和gdb.Parameter
子类,以便在使用字符串作为 help 输出前从每行中删除不必要的前导空格。
-
GDB 现在重新格式化
gdb.Objfile
类-
一个新的
is_file
属性。
-
一个新的
-
一个新的
gdb.format_address (ADDRESS, PROGSPACE, ARCHITECTURE)
函数,其使用与从反汇编器中打印地址、符号和偏移信息时相同的格式。 -
一个新的
gdb.current_language
函数,它返回当前语言的名称。 -
一个用于包装 GDB 的反汇编器的新 Python API,包括
gdb.disassembler.register_disassembler(DISASSEMBLER, ARCH)
,gdb.disassembler.Disassembler
,gdb.disassembler.DisassembleInfo
,gdb.disassembler.builtin_disassemble(INFO, MEMORY_SOURCE)
和gdb.disassembler.DisassemblerResult
。 -
一个新的
gdb.print_options
函数,它以gdb.Value.format_string
函数接受的形式返回当前打印选项的字典。 gdb.Value.format_string
函数-
如果在
print
或其他类似的操作中被调用,GDB.Value.format_string
现在使用print
命令提供的格式。 -
gdb.Value.format_string
现在接受summary
关键字。
-
如果在
-
一个新的
gdb.BreakpointLocation
Python 类型。 -
gdb.register_window_type
方法现在限制一组可接受的窗口名称。
特定于架构的更改:
AMD 和 Intel 64 位构架
-
添加了对使用
libopcodes
库的反汇编器样式的支持,该库现在被默认使用。您可以使用set style disassembler *
命令修改反汇编器输出的样式。要使用 Python Pygments 样式,请使用新的maintenance set libopcodes-styling
命令。
-
添加了对使用
64 位 ARM 架构
- 添加了为内存标记(MTE)转储内存标签数据的支持。
- 添加了对 Scalable Matrix Extension 1 和 2 (SME/SME2)的支持。有些功能仍被视为实验性的或 alpha,例如,ZA 状态的手动函数调用,或者根据 DWARF 跟踪 Scalable Vector Graphics(SVG)更改。
- 添加了对线程本地存储(TLS)变量的支持。
- 添加了对硬件观察点的支持。
64 位 IBM Z 架构
-
对 IBM Z 目标上新
arch14
指令的记录和重播的支持,但专用的函数辅助指令NNPA
除外。
-
对 IBM Z 目标上新
IBM Power Systems, Little Endian
- 添加了对 POWER11 的基本启用支持。
Jira:RHELDOCS-18598[1], Jira:RHEL-36225, Jira:RHEL-36518
GCC Toolset 14: annobin
rebase 到版本 12.70
在 GCC Toolset 14 中,annobin
已更新至版本 12.70,发布 RHBA-2024:8863 公告。测试二进制文件的 annobin
工具的更新集合提供了各种 bug 修复,引入了新测试,并更新了构建和使用 GCC 的较新版本、Clang、LLVM 和 Go 编译器的工具。通过增强的工具,您可以检测以非标准方式构建的程序中的新问题。
Jira:RHEL-30409[1]
GCC Toolset 13:GCC 支持 AMD Zen 5
随着 RHBA-2024:8829 公告的发布,GCC 的 GCC Toolset 13 版本增加了对 AMD Zen 5 处理器微架构的支持。要启用支持,请使用 -march=znver5
命令行选项。
Jira:RHEL-36524[1]
LLVM Toolset 更新至 18.1.8
LLVM 工具集已使用 RHBA-2024:8828 公告的发行版本 18.1.8 更新至版本 18.1.8。
重要的 LLVM 更新:
-
以下指令的持续表达式变体已被删除:
和
或
,lshr
,ashr
,zext
,sext
,fptrunc
,fpext
,fptoui
,fptosi
,uitofp
,sitofp
. -
添加了
llvm.exp10
内部。 -
添加了全局变量的
code_model
属性。 - 改进了 AArch64, AMDGPU, PowerPC, RISC-V, SystemZ 和 x86 架构的后端。
- LLVM 工具已被改进。
显著 Clang 的改进:
C++20 功能支持:
-
clang 不再执行一个定义规则(ODR)检查全局模块片段中的声明。要启用更严格的行为,请使用 the
-Xclang -fno-skip-odr-check-in-gmf
选项。
-
clang 不再执行一个定义规则(ODR)检查全局模块片段中的声明。要启用更严格的行为,请使用 the
C++23 功能支持:
-
添加了一个新的诊断标记
-Wc++23-lambda-attributes
,以警告使用 lambdas 的属性。
-
添加了一个新的诊断标记
C++2c 功能支持:
-
clang 现在允许在同一范围内多次使用
_
字符作为占位符变量名称。 - 属性现在在属性参数中需要未评估的字符串,这些参数是字符串文字。
- 弃用了 C++26 枚举的算术转换。
- 改进了模板参数初始化的规格。
-
clang 现在允许在同一范围内多次使用
- 有关更改的完整列表,请参阅 Clang 的上游发行注记。
Clang 中的 ABI 更改:
-
在 x86_64 的 SystemV ABI 之后,
__int128
参数不会在注册和堆栈插槽之间分割。 - 如需更多信息,请参阅 Clang 中的 ABI 更改列表。
重要的后向不兼容的变化:
- 模板运算符的反向参数顺序中的 bug 修复会破坏之前在 C++17 中接受的代码。
-
GCC_INSTALL_PREFIX
CMake 变量(其设置 default-gcc-toolchain=
)已被弃用,并将被删除。在配置文件中指定--gcc-install-dir=
or--gcc-triple=
选项。 -
预编译标头(PCH)生成(
-c -xc-header
and-c -xc++-header
)现在的默认扩展名称是.pch
而不是.gch
。 -
when
-include a.h
探测a.h.gch
文件,如果 include 不是 Clang PCH 文件或目录,则 include 现在会忽略a.h.gch
文件或包含任何 Clang PCH 文件的目录。 -
修复了导致
__has_cpp_attribute
和__has_c_attribute
返回错误值的错误。 -
在添加反向
operator==
时查找匹配的operator!=
的错误已被修复。 - 功能模板的名称规定已更改为接受可以在其模板参数列表中超载函数或 requires-clauses。
-
现在,在系统标头和宏上默认启用
-Wenum-constexpr-conversion
警告。在下一个 Clang 版本中,它将被转换为一个硬(非可升级)错误。 - 名为 modules 的 C++20 导入模块的路径不再被硬编码。您必须从命令行指定所有依赖的模块。
-
无法使用导入 <module>
来导入模块
;Clang 使用显式构建的模块。 - 如需了解更多详细信息,请参阅 可能破坏更改的列表。
如需更多信息,请参阅 LLVM 发行注记 和 Clang 发行注记。
LVM Toolset 是一个滚动应用程序流,只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
Jira:RHEL-30907[1]
Rust Toolset rebase 到版本 1.79.0
Rust Toolset 已更新至版本 1.79.0,并发布 RHBA-2024:8827 公告。从以前可用的 1.75.0 版本开始,显著的改进包括:
-
新的
offset_of!
宏 - 支持 C 字符串字面值
-
支持内联
const
表达式 - 支持相关类型位置中的绑定
- 改进了自动临时生命周期扩展
-
调试
unsafe
前提条件的断言
Rust Toolset 是一个滚动应用程序流,只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
Jira:RHEL-30073[1]
Go Toolset rebase 到版本 1.22
Go Toolset 已更新至 1.22 版本,并发布 RHSA-2024:8876 公告。
主要改进包括:
- for 循环中的变量现在为每个迭代创建,防止意外共享错误。另外,对于循环,现在可以对整数进行范围。
- 工作区中的命令现在可以使用工作区依赖项的 vendor 目录。
-
go get
命令不再支持旧的GOPATH
模式。此更改不会影响go build
和go test
命令。 -
vet
工具已更新,以匹配 for 循环的新行为。 - 通过为每个堆对象保留基于类型的垃圾回收元数据,提高了 CPU 性能。
- Go 现在提供改进的简化优化和更好的配置集指导优化支持,从而获得更高的性能。
-
新的
math/rand/v2
软件包可用。 - Go 现在提供增强的 HTTP 路由模式,支持方法和通配符。
如需更多信息,请参阅 Go 上游发行注记。
Go Toolset 是一个滚动应用程序流,只支持最新版本。如需更多信息,请参阅 Red Hat Enterprise Linux 应用程序流生命周期 文档。
Jira:RHEL-46972[1]
elfutils
rebase 到版本 0.190
elfutils
软件包已更新至版本 0.190。主要改进包括:
-
libelf
库现在支持相对重定位(RELR)。 -
libdw
库现在识别.debug_[ct]u_index
部分。 -
eu-readelf
工具现在支持一个新的-Ds
,--use-dynamic --symbol
选项,来通过动态片段,而不是使用 ELF 部分显示符号。 -
eu-readelf
工具现在可以显示.gdb_index
版本 9。 -
新的
eu-scrlines
工具编译与指定的 DWARF 或 ELF 文件关联的源文件的列表。 -
debuginfod
服务器模式已对文件名表示中的 60% 的压缩进行了更改(这需要重新索引)。
valgrind
更新至 3.22
valgrind
软件包已更新至版本 3.22。主要改进包括:
-
valgrind
memcheck
现在检查提供给 C 函数memalign
、posix_memalign
和aligned_alloc
的值,以及与new
运算符对齐的 C++17 是否为有效的对齐值。 -
valgrind
memcheck
现在支持对 C++14 大小的 和 C++17 对齐的new
和delete
运算符的不匹配检测。 -
添加了对 DWARF 调试信息的延迟读取的支持,从而在安装了
debuginfo
软件包时加快启动速度。
移动了 Clang 资源目录
Clang 存储其内部标头和库的 Clang 资源目录,已从 /usr/lib64/clang/17
移到 /usr/lib/clang/17
。
新的 grafana-selinux
软件包
在以前的版本中,grafana-server
的默认安装作为 unconfined_service_t
SELinux 类型运行。这个更新添加了新的 grafana-selinux
软件包,其包含 grafana-server
的 SELinux 策略,并且默认使用 grafana-server
安装了。因此,grafana-server
现在作为 grafana_t
SELinux 类型运行。
更新了 GCC Toolset 13
GCC Toolset 13 是一个编译器工具集,其提供开发工具的最新版本。它以 AppStream 存储库中的 Software Collection 的形式作为 Application Stream 提供。
RHEL 8.10 中引入的显著变化包括:
- GCC 编译器已更新至版本 13.2.1,它提供了上游 GCC 中可用的很多 bug 修复和增强。
-
binutils
现在通过-march=znver5
编译器切换支持基于znver5
核的 AMD CPU。 -
annobin
已更新至版本 12.32。 -
GCC 的
annobin
插件现在对存储在目标文件的注释默认使用更压缩的格式,使目标文件更小,链接时间更快,特别是在大型复杂的程序中。
GCC Toolset 13 提供了以下工具和版本:
工具 | 版本 |
---|---|
GCC | 13.2.1 |
GDB | 12.1 |
binutils | 2.40 |
dwz | 0.14 |
annobin | 12.32 |
要安装 GCC Toolset 13,以 root 用户身份运行以下命令:
# yum install gcc-toolset-13
要运行 GCC Toolset 13 中的工具:
$ scl enable gcc-toolset-13 tool
要运行一个 shell 会话,其中 GCC Toolset 13 中的工具版本会覆盖这些工具的系统版本:
$ scl enable gcc-toolset-13 bash
如需更多信息,请参阅 GCC Toolset 13 和 使用 GCC Toolset。
Jira:RHEL-25405[1]
LLVM Toolset rebase 到版本 17.0.6
LLVM Toolset 已更新至版本 17.0.6。
主要改进包括:
- 不透明指针迁移现已完成。
- 在中端优化中删除了对传统通行管理器的支持。
Clang 更改:
- C++20 协程不再被视为实验性的。
-
改进了
std::move
函数的代码生成,以及未优化构建中类似的代码生成。
如需更多信息,请参阅 LLVM 和 Clang 上游发行注记。
Rust Toolset rebase 到版本 1.75.0
Rust Toolset 已更新至版本 1.75.0。
主要改进包括:
- 恒定的评估时间现在是无限制的
- 清理程序 panic 消息
- 货物注册认证
-
async fn
和特征中的不透明返回类型
Go Toolset rebase 到版本 1.21.0
Go Toolset 已更新至版本 1.21.0。
主要改进包括:
-
已添加了
min
、max
和clear
内置。 - 已添加了对配置文件指导的优化的官方支持。
- 现在,更精确地定义了软件包初始化顺序。
- 改进了类型延迟。
- 改进了向后兼容性支持。
如需更多信息,请参阅 Go 上游发行注记。
Jira:RHEL-11872[1]
papi
支持新的处理器微架构
有了此增强,您可以使用以下处理器微架构上存在的 papi
事件访问性能监控硬件:
- AMD Zen 4
- 第四代 Intel® Xeon® 可扩展处理器
Jira:RHEL-9336[1], Jira:RHEL-9320, Jira:RHEL-9337
ant rebase 到版本 1.10.9
ant:1.10
模块流已更新至版本 1.10.9。此版本使用提供方类和提供方参数提供对代码签名的支持。
更新的 ant:1.10
模块流仅提供 ant
和 ant-lib
软件包。与 Ant 相关的剩余软件包在不支持的 CodeReady Linux Builder (CRB)存储库中的 javapackages-tools
模块中分发,且没有被更新。
更新的 ant:1.10
模块流中的软件包无法与 javapackages-tools
模块中的软件包并行使用。如果要使用与 Ant 相关的软件包的完整集合,您必须卸载 ant:1.10
模块,并禁用它,启用 CRB 存储库,并安装 javapackages-tools
模块。
新软件包:maven-openjdk21
maven:3.8
模块流现在包含 maven-openjdk21
子软件包,它为 OpenJDK 21 提供了 Maven JDK 绑定,并配置了 Maven ,以使用系统 OpenJDK 21。
Jira:RHEL-17126[1]
cmake
rebase 到版本 3.26
cmake
软件包已更新至版本 3.26。主要改进包括:
- 添加了对 C17 和 C18 语言标准的支持。
-
cmake
现在可以查询操作系统识别信息的/etc/os-release
文件。 -
添加了对 CUDA 20 和
nvtx3
库的支持。 - 添加了对 Python 稳定的应用程序二进制接口的支持。
- 在 Simplified Wrapper 和 Interface Generator (SWIG)工具中添加了对 Perl 5 的支持。
4.11. 身份管理
身份管理用户现在可以使用外部身份提供方来验证到 IdM
有了此增强,您现在可以将身份管理(IdM)用户与支持 OAuth 2 设备授权流的外部身份提供方(IdP)关联。这些 IdP 的示例包括 Keycloak 的红帽构建、Microsoft Entra ID(以前的 Azure 活动目录)、GitHub 和 Google。
如果 IdM 中存在 IdP 引用和关联的 IdP 用户 ID,您可以使用它们,以使 IdM 用户可以在外部 IdP 进行身份验证。在外部 IdP 执行身份验证和授权后,IdM 用户会收到一个具有单点登录功能的 Kerberos 票据。用户必须使用 RHEL 8.7 或更高版本中提供的 SSSD 版本进行身份验证。
Jira:RHELPLAN-123140[1]
ipa
rebase 到版本 4.9.13
ipa
软件包已从 4.9.12 版本更新至 4.9.13。主要变更包括:
- 现在,IdM 副本的安装针对所选服务器进行,不仅用于 Kerberos 身份验证,也用于所有 IPA API 和 CA 请求。
-
对于有大量证书的情况,
cert-find
命令的性能已显著提高。 -
ansible-freeipa
软件包已从版本 1.11 rebase 到 1.12.1。
如需更多信息,请参阅 上游发行注记。
删除过期的 KCM Kerberos 票据
在以前的版本中,如果您试图向 Kerberos 凭证管理器(KCM)添加新凭证,且您已达到存储空间限制,新凭证将被拒绝。用户存储空间受 max_uid_ccaches
配置选项的限制,该选项的默认值为 64。使用此更新,如果您已达到存储空间限制,您的最早过期的凭证被删除,新凭证被添加到 KCM 中。如果没有过期的凭证,操作失败并返回一个错误。要防止这个问题,您可以使用 kdestroy
命令删除凭证来释放一些空间。
支持本地用户的 bcrypt
密码哈希算法
使用此更新,您可以为本地用户启用 bcrypt
密码哈希算法。要切换到 bcrypt
哈希算法:
-
通过将
pam_unix.so sha512
设置更改为pam_unix.so blowfish
来编辑/etc/authselect/system-auth
和/etc/authselect/password-auth
文件。 应用更改:
# authselect apply-changes
-
使用
passwd
命令更改用户的密码。 -
在
/etc/shadow
文件中,验证哈希算法是否被设置为$2b$
,表示bcrypt
密码哈希算法现在被使用。
idp
Ansible 模块允许将 IdM 用户与外部 IdP 关联
有了此更新,您可以使用 idp
ansible-freeipa
模块将身份管理(IdM)用户与支持 OAuth 2 设备授权流的外部身份提供方(IdP)关联。如果 IdM 中存在 IdP 引用和关联的 IdP 用户 ID,则您可以使用它们为 IdM 用户启用 IdP 身份验证。
在外部 IdP 执行身份验证和授权后,IdM 用户会收到一个具有单点登录功能的 Kerberos 票据。用户必须使用 RHEL 8.7 或更高版本中提供的 SSSD 版本进行身份验证。
IdM 现在支持 idoverrideuser
、idoverridegroup
和 idview
Ansible 模块
有了此更新,ansible-freeipa
软件包包含以下模块:
idoverrideuser
- 允许您为存储在身份管理(IdM) LDAP 服务器中的用户覆盖用户属性,例如,用户登录名称、主目录、证书或 SSH 密钥。
idoverridegroup
- 允许您为存储在 IdM LDAP 服务器中的组覆盖属性,例如,组的名称、其 GID 或描述。
idview
- 允许您组织用户和组 ID 覆盖,并将其应用到特定的 IdM 主机。
未来,您将能够使用这些模块使 AD 用户能够使用智能卡登录到 IdM。
ansible-freeipa
中启用了 DNS 区域管理的委托
现在,您可以使用 dnszone
ansible-freeipa
模块来委托 DNS 区域管理。使用 dnszone
模块的 permission
或 managedby
变量来设置每区域访问委托权限。
ansible-freeipa
ipauser
和 ipagroup
模块现在支持一个新的 renamed
状态
有了此更新,您可以使用 ansible-freeipa
ipauser
模块中的 renamed
状态来更改现有 IdM 用户的用户名。您还可以在 ansible-freeipa
ipagroup
模块中使用此状态来更改现有 IdM 组的组名称。
runasuser_group
参数现在在 ansible-freeipa
ipasudorule
中提供
有了此更新,您可以使用 ansible-freeipa ipasudorule
模块为 sudo
规则设置 RunAs Users 的组。选项已在身份管理(IdM)命令行界面和 IdM Web UI 中提供。
389-ds-base
rebase 到版本 1.4.3.39
389-ds-base
软件包已更新至版本 1.4.3.39。
HAProxy 协议现在支持 389-ds-base
软件包
在以前的版本中,目录服务器不会区分代理和非代理客户端之间的进入连接。有了此更新,您可以使用新的 nsslapd-haproxy-trusted-ip
多值配置属性来配置信任的代理服务器的列表。当在 cn=config
条目下配置了 nsslapd-haproxy-trusted-ip
时,目录服务器通过额外的 TCP 标头,使用 HAProxy 协议接收客户端 IP 地址,以便可以正确地评估访问控制指令(ACI),并可以记录客户端流量。
如果一个不信任的代理服务器发起了一个绑定请求,目录服务器会拒绝请求,并将以下信息记录到错误日志文件中:
[time_stamp] conn=5 op=-1 fd=64 Disconnect - Protocol error - Unknown Proxy - P4
samba
rebase 到版本 4.19.4
samba
软件包已升级到上游版本 4.19.4,与之前的版本相比,它提供了 bug 修复和增强。最显著的更改有:
-
smbget
工具中的命令行选项已被重命名并删除,以获得一致的用户体验。但是,这可能会破坏现有的脚本或使用该工具的作业。有关新选项的进一步详情,请查看smbget --help
命令和smbget (1)
手册页。 如果启用了
winbind debug traceid
选项,则winbind
服务现在额外记录以下字段:-
traceid
:跟踪属于同一请求的记录。 -
depth
:跟踪请求嵌套级别。
-
- Samba 不再使用自己的加密实现,现在完全使用 GnuTLS 库提供的加密功能。
-
directory name cache size
选项被删除。
请注意,从 Samba 4.11 开始,服务器消息块块版本 1 (SMB1)协议已被弃用,并将在以后的发行版本中删除。
在启动 Samba 前备份数据库文件。当 smbd
、nmbd
或 winbind
服务启动时,Samba 会自动更新其 tdb
数据库文件。红帽不支持降级 tdb
数据库文件。
更新 Samba 后,使用 testparm
工具来验证 /etc/samba/smb.conf
文件。
Jira:RHEL-16483[1]
4.12. Web 控制台
RHEL web 控制台现在可以生成 Ansible 和 shell 脚本
在 web 控制台中,您可以在 kdump
配置页面上轻松访问和复制自动化脚本。然后,您可以使用生成的脚本在多个系统上实现特定的 kdump
配置。
Jira:RHELDOCS-17060[1]
简化了在存储上管理存储和调整分区大小
Web 控制台的 Storage 部分现已重新设计。新的设计提高了所有视图的可见性。overview 页面现在在一个全面的表中显示所有存储对象,这使得更容易直接执行操作。您可以点击任何行来查看详细信息,以及任何补充的操作。另外,您现在可以从 Storage 部分调整分区大小。
Jira:RHELDOCS-17056[1]
4.13. Red Hat Enterprise Linux 系统角色
ad_integration
RHEL 系统角色现在支持配置动态 DNS 更新选项
有了此更新,在与活动目录(AD)集成时,ad_integration
RHEL 系统角色支持使用 SSSD 为动态 DNS 更新配置选项。默认情况下,SSSD 将尝试自动刷新 DNS 记录:
- 当身份提供方上线时(总是)。
- 在指定的间隔(可选配置);默认情况下,AD 提供方每 24 小时更新 DNS 记录。
您可以在 ad_integration
中使用新变量来更改这些设置和其他设置。例如,您可以将 ad_dyndns_refresh_interval
设置为 172800
,将 DNS 记录刷新间隔更改为 48 小时。有关角色变量的详情,请查看 /usr/share/doc/rhel-system-roles/ad_integration/
目录中的资源。
Jira:RHELDOCS-17372[1]
metrics
RHEL 系统角色现在支持配置 PMIE Webhook
有了此更新,您可以使用 metrics
RHEL 系统角色的 metrics_webhook_endpoint
变量自动配置 global webhook_endpoint
PMIE 变量。这可让您为接收有关重要性能事件消息的环境提供一个自定义 URL,且通常与外部工具,如 Event-Driven Ansible 一起使用。
bootloader
RHEL 系统角色
此更新引入了 bootloader
RHEL 系统角色。您可以使用此功能在 RHEL 系统上稳定且一致的引导装载程序和内核配置。有关要求、角色变量和示例 playbook 的详情,请参阅 /usr/share/doc/rhel-system-roles/bootloader/
目录中的 README 资源。
logging
角色支持输出模块中的常规队列和常规操作参数
在以前的版本中,无法使用 logging
角色配置常规队列参数和常规操作参数。有了此更新,logging
RHEL 系统角色支持在输出模块中配置常规队列参数和常规操作参数。
支持新的 ha_cluster
系统角色功能
ha_cluster
系统角色现在支持以下功能:
-
启用包含弹性存储软件包的存储库,如
dlm
或gfs2
。访问存储库需要弹性存储订阅。 - 配置隔离级别,允许集群使用多个设备来隔离节点。
- 节点属性的配置。
有关配置实现这些功能的参数的详情,请参考 使用 ha_cluster RHEL 系统角色配置高可用性集群。
Jira:RHEL-4624[1], Jira:RHEL-22108, Jira:RHEL-14090
配置 fapolicyd
的新的 RHEL 系统角色
使用新的 fapolicyd
RHEL 系统角色,您可以使用 Ansible playbook 来管理和配置 fapolicyd
框架。fapolicyd
软件框架根据用户定义的策略来控制应用程序的执行。
network
RHEL 系统角色现在支持新的路由类型
有了此增强,您现在可以使用 network
RHEL 系统角色来使用以下路由类型:
-
blackhole
-
prohibit
-
unreachable
Jira:RHEL-21491[1]
rhc
角色中设置显示名称的新的 rhc_insights.display_name
选项
现在,您可以使用新的 rhc_insights.display_name
参数来配置或已更新注册到 Red Hat Insights 的系统的显示名称。参数允许您根据自己的偏好命名系统,以便在 Insights 清单中轻松地管理系统。如果您的系统已与 Red Hat Insights 连接,请使用参数来更新现有的显示名称。如果没有在注册时明确设置显示名称,则其被默认设置为主机名。无法自动将显示名称还原回主机名,但可以手动设置。
RHEL 系统角色现在支持 LVM 快照管理
有了这个增强,您可以使用新的 snapshot
RHEL 系统角色创建、配置和管理 LVM 快照。
postgresql
RHEL 系统角色现在支持 PostgreSQL 16
安装、配置、管理和启动 PostgreSQL 服务器的 postgresql
RHEL 系统角色现在支持 PostgreSQL 16。
有关此系统角色的更多信息,请参阅 使用 postgresql RHEL 系统角色安装和配置 PostgreSQL。
rhc
角色中设置 Ansible 主机名的新的 rhc_insights.ansible_host
选项
您现在可以使用新的 rhc_insights.ansible_host
参数为已注册到 Red Hat Insights 的系统配置或更新 Ansible 主机名。设置时,参数会将 /etc/insights-client/insights-client.conf
文件中的 ansible_host
配置改为您选择的 Ansible 主机名。如果您的系统已经与 Red Hat Insights 连接,则此参数将更新现有的 Ansible 主机名。
journald
系统角色现在支持 ForwardToSyslog
标志
在 journald
RHEL 系统角色中,journald_forward_to_syslog
变量控制收到的消息是否应转发到传统的 syslog
守护进程。此变量的默认值为 false
。有了此增强,您现在可以通过在清单中将 journald_forward_to_syslog
设置为 true
来配置 ForwardToSyslog
标志。因此,当使用远程日志记录系统时,如 Splunk ,日志位于 /var/log
文件中。
只有当在 logging
系统角色中设置了 ratelimit_interval
时才使用 ratelimit_burst
变量
在以前的版本中,在 logging
RHEL 系统角色中,当没有设置 ratelimit_interval
变量时,角色将使用 ratelimit_burst
变量来设置 rsyslog ratelimit.burst
设置。但没有影响,因为还需要设置 ratelimit_interval
。
有了此增强,如果没 ratelimit_interval
有设置,则角色不会设置 ratelimit.burst
。如果要设置 ratelimit.burst
,您必须同时设置 ratelimit_interval
和 ratelimit_burst
变量。
在 logging
系统角色中使用 logging_max_message_size
参数,而不是 rsyslog_max_message_size
在以前的版本中,即使 rsyslog_max_message_size
参数不被支持,logging
RHEL 系统角色还是使用 rsyslog_max_message_size
而不是使用 logging_max_message_size
参数。此增强确保 logging_max_message_size
被使用,而不是使用 rsyslog_max_message_size
来为日志消息设置最大大小。
ad_integration
RHEL 系统角色现在支持自定义 SSSD 设置
在以前的版本中,当使用 ad_integration
RHEL 系统角色时,无法使用角色在 sssd.conf
文件的 [sssd]
部分中添加自定义设置。有了此增强,ad_integration
角色现在可以修改 sssd.conf
文件,因此您可以使用自定义 SSSD 设置。
ad_integration
RHEL 系统角色现在支持自定义 SSSD 域配置设置
在以前的版本中,当使用 ad_integration
RHEL 系统角色时,无法使用角色在 sssd.conf
文件的域配置部分中添加自定义设置。有了此增强,ad_integration
角色现在可以修改 sssd.conf
文件,因此您可以使用自定义 SSSD 设置。
logging
RHEL 系统角色的新 logging_preserve_fqdn
变量
在以前的版本中,无法使用 logging
系统角色配置完全限定域名(FQDN)。此更新添加了可选的 logging_preserve_fqdn
变量,您可以使用它在 rsyslog
中设置 preserveFQDN
配置选项,来在 syslog 条目中使用完整的 FQDN 而不是短名称。
支持创建卷,而无需创建文件系统
有了此增强,您可以通过指定 fs_type=un
format 选项来创建新卷,而无需创建文件系统。
同样,可以通过在确保禁用了安全模式的情况下,使用同样的方法删除现有文件系统。
rhc
系统角色现在支持 RHEL 7 系统
现在,您可以使用 rhc
系统角色管理 RHEL 7 系统。将 RHEL 7 系统注册到 Red Hat Subscription Management (RHSM)和 Insights,并开始使用 rhc
系统角色管理系统。
使用 rhc_insights.remediation
参数对 RHEL 7 系统没有影响,因为 Insights Remediation 功能目前在 RHEL 7 上不可用。
新的 mssql_ha_prep_for_pacemaker
变量
在以前的版本中,microsoft.sql.server
RHEL 系统角色没有一个控制是否为 Pacemaker 配置 SQL Server 的变量。此更新添加了 mssql_ha_prep_for_pacemaker
。如果您不想为 Pacemaker 配置您的系统,并希望使用另一个 HA 解决方案,请将变量设置为 false
。
sshd
角色现在配置基于证书的 SSH 身份验证
使用 sshd
RHEL 系统角色,您现在可以配置和管理多个 SSH 服务器,以使用 SSH 证书进行身份验证。这使得 SSH 身份验证更安全,因为证书是由可信 CA 签名的,并提供精细的访问控制、到期日期和集中管理。
selinux
角色现在支持在 disabled 模式下配置 SELinux
有了这个更新,selinux
RHEL 系统角色支持在 SELinux 设置为 disabled 的节点上配置 SELinux 端口、文件上下文和布尔值映射。在系统上将 SELinux 启用为 permissive 或 enforcing 模式之前,这对于配置场景很有用。
selinux
角色现在在指定不存在的模块时会打印一条消息
使用此版本,当您在 selinux_modules.path
变量中指定一个不存在的模块时,selinux
RHEL 系统角色会打印一条错误消息。
4.14. 虚拟化
RHEL 现在支持虚拟机的多 FD 迁移
有了此更新,现在支持虚拟机的多个文件描述符(multi-FD)迁移。多 FD 迁移使用多个并行连接来迁移虚拟机,这可以通过利用所有可用的网络带宽来加快进程。
建议您在高速网络(20 Gbps 及更高)上使用此功能。
Jira:RHELDOCS-16970[1]
IBM Z 上的安全执行虚拟机现在支持加密协处理器
使用此更新,您现在可以将加密协处理器作为中介设备分配给 IBM Z 上带有 IBM 安全执行的虚拟机(VM)。
通过将加密协处理器作为中介设备分配给安全执行虚拟机,您现在可以使用硬件加密,而不损害虚拟机的安全性。
Jira:RHEL-11597[1]
您现在可以在 web 控制台中将 SPICE 替换为 VNC
有了此更新,您可以使用 web 控制台将现有虚拟机(VM)中的 VNC 协议替换 SPICE 远程显示协议。
因为对 SPICE 协议的支持在 RHEL 8 中已弃用,并将在 RHEL 9 中被删除,因此使用 SPICE 协议的虚拟机无法迁移到 RHEL 9。但是,RHEL 8 虚拟机默认使用 SPICE,因此您必须从 SPICE 切换到 VNC 才能成功迁移。
Jira:RHELDOCS-18289[1]
RHEL web 控制台中的新虚拟化功能
在这个版本中,RHEL web 控制台在 Virtual Machines 页面中包含新功能。您现在可以:
-
在虚拟机(VM)创建过程中添加 SSH 公钥。此公钥将存储在新创建的虚拟机上指定的非 root 用户的
~/.ssh/authorized_keys
文件中,它为您提供了对指定用户帐户的即时 SSH 访问。 -
在创建新存储池时,选择
pre-formatted block device
类型。这是physical disk device
类型的更强大的替代方案,因为它防止意外重新格式化原始磁盘设备。
此更新还在 Virtual Machines 页面中更改了一些默认行为:
-
在
Add disk
对话框中,Always attach
选项现在被默认设置。
Jira:RHELDOCS-18323[1]
4.15. 云环境中的 RHEL
删除生成的配置文件的新的 cloud-init clean 选项
已为 cloud-init
工具添加了 cloud-init clean --configs
选项。您可以使用此选项删除实例上 cloud-init
生成的不需要的配置文件。例如,要删除定义网络设置的 cloud-init
配置文件,请使用以下命令:
cloud-init clean --configs network
Jira:RHEL-7312[1]
EC2 上的 RHEL 实例现在支持 IPv6 IMDS 连接
有了此更新,Amazon Elastic Cloud Compute (EC2)上的 RHEL 8 和 9 实例可以使用 IPv6 协议连接到实例元数据服务(IMDS)。因此,您可以在具有双栈 IPv4 和 IPv6 连接的 EC2 上使用 cloud-init
配置 RHEL 实例。另外,您可以在仅 IPv6 子网中使用 cloud-init
启动 RHEL 的 EC2 实例。
4.16. 容器
Container Tools 软件包已更新
现在提供更新的 Container Tools 软件包,其包括 Podman、Buildah、Skopeo、crun 和 runc 工具。与之前版本相比,重要的程序错误修复和增强包括:
Podman v4.9 中的显著变化:
-
现在,您可以使用
podman --module <your_module_name>
命令来按需加载模块,并覆盖系统和用户配置文件。 -
添加了一个新的带有一组
create
,set
,remove
和update
子命令的podman farm
命令。使用这些命令,您可以将构建分发到为不同架构运行 podman 的机器。 -
添加了一个新的
podman-compose
命令,它使用外部 compose 提供方,如 Docker compose 来运行 Compose 工作负载。 -
podman build
命令现在支持--layer-label
和--cw
选项。 -
podman generate systemd
命令已弃用。使用 Quadlet ,来在systemd
下运行容器和 pod。 -
podman build
命令现在支持具有 HereDoc 语法的Containerfiles
。 -
podman machine init
和podman machine set
命令现在支持一个新的--usb
选项。使用这个选项以允许 QEMU 提供方的 USB 透传。 -
podman kube play
命令现在支持一个新的--publish-all
选项。使用此选项来公开主机上所有的 containerPorts。
有关显著变化的更多信息,请参阅 上游发行注记。
Jira:RHELPLAN-167794[1]
Podman 现在支持 containers.conf
模块
您可以使用 Podman 模块来加载一组预先确定的配置。Podman 模块是 Tom 的 Obvious Minimal Language (TOML)格式的 containers.conf
文件。
这些模块位于以下目录或其子目录中:
-
对于无根用户:
$HOME/.config/containers/containers.conf.modules
-
对于 root 用户:
/etc/containers/containers.conf.modules
,或/usr/share/containers/containers.conf.modules
您可以使用 podman --module <your_module_name>
命令按需加载模块,以覆盖系统和用户配置文件。使用模块涉及以下事实:
-
您可以使用
--module
选项多次指定模块。 -
如果
<your_module_name>
是绝对路径,则配置文件将被直接加载。 - 相对路径是相对于前面提到的三个模块目录而解析的。
-
$HOME
中的模块覆盖/etc/
和/usr/share/
目录中的模块。
如需更多信息,请参阅 上游文档。
Jira:RHELPLAN-167830[1]
Podman v4.9 RESTful API 现在显示进度数据
有了此增强,Podman v4.9 RESTful API 现在在拉取镜像或将镜像推送到注册中心时显示进度数据。
Jira:RHELPLAN-167822[1]
SQLite 现在作为 Podman 的默认数据库后端被完全支持
使用 Podman v4.9 ,以前作为技术预览提供的 Podman 的 SQLite 数据库后端现在被完全支持。在与容器元数据一起使用时,SQLite 数据库提供更好的稳定性、性能和一致性。SQLite 数据库后端是 RHEL 8.10 新安装的默认后端。如果您从以前的 RHEL 版本升级,则默认后端为 BoltDB。
如果您在 containers.conf
文件中使用 database_backend
选项显式配置了数据库后端,则 Podman 将继续使用指定的后端。
Jira:RHELPLAN-168179[1]
管理员可以使用 nftables
为防火墙规则设置隔离
您可以在没有安装 iptables
的系统上使用 Netavark (Podman 容器网络堆栈)。在以前的版本中,当使用容器网络接口(CNI)网络(Netavark 的前身)时,无法在没有安装 iptables
的系统上设置容器网络。有了此增强,Netavark 网络堆栈可在仅安装了 nftables
的系统上工作,并改进了自动生成的防火墙规则的隔离。
Jira:RHELDOCS-16955[1]
Containerfile
现在支持多行指令
您可以在 Containerfile
文件中使用多行 HereDoc 指令(Here 文档表示法)来简化此文件,并减少执行多个 RUN
指令导致的镜像层数。
例如,原始的 Containerfile
可以包含以下 RUN
指令:
RUN dnf update RUN dnf -y install golang RUN dnf -y install java
您可以使用 HereDoc 表示法,而不是多个 RUN 指令:
RUN <<EOF dnf update dnf -y install golang dnf -y install java EOF
Jira:RHELPLAN-168184[1]
Toolbx 现在可用
使用 Toolbx,您可以将开发和调试工具、编辑器和软件开发套件(SDK)安装到 Toolbx 完全可变的容器中,而不影响基本操作系统。Toolbx 容器基于 registry.access.redhat.com/ubi8.10/toolbox:latest
镜像。
Jira:RHELDOCS-16241[1]
第 5 章 可用的 BPF 功能
本章提供了此 Red Hat Enterprise Linux 8 次版本的内核中 Berkeley Packet Filter (BPF)功能的完整列表。表包括以下列表:
本章包含 bpftool feature
命令自动生成的输出。
选项 | 值 |
---|---|
unprivileged_bpf_disabled | 1 (bpf()系统调用限制为特权用户,无需恢复。) |
JIT 编译器 | 1(启用) |
JIT 编译器强化 | 1(为非特权用户启用) |
JIT 编译器 kallsyms 导出 | 1(为 root 用户启用) |
非特权用户的 JIT 的内存限制 | 528482304 |
CONFIG_BPF | y |
CONFIG_BPF_SYSCALL | y |
CONFIG_HAVE_EBPF_JIT | y |
CONFIG_BPF_JIT | y |
CONFIG_BPF_JIT_ALWAYS_ON | y |
CONFIG_DEBUG_INFO_BTF | y |
CONFIG_DEBUG_INFO_BTF_MODULES | n |
CONFIG_CGROUPS | y |
CONFIG_CGROUP_BPF | y |
CONFIG_CGROUP_NET_CLASSID | y |
CONFIG_SOCK_CGROUP_DATA | y |
CONFIG_BPF_EVENTS | y |
CONFIG_KPROBE_EVENTS | y |
CONFIG_UPROBE_EVENTS | y |
CONFIG_TRACING | y |
CONFIG_FTRACE_SYSCALLS | y |
CONFIG_FUNCTION_ERROR_INJECTION | y |
CONFIG_BPF_KPROBE_OVERRIDE | y |
CONFIG_NET | y |
CONFIG_XDP_SOCKETS | y |
CONFIG_LWTUNNEL_BPF | y |
CONFIG_NET_ACT_BPF | m |
CONFIG_NET_CLS_BPF | m |
CONFIG_NET_CLS_ACT | y |
CONFIG_NET_SCH_INGRESS | m |
CONFIG_XFRM | y |
CONFIG_IP_ROUTE_CLASSID | y |
CONFIG_IPV6_SEG6_BPF | n |
CONFIG_BPF_LIRC_MODE2 | n |
CONFIG_BPF_STREAM_PARSER | y |
CONFIG_NETFILTER_XT_MATCH_BPF | m |
CONFIG_BPFILTER | n |
CONFIG_BPFILTER_UMH | n |
CONFIG_TEST_BPF | m |
CONFIG_HZ | 1000 |
bpf() syscall | 可用 |
大型程序大小限制 | 可用 |
程序类型 | 可用的帮助程序 |
---|---|
socket_filter | bpf_map_lookup_elem, bpf_map_update_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_perf_event_output, bpf_skb_load_bytes, bpf_get_current_task, bpf_get_numa_node_id, bpf_get_socket_cookie, bpf_get_socket_uid, bpf_skb_load_bytes_relative, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
kprobe | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_probe_read, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_pid_tgid, bpf_get_current_uid_gid, bpf_get_current_comm, bpf_perf_event_read, bpf_perf_event_output, bpf_get_stackid, bpf_get_current_current_task bpf_current_task_under_cgroup, bpf_get_numa_node_id, bpf_probe_read_str, bpf_perf_event_read_value, bpf_override_return, bpf_get_stack, bpf_get_current_cgroup_id, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_send_signal, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_send_signal_thread, bpf_jiffies64, bpf_get_ns_current_tgid, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_get_task_stack, bpf_snprintf_btf, bpf_per_cpu_cpu_tr, bpf_this_cpu_ptr, bpf_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
sched_cls | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_skb_store_bytes, bpf_l3_csum_replace, bpf_l4_csum_replace, bpf_tail_call, bpf_clone_redirect, bpf_get_cgroup_classid, bpf_skb_vlan_push, bpf_skb_vlan_pop, bpf_skb_get_key, bpf_skb_key bpf_skb_set_tunnel_key, bpf_redirect, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_csum_diff, bpf_skb_get_tunnel_opt, bpf_skb_set_forward_opt bpf_skb_change_proto, bpf_skb_change_type, bpf_skb_under_cgroup, bpf_get_hash_recalc, bpf_get_current_task, bpf_skb_change_tail, bpf_skb_pull_data, bpf_csum_update, bpf_set_hash_invalid, bpf_get_numa_node_id, bpf_skb_change_head, bpf_get_socket_cookie, bpf_get_socket_uid, bpf_set_hash, bpf_skb_adjust_room, bpf_skb_get_xfrm_state, bpf_skb_load_bytes_relative, bpf_fib_lookup, bpf_skb_cgroup_id, bpf_skb_ancestor_cgroup_id, bpf_sk_lookup_tcp, bpf_sk_lookup_udp、bpf_sk_release、bpf_map_push_elem、bpf_map_pop_elem、bpf_map_peek_elem、bpf_spin_lock、bpf_spin_unlock、bpf_sk_fullsk_fulls bpf_tcp_sock, bpf_skb_ecn_set_ce, bpf_get_listener_sock, bpf_skc_lookup_tcp, bpf_tcp_check_syncookie, bpf_sk_get, bpf_sk_storage_delete, bpf_tcp_gen_syncookie, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_sk_assign, bpf_ktime_get_boot_ns bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_csum_level, bpf_skc_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_bt, bpf_skb_cgroup_classid, bpf_redirect_neigh, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_redirect_peer, bpf_ktime_get_coarse_ns, bpf_check_mt, bpf_for_each_map_elem, bpf_snprintf |
sched_act | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_skb_store_bytes, bpf_l3_csum_replace, bpf_l4_csum_replace, bpf_tail_call, bpf_clone_redirect, bpf_get_cgroup_classid, bpf_skb_vlan_push, bpf_skb_vlan_pop, bpf_skb_get_key, bpf_skb_key bpf_skb_set_tunnel_key, bpf_redirect, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_csum_diff, bpf_skb_get_tunnel_opt, bpf_skb_set_forward_opt bpf_skb_change_proto, bpf_skb_change_type, bpf_skb_under_cgroup, bpf_get_hash_recalc, bpf_get_current_task, bpf_skb_change_tail, bpf_skb_pull_data, bpf_csum_update, bpf_set_hash_invalid, bpf_get_numa_node_id, bpf_skb_change_head, bpf_get_socket_cookie, bpf_get_socket_uid, bpf_set_hash, bpf_skb_adjust_room, bpf_skb_get_xfrm_state, bpf_skb_load_bytes_relative, bpf_fib_lookup, bpf_skb_cgroup_id, bpf_skb_ancestor_cgroup_id, bpf_sk_lookup_tcp, bpf_sk_lookup_udp、bpf_sk_release、bpf_map_push_elem、bpf_map_pop_elem、bpf_map_peek_elem、bpf_spin_lock、bpf_spin_unlock、bpf_sk_fullsk_fulls bpf_tcp_sock, bpf_skb_ecn_set_ce, bpf_get_listener_sock, bpf_skc_lookup_tcp, bpf_tcp_check_syncookie, bpf_sk_get, bpf_sk_storage_delete, bpf_tcp_gen_syncookie, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_sk_assign, bpf_ktime_get_boot_ns bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_csum_level, bpf_skc_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_bt, bpf_skb_cgroup_classid, bpf_redirect_neigh, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_redirect_peer, bpf_ktime_get_coarse_ns, bpf_check_mt, bpf_for_each_map_elem, bpf_snprintf |
tracepoint | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_probe_read, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_pid_tgid, bpf_get_current_uid_gid, bpf_get_current_comm, bpf_perf_event_read, bpf_perf_event_output, bpf_get_stackid, bpf_get_current_current_task bpf_current_task_under_cgroup, bpf_get_numa_node_id, bpf_probe_read_str, bpf_perf_event_read_value, bpf_get_stack, bpf_get_current_cgroup_id, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_send_signal, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_send_signal_thread, bpf_jiffies64, bpf_get_ns_current_pid_tgid, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_serve bpf_ringbuf_submit、bpf_ringbuf_discard、bpf_ringbuf_query、bpf_get_task_stack、bpf_snprintf_btf、bpf_per_cpu_ptr、bpf_this_cpu_ptr, bpf_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
xdp | bpf_map_lookup_elem, bpf_map_update_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_redirect, bpf_perf_event_output, bpf_csum_diff, bpf_get_current_task, bpf_get_numa_node_id, bpf_xdp_adjust_head, bpf_redirect_map, bpf_xdp_adjust_meta, bpf_xdp_adjust_tail, bpf_fib_lookup, bpf_sk_lookup_tcp, bpf_sk_lookup_udp, bpf_sk_release, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_skc_lookup_tcp, bpf_tcp_check_syncookie, bpf_tcp_gen_syncookie, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_check_mtu, bpf_for_each_map_elem, bpf_snprintf |
perf_event | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_probe_read, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_pid_tgid, bpf_get_current_uid_gid, bpf_get_current_comm, bpf_perf_event_read, bpf_perf_event_output, bpf_get_stackid, bpf_get_current_current_task bpf_current_task_under_cgroup, bpf_get_numa_node_id, bpf_probe_read_str, bpf_perf_event_read_value, bpf_perf_prog_read_value, bpf_get_stack, bpf_get_current_cgroup_id, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_send_signal, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_send_signal_thread, bpf_jiffies64, bpf_read_branch_records, bpf_get_ns_current_tgid, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit、bpf_ringbuf_discard、bpf_ringbuf_query、bpf_get_task_stack、bpf_snprintf_bt bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
cgroup_skb | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_perf_event_output, bpf_skb_load_bytes, bpf_get_current_task, bpf_get_numa_node_id, bpf_get_socket_cookie, bpf_get_socket_uid, bpf_skb_load_bytes_relative, bpf_skb_cgroup_id, bpf_get_local_storage, bpf_skb_ancestor_cgroup_id, bpf_sk_lookup_tcp, bpf_sk_lookup_udp, bpf_sk_release, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_sk_fullsock, bpf_tcp_sock, bpf_skb_ecn_set_ce, bpf_get_listener_sock, bpf_skc_lookup_tcp, bpf_sk_storage_get, bpf_sk_storage_delete, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_sk_cgroup_id, bpf_sk_ancestor_cgroup_id, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit、bpf_ringbuf_discard、bpf_ringbuf_query、bpf_skc_to_tcp6_sock、bpf_skc_to_tcp_sock、bpf_skc_to_tcp_timewait_sock、 bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
cgroup_sock | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_pid_tgid, bpf_get_current_uid_gid, bpf_get_current_comm, bpf_get_cgroup_classid, bpf_perf_event_output, bpf_get_current_task, bpf_get_numa_id, bpf_get_socket_cookie, bpf_get_current_cgroup_id, bpf_get_local_storage, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_sk_storage_get, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_get_netns_cookie, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
lwt_in | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_cgroup_classid, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_csum_diff, bpf_skb_under_cgroup, bpf_get_hash_recalc, bpf_get_current_task, bpf_skb_pull_data, bpf_get_numa_node_id, bpf_lwt_push_encap, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_skc_to_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
lwt_out | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_cgroup_classid, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_csum_diff, bpf_skb_under_cgroup, bpf_get_hash_recalc, bpf_get_current_task, bpf_skb_pull_data, bpf_get_numa_node_id, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_ocks, bpf_skc_waits_waits_ocks, bpf_ringbuf_ock bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
lwt_xmit | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_skb_store_bytes, bpf_l3_csum_replace, bpf_l4_csum_replace, bpf_tail_call, bpf_clone_redirect, bpf_get_cgroup_classid, bpf_skb_get_tunnel_key, bpf_skb_tunnel_key, bpf_redirect, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_csum_diff, bpf_skb_get_tunnel_opt, bpf_skb_set_tunnel_opt, bpf_skb_under_group, bpf_skb_undercgroup bpf_get_hash_recalc, bpf_get_current_task, bpf_skb_change_tail, bpf_skb_pull_data, bpf_csum_update, bpf_set_hash_invalid, bpf_get_numa_node_id, bpf_skb_change_head, bpf_lwt_push_encap, bpf_map_push_elem, bpf_map_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_serve bpf_ringbuf_submit、bpf_ringbuf_discard、bpf_ringbuf_query、bpf_csum_level、bpf_skc_to_tcp6_sock、bpf_skc_to_tcp_sock、bpf_skc_to_tcp_waits_ocks bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
sock_ops | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_perf_event_output, bpf_get_current_task, bpf_get_numa_node_id, bpf_get_socket_cookie, bpf_setsockopt, bpf_sock_map_update, bpf_getsockopt, bpf_s_ockops_ock_flags_set, bpf_sock_hash_update, bpf_get_local_storage, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_tcp_sock, bpf_sk_storage_get, bpf_sk_storage_delete, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_load_hdr_opt, bpf_store_hdr_opt, bpf_reserve_hdr_opt, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
sk_skb | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_skb_store_bytes, bpf_tail_call, bpf_perf_event_output, bpf_skb_load_bytes, bpf_get_current_task, bpf_skb_change_tail, bpf_skb_pull_data, bpf_get_numa_node_id, bpf_skb_change_head, bpf_get_socket_cookie, bpf_get_socket_uid, bpf_skb_adjust_room, bpf_sk_redirect_map, bpf_sk_redirect_hash, bpf_sk_lookup_tcp, bpf_sk_lookup_udp、bpf_sk_release、bpf_map_push_elem、bpf_map_pop_elem、bpf_map_peek_elem、bpf_spin_lock、bpf_spin_unlock、bpf_skc_lookup_tcp bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_serve bpf_ringbuf_submit、bpf_ringbuf_discard、bpf_ringbuf_query、bpf_skc_to_tcp6_sock、bpf_skc_to_tcp_sock、bpf_skc_to_tcp_timewait_sock、 bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
cgroup_device | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_uid_gid, bpf_perf_event_output, bpf_get_current_task, bpf_get_numa_node_id, bpf_get_current_cgroup_id, bpf_get_local_storage, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_ bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_snprintf, bpf_ringbuf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
sk_msg | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_pid_tgid, bpf_get_current_uid_gid, bpf_get_cgroup_classid, bpf_perf_event_output, bpf_get_current_task, bpf_get_numa_node_id, bpf_msg_redirect_map, bpf_msg_apply_bytes、bpf_msg_cork_bytes、bpf_msg_pull_data, bpf_msg_redirect_hash, bpf_get_current_cgroup_id, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_msg_push_data, bpf_msg_pop_data, bpf_spin_lock, bpf_spin_unlock, bpf_sk_storage_get, bpf_sk_storage_delete, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_ocks, bpf_skc_waits_waits_ocks, bpf_ringbuf_ock bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
raw_tracepoint | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_probe_read, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_pid_tgid, bpf_get_current_uid_gid, bpf_get_current_comm, bpf_perf_event_read, bpf_perf_event_output, bpf_get_stackid, bpf_get_current_current_task bpf_current_task_under_cgroup, bpf_get_numa_node_id, bpf_probe_read_str, bpf_perf_event_read_value, bpf_get_stack, bpf_get_current_cgroup_id, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_send_signal, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_send_signal_thread, bpf_jiffies64, bpf_get_ns_current_pid_tgid, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_serve bpf_ringbuf_submit、bpf_ringbuf_discard、bpf_ringbuf_query、bpf_get_task_stack、bpf_snprintf_btf、bpf_per_cpu_ptr、bpf_this_cpu_ptr, bpf_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
cgroup_sock_addr | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_pid_tgid, bpf_get_current_uid_gid, bpf_get_current_comm, bpf_get_cgroup_classid, bpf_perf_event_output, bpf_get_current_task, bpf_get_numa_id, bpf_get_socket_cookie, bpf_setsockopt, bpf_getsockopt, bpf_bind, bpf_get_current_cgroup_id, bpf_get_local_storage, bpf_sk_lookup_tcp, bpf_sk_lookup_udp, bpf_sk_release, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_skc_lookup_tcp, bpf_sk_storage_get, bpf_sk_storage_delete, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_get_netns_cookie, bpf_get_get_current_tance_id_id bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_bt, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
lwt_seg6local | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_cgroup_classid, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_csum_diff, bpf_skb_under_cgroup, bpf_get_hash_recalc, bpf_get_current_task, bpf_skb_pull_data, bpf_get_numa_node_id, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_ocks, bpf_skc_waits_waits_ocks, bpf_ringbuf_ock bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
lirc_mode2 | 不支持 |
sk_reuseport | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_skb_load_bytes、bpf_get_current_task、bpf_get_numa_node_id、bpf_get_socket_cookie、bpf_skb_load_bytes_relative, bpf_sk_sk_reuseport, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_ bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_snprintf, bpf_ringbuf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
flow_dissector | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_skb_load_bytes、bpf_get_current_task、bpf_get_numa_node_id、bpf_map_push_elem、bpf_map_pop_elem、bpf_map_peek_elem、bpf_spin_lock、 bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_ocks, bpf_skc_waits_waits_ocks, bpf_ringbuf_ock bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
cgroup_sysctl | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_uid_gid, bpf_perf_event_output, bpf_get_current_task, bpf_get_numa_node_id, bpf_get_current_cgroup_id, bpf_get_local_storage, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_sysctl_get_name, bpf_sysctl_get_current_value, bpf_sysctl_get_new_value, bpf_sysctl_set_new_value, bpf_strtol, bpf_strtoul, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_snprintf_bt, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
raw_tracepoint_writable | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_probe_read, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_pid_tgid, bpf_get_current_uid_gid, bpf_get_current_comm, bpf_perf_event_read, bpf_perf_event_output, bpf_get_stackid, bpf_get_current_current_task bpf_current_task_under_cgroup, bpf_get_numa_node_id, bpf_probe_read_str, bpf_perf_event_read_value, bpf_get_stack, bpf_get_current_cgroup_id, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_send_signal, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_send_signal_thread, bpf_jiffies64, bpf_get_ns_current_pid_tgid, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_serve bpf_ringbuf_submit、bpf_ringbuf_discard、bpf_ringbuf_query、bpf_get_task_stack、bpf_snprintf_btf、bpf_per_cpu_ptr、bpf_this_cpu_ptr, bpf_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
cgroup_sockopt | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_get_current_uid_gid, bpf_perf_event_output, bpf_get_current_task, bpf_get_numa_node_id, bpf_get_current_cgroup_id, bpf_get_local_storage, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_tcp_sock, bpf_sk_storage_get, bpf_sk_storage_delete, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_ktime_get_boot_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
tracing | 不支持 |
struct_ops | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_probe_read, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_skb_store_bytes、bpf_l3_csum_replace、bpf_l4_csum_replace、bpf_tail_call、bpf_clone_redirect、bpf_get_current_pid_tgid、bpf_get_gid、bpf_uid_gid、bpf_get_current_m bpf_get_cgroup_classid, bpf_skb_vlan_push, bpf_skb_vlan_vlan_pop, bpf_skb_get_tunnel_key, bpf_skb_set_tunnel_key, bpf_perf_event_read, bpf_redirect, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_get_stackid, bpf_csum_diff, bpf_skb_get_tunnel_opt, bpf_skb_set_tunnel_opt, bpf_skb_change_proto, bpf_skb_change_type, bpf_skb_under_cgroup, bpf_get_hash_recalc, bpf_get_current_task, bpf_current_task_under_cgroup, bpf_skb_change_tail bpf_skb_pull_data, bpf_csum_update, bpf_set_hash_invalid, bpf_get_numa_node_id, bpf_skb_change_head, bpf_xdp_adjust_head, bpf_probe_read_str, bpf_get_socket_cookie, bpf_get_socket_uid, bpf_set_hash, bpf_setsockopt, bpf_skb_adjust_room, bpf_redirect_map, bpf_sk_redirect_map, bpf_ocks_map, bpf_xdp_adjust_meta, bpf_perf_event_read_value, bpf_perf_prog_read_value, bpf_getsockopt, bpf_override_return, bpf_sock_ops_cb_flags_set, bpf_msg_redirect_map, bpf_msg_apply_bytes、bpf_msg_cork_bytes、bpf_msg_pull_data、bpf_bind、bpf_xdp_adjust_tail、bpf_skb_get_xfrm_state、bpf_get_stack、bpf_skb_load_bytes_reativel bpf_fib_lookup、bpf_sock_hash_update、bpf_msg_redirect_hash、bpf_sk_redirect_hash、bpf_lwt_push_encap、bpf_lwt_seg6_store_bytes、bpf_lwt_seg6_adjust_rhs bpf_lwt_seg6_action, bpf_rc_repeat, bpf_rc_keydown, bpf_skb_cgroup_id, bpf_get_current_cgroup_id, bpf_get_local_storage, bpf_sk_sk_reuseport, bpf_skb_ancestor_cgroup_id, bpf_sk_lookup_tcp, bpf_sk_lookup_udp, bpf_sk_release, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_msg_push_data, bpf_msg_pop_data, bpf_rc_pointer_rel, bpf_spin_lock, bpf_spin_unlock, bpf_sk_fullsock, bpf_tcp_sock, bpf_skb_ecn_ce_ce bpf_get_listener_sock, bpf_skc_lookup_tcp, bpf_tcp_check_syncookie, bpf_sysctl_get_name, bpf_sysctl_get_current_value, bpf_sysctl_get_new_value, bpf_sysctl_set_new_value, bpf_strtol, bpf_strtoul, bpf_sk_storage_get, bpf_sk_storage_delete, bpf_send_signal, bpf_tcp_gen_syncookie, bpf_skb_output, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_tcp_send_ack, bpf_send_signal_thread, bpf_jiffies64, bpf_read_branch_records, bpf_get_ns_current_pid_tgid, bpf_xdp_output, bpf_get_netns_cookie, bpf_get_current_ancestor_cgroup_id, bpf_sk_assign, bpf_ktime_get_boot_ns, bpf_seq_printf, bpf_seq_write, bpf_sk_cgroup_id, bpf_sk_ancestor_cgroup_id, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringf_discard, bpf_ringbuf_query, bpf_csum_level, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock、bpf_get_task_stack、bpf_load_hdr_opt、bpf_store_hdr_opt、bpf_reserve_hdr_opt、bpf_inode_storage_get、bpf_inode_storage_delete、 bpf_d_path, bpf_copy_from_user, bpf_snprintf_btf, bpf_seq_printf_btf, bpf_skb_cgroup_classid, bpf_redirect_neigh, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_redirect_peer, bpf_task_storage_get, bpf_task_storage_delete, bpf_get_current_task_btf, bpf_bprm_opts_set, bpf_ktime_get_coarse_ns, bpf_ima_inode_hash, bpf_sock_from_file, bpf_check_mtu, bpf_for_each_map_elem, bpf_snprintf, bpf_sys_bpf, bpf_btf_find_by_name_kind, bpf_sys_close |
ext | 不支持 |
lsm | 不支持 |
sk_lookup | bpf_map_lookup_elem, bpf_map_elem, bpf_map_delete_elem, bpf_ktime_get_ns, bpf_get_prandom_u32, bpf_get_smp_processor_id, bpf_tail_call, bpf_perf_event_output, bpf_get_current_task, bpf_get_numa_node_id, bpf_sk_release, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_jiffies64, bpf_sk_assign, bpf_ktime_get_ns, bpf_ringbuf_output, bpf_ringbuf_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_skc_to_tcp6_sock, bpf_skc_to_tcp_sock, bpf_skc_to_tcp_timewait_sock, bpf_skc_to_tcp_request_sock, bpf_skc_to_udp6_sock, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_skc_to_cpu_ptr, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf |
映射类型 | 可用 |
---|---|
hash | 是 |
数组 | 是 |
prog_array | 是 |
perf_event_array | 是 |
percpu_hash | 是 |
percpu_array | 是 |
stack_trace | 是 |
cgroup_array | 是 |
lru_hash | 是 |
lru_percpu_hash | 是 |
lpm_trie | 是 |
array_of_maps | 是 |
hash_of_maps | 是 |
devmap | 是 |
sockmap | 是 |
cpumap | 是 |
xskmap | 是 |
sockhash | 是 |
cgroup_storage | 是 |
reuseport_sockarray | 是 |
percpu_cgroup_storage | 是 |
queue | 是 |
queue | 是 |
sk_storage | 是 |
devmap_hash | 是 |
struct_ops | 否 |
ringbuf | 是 |
inode_storage | 是 |
task_storage | 否 |
第 6 章 程序错误修复
这部分描述了 Red Hat Enterprise Linux 8.10 中修复的对用户有严重影响的 bug。
6.1. 安装程序和镜像创建
安装程序现在在 Kickstart 文件中接受额外的时区定义
Anaconda 切换到不同的、更严格的验证时区选择的方法。这导致一些时区定义(如日本)不再有效,尽管在之前的版本中被接受。必须更新具有这些定义的传统的 Kickstart 文件。否则,它们将默认为 Americas/New_York
时区。
有效时区的列表以前从 pytz
Python 库中的 pytz.common_timezones
获取。此更新更改了 timezone
Kickstart 命令的使用 pytz.all_timezones
的验证设置,它是 common_timezones
列表的超集,并允许指定大量的时区。这个更改可确保为 Red Hat Enterprise Linux 6 创建的旧 Kickstart 文件仍然可以指定有效的时区。
注意:此更改仅适用于 timezone
Kickstart 命令。图形和基于文本的交互界面中的时区选择保持不变。用于有有效时区选择的 Red Hat Enterprise Linux 8 的现有 Kickstart 文件不需要任何更新。
Jira:RHEL-13151[1]
6.2. 安全性
使用 ip vrf
管理虚拟路由的规则被添加到 SELinux 策略中
您可以使用 ip vrf
命令管理其他网络服务的虚拟路由。在以前的版本中,selinux-policy
不包含支持此用法的规则。有了此更新,SELinux 策略规则允许从 ip
域到 httpd
、sshd
和 named
域的显式转换。当 ip
命令使用 setexeccon
库调用时,这些转换适用。
Jira:RHEL-9981[1]
SELinux 策略允许 staff_r
受限用户运行 sudo crontab
在以前的版本中,SELinux 策略不包含允许受限用户运行 sudo crontab
命令的规则。因此,staff_r
角色中的受限用户无法使用 sudo crontab
编辑其他用户的 crontab
计划。此更新向策略添加了一个规则,因此 staff_r
用户可以使用 sudo crontab
编辑其他用户的 crontab
计划。
SELinux 策略包含其他服务和应用程序的规则
这个 selinux-policy
软件包版本包含其它规则。最值得注意的是,sysadm_r
角色中的用户可以输入以下命令:
-
sudo traceroute
-
sudo tcpdump
-
sudo dnf
Jira:RHEL-15398, Jira:RHEL-1679, Jira:RHEL-9947
当 unconfined_login
设为 off
时,SELinux 策略拒绝非受限用户的 SSH 登录
在以前的版本中,当 unconfined_login
布尔值被设置为 off
时,SELinux 策略缺少一条拒绝非受限用户通过 SSH 登录的规则。因此,如果 unconfined_login
设为 off
,用户仍然可以使用 SSHD 作为非受限域来登录。此更新向 SELinux 策略中添加了一条规则,因此,当 unconfined_login
为 off
时,用户无法通过 sshd
作为受限来登录。
SELinux 策略允许 rsyslogd
输入受限命令
在以前的版本中,SELinux 策略缺少允许 rsyslogd
守护进程进入 SELinuxconfined 命令的规则,如 systemctl
。因此,作为 omprog
指令的参数执行的命令失败。此更新向 SELinux 策略中添加规则,以便作为 omprog
的参数运行的 /usr/libexec/rsyslog
目录中的可执行文件位于 syslogd_unconfined_script_t
非受限域中。因此,作为 omprog
的参数执行的命令成功完成。
大型 SSHD 配置文件不再阻止登录
在以前的版本中,当 SSHD 配置文件大于 256 KB 时,在登录到系统时会出现一个错误。因此,远程系统无法访问。此更新删除了文件大小限制,因此在 SSHD 配置文件大于 256 KB 时,用户可以登录到系统。
6.3. 软件管理
yum needs-restarting --reboothint
命令现在建议重启来更新 CPU 微码
要完全更新 CPU 微码,您必须重启系统。在以前的版本中,当安装了包含更新的 CPU 微码的 microcode_ctl
软件包时,yum needs-restarting --reboothint
命令不建议重启。有了此更新,这个问题已被解决,yum needs-restarting --reboothint
现在建议重启来更新 CPU 微码。
systemd
现在可以正确管理 librepo
创建的 /run/user/0
目录
在以前的版本中,如果以 root 用户身份登录前,从 Insights 客户端调用 librepo
函数,则可能使用错误的 SELinux 上下文类型创建 /run/user/0
目录。这防止 systemd
在您从 root 注销后清理目录。
有了此更新,librepo
软件包现在根据 SELinux 策略中定义的默认文件系统标记规则来设置一个默认创建类型。因此,systemd
现在可以正确管理由 librepo
创建的 /run/user/0
目录。
systemd
现在可以正确管理 libdnf
创建的 /run/user/0
目录
在以前的版本中,如果在以 root 用户身份登录前,从 Insights 客户端调用 libdnf
函数,可能会使用错误的 SELinux 上下文类型创建 /run/user/0
目录。这防止 systemd
在您从 root 注销后清理目录。
有了此更新,libdnf
软件包现在根据 SELinux 策略中定义的默认文件系统标记规则来设置一个默认创建类型。因此,systemd
现在可以正确管理 libdnf
创建的 /run/user/0
目录。
6.4. Shell 和命令行工具
ReaR 现在决定在安装 BIOS 和 UEFI 引导装载程序时存在 BIOS 引导装载程序
在以前的版本中,在混合引导装载程序设置(UEFI 和 BIOS)中,当使用 UEFI 和 BIOS 引导时,Relax-and-Recover (ReaR)只恢复 UEFI 引导装载程序,而不是 BIOS 引导装载程序。这会导致系统具有 GUID 分区表
(GPT)、BIOS 引导分区,而不是 BIOS 引导装载程序。在这种情况下,ReaR 无法创建救援镜像,尝试使用 rear mkbackup
或 rear mkrescue
命令生成一个备份或救援镜像会失败,并显示以下错误消息:
ERROR: Cannot autodetect what is used as boot loader, see default.conf about 'BOOTLOADER'.
有了这个更新,ReaR 决定 UEFI 和 BIOS 引导装载程序的存在,恢复它们,并在 GPT
中使用 BIOS 引导分区的系统上没有遇到 BIOS 引导装载程序时不会失败。因此,带有混合 UEFI 和 BIOS 引导装载程序设置的系统可以多次备份和恢复。
Jira:RHEL-24729[1]
ReaR 在恢复过程中不再使用 logbsize
,sunit
和 swidth
挂载选项
在以前的版本中,当使用与 MKFS_XFS_OPTIONS
配置设置的原始参数不同的参数恢复 XFS
文件系统时,Relax-and-Recover (ReaR)使用适用于原始文件系统的挂载选项挂载这个文件系统,但不适用于恢复的文件系统。因此,当 ReaR 运行 mount
命令时,磁盘布局重新创建会失败,并显示以下错误消息:
wrong fs type, bad option, bad superblock on and missing codepage or helper program, or other error.
内核日志显示以下消息之一:
logbuf size must be greater than or equal to log stripe size
alignment check failed: sunit/swidth vs. agsize
有了这个更新,ReaR 避免在挂载重新创建的 XFS
文件系统时使用 logbsize
、sunit
和 swidth
挂载选项。因此,当使用 MKFS_XFS_OPTIONS
配置设置时,磁盘布局重新创建成功。
Jira:RHEL-17354[1]
在具有小的精简池元数据大小的系统上,ReaR 恢复不再失败
在以前的版本中,当保存带有精简池的 LVM 卷组的布局时,ReaR 不保存池元数据卷的大小。在恢复过程中,ReaR 会重新创建具有默认大小的池,即使系统使用了非默认池元数据大小。
因此,当原始池元数据大小小于默认大小,且卷组中没有可用空间时,系统恢复过程中的布局重新创建会失败,并在日志中显示类似这些示例的消息:
Insufficient free space: 230210 extents needed, but only 230026 available
或者
Volume group "vg" has insufficient free space (16219 extents): 16226 required.
有了此更新,恢复的系统拥有一个与原始系统同样大小的元数据卷。因此,恢复具有小的精简池元数据大小的系统,且卷组中没有额外的可用空间成功完成。
Jira:RHEL-17353[1]
当对 logind-session-monitor
事件调用 polkit 时,pkla-compact
二进制文件被执行
在以前的版本中,对 polkit 操作的授权的重新验证由所有用户的任何一个 logind-session-monitor
事件触发。每个 CheckAuthorization
请求执行 polkit-pkla-compat
二进制文件来检查旧的 .pkla
配置文件,即使系统上没有此类文件,这导致 polkit 守护进程增加了 CPU 使用率。
目前,只观察到与 polkit 操作相关的 logind-session
更改。如果会话的状态发生了变化,则与会话关联的 polkit 对象会触发重新验证(CheckAuthorization
)。您必须重新启动(在登录屏幕注销,然后重新登录
或 重启
)gnome-shell,以便成功更新。
polkit-pkla-compat
二进制文件现在是一个软依赖项。因此,只有在 /etc/polkit-1/localauthority、/etc/ polkit-
1/localauthority、/etc/polkit-1/localauthority、
、/etc/polkit-1/localauthority
.conf.d/var/lib/polkit-1/localauthority
及其独立子目录中没有 .pkla
文件时,才能减少 CPU。
Jira:RHEL-34022[1]
6.5. 内核
crash
rebase 到版本 8.0.4
crash
工具已升级至版本 8.0.4 ,其提供多个 bug 修复。主要修复包括:
- 修复了在内核 panic 过程中非 panic CPU 无法停止的一个分段错误。
-
修复了一个关键错误,即当禁用了
panic_on_oops
内核参数时,错误地阻止内核 panic 。 -
修复了
crash
工具为使用CONFIG_SLAB_FREELIST_HARDENED=y
配置选项编译的内核解析哈希 freelist 指针的问题。 在内核模块内存布局术语中的一个更改,将
module_layout
替换为module_memory
,以更好地指示crash
工具与内存相关的方面。在此更改前,crash
工具无法启动会话并返回错误消息,例如:crash: invalid structure member offset: module_core_size FILE: kernel.c LINE: 3787 FUNCTION: module_init()
tuna
根据需要启动 GUI
在以前的版本中,如果您运行没有任何子命令的 tuna
工具,它将启动 GUI。如果您有显示器,则此行为是需要的。相反的情况,在没有显示器的机器上的 tuna
不能正常退出。有了此更新,tuna
会检测您是否有显示器,并相应地启动或不启动 GUI 。
Jira:RHEL-19179[1]
6.6. 文件系统和存储
multipathd 现在检查设备是否错误地排队 I/O
在以前的版本中,多路径设备会在以下条件下重启排队 I/O,即使它被配置为失败:
-
多路径设备配置了
queue_if_no_paths
参数设置为几个重试。 - 路径设备已从没有工作路径的多路径设备中删除,且不再排队 I/O。
有了此更新,这个问题已被解决。因此,如果排队被禁用了,且路径在没有可用路径时被删除了,则多路径设备不再重启排队 I/O。
Jira:RHEL-16563[1]
dm-crypt
和 dm-verity
设备的 no_read_workqueue
、no_write_workqueue
和 try_verify_in_taskle
选项被临时禁用了
在以前的版本中,使用 no_read_workqueue
或 no_write_workqueue
选项创建的 dm-crypt
设备和使用 try_verify_in_tasklet
选项创建的 dm-verity
设备导致内存崩溃。因此,随机内核内存被破坏,这导致各种系统问题。有了此更新,这些选项被临时禁用了。请注意,这个修复可能导致 dm-verity
和 dm-crypt
在对某些工作负载执行缓慢。
Jira:RHEL-22232[1]
6.7. 高可用性和集群
现在修正了移动和禁止克隆和包资源的问题
此 bug 修复解决了移动打包和克隆的资源的两个限制:
-
当用户试图将打包的资源移出包或禁止其在包中运行时,
pcs
创建了一个约束,但约束没有影响。这导致移动失败,并显示错误消息。有了此修复,pcs
不允许从包中移动和禁止打包的资源,并打印一条错误消息,表示打包的资源不能从包中移出。 -
当用户尝试移动包或克隆资源时,
pcs
退出,并显示一条错误消息,提示包或克隆资源不能移动。此修复放松了 move 命令的验证。现在,可以移动克隆和包资源。在移动克隆资源时,如果多个克隆实例正在运行,您必须指定一个目标节点。只能移动一个副本包。
pcs status
命令的输出不再显示过期约束的警告
在以前的版本中,当移动集群资源创建了一个临时位置约束时,pcs status
命令即使在约束过期后也会显示一条警告。有了此修复,pcs status
命令会过滤掉过期的约束,它们不再在命令输出中生成一条警告消息。
当 SBD 隔离需要它时,不再允许禁用 auto_tie_breaker
仲裁选项
在以前的版本中,pcs
允许用户禁用 auto_tie_breaker
仲裁选项,即使集群配置需要这个选项,以使 SBD 隔离正常工作。有了此修复,当用户试图在 SBD 隔离需要 auto_tie_breaker
启用的系统上禁用 auto_tie_breaker
时,pcs
会产生一条错误消息。
配置 tls
和 keep_active_partition_tie_breaker
仲裁设备选项,而不指定 --force
在以前的版本中,当配置仲裁设备时,用户无法在不指定 --force
选项的情况下,为仲裁设备型号 net
配置 tls
和 keep_active_partition_tie_breaker
选项。有了此更新,配置这些选项不再需要指定 --force
。
6.8. 编译器和开发工具
系统升级中断后,ldconfig
不再崩溃
在以前的版本中,当处理中断的系统升级后,当处理不完整的共享对象时,ldconfig
工具会在 /usr/lib64
目录中意外停止分段错误。有了此更新,ldconfig
会忽略在系统升级过程中写入的临时文件。因此,在系统升级中断后,ldconfig
不再崩溃。
改进了 glibc
与对依赖项周期中涉及的共享对象使用dlclose
的应用程序的兼容性
在以前的版本中,当使用 glibc
中的 dlclose
函数在依赖项周期中卸载共享对象时,在所有其他对象被卸载前,对象的 ELF 析构函数可能还没有被调用。由于此 ELF 析构函数执行较晚,因此应用程序由于初始共享对象的依赖项已被取消初始化而经历了崩溃和其他错误。
在这个版本中,glibc
已被修复,在启动任何其他 ELF destructors 前首先调用被卸载的直接对象的 ELF destructor。因此,改进了与对依赖项周期中涉及的共享对象使用 dlclose
的应用程序的兼容性,且崩溃不再发生。
Jira:RHEL-10481[1]
改进了 glibc
宽字符写性能
在以前的版本中,glibc
中的宽 stdio
流实现不会将默认缓冲区大小视为足够大,以进行宽字符写操作,而是使用 16 字节回退缓冲区,对性能造成了负面影响。有了此更新,缓冲区管理已被修复,且使用整个写缓冲区。因此,glibc
宽字符写性能提高了。
Jira:RHEL-19824[1]
glibc
动态链接器可防止应用程序使用来自自定义 malloc
实现的 TLS 访问的 reentrant malloc
调用
有些应用程序提供了一个自定义的 malloc
动态内存分配实现,它使用全局动态线程-local 存储(TLS)而不是 initial-exec TLS。在以前的版本中,带有使用全局动态 TLS 的捆绑 malloc
调用的应用程序可能会遇到对应用程序的 malloc
子系统重新发送调用的情况。因此,应用程序 malloc
调用会因为堆栈耗尽或内部数据结构的意外状态而崩溃。
随着 RHBA-2024:5834 公告的发布,glibc
动态链接程序会从自定义 malloc
实现中检测 TLS 访问。如果在 malloc
调用期间检测到 TLS 访问,则会跳过 TLS 处理期间进一步的调用,并会阻止重新分配(reentrant malloc
调用)。
6.9. 身份管理
Certmonger
现在可以正确地更新隐藏的副本中的 KDC 证书
在以前的版本中,当证书即将过期时,certmonger
无法在隐藏的副本中更新 KDC 证书。这是因为续订过程仅将非隐藏的副本视为活动的 KDC。在这个版本中,隐藏的副本被视为活跃的 KDC,certmonger
会在这些服务器上成功更新 KDC 证书。
默认情况下,自动成员插件不再清理组
在以前的版本中,自动重建任务首先删除了所有成员资格值,然后从头开始重新构建成员资格。因此,重建任务的成本很高,特别是如果启用了其他 be_txn
插件。
有了此更新,自动成员插件有了以下改进:
- 一次只允许一个重建任务。
自动成员插件不再默认清理以前的成员。使用新的
--cleanup
CLI 选项,在从头开始重新构建前有意清理成员资格:# dsconf slapd-instance_name plugins automember fixup -f objectclass=posixaccount -s sub --cleanup "ou=people,dc=example,dc=com"
- 改进了日志记录以显示修复进度。
Jira:RHEL-5390[1]
当一个操作完成时,分配的内存现在被释放
在以前的版本中,KCM 为每个操作分配的内存在连接关闭之前不会被释放。因此,对于打开连接并在同一个连接上运行许多操作的客户端应用程序,这导致内存显著增加,因为分配的内存没有在连接关闭之前被释放。有了此更新,只要操作完成了,为操作分配的内存就会马上释放。
当可信 AD 用户的名称包含混合问题单字符时,IdM 客户端可以正确地检索它们的信息
在以前的版本中,如果您尝试用户查找或用户的身份验证,并且可信活动目录(AD)用户在其名称中包含混合大小写字符,且在 IdM 中使用覆盖进行了配置,则会返回一个错误,阻止用户访问 IdM 资源。
有了此更新,区分大小写的比较被忽略大小写字符的不区分大小写的比较所替代。因此,IdM 客户端现在可以查找 AD 可信域的用户,即使其用户名包含混合大小写字符,且它们在 IdM 中使用覆盖进行了配置。
如果在更改密码期间没有保留宽限登录,SSSD 将正确返回一个错误
在以前的版本中,如果用户的 LDAP 密码已过期,SSSD 会在用户的初始绑定失败后尝试更改密码,因为没有剩下更多的宽限登录。但是,返回给用户的错误没有指示失败的原因。在这个版本中,如果绑定失败,则更改密码的请求会被取消,SSSD 会返回一条错误消息,表示没有更多宽限期,并且必须以其他方式更改密码。
使用 realm leave
命令从域中删除系统
在以前的版本中,如果在 sssd.conf
文件中为 ad_server
选项设置了多个名称,则运行 realm leave
命令会导致解析错误,且系统也不会从域中删除。有了此更新, ad_server
选项被正确评估,正确的域控制器名称被使用,且系统被正确从域中删除。
KCM 记录到正确的 sssd.kcm.log
文件中
在以前的版本中,logrotate
可以正确地轮转 Kerberos 凭据管理器(KCM)日志文件,但 KCM 会错误地将日志写入旧日志文件 sssd_kcm.log.1
中。如果 KCM 重启了,它会使用正确的日志文件。有了此更新,在 logrotate
被调用后,日志文件会轮转,KCM 可以正确地记录到 sssd_kcm.log
文件中。
realm leave --remove
命令不再要求凭证
在以前的版本中,在运行 realm leave
操作时,realm
工具不会正确检查是否有一个有效的 Kerberos 票据。因此,即使有一个有效的 Kerberos 票据,用户也被要求输入密码。有了此更新,realm
现在可以正确验证是否有一个有效的 Kerberos 票据,在运行 realm leave --remove
命令时,不再要求用户输入密码。
IdM Vault 加密和解密不再在 FIPS 模式下失败
在以前的版本中,IdM Vault 使用 OpenSSL RSA-PKCS1v15 作为默认的填充包装算法。但是,RHEL 中没有一个 FIPS 认证的算法支持 PKCS#1 v1.5 作为 FIPS 批准的模块,导致 IdM Vault 在 FIPS 模式下失败。有了此更新,IdM Vault 支持 RSA-OAEP 填充包装算法作为回退。因此,IdM Vault 加密和解密现在可以在 FIPS 模式下正常工作。
Jira:RHEL-12153[1]
配置了服务器关联性的 CA IdM 副本安装不再失败
在某些情况下,安装没有证书颁发机构(CA)的 IdM 副本会失败,并显示 CA_REJECTED
错误。失败由于 certmonger
服务试图检索证书而发生,并在向复杂拓扑添加新副本时导致不完整的复制详情。
有了此更新,IdM 副本安装过程针对特定的 IdM 服务器而发生,后者提供了必要的服务,如 Kerberos 身份验证、IdM API 和 CA 请求。这在添加新副本时确保完整的复制详情。
Kerberos 密钥分发中心版本 1.20 及更新版本现在处理运行 1.18.2 及更早版本的 KDC 中生成的票据
在以前的版本中,兼容性问题在运行 Kerberos 版本 1.20 或更高版本的密钥分发中心(KDC)和运行 1.18.2 或更早版本的 KDC 之间发生。因此,当运行 Kerberos 1.20 或更高版本的 KDC 签发的证据票据被发送到运行 Kerberos 1.18.2 或更早版本的 KDC 时,旧的 KDC 会拒绝票据授予服务请求,因为它缺少对 AD-SIGNTICKET
属性的支持。
有了这个更新,KDC 的早期版本现在接受运行 Kerberos 1.20 及更新版本的 KDC 生成的证据票据,因为它们在特权属性证书(PAC)存在时,不再需要 AD-SIGNTICKET
。
dirsrv
文件的 SELinux 标签被移到 DEBUG
日志级别
在以前的版本中,dirsrv
文件的 SELinux 标签具有 INFO
日志级别。有了此更新,用于 dirsrv
文件的 DEBUG
日志级别与用于之前版本中的一样。
当后端被配置为没有相关的后缀时,目录服务器不再导致分段错误
在以前的版本中,如果后端被配置为没有相关的后缀,则目录服务器在启动过程中会有一个分段错误。有了此更新,目录服务器会在尝试访问后缀前检查后缀是否与后端关联。因此,不再发生分段错误。
在放弃分页结果搜索后,目录服务器不再失败
在以前的版本中,在放弃分页结果搜索过程中,竞争条件是堆崩溃和目录服务器失败的原因。有了此更新,竞争条件被修复,目录服务器失败不再发生。
如果您为连接表大小配置了一个自定义值,则目录服务器现在可在升级后正确启动
在以前的版本中,如果您为连接表大小设置了一个自定义值,且 dse.ldif
文件中存在 nsslapd-conntablesize
属性,则目录服务器不会在升级后启动。有了此版本,目录服务器可以在使用 dse.ldif
文件中存在的 nsslapd-conntablesize
升级后正确启动。
当内容同步插件被动态启用时,目录服务器不再失败
在以前的版本中,如果内容同步插件被动态启用,则后操作插件回调导致一个分段错误,因为预操作回调没有注册。有了此更新,后操作插件回调验证内存是否被初始化了,目录服务器不再失败。
6.10. Red Hat Enterprise Linux 系统角色
当 SBD delay-start
值很高时,集群启动不再超时
在以前的版本中,当用户使用 ha_cluster
系统角色在集群中配置 SBD 隔离,并将 delay-start
选项设置为接近或大于 90 秒的值时,集群开始超时。这是因为默认的 systemd
启动超时为 90 秒,系统在 SBD 启动延迟值前达到该值。有了此修复,ha_cluster
系统角色覆盖 systemd
中的 sbd.service
启动超时,因此其高于 delay-start
的值。这允许系统在使用 delay-start
选项的高值也能成功启动。
Jira:RHEL-4684[1]
network
角色验证具有 0.0.0.0/0
或 ::/0
的路由规则
在以前的版本中,当路由规则中的 from:
或 to:
设置被设置为 0.0.0.0/0
或 ::/0
地址时,network
RHEL 系统角色无法配置路由规则,并将设置作为无效拒绝。有了此更新,network
角色允许在路由规则验证中将 0.0.0.0/0
和 ::/0
用于 from:
和 to:
。因此,角色可以成功地配置路由规则,而没有引发验证错误。
ha_cluster
系统角色现在可以在 qnetd
主机上正确配置防火墙
在以前的版本中,当用户配置了 qnetd
主机,并使用 ha_cluster
系统角色将 ha_cluster_manage_firewall
变量设置为 true
时,角色不会在防火墙中启用高可用性服务。有了此修复,ha_cluster
系统角色现在可在 qnetd
主机上正确配置防火墙。
keylime_server
角色可以正确地报告 registrar 服务状态
在以前的版本中,当 keylime_server
角色 playbook 提供了不正确的信息时,角色会将启动错误地报告为成功。有了此更新,当提供了不正确的信息时,角色可以正确地报告失败,等待打开的端口的超时时间已从大约 300 秒减少到大约 30 秒。
postgresql
RHEL 系统角色现在安装正确版本的 PostgreSQL
在以前的版本中,如果您尝试使用 RHEL 管理节点上定义的 postgresql_version: "15"
变量运行 postgresql
RHEL 系统角色,则会安装 PostgreSQL 版本 13,而不是版本 15。这个 bug 已被修复,postgresql
角色会安装变量中设置的版本。
podman
RHEL 系统角色现在为无根容器正确设置和取消 linger
在以前的版本中,podman
RHEL 系统角色没有为无根容器正确设置和取消 linger。因此,为无根用户部署 secret 或容器在某些情况下会产生错误,当在某些情况下删除资源时,无法取消 linger 。有了此更新,podman
RHEL 系统角色确保在进行任何 secret 或容器资源管理之前,为无根用户启用 linger,并在没有更多 secret 或容器资源需要管理时,对无根用户取消 linger。因此,角色可以正确地为无根用户管理 linger。
podman
RHEL 系统角色现在为无根容器正确设置和取消 linger
在以前的版本中,podman
RHEL 系统角色没有为无根容器正确设置和取消 linger。因此,为无根用户部署 secret 或容器在某些情况下会产生错误,当在某些情况下删除资源时,无法取消 linger 。有了此更新,podman
RHEL 系统角色确保在进行任何 secret 或容器资源管理之前,为无根用户启用 linger,并在没有更多 secret 或容器资源需要管理时,对无根用户取消 linger。因此,角色可以正确地为无根用户管理 linger。
运行 read-scale 集群并安装 mssql-server-ha
不再需要某些变量
在以前的版本中,如果您使用 mssql
RHEL 系统角色配置一个没有某些变量的读规模的集群(mssql_ha_virtual_ip
,mssql_ha_login
,mssql_ha_login_password
和 mssql_ha_cluster_run_role
),则角色会失败,并显示错误消息 Variable not defined
。但是,运行 read-scale 集群不需要这些变量。角色还尝试安装 mssql-server-ha
,而这不是 read-scale 集群所需要的。有了此修复,对这些变量的要求已删除。因此,运行 read-scale 集群可以成功进行,而没有错误消息。
当 kexec_crash_size 文件忙时,Kdump 系统角色可以正常工作
/sys/kernel/kexec_crash_size
文件提供为崩溃内核内存分配的内存区域的大小。
在以前的版本中,当 /sys/kernel/kexec_crash_size
文件忙时,Kdump 系统角色失败。有了此更新,系统角色在文件可用时重试读取它。因此,当文件忙时,系统角色不再失败。
SELinux
角色不再使用 item
循环变量
在以前的版本中,selinux
RHEL 系统角色使用 item
循环变量。当您从另一个角色调用 selinux
角色时,这可能会导致以下警告消息:
[WARNING]: TASK: fedora.linux_system_roles.selinux : Restore SELinux labels on filesystem tree: The loop variable 'item' is already in use. You should set the `loop_var` value in the `loop_control` option for the task to something else to avoid variable collisions and unexpected behavior.
有了此版本,selinux
角色使用 __selinux_item
作为循环变量。因此,item
变量已在使用的警告不再显示,即使您从另一个角色调用 selinux
角色。
不再详细记录 secret 数据
在以前的版本中,一些处理 secret 数据的任务会记录内容。因此,如果使用了详细日志记录,日志会显示 secret 数据。此更新将 no_log: true
指令添加到可以记录 secret 数据的任务中。因此,secret 数据不会被详细记录。
卷 quadlet 服务名称不再失败
在以前的版本中,启动卷服务名称会产生一条类似如下的错误:
Could not find the requested service NAME.volume: host
使用此更新,卷 quadlet 服务名称被改为 basename-volume.service
。因此,卷服务启动了且无错误。
如需更多信息,请参阅 卷单元 手册页。
nbde_server
角色现在可以使用套接字覆盖
在以前的版本中,nbde_server
RHEL 系统角色假定只有 tangd
套接字覆盖目录中的文件是自定义端口的 override.conf
文件。因此,如果没有端口自定义,角色会删除目录,而不检查其他文件,并且系统在后续运行时会重新创建目录。
有了此版本,角色已被修复,以防止更改端口覆盖文件的属性和在还有其他文件时删除目录。因此,如果 tangd
套接字覆盖文件在角色外管理,角色也可以正常工作。
6.11. 虚拟化
转储失败不再阻止带有安全执行的 IBM Z 虚拟机运行
在以前的版本中,当带有安全执行执行的 IBM Z 虚拟机的转储失败时,虚拟机保持在暂停状态,并被阻止运行。例如,如果磁盘上没有足够的空间,则使用 virsh dump
命令转储虚拟机会失败。
底层代码已被修复,安全执行虚拟机在转储失败后可以成功恢复操作。
Jira:RHEL-16696[1]
第 7 章 技术预览
这部分提供了 Red Hat Enterprise Linux 8.10 中提供的所有技术预览。
如需有关红帽对技术预览功能支持范围的信息,请参阅 技术预览功能支持范围。
7.1. 基础架构服务
TuneD 的套接字 API 作为技术预览提供
通过 UNIX 域套接字控制 TuneD 的套接字 API 现在作为技术预览提供。套接字 API 将一对一与 D-Bus API 映射,并为 D-Bus 不可用的情况提供替代通信方法。通过使用套接字 API,您可以控制 TuneD 守护进程来优化性能,并更改各种调优参数的值。套接字 API 默认被禁用,您可以在 tuned-main.conf
文件中启用它。
7.2. 网络
AF_XDP
作为技术预览
Address Family eXpress Data Path
(AF_XDP
) 是设计用于处理高性能数据包。它包含 XDP
,并允许通过编程方式将选定的数据包高效地重定向到用户空间应用,以便进一步处理。
Bugzilla:1633143[1]
可作为技术预览的 XDP 功能
红帽提供了以下 eXpress Data Path(XDP)功能作为不受支持的技术预览:
-
在 AMD 和 Intel 64 位以外的构架中载入 XDP 程序。请注意,
libxdp
库不适用于 AMD 和 Intel 64 位的构架。 - XDP 硬件卸载。
TC 的多协议标签交换,作为技术预览提供
Multi-protocol Label Switching(MPLS)是一个内核内数据转发机制,用于跨企业网络路由流量。在 MPLS 网络中,接收数据包的路由器根据附加到数据包的标签决定数据包的其他路由。使用标签时,MPLS 网络可以处理带有特定特征的数据包。例如,您可以添加 tc 过滤器
,以一致的方式管理从特定端口接收的数据包或执行特定类型的流量。
数据包进入企业网络后,MPLS 路由器对数据包执行多个操作,如 push
来添加标签、swap
来更新标签,以及 pop
来删除标签。MPLS 允许基于 RHEL 中的一个或多个标签在本地定义操作。您可以配置路由器并设置流量控制(tc
)过滤器,根据 MPLS 标签堆栈条目(lse
)元素来对数据包执行相应的操作,如 label
、traffic class
、bottom of stack
以及 time to live
。
例如,以下命令在 enp0s1 网络接口中添加过滤器以匹配传入的数据包,第一个标签为 12323,第二个标签为 45832。在匹配的数据包中,会执行以下操作:
- 第一个 MPLS TTL 被缩减(如果 TTL 到达 0,则会丢弃数据包)
- 第一个 MPLS 标签被改为 549386
生成的数据包通过 enp0s2 传输,目标 MAC 地址为 00:00:5E:00:53:01,源 MAC 地址为 00:00:5E:00:53:02
# tc filter add dev enp0s1 ingress protocol mpls_uc flower mpls lse depth 1 label 12323 lse depth 2 label 45832 \ action mpls dec_ttl pipe \ action mpls modify label 549386 pipe \ action pedit ex munge eth dst set 00:00:5E:00:53:01 pipe \ action pedit ex munge eth src set 00:00:5E:00:53:02 pipe \ action mirred egress redirect dev enp0s2
Bugzilla:1814836[1], Bugzilla:1856415
act_mpls
模块作为技术预览提供
act_mpls
模块现在作为技术预览在 kernel-modules-extra
rpm 中找到。该模块允许使用流量控制(TC)过滤器进行多协议标签交换(MPLS)操作,例如:通过 TC 过滤器推送和弹出 MPLS 标签堆栈条目。模块还允许独立设置 Label、Traffic Class、Stack 的 Bottom 和 Time to Live 字段。
Bugzilla:1839311[1]
systemd-resolved
服务现在作为技术预览提供
systemd-resolved
服务为本地应用提供名称解析。该服务实现了缓存和验证 DNS 存根解析器、链接本地多播名称解析(LLMNR)和多播 DNS 解析器和响应器。
请注意,即使 systemd
软件包提供了 systemd -resolved
,这个服务仍是一个不受支持的技术预览。
7.3. 内核
soft-RoCE 作为技术预览提供
通过融合以太网的远程直接内存访问(RDMA)是一个通过以太网实现 RDMA 的网络协议。Soft-RoCE 是 RoCE 的软件实现,它维护两个协议版本:RoCE v1 和 RoCE v2。在 RHEL 8 中,Soft-RoCE 驱动程序 rdma_rxe
作为不受支持的技术预览提供。
Bugzilla:1605216[1]
eBPF 作为技术预览
Extended Berkeley Packet Filter(eBPF) 是一个内核中的虚拟机,允许在可访问有限功能的受限沙箱环境中在内核空间中执行代码。
虚拟机包含一个新的系统调用 bpf()
,它允许创建各种类型的映射,还允许在特殊的装配式代码中加载程序。然后,代码被加载到内核,并使用即时编译方式转换为原生机器代码。请注意,只有具有 CAP_SYS_ADMIN
能力的用户(如 root 用户)才可以成功使用 bpf()
syscall。如需更多信息,请参阅 bpf(2)
手册页。
载入的程序可附加到不同的点(套接字、追踪点、数据包)来接收和处理数据。
红帽提供的很多组件都使用 eBPF 虚拟机。每个组件都处于不同的开发阶段。所有组件都作为技术预览提供,除非有特定组件被显示为受支持。
以下显著的 eBPF 组件当前还作为技术预览提供:
-
AF_XDP
,是一个套接字,用于将eXpress Data Path (XDP)路径连接到优先考虑数据包处理性能的应用程序的用户空间。
Bugzilla:1559616[1]
kexec
快速重启功能作为一种技术预览提供
kexec
快速重启功能作为一种技术预览继续提供。kexec
快速重启可显著加快引导过程,因为您可以直接引导到第二个内核,而无需首先通过基本输入/输出系统(BIOS)或固件。要使用这个功能:
-
手动加载
kexec
内核。 - 重启以使更改生效。
请注意,kexec
快速重启功能在 RHEL 9 及更新的版本中提供有限的支持范围。
accel-config
软件包作为技术预览提供
accel-config
软件包现在作为技术预览在 Intel EM64T
和 AMD64
构架上提供。这个软件包有助于控制并配置 Linux 内核中的数据流化器(DSA)子系统。另外,它还通过 sysfs
(pseudo-文件系统)配置设备,以 json
格式保存并载入配置。
Bugzilla:1843266[1]
7.4. 文件系统和存储
现在 ext4 和 XFS 作为技术预览提供文件系统 DAX
在 Red Hat Enterprise Linux 8 中,文件系统 DAX 作为技术预览提供。DAX 提供了将持久内存直接映射到其地址空间的方法。要使用 DAX,系统必须有某种形式的持久性内存可用,通常是以一个或多个非易失性双内联内存模块(NVDIMM)的形式,并且提供 DAX 能力的文件系统必须在 NVDIMM 上创建。另外,该文件系统必须使用 dax
挂载选项挂载。然后,挂载了 dax 的文件系统上的文件的 mmap
会导致存储直接映射到应用程序的地址空间。
Bugzilla:1627455[1]
OverlayFS
OverlayFS 是一种联合文件系统。它允许您在另一个文件系统上覆盖一个文件系统。更改记录在上面的文件系统中,而较小的文件系统则未修改。这允许多个用户共享文件系统镜像,如容器或 DVD-ROM,基础镜像使用只读介质。
在大多数情况下,OverlayFS 仍是一个技术预览。因此,当这个技术被激活时,内核会记录警告信息。
与支持的容器引擎(podman
、cri-o
或 buildah
)一同使用时,对 OverlayFS 提供的全面支持包括以下限制:
-
OverlayFS 仅支持作为容器引擎图形驱动程序或其他专用用例使用,如 squashed
kdump
initramfs。它主要用来支持容器 COW 内容,而不是持久性存储。您必须将任何持久性存储放在非OverlayFS 卷中。您只能使用默认容器引擎配置:一个级别的覆盖、一个较低 dir 以及较低级别和上一级都位于同一个文件系统中。 - 目前只支持 XFS 作为较低层文件系统使用。
另外,以下规则和限制适用于使用 OverlayFS:
- OverlayFS 内核 ABI 和用户空间的行为被视为不稳定,将来的更新可能会改变。
OverlayFS 提供一组受限的 POSIX 标准。在使用 OverlayFS 部署前,先测试您的应用程序。以下情况与 POSIX 不兼容:
-
O_RDONLY
打开的较低文件在读取文件时不会接收st_atime
更新。 -
使用
O_RDONLY
打开的较低文件,然后与MAP_SHARED
映射与后续修改不一致。 RHEL 8 中不默认启用完全兼容
st_ino
或d_ino
值,但您可以使用模块选项或挂载选项为它们启用完整的 POSIX 合规性。要获得一致的内节点编号,请使用
xino=on
挂载选项。您还可以使用
redirect_dir=on
和index=on
选项提高 POSIX 合规性。这两个选项使上层的格式与没有这些选项的 overlay 不兼容。也就是说,如果您使用redirect_dir=on
或index=on
创建一个覆盖,卸载覆盖,然后在没有这些选项的情况下挂载覆盖,则可能会出现意外的结果或错误。
-
要确定现有 XFS 文件系统是否有资格用作 overlay,请使用以下命令查看是否启用了
ftype=1
选项:# xfs_info /mount-point | grep ftype
- 使用 OverlayFS 在所有支持的容器引擎中默认启用 SELinux 安全标签。
- 本发行版本中与 OverlayFS 相关的几个已知问题。详情请查看 Linux 内核文档 中的 非标准行为。
有关 OverlayFS 的更多信息,请参阅 Linux 内核文档。
Bugzilla:1690207[1]
Stratis 现在作为技术预览提供
Stratis 是一个新的本地存储管理器,它使用额外的功能在存储池之上提供受管的文件系统。它作为技术预览提供。
使用 Stratis,您可以执行以下存储任务:
- 管理快照和精简配置
- 根据需要自动增大文件系统大小
- 维护文件系统
要管理 Stratis 存储,使用 stratis
工具来与 stratisd
后台服务进行通信。如需更多信息,请参阅 设置 Stratis 文件系统 文档。
RHEL 8.5 将 Stratis 更新至版本 2.4.2。如需更多信息,请参阅 Stratis 2.4.2 发行注记。
Jira:RHELPLAN-1212[1]
NVMe/TCP 主机作为技术预览提供
访问和共享通过 TCP/IP 网络(NVMe/TCP)的 Nonvolatile Memory Express(NVMe/TCP)存储及其相应的 nvme_tcp.ko
内核模块已被添加为技术预览。使用 nvme-cli
软件包提供的工具可以将 NVMe/TCP 作为主机管理。NVMe/TCP 主机技术预览仅用于测试目的,目前没有计划提供全面支持。
Bugzilla:1696451[1]
在 IdM 域成员中设置 Samba 服务器作为技术预览提供
在这个版本中,您可以在 Identity Management(IdM)域成员中设置 Samba 服务器。由同名软件包提供的新 ipa-client-samba
程序为 IdM 添加了特定于 Samba 的 Kerberos 服务主体并准备 IdM 客户端。例如,实用程序使用 sss
ID 映射后端的 ID 映射配置创建 /etc/samba/smb.conf
。现在,管理员可以在 IdM 域成员中设置 Samba。
由于 IdM Trust Controller 不支持全局目录服务,AD-enrolled Windows 主机无法在 Windows 中找到 IdM 用户和组。另外,IdM Trust Controller 不支持使用分布式计算环境/远程过程调用(DCE/RPC)协议解析 IdM 组。因此,AD 用户只能访问 IdM 客户端的 Samba 共享和打印机。
详情请查看在 IdM 域成员中设置 Samba。
Jira:RHELPLAN-13195[1]
7.5. 高可用性和集群
pacemaker podman
bundles 作为技术预览
pacemaker 容器捆绑包现在在 Podman 上运行,容器捆绑包功能作为技术预览提供。此功能的一个例外是技术预览:红帽完全支持将 Pacemaker 捆绑包用于 Red Hat OpenStack。
Bugzilla:1619620[1]
作为技术预览的 corosync-qdevice
中的 Heuristics
Heuristics是一组在启动、集群成员资格更改、成功连接到 corosync-qnetd
时本地执行的命令,以及可选的定期执行的命令。当所有命令及时成功完成(返回的错误代码为零),代表 heuristics 通过,否则代表失败。Heuristics 结果发送到 corosync-qnetd
,在计算中用来决定哪个分区应该是 quorate。
新的 fence-agents-heuristics-ping
保护代理
作为技术预览,Pacemaker 现在提供 fence_heuristics_ping
代理。这个代理旨在打开一组实验性保护代理,它们本身没有实际隔离,而是以新的方式利用隔离级别。
如果 heuristics 代理的配置与用于实现实际隔离代理有相同的隔离级别,但在代理之前配置,隔离会在试图进行隔离前,在 heuristics 代理上发出一个 off
操作。如果 heuristics 代理给出了 off
操作的一个负结果,则代表隔离不成功,从而导致 Pacemaker 隔离跳过对实现隔离的代理发出 off
动作的步骤。heuristics 代理可以利用这个行为来防止实际上进行隔离的代理在特定情况下隔离节点。
用户可能希望使用这个代理,特别是在双节点集群中,如果节点可以预先知道无法正确接管该服务,则节点可以隔离这个代理。例如,如果节点在网络连接链接出现问题,使服务无法访问客户端,则节点接管服务可能不真实。在这种情况下,向路由器的 ping 可能会探测到这个情况。
Bugzilla:1775847[1]
7.6. 身份管理
身份管理 JSON-RPC API 作为技术预览
一个 API 可用于 Identity Management(IdM)。要查看 API,IdM 还提供了一个 API 浏览器作为技术预览。
在以前的版本中,IdM API 被改进来启用多个 API 命令版本。这些增强可能会以不兼容的方式改变命令的行为。用户现在可以继续使用已有的工具和脚本,即使 IdM API 发生了变化。这可启用:
- 管理员要在服务器中使用之前或更高版本的 IdM,而不是在管理客户端中使用。
- 开发人员可以使用 IdM 调用的特定版本,即使 IdM 版本在服务器上发生了变化。
在所有情况下,与服务器进行通信是可能的,无论是否一方使用,例如,一个新的版本会为这个功能引进新的选项。
有关使用 API 的详细信息,请参阅使用身份管理 API 与 IdM 服务器通信(TECHNOLOGY PREVIEW)。
DNSSEC 在 IdM 中作为技术预览提供
带有集成 DNS 的身份管理(IdM)服务器现在实现了 DNS 安全扩展(DNSSEC),这是一组增强 DNS 协议安全的 DNS 扩展。托管在 IdM 服务器上的 DNS 区可以使用 DNSSEC 自动签名。加密密钥是自动生成和轮转的。
建议那些决定使用 DNSSEC 保护 DNS 区的用户读取并遵循这些文档:
请注意,集成了 DNSSEC 的 IdM 服务器验证从其他 DNS 服务器获取的 DNS 答案。这可能会影响未按照推荐的命名方法配置的 DNS 区域可用性。
ACME 作为技术预览提供
自动证书管理环境(ACME)服务现在作为技术预览在 Identity Management(IdM)中提供。ACME 是一个用于自动标识符验证和证书颁发的协议。它的目标是通过缩短证书生命周期并避免证书生命周期管理中的手动过程来提高安全性。
在 RHEL 中,ACME 服务使用红帽认证系统(RHCS)PKI ACME 响应程序。RHCS ACME 子系统自动部署到 IdM 部署中的每个证书颁发机构(CA)服务器上,但只有管理员启用它之后,它才会为请求提供服务。RHCS 在发布 ACME 证书时使用 acmeIPAServerCert
配置文件。签发的证书的有效期为 90 天。启用或禁用 ACME 服务会影响整个 IdM 部署。
建议仅在所有服务器都运行 RHEL 8.4 或以上版本的 IdM 部署中启用 ACME。早期的 RHEL 版本不包括 ACME 服务,这可能会在混合版本部署中引起问题。例如,没有 ACME 的 CA 服务器可能会导致客户端连接失败,因为它使用不同的 DNS Subject Alternative Name(SAN)。
目前,RHCS 不会删除过期的证书。由于 ACME 证书在 90 天后过期,因此过期的证书可能会累积,这会影响性能。
要在整个 IdM 部署中启用 ACME,请使用
ipa-acme-manage enable
命令:# ipa-acme-manage enable The ipa-acme-manage command was successful
要在整个 IdM 部署中禁用 ACME,请使用
ipa-acme-manage disable
命令:# ipa-acme-manage disable The ipa-acme-manage command was successful
要检查是否安装了 ACME 服务,以及它是否启用或禁用了,请使用
ipa-acme-manage status
命令:# ipa-acme-manage status ACME is enabled The ipa-acme-manage command was successful
Bugzilla:1628987[1]
sssd-idp 子软件包作为技术预览提供
SSSD 的 sssd-idp
子软件包包含 oidc_child
和 krb5 idp
插件,它们是对身份管理(IdM)服务器执行 OAuth2 身份验证的客户端组件。此功能仅适用于 RHEL 8.7 及更高版本上的 IdM 服务器。
SSSD 内部 krb5 idp 插件作为技术预览提供
SSSD krb5 idp
插件允许您使用 OAuth2 协议对外部身份提供者(IdP)进行身份验证。此功能仅适用于 RHEL 8.7 及更高版本上的 IdM 服务器。
7.7. 桌面
GNOME 用于 64 位 ARM 架构,作为一个技术预览
GNOME 桌面环境可用于 64 位 ARM 架构,作为技术预览。
现在,您可以使用 VNC 连接到 64 位 ARM 服务器上的桌面会话。因此,您可以使用图形应用程序管理服务器。
64 位 ARM 提供了有限的图形应用程序集合。例如:
- Firefox Web 浏览器
-
Red Hat 订阅管理器 (
subscription-manager-cockpit
) -
防火墙配置(
firewall-config
) -
磁盘用量分析器(
baobab
)
使用 Firefox,您可以连接到服务器上的 Cockpit 服务。
某些应用程序,如 LibreOffice ,只提供命令行界面,其图形界面被禁用。
JIRA:RHELPLAN-27394[1], Bugzilla:1667516, Bugzilla:1724302, Bugzilla:1667225
用于 IBM Z 架构的 GNOME 作为技术预览提供
对于 IBM Z 架构,GNOME 桌面环境作为技术预览。
现在,您可以使用 VNC 连接到 IBM Z 服务器上的桌面会话。因此,您可以使用图形应用程序管理服务器。
IBM Z 上提供了一组有限的图形应用程序。例如:
- Firefox Web 浏览器
-
Red Hat 订阅管理器 (
subscription-manager-cockpit
) -
防火墙配置(
firewall-config
) -
磁盘用量分析器(
baobab
)
使用 Firefox,您可以连接到服务器上的 Cockpit 服务。
某些应用程序,如 LibreOffice ,只提供命令行界面,其图形界面被禁用。
Jira:RHELPLAN-27737[1]
7.8. 图形基础结构
VNC 远程控制台作为 64 位 ARM 架构的一个技术预览提供
在 64 位 ARM 架构中,虚拟网络计算(VNC)远程控制台可作为技术预览使用。请注意,在 64 位 ARM 架构中,目前图形堆栈的其它部分没有被验证。
Bugzilla:1698565[1]
7.9. 虚拟化
KVM 虚拟化可用于 RHEL 8 Hyper-V 虚拟机
作为技术预览,现在可将嵌套的 KVM 虚拟化用于 Microsoft Hyper-V hypervisor。因此,您可以在运行在 Hyper-V 主机的 RHEL 8 虚拟机中创建虚拟机。
请注意,目前这个功能仅适用于 Intel 和 AMD 系统。另外,在一些情况下,Hyper-V 中不默认启用嵌套虚拟化。要启用它,请参阅以下文档:
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/nested-virtualization
Bugzilla:1519039[1]
用于 KVM 虚拟机的 AMD SEV 和 SEV-ES
作为技术预览,RHEL 8 为使用 KVM 虚拟机的 AMD EPYC 主机提供安全加密虚拟化(SEV)功能。如果在虚拟机(VM)上启用,SEV 会加密虚拟机的内存来保护虚拟机被主机访问。这提高了虚拟机的安全性。
另外,增强的 Encrypted State 版本 SEV-ES)也作为技术预览提供。SEV-ES 在虚拟机停止运行时加密所有 CPU 注册内容。这可防止主机修改虚拟机的 CPU 注册或读取它们中的任何信息。
请注意,SEV 和 SEV-ES 仅适用于第 2 代 AMD EPYC CPU(代号 Rome)或更新版本。另请注意,RHEL 8 包括 SEV 和 SEV-ES 加密,但不包括 SEV 和 SEV-ES 安全认证。
Bugzilla:1501618[1], Bugzilla:1501607, JIRA:RHELPLAN-7677
Intel vGPU 作为技术预览提供
作为技术预览,可以将物理 Intel GPU 设备分为多个虚拟设备,称为 介质设备
。然后可将这些介质设备分配给多个虚拟机(VM)作为虚拟 GPU。因此,这些虚拟机共享单个物理 Intel GPU 的性能。
请注意,只有所选 Intel GPU 与 vGPU 功能兼容。
另外,也可以启用由 Intel vGPU 操作的 VNC 控制台。通过启用它,用户可以连接到虚拟机的 VNC 控制台,并查看由 Intel vGPU 托管的虚拟机桌面。但是,目前这仅适用于 RHEL 客户机操作系统。
请注意,这个功能已弃用,并将在以后的 RHEL 主发行版本中完全删除。
Bugzilla:1528684[1]
创建嵌套虚拟机
对于装有 RHEL 8 的 Intel、AMD64、IBM POWER 以及 IBM Z 系统主机上运行的 KVM 虚拟机,嵌套的 KVM 虚拟化作为技术预览提供。使用此功能,在物理 RHEL 8 主机上运行的 RHEL 7 或 RHEL 8 虚拟机可作为虚拟机监控程序,并托管自己的虚拟机。
Jira:RHELPLAN-14047[1], Jira:RHELPLAN-24437
技术预览:选择 Intel 网络适配器现在在 Hyper-V 上的 RHEL 客户端中提供 SR-IOV
作为技术预览,运行在 Hyper-V hypervisor 上的 Red Hat Enterprise Linux 客户机操作系统现在可以对 ixgbevf
和 iavf
驱动程序支持的 Intel 网络适配器使用单根 I/O 虚拟化(SR-IOV)功能。此功能在满足以下条件时启用:
- 对网络接口控制器(NIC)启用了 SR-IOV 支持
- 对虚拟 NIC 启用了 SR-IOV 支持
- 对虚拟交换机启用 SR-IOV 支持
- NIC 中的虚拟功能(VF)附加到虚拟机
该功能目前随 Microsoft Windows Server 2016 及更高版本一起提供。
Bugzilla:1348508[1]
RHEL 客户机中的 Intel TDX
作为技术预览,Intel Trust Domain Extension (TDX)功能现在可在 RHEL 8.8 及之后的版本中使用。如果主机系统支持 TDX,您可以部署硬件隔离的 RHEL 9 虚拟机(VM),称为信任域(TD)。但请注意,TDX 目前无法与 kdump
一起工作,启用 TDX 会导致 kdump
在虚拟机上失败。
Bugzilla:1836977[1]
使用 virtiofs 在主机和虚拟机之间共享文件
作为技术预览,RHEL 8 现在提供 virtio 文件系统(virtiofs
)。使用 virtiofs
,您可以在主机系统及其虚拟机(VM)之间高效地共享文件。
Bugzilla:1741615[1]
7.10. 云环境中的 RHEL
RHEL 机密虚拟机现在在 Azure 上作为技术预览提供
有了更新的 RHEL 内核,现在您可以在 Microsoft Azure 上创建并运行机密虚拟机(VM)作为技术预览。但是,在 Azure 上引导时无法加密 RHEL 机密虚拟机镜像。
Jira:RHELPLAN-122316[1]
7.11. 容器
podman-machine
命令不被支持
用于管理虚拟机的 podman-machine
命令仅作为技术预览提供。相反,请直接从命令行运行 Podman。
Jira:RHELDOCS-16861[1]
构建多架构镜像作为技术预览提供
您可用来创建多架构容器镜像的 podman farm build
命令作为技术预览提供。
场场是在其中运行 UNIX podman 套接字的一组计算机。场中的节点可以是不同的架构的机器。podman farm build
命令比 podman build --arch --platform
命令快。
您可以使用 podman farm build
来执行以下操作:
- 在场中的所有节点上构建镜像。
- 将节点捆绑到清单列表中。
-
在所有场节点上执行
podman build
命令。 -
使用
--tag
选项将镜像推送到指定的注册中心。 - 本地创建一个清单列表。
将清单列表推送到注册中心。
清单列表包含农场中存在的每个原生架构类型的一个镜像。
Jira:RHELPLAN-154435[1]
第 8 章 过时的功能
这部分提供在 Red Hat Enterprise Linux 8 中弃用 的功能概述。
弃用的设备被完全支持,这意味着它们会被测试和维护,且其支持状态在 Red Hat Enterprise Linux 8 中保持不变。但是,这些设备可能在以后的主版本中不被支持,且不建议对当前或将来的 RHEL 主发行版本进行新部署。
有关特定主发行版本中已弃用功能的最新列表,请查看最新发行版本的文档。有关支持长度的详情,请查看 Red Hat Enterprise Linux 生命周期 和 Red Hat Enterprise Linux 应用程序流生命周期。
一个软件包可以被弃用,我们不推荐在以后使用。在某些情况下,可以从产品中删除软件包。然后,产品文档可识别提供类似、完全相同或者更高级功能的最新软件包,并提供进一步建议。
有关 RHEL 7 中存在但已在 RHEL 8 中删除 的功能的详情,请参考 采用 RHEL 8 的注意事项。
有关 RHEL 8 中存在但已在 RHEL 9 中删除的功能的信息,请参阅使用 RHEL 9 的注意事项。
8.1. 安装程序和镜像创建
弃用了一些 Kickstart 命令和选项
在 RHEL 8 Kickstart 文件中使用以下命令和选项将会在日志中打印警告信息:
-
auth
或authconfig
-
device
-
deviceprobe
-
dmraid
-
install
-
lilo
-
lilocheck
-
mouse
-
multipath
-
bootloader --upgrade
-
ignoredisk --interactive
-
partition --active
-
reboot --kexec
如果只列出具体选项,则基础命令及其它选项仍可用且没有弃用。
有关 Kickstart 中的详情和相关更改,请参阅使用 RHEL 8 的参考事项文档中的 Kickstart 更改部分。
Bugzilla:1642765[1]
ignoredisk
Kickstart 命令的 --interactive
选项已被弃用
在以后的 Red Hat Enterprise Linux 版本中使用 --interactive
选项会导致严重安装错误。建议您修改 Kickstart 文件删除该选项。
Bugzilla:1637872[1]
Kickstart autostep
命令已弃用
autostep
命令已弃用。有关这个命令的相关部分已从 RHEL 8 文档中删除。
Bugzilla:1904251[1]
8.2. 安全性
NSS
SEED 密码已弃用
Mozilla Network Security Services (NSS
) 库将不支持在以后的版本中使用 SEED 密码的 TLS 密码组合。为确保在 NSS 取消支持时依赖 SEED 密码的部署平稳过渡,红帽推荐对其它密码套件的支持。
请注意,在 RHEL 中,SEED 密码已经被默认禁用。
TLS 1.0 和 TLS 1.1 已弃用
TLS 1.0 和 TLS 1.1 协议在 DEFAULT
系统范围的加密策略级别被禁用。如果需要使用启用的协议,如 Firefox 网页浏览器中的视频检查程序,把系统范围的加密策略切换到 LEGACY
级别:
# update-crypto-policies --set LEGACY
如需更多信息,请参阅红帽客户门户网站中的 RHEL 8 中的 强加密默认值和弱加密算法 知识库中的文章以及 update-crypto-policies(8)
手册页。
在 RHEL 8 中弃用 DSA
数字签名算法(DSA)在 Red Hat Enterprise Linux 8 中被视为已弃用。依赖于 DSA 密钥的身份验证机制在默认配置中不起作用。请注意,即使使用系统范围的 LEGACY
加密策略级别中,OpenSSH
客户端都不接受 DSA 主机密钥。
Bugzilla:1646541[1]
fapolicyd.rules
已被弃用
包含允许和拒绝执行规则的文件的 /etc/fapolicyd/rules.d/
目录替代了 /etc/fapolicyd/fapolicyd.rules
文件。fagenrules
脚本现在将此目录中的所有组件规则文件合并到 /etc/fapolicyd/compiled.rules
文件。/etc/fapolicyd/fapolicyd
中的规则仍由 fapolicyd
框架处理,但只是为了保证向后兼容。
在 NSS
中弃用了SSL2
Client Hello
传输层安全(TLS
)协议版本 1.2 及更早版本允许以向后兼容安全套接字层(SSL
)协议版本 2 的方式与 客户端 Hello
消息进行协商。网络安全服务(NSS
)库中对这个功能的支持已被弃用,默认是禁用的。
需要这个功能支持的应用程序需要使用新的 SSL_ENABLE_V2_compatible_HELLO
API 启用它。以后的 Red Hat Enterprise Linux 8 版本中可能会完全删除对这个功能的支持。
Bugzilla:1645153[1]
使用 /etc/selinux/config
运行时禁用 SELinux 现已弃用
使用 /etc/selinux/config
文件中的 SELINUX=disabled
选项禁用 SELinux 已被弃用。在 RHEL 9 中,当您只通过 /etc/selinux/config
禁用 SELinux 时,系统启动时会启用SELinux ,但没有载入任何策略。
如果您的情况确实需要完全禁用 SELinux,红帽建议通过在内核命令行中添加 selinux=0
参数来禁用 SELinux,如在标题为使用SELinux的在引导时更改 SELinux模式部分中所述。
ipa
SELinux 模块从 selinux-policy
中删除了
ipa
SELinux 模块已从 selinux-policy
软件包中删除,因为不再维护它了。这个功能现在包括在 ipa-selinux
子软件包中。
如果您的场景需要在本地 SELinux 策略中使用 ipa
模块的类型或接口,请安装 ipa-selinux
软件包。
Bugzilla:1461914[1]
TPM 1.2 已被弃用
可信平台模块(TPM)安全加密处理器标准将在 2016 年更新至版本 2.0。TPM 2.0 比 TPM 1.2 提供了很多改进,它和之前的版本不向后兼容。在 RHEL 8 中弃用了 TPM 1.2,它可能会在下一个主发行版本中删除。
Bugzilla:1657927[1]
crypto-policies
派生的属性现已被弃用
随着自定义策略中 crypto-policies
指令作用域的引入,以下派生属性已被弃用: tls_cipher
、ssh_cipher
、ssh_group
、ike_protocol
和 sha1_in_dnssec
。另外,使用 protocol
属性而不指定范围现也已被弃用。有关推荐的替代品,请参阅 crypto-policies(7)
手册页。
RHEL 8 和 9 OpenSSL 证书和密钥容器现已弃用
红帽生态系统目录中的 ubi8/openssl
和 ubi9/openssl
存储库中提供的 OpenSSL 可移植证书和签名容器现已弃用。
Jira:RHELDOCS-17974[1]
8.3. 订阅管理
弃用的 subscription-manager register
的 --token
选项将在 2024 年 11 月底停止工作
弃用的 subscription-manager register
命令的 --token=<TOKEN>
选项从 2024 年 11 月底起,将不再是一个支持的身份验证方法。默认的授权服务器 subscription.rhsm.redhat.com
不再允许基于令牌的身份验证。因此,如果您使用 subscription-manager register --token=<TOKEN>
,则注册将失败,并显示以下错误消息:
Token authentication not supported by the entitlement server
要注册您的系统,请使用其他支持的授权方法,如包括 subscription-manager register
命令的成对选项 --username / --password
或 --org / --activationkey
。
8.4. 软件管理
rpmbuild --sign
已弃用
从 RHEL 8.1 开始,rpmbuild --sign
命令被弃用。在以后的 Red Hat Enterprise Linux 版本中使用这个命令可能会导致错误。建议您使用 rpmsign
命令替代。
8.5. Shell 和命令行工具
在 ReaR 配置文件中设置 TMPDIR
变量已弃用
通过使用语句,如 export TMPDIR=…
在 /etc/rear/local.conf
或 /etc/rear/site.conf
ReaR 配置文件中设置 TMPDIR
环境变量已被弃用。
要为 ReaR 临时文件指定一个自定义目录,请在执行 ReaR 前在 shell 环境中导出变量。例如,输入 export TMPDIR=…
语句,然后在相同的 shell 会话或脚本中输入 rear
命令。
Jira:RHELDOCS-18049[1]
OpenEXR
组件已弃用
OpenEXR
组件已弃用。因此,对 EXR
镜像格式的支持已从 imagecodecs
模块中去掉了。
dump
软件包中的 dump
工具已弃用
用于文件系统备份的 dump
工具已弃用,在 RHEL 9 中将不再提供。
在 RHEL 9 中,红帽建议根据使用情况使用 tar
、dd
或 bacula
、备份工具,对 ext2、ext3 和 ext4 文件系统提供了完整和安全的备份。
请注意,dump
软件包中的 restore
工具仍可用,在 RHEL 9 中也被支持,并作为 restore
软件包提供。
Bugzilla:1997366[1]
RHEL 8 systemd
不再支持 hidepid=n
挂载选项
挂载选项 hidepid=n
,其控制谁可以访问 /proc/[pid]
目录中的信息,与 RHEL 8 提供的 systemd
基础架构不兼容。
另外,使用这个选项可能会导致 systemd
启动的某些服务生成 SELinux AVC 拒绝信息,并阻止其他操作完成。
如需更多信息,请参阅有关的知识库解决方案 RHEL7 和 RHEL8 建议使用"hidepid=2"挂载 /proc ?。
/usr/lib/udev/rename_device
工具已被弃用
用于重命名网络接口的 udev
帮助工具 /usr/lib/udev/rename_device
已被弃用。
ABRT 工具已被弃用
用于检测和报告应用程序崩溃的自动错误报告工具(ABRT) 在 RHEL 8 中已弃用。作为替代,使用 systemd-coredump
工具记录和存储核心转储,其是程序崩溃后自动生成的文件。
Bugzilla:2055826[1]
ReaR crontab 已被弃用
rear
软件包中的 /etc/cron.d/rear
crontab 已在 RHEL 8 中弃用,且不在 RHEL 9 中提供。crontab 会每晚检查磁盘布局是否已更改,如果发生了更改,则运行 rear mkrescue
命令。
如果您需要这个功能,在升级到 RHEL 9 后,请手动配置定期运行 ReaR。
Bacula 中的 SQLite 数据库后端已被弃用
Bacula 备份系统支持多个数据库后端:PostgreSQL、MySQL 和 SQLite。SQLite 后端已被弃用,并将在以后的 RHEL 版本中不被支持。作为一种替代,迁移到其他一种后端(PostgreSQL 或 MySQL),且在新部署中不使用 SQLite 后端。
raw
命令已被弃用
raw
(/usr/bin/raw
)命令已被弃用。在以后的 Red Hat Enterprise Linux 版本中使用这个命令可能会导致错误。
Jira:RHELPLAN-133171[1]
8.6. 基础架构服务
geoipupdate
软件包已弃用
geoipupdate
软件包需要第三方订阅,同时下载专有内容。因此,geoipupdate
软件包已被弃用,并将在下一个主要 RHEL 版本中删除。
Bugzilla:1874892[1]
8.7. 网络
在 RHEL 8 中已弃用网络脚本
网络脚本在 Red Hat Enterprise Linux 8 中已弃用,且不再默认提供。基本安装提供了 ifup
和 ifdown
脚本的新版本,它们通过 nmcli 工具调用 NetworkManager 服务。在 Red Hat Enterprise Linux 8 中,要运行 ifup
和 ifdown
脚本,NetworkManager 必须正在运行。
请注意, /sbin/ifup-local
、ifdown-pre-local
和 ifdown-local
脚本中的自定义命令不会执行。
如果需要这些脚本,您仍可以使用以下命令在系统中安装已弃用的网络脚本:
# yum install network-scripts
ifup
和 ifdown
脚本链接到已安装的旧网络脚本。
调用旧的网络脚本会显示一个关于它们已过时的警告。
Bugzilla:1647725[1]
dropwatch
工具已弃用
dropwatch
工具已弃用。以后的发行版本中不再支持该工具,因此不建议在新部署中使用它。作为此软件包的替代品,红帽建议使用 perf
命令行工具。
有关使用 perf
命令行工具的更多信息,请参阅红帽客户门户网站的 Perf入门 部分或 perf
手册页。
xinetd
服务已弃用
xinetd
服务已弃用,并将在 RHEL 9 中删除。作为替换,请使用 systemd
。详情请查看 如何将 xinetd 服务转换为 systemd。
Bugzilla:2009113[1]
cgdcbxd
软件包已被弃用
控制组数据中心桥接交换守护进程(cgdcbxd
)是监控数据中心桥接(DCB)netlink 事件和管理 net_prio
控制组子系统的服务。从 RHEL 8.5 开始,cgdcbxd
软件包被弃用,并将在下一个主要 RHEL 发行版本中删除。
WEP Wi-Fi 连接方法已被弃用
在 RHEL 8 中弃用了不安全的有线等效隐私(WEP) Wi-Fi 连接方法,并将在 RHEL 9.0 中删除。对于安全的 Wi-Fi 连接,请使用 Wi-Fi Protected Access 3(WPA3)或 WPA2 连接方法。
不受支持的 xt_u32
模块现已被弃用
使用不受支持的 xt_u32
模块,iptables
用户可以匹配数据包头或有效负载中的任意 32 位数据。从 RHEL 8.6 开始,xt_u32
模块已被弃用,并将在 RHEL 9 中删除。
如果使用 xt_u32
,请迁移到 nftables
数据包过滤框架。例如,首先将您的防火墙更改为使用带有原生匹配项的 iptables
,以便逐步替换单个规则,然后使用 iptables-translate
和附带的工具迁移到 nftables
。如果 nftables
中没有原生匹配,请使用 nftables
的原始有效负载匹配功能。详情请查看 nft(8)
手册页中 原始有效负载表达式
部分。
8.8. 内核
rdma_rxe
Soft-RoCE 驱动程序已弃用
软件直接内存通过融合以太网(Soft-RoCE)(也称为 RXE)是模拟远程直接内存访问(RDMA)的功能。在 RHEL 8 中,Soft-RoCE 功能作为技术预览提供。另外,由于稳定性问题,这个功能已弃用,并将在 RHEL 9 中删除。
Bugzilla:1878207[1]
Linux firewire
子系统及其关联的用户空间组件在 RHEL 8 中已弃用
firewire
子系统提供了接口来使用和维护 IEEE 1394 总线上的任何资源。在 RHEL 9 中,内核
软件包将不再支持 firewire
。请注意,firewire
包含几个由 libavc1394
、libdc1394
、libraw1394
软件包提供的用户空间组件。这些软件包也会被弃用。
Bugzilla:1871863[1]
使用无磁盘引导为 Real Time 8 安装 RHEL 现已弃用
无盘引导允许多个系统通过网络共享根文件系统。虽然方便,无盘引导会在实时工作负载中容易引入网络延迟。使用 RHEL for Real Time 8 的 8.3 次更新,无盘引导功能不再被支持。
内核实时补丁现在涵盖所有 RHEL 次要版本
从 RHEL 8.1 开始,已为延长更新支持(EUS)策略涵盖的所选定的 RHEL 次版本提供了内核实时补丁,以修复级别为关键(Critical)和重要(Important)的通用漏洞披露(CVE)。要容纳同时涵盖内核和用例的最大数量,对于内核的每个次版本、主要版本和 zStream 版本,每个实时补丁的支持窗口已从 12 月减少到 6 个月。这意味着,在内核实时补丁发布的那天,它将覆盖过去 6 个月所交付的每个次要版本和计划勘误表内核。
有关此功能的更多信息,请参阅 使用内核实时修补应用补丁。
有关可用的内核实时补丁的详情,请查看 内核实时补丁生命周期。
crash-ptdump-command
软件包已被弃用
crash-ptdump-command
软件包(这是 crash 工具的 ptdump
扩展模块)已被弃用,且可能在以后的 RHEL 版本中不提供。在 Single Range Output 模式下工作时,ptdump
命令无法检索日志缓冲区,且只能在物理地址(ToPA)表模式下工作。crash-ptdump-command
当前没有在上游维护
Bugzilla:1838927[1]
8.9. 引导加载程序
kernelopts
环境变量已被弃用
在 RHEL 8 中,使用 GRUB 引导装载程序的系统的内核命令行参数在 kernelopts
环境变量中定义。变量保存在每个内核引导条目的 /boot/grub2/grubenv
文件中。但是,使用 kernelopts
存储内核命令行参数并不可靠。因此,在以后的 RHEL 主更新中,kernelopts
将被删除,且内核命令行参数会存储在 Boot Loader Specification(BLS)片断中。
8.10. 文件系统和存储
Resilient Storage Add-On 已被弃用
Red Hat Enterprise Linux (RHEL) Resilient Storage Add-On 已被弃用。从 Red Hat Enterprise Linux 10 以及 RHEL 10 后的任何后续版本开始,不再支持弹性存储附加组件。RHEL Resilient Storage 附加组件将继续受到早期版本的 RHEL (7、8、9)以及其相应的维护支持生命周期的支持。
elevator
内核命令行参数已弃用
在之前的 RHEL 版本中使用 elevator
内核命令行参数为所有设备设置磁盘调度程序。在 RHEL 8 中,该参数已弃用。
上游 Linux 内核删除了对 elevator
参数的支持,但出于兼容性的原因,在 RHEL 8 中仍提供此支持。
请注意,内核会根据设备类型选择默认磁盘调度程序。这通常是最佳设置。如果您需要不同的调度程序,红帽建议您使用 udev
规则或 TuneD 服务来配置它。匹配所选设备并只为那些设备切换调度程序。
如需更多信息,请参阅设置磁盘调度程序。
Bugzilla:1665295[1]
禁用了 NFSv3 over UDP
默认情况下,NFS 服务器不再默认在 User Datagram Protocol(UDP)套接字上打开或监听。这个变化只影响 NFS 版本 3,因为版本 4 需要传输控制协议(TCP)。
RHEL 8 不再支持通过 UDP 的 NFS。
Bugzilla:1592011[1]
peripety
已被弃用
从 RHEL 8.3 开始,pipety
软件包已弃用。
Peripety 存储事件通知守护进程将系统存储日志解析为结构化的存储事件。它帮助您调查存储问题。
除了 async
以外的 VDO 写模式都被弃用了
VDO 支持 RHEL 8 中的几种写入模式:
-
sync
-
async
-
async-unsafe
-
auto
从 RHEL 8.4 开始,以下写入模式已弃用:
sync
-
VDO 层之上的设备无法识别 VDO 是否同步,因此设备无法利用 VDO
同步
模式。 async-unsafe
-
VDO 添加了这个写入模式来作为降低
async
模式性能的一个临时解决方案,异步模式符合原子性、一致性、隔离性和持久性(ACID)。对于大多数用例,红帽不推荐使用async-unsafe
,也不知道任何依赖它的用户。 auto
- 这个写入模式只选择其它写入模式之一。当 VDO 只支持单个写入模式时,不再需要它。
这些写入模式将在以后的主 RHEL 发行版本中删除。
推荐的 VDO 写入模式现在是 async
的。
如需有关 VDO 写入模式的更多信息,请参阅选择 VDO 写入模式。
Jira:RHELPLAN-70700[1]
VDO 管理器已被弃用
基于 python 的 VDO 管理软件已被弃用,并将从 RHEL 9 中删除。在 RHEL 9 中,它将被 LVM-VDO 集成替代。因此,建议您使用 lvcreate
命令创建 VDO 卷。
使用 VDO 管理软件创建的现有卷可以使用 lvm2
软件包提供的 /usr/sbin/lvm_import_vdo
脚本来进行转换。有关 LVM-VDO 实现的更多信息,请参阅 RHEL 上的去重和压缩逻辑卷。
cramfs
已被弃用
由于缺少用户,cramfs
内核模块已被弃用。建议使用 squashfs
作为替代解决方案。
Bugzilla:1794513[1]
8.11. 高可用性和集群
支持 clufter
工具的 pcs
命令已被弃用
支持 clufter
工具来分析群集配置格式的 pcs
命令已被弃用。现在,这些命令会显示一个警告信息,提示该命令已弃用,并且与这些命令相关的部分已从 pcs
帮助显示和pcs(8)
手册页中删除。
以下命令已被弃用:
-
用于导入 CMAN / RHEL6 HA 群集配置的
pcs config import-cman
-
pcs config export
用于将集群配置导出到重新创建同一集群的pcs
命令列表中
Bugzilla:1851335[1]
8.12. 动态编程语言、网页和数据库服务器
PHP 提供的与 Apache HTTP 服务器一起使用的 mod_php
模块已被弃用
PHP 提供的与 RHEL 8 中的 Apache HTTP 服务器一起使用的 mod_php
模块可用,但在默认配置中未启用。RHEL 9 不再提供该模块。
从 RHEL 8 开始,PHP 脚本默认使用 FastCGI Process Manager (php-fpm
)运行。如需更多信息,请参阅 将 PHP 与 Apache HTTP 服务器一起使用。
8.13. 编译器和开发工具
gdb.i686
软件包已弃用
在 RHEL 8.1 中,GNU Debugger(GDB)gdb.i686
的 32 位版本因为另一个软件包中的依赖问题而提供。因为 RHEL 8 不支持 32 位硬件,所以 gdb.i686
软件包从 RHEL 8.4 开始已弃用。GDB的64 位版本gdb.x86_64
完全能够调试 32 位应用程序。
如果使用 gdb.i686
,请注意以下重要问题:
-
gdb.i686
软件包将不再更新。用户必须安装gdb.x86_64
。 -
如果您安装了
gdb.i686
,安装gdb.x86_64
将导致yum
报告package gdb-8.2-14.el8.x86_64 obsoletes gdb < 8.2-14.el8 provided by gdb-8.2-12.el8.i686
。这是预期的。卸载gdb.i686
或向dnf
传递--allowerasing
选项来删除gdb.i686
, 并安装gdb.x8_64
。 -
用户将不能够在 64 位系统中安装
gdb.i686
软件包,也就是那些带有libc.so.6()64 位)
软件包的系统。
Bugzilla:1853140[1]
libdwarf
已弃用
libdwarf
库在 RHEL 8 中已弃用。将来的主版本中可能也不支持该程序库。对于打算处理 ELF/DWARF 文件的应用程序,请使用 elfutils
和 libdw
库。
libdwarf-tools
dwarfdump
程序的替代方案是 binutils
readelf
程序或elfutils
eu-readelf
程序,它们都通过传递 --debug-dump
标志来使用。
8.14. 身份管理
openssh-ldap
已被弃用
在 Red Hat Enterprise Linux 8 中弃用 openssh-ldap
子软件包,并将在 RHEL 9 中删除。因为 openssh-ldap
子软件包没有被上游维护,红帽建议您使用 SSSD 和 sss_ssh_authorizedkeys
帮助程序,它们与其他 IdM 解决方案更好地集成且更安全。
默认情况下,SSSD ldap
和 ipa
供应商会读取用户对象的 sshPublicKey
LDAP 属性(如果可用)。请注意,您无法为 ad
provider 或 IdM 可信域使用默认的 SSSD 配置从 Active Directory(AD)检索 SSH 公钥,因为 AD 没有存储公钥的默认 LDAP 属性。
要允许 sss_ssh_authorizedkeys
帮助程序从 SSSD 获取密钥,在 sssd.conf
文件的 services
选项中添加 ssh
来启用 ssh
响应程序。详情请查看 sssd.conf(5)
手册页。
要允许 sshd
使用 sss_ssh_authorizedkeys,
,添加 AuthorizedKeysCommand/usr/bin/sss_ssh_authorizedkeys
和 AuthorizedKeysCommandUser nobody
选项到 /etc/ssh/sshd_config
文件,如 ss_ssh_authorizedkeys(1)
手册页所述。
已经删除了 DES 和 3DES 加密类型
由于安全考虑,自 RHEL 7 开始,数据加密标准(DES)算法已被弃用并默认禁用。通过最近重新构建 Kerberos 软件包,已从 RHEL 8 中删除了 single-DES(DES)和 triple-DES(3DES) 加密类型。
如果您已经将服务或用户配置为只使用 DES 或 3DES 加密,您可能会遇到服务中断,例如:
- Kerberos authentication 错误
-
unknown enctype
加密错误 -
带有 DES 加密数据库主密钥(
K/M
)的 KDC 无法启动
执行以下操作准备升级:
-
检查您的 KDC 是否使用 DES 或者 3DES 加密,并使用
krb5check
打开源 Python 脚本。请参阅 GitHub 上的 krb5check。 - 如果您要将 DES 或 3DES 加密用于任何 Kerberos 主体,请使用支持的加密类型重新加密,比如高级加密标准(AES)。有关重新打包的步骤,请参考 MIT Kerberos 文档中的 Retiring DES。
通过在升级前临时设置以下 Kerberos 选项,从 DES 和 3DES 测试测试:
-
在 KDC 上的
/var/kerberos/krb5kdc/kdc.conf
中设置support_enctypes
且不包含des
或des3
。 -
对于每个主机,在
/etc/krb5.conf
以及/etc/krb5.conf.d
中的任意文件,将allow_weak_crypto
设为false
。默认为 false。 -
对于每个主机,在
/etc/krb5.conf
以及/etc/krb5.conf.d
中的任何文件中,设置permitted_enctypes
、default_tgs_enctypes
和default_tkt_enctypes
,但不包括des
或des3
。
-
在 KDC 上的
- 如果您没有遇到上一步中测试 Kerberos 设置的服务中断,请删除并升级它们。升级到最新的 Kerberos 软件包后您不需要这些设置。
libwbclient
的 SSSD 版本已被删除
libwbclient
软件包的 SSSD 实现在 RHEL 8.4 中已被弃用。因为无法与 Samba 的最新版本一起使用, libwbclient
的 SSSD 实现现已被删除。
单独使用 ctdb
服务已弃用
从 RHEL 8.4 开始,建议客户仅在满足以下条件时使用 ctdb
集群 Samba 服务:
-
ctdb
服务通过资源代理ctdb
作为pacemaker
资源进行管理。 -
ctdb
服务使用包含由红帽 Gluster 存储产品提供的 GlusterFS 文件系统或 GFS2 文件系统的存储卷。
ctdb
服务的独立用例已被弃用,其不会包含在 Red Hat Enterprise Linux 的下一个主版本中。有关 Samba 支持政策的更多信息,请参阅 RHEL Resilient Storage - ctdb 常规政策的支持政策。
Bugzilla:1916296[1]
对 FreeRADIUS 的有限支持
在 RHEL 8 中,以下外部身份验证模块作为 FreeRADIUS 产品的一部分被弃用:
- MySQL、PostgreSQL、SQlite 和 unixODBC 数据库连接器
-
Perl
语言模块 - REST API 模块
PAM 身份验证模块以及其它作为基础软件包的一部分提供的身份验证模块不受影响。
您可以在社区支持的软件包中找到已弃用模块的替代品,例如在 Fedora 项目中。
另外,freeradius
软件包的支持范围将被限制在未来 RHEL 版本中的以下用例:
-
将 FreeRADIUS 用作身份管理(IdM)的身份验证提供者,作为身份验证的后端源。身份验证通过
krb5
和 LDAP 身份验证软件包中发生或作为主 FreeRADIUS 软件包中的 PAM 身份验证。 - 通过 Python 3 身份验证软件包,使用 FreeRADIUS 在 IdM 中提供身份验证的真实源。
与这些弃用相反,红帽将增强对以下带有 FreeRADIUS 的外部身份验证模块的支持:
-
基于
krb5
和 LDAP 的身份验证 -
Python 3
身份验证
这些集成选项的重点在于与红帽 IdM 的战略方向紧密一致。
Jira:RHELDOCS-17573[1]
通过 WinSync 与 IdM 的间接 AD 集成已弃用
由于一些功能的限制,不会在 RHEL 8 中对 WinSync 进行积极的开发:
- WinSync 只支持一个活动目录(AD)域。
- 密码同步需要在 AD 域控制器上安装额外的软件。
对于具有更好的资源和安全分离的更健壮的解决方案,红帽建议对于与活动目录的间接集成使用 跨林信任 。请参阅 间接集成 文档。
Jira:RHELPLAN-100400[1]
以 PDC 或 BDC 的形式运行 Samba 已被弃用
典型的域控制器模式使管理员能够作为 NT4 运行 Samba,如主域控制器(PDC)和备份域控制器(BDC)已被弃用。用于配置这些模式的代码和设置将在以后的 Samba 发行版本中删除。
只要 RHEL 8 中的 Samba 版本提供 PDC 和 BDC 模式,红帽就仅在带有支持 NT4 域的 Windows 版本的现有安装中支持这些模式。红帽建议不要设置新的 Samba NT4 域,因为 Microsoft 操作系统稍后于 Windows 7 和 Windows Server 2008 R2 不支持 NT4 域。
如果您使用 PDC 仅验证 Linux 用户,红帽建议迁移到 RHEL 订阅中包含的 Red Hat Identity Management(IdM)。但是,您无法将 Windows 系统加入到 IdM 域中。请注意,红帽继续支持在后台使用 PDC 功能 IdM。
红帽不支持将 Samba 作为 AD 域控制器(DC)运行。
SMB1 协议在 Samba 中被弃用
从 Samba 4.11 开始,不安全的服务器消息块版本 1 (SMB1)协议已弃用,并将在以后的发行版本中删除。
为提高安全性,SMB1 默认在 Samba 服务器和客户端工具中被禁用。
Jira:RHELDOCS-16612[1]
8.15. 桌面
libgnome-keyring
库已弃用
libgnome-keyring
库已弃用,现在使用 libsecret
库,因为 libgnome-keyring
没有被上游维护,且不会遵循 RHEL 所需的加密策略。新的 libsecret
库是符合所需安全标准的替换。
Bugzilla:1607766[1]
libreoffice 已被弃用
LibreOffice RPM 软件包现已弃用,并将在以后的主 RHEL 发行版本中删除。LibreOffice 在 RHEL 7、8 和 9 的整个生命周期中仍然被完全支持。
作为 RPM 软件包的替代,红帽建议您从 Document Foundation 提供的以下源中安装 LibreOffice:
- Flathub 存储库中的官方 Flatpak 软件包:https://flathub.org/apps/org.libreoffice.LibreOffice。
- 官方 RPM 软件包::https://www.libreoffice.org/download/download-libreoffice/
Jira:RHELDOCS-16300[1]
弃用了几个位图字体
以下位图字体软件包已弃用:
-
bitmap-console-fonts
-
bitmap-fixed-fonts
-
bitmap-fonts-compat
-
bitmap-lucida-typewriter-fonts
位图字体有一个像素大小的限制。当您尝试设置不可用的字体大小时,文本可能会以不同的大小或不同的字体显示,可能是一个可扩展的字体。这也降低了位图字体的渲染质量,并破坏了用户体验。
此外,fontconfig
系统会忽略可移植的编译格式(PCF),一个主要的位图字体格式,因为它不包含估计语言覆盖的元数据。
请注意,bitmap-fangsongti-fonts
位图字体软件包作为 Lorax 工具的依赖项继续被支持。
Jira:RHELDOCS-17623[1]
8.16. 图形基础结构
不再支持 AGP 图形卡
Red Hat Enterprise Linux 8 不支持使用图形端口(AGP)总线的图形卡。推荐使用 PCI-Express bus 图形卡替换。
Bugzilla:1569610[1]
Motif 已被弃用
Motif 小部件工具包已在 RHEL 中被弃用,因为上游 Motif 社区的开发不活跃。
以下 Motif 软件包已被弃用,包括其开发和调试变体:
-
motif
-
openmotif
-
openmotif21
-
openmotif22
另外,motif-static
软件包已删除。
红帽建议使用 GTK 工具包作为替代品。与 Motif 相比,GTK更易于维护,并提供了新功能。
JIRA:RHELPLAN-98983[1]
8.17. Web 控制台
Web 控制台不再支持不完整翻译
RHEL web 控制台不再提供翻译少于 50% 的语言支持。如果浏览器要求转换成这种语言,用户界面将为英语。
remotectl
命令已弃用
remotectl
命令已弃用,并将在以后的 RHEL 版本中不可用。您可以使用 cockpit-certificate-ensure
命令作为替代。但请注意,cockpit-certificate-ensure
没有与 remotectl
相同的功能。它不支持捆绑的证书和密钥 keychain 文件,并要求将它们拆分。
Jira:RHELPLAN-147538[1]
8.18. Red Hat Enterprise Linux 系统角色
在 RHEL 9 节点上配置团队时,network
系统角色会显示一条弃用警告
RHEL 9 中弃用了网络协作功能。因此,在 RHEL 8 控制节点上使用 network
RHEL 系统角色在 RHEL 9 节点上配置网络团队,会显示有关弃用的警告。
Ansible Engine 已被弃用
RHEL 8 的早期版本提供了对 Ansible Engine 存储库的访问(有限范围的支持),以启用支持的 RHEL 自动化用例,如 RHEL 系统角色和 Insights 补救措施。Ansible Engine 已被弃用,2023 年 9 月 29 日之后将不再支持 Ansible Engine 2.9 。有关支持的用例的详情,请参阅 RHEL 9 AppStream 中包含的 Ansible Core 软件包的支持范围。
用户必须手动将他们的系统从 Ansible Engine 迁移到 Ansible Core。为此,请按照以下步骤操作:
步骤
检查系统是否正在运行 RHEL 8.7 或更高版本:
# cat /etc/redhat-release
卸载 Ansible Engine 2.9:
# yum remove ansible
禁用
ansible-2-for-rhel-8-x86_64-rpms
存储库:# subscription-manager repos --disable ansible-2-for-rhel-8-x86_64-rpms
从 RHEL 8 AppStream 存储库安装 Ansible Core 软件包:
# yum install ansible-core
如需了解更多详细信息,请参阅: 在 RHEL 8.6 及之后的版本中使用 Ansible。
mssql_ha_cluster_run_role
已被弃用
mssql_ha_cluster_run_role
变量已被弃用。改为使用 mssql_manage_ha_cluster
变量。
8.19. 虚拟化
virsh iface-*
命令已被弃用
virsh iface-*
命令(如 virsh iface-start
和 virsh iface-destroy
)现已被弃用,并将在以后的 RHEL 主版本中删除。另外,这些命令会因为配置依赖而经常失败。
因此,建议您不要使用 virsh iface-*
命令来配置和管理主机网络连接。反之,使用 NetworkManager 程序及其相关的管理应用程序,如 nmcli
。
Bugzilla:1664592[1]
virt-manager 已被弃用
虚拟机管理器(也称 virt-manager) 已弃用。RHEL web 控制台(也称为 Cockpit )旨在在以后的版本中成为其替代品。因此,建议您使用 web 控制台使用 GUI 管理虚拟化。但请注意,virt-manager 中的一些可用功能可能在 RHEL web 控制台中不可用。
Jira:RHELPLAN-10304[1]
对虚拟机快照的支持有限
目前只对使用 UEFI 固件的虚拟机支持创建虚拟机(VM)的快照。另外,在快照操作过程中,QEMU 监控可能会被阻断,这会对某些工作负载的 hypervisor 性能造成负面影响。
另请注意,创建虚拟机快照的当前机制已被弃用,红帽不推荐在生产环境中使用虚拟机快照。
Cirrus VGA 虚拟 GPU 类型已弃用
随着 Red Hat Enterprise Linux 的主要更新,Cirrus VGA GPU 设备将在 KVM 虚拟机中不再被支持。因此,红帽建议使用 stdvga 或 virtio-vga 设备,而不是 Cirrus VGA。
Bugzilla:1651994[1]
SPICE 已被弃用
SPICE 远程显示协议已弃用。请注意,RHEL 8 中仍支持 SPICE,但红帽建议您为远程显示流使用备选解决方案:
- 要访问远程控制台,请使用 VNC 协议。
- 对于高级远程显示功能,请使用 RDP、HP RGS 或 Mechdyne TGX 等第三方工具。
Bugzilla:1849563[1]
IBM POWER 上的 KVM 已被弃用
在 IBM POWER 硬件中使用 KVM 虚拟化已被弃用。因此,RHEL 8 仍支持 IBM POWER 上的 KVM,但在以后的 RHEL 主发行版本中将不被支持。
Jira:RHELPLAN-71200[1]
使用基于 SHA1 的签名进行 SecureBoot 镜像验证已弃用
在 UEFI(PE/COFF)可执行文件中使用基于 SHA1 的签名执行 SecureBoot 镜像验证已过时。红帽建议改为使用基于 SHA-2 算法或更新算法的签名。
Bugzilla:1935497[1]
使用 SPICE 将智能卡读取器附加到虚拟机已被弃用
SPICE 远程显示协议已在 RHEL 8 中被弃用。由于将智能卡读取器附加到虚拟机(VM)的唯一方法取决于 SPICE 协议,因此在虚拟机中使用智能卡已在 RHEL 8 中被弃用。
在 RHEL 未来的主版本中,将智能卡读取器附加到虚拟机的功能仅被第三方远程视觉解决方案支持。
基于 RDMA 的实时迁移已弃用
有了这个更新,使用 Remote Direct Memory Access (RDMA)迁移正在运行的虚拟机已被弃用。因此,仍可以使用 rdma://
迁移 URI 来通过 RDMA 请求迁移,但这个功能将在以后的 RHEL 主发行版本中不被支持。
Jira:RHELPLAN-153267[1]
8.20. 容器
GIMP flatpak
和 GIMP
模块已弃用
GIMP flatpak
和 GIMP
模块(代表 GNU Image Manipulation Program for raster 图形)现在都标记为已弃用,因为 Python 2 生命周期(EOL)结束,将在下一个主 RHEL 发行版本中删除。作为替换,您可以根据 Python 3 使用上游 flatpak 版本。
基于 Podman varlink 的 API v1.0 已被删除
基于 Podman varlink 的 API v1.0 在之前的 RHEL 8 版本中已弃用。podman v2.0 引入了一个新的 Podman v2.0 RESTful API。Podman v3.0 发行版本中,基于 varlink 的 API v1.0 已被完全删除。
Jira:RHELPLAN-45858[1]
container-tools:1.0
已弃用
container-tools:1.0
模块已弃用,将不再接收安全更新。建议您使用较新支持的稳定模块流,如 container-tools:2.0
或 container-tools:3.0
。
Jira:RHELPLAN-59825[1]
container-tools:2.0
模块已被弃用
container-tools:2.0 模块已被弃用,并将不再接受安全更新。建议您使用更新的支持的稳定模块流,如 container-tools:3.0
。
Jira:RHELPLAN-85066[1]
除了 GIMP ,Flatpak 镜像已弃用
rhel8/firefox-flatpak
,rhel8/thunderbird-flatpak
,rhel8/inkscape-flatpak
和 rhel8/libreoffice-flatpak
RHEL 8 Flatpak 应用程序已被弃用,并被 RHEL 9 版本替代。rhel8/gimp-flatpak
Flatpak 应用程序已被弃用,因为在 RHEL 9 中还没有替代品。
CNI 网络堆栈已弃用
容器网络接口 (CNI)网络堆栈已弃用,并将在以后 RHEL 次要发行本中从 Podman 中删除。在以前的版本中,容器只能通过 DNS 连接到单个 Container Network Interface (CNI)插件。podman v.4.0 引入了一个新的 Netavark 网络堆栈。您可以将 Netavark 网络堆栈与 Podman 和其他Open Container Initiative(OCI)容器管理应用程序一起使用。Podman 的 Netavark 网络堆栈也与高级 Docker 功能兼容。多个网络中的容器可以访问任何这些网络上的容器。
如需更多信息,请参阅 将网络堆栈从 CNI 切换到 Netavark。
Jira:RHELDOCS-16755[1]
container-tools:3.0
已弃用
container-tools:3.0
模块已弃用,将不再接收安全更新。要继续在 RHEL 上构建并运行 Linux 容器,请使用较新的、稳定且受支持的模块流,如 container-tools:4.0
。
有关切换到更新的流的说明,请参阅 切换到更新的流。
Jira:RHELPLAN-146398[1]
rhel8/openssl
已被弃用
rhel8/openssl
容器镜像已被弃用。
Jira:RHELDOCS-18107[1]
Inkscape 和 LibreOffice Flatpak 镜像已弃用
作为技术预览提供的 rhel9/inkscape-flatpak
和 rhel9/libreoffice-flatpak
Flatpak 镜像已被弃用。
红帽建议对这些镜像使用以下替代方案:
-
要替换
rhel9/inkscape-flatpak
,请使用inkscape
RPM 软件包。 -
要替换
rhel9/libreoffice-flatpak
,请参阅 LibreOffice 弃用发行注记。
Jira:RHELDOCS-17102[1]
pasta
作为网络名称已被弃用
对 pasta
作为网络名称值的支持已弃用,且在下一个 Podman 的主发行版(版本 5.0)中不被接受。您可以使用 podman run --network
和 podman create --network
命令,使用 pasta
网络名称值在 Podman 中创建唯一的网络模式。
Jira:RHELDOCS-17038[1]
BoltDB 数据库后端已弃用
从 RHEL 8.10 开始,BltDB 数据库后端已弃用。在以后的 RHEL 版本中,BoltDB 数据库后端将被删除,并将不再提供给 Podman。对于 Podman,使用 SQLite 数据库后端,这是 RHEL 8.10 的默认后端。
Jira:RHELDOCS-17461[1]
CNI 网络堆栈已弃用
Container Network Interface (CNI)网络堆栈已弃用,并将在以后的发行版本中删除。使用 Netavark 网络堆栈替代。如需更多信息,请参阅 将网络堆栈从 CNI 切换到 Netavark。
Jira:RHELDOCS-17518[1]
container-tools:4.0
已弃用
container-tools:4.0
模块已弃用,将不再接收安全更新。要继续在 RHEL 上构建并运行 Linux 容器,请使用更新的、稳定的和支持的模块流 container-tools:rhel8
。
有关切换到更新的流的说明,请参阅 切换到更新的流。
Jira:RHELPLAN-168223[1]
8.21. 已弃用的软件包
本节列出了已弃用的软件包,可能不会包括在 Red Hat Enterprise Linux 未来的主发行版本中。
有关对 RHEL 7 和 RHEL 8 间软件包的更改,请参阅 采用 RHEL 8 的注意事项 文档中的 对软件包的更改。
已弃用软件包的支持状态在 RHEL 8 中保持不变。有关支持长度的更多信息,请参阅 Red Hat Enterprise Linux 生命周期 和 Red Hat Enterprise Linux 应用程序流生命周期。
以下软件包已在 RHEL 8 中弃用:
- 389-ds-base-legacy-tools
- abrt
- abrt-addon-ccpp
- abrt-addon-kerneloops
- abrt-addon-pstoreoops
- abrt-addon-vmcore
- abrt-addon-xorg
- abrt-cli
- abrt-console-notification
- abrt-dbus
- abrt-desktop
- abrt-gui
- abrt-gui-libs
- abrt-libs
- abrt-tui
- adobe-source-sans-pro-fonts
- adwaita-qt
- alsa-plugins-pulseaudio
- amanda
- amanda-client
- amanda-libs
- amanda-server
- ant-contrib
- antlr3
- antlr32
- aopalliance
- apache-commons-collections
- apache-commons-compress
- apache-commons-exec
- apache-commons-jxpath
- apache-commons-parent
- apache-ivy
- apache-parent
- apache-resource-bundles
- apache-sshd
- apiguardian
- arpwatch
- aspnetcore-runtime-3.0
- aspnetcore-runtime-3.1
- aspnetcore-runtime-5.0
- aspnetcore-targeting-pack-3.0
- aspnetcore-targeting-pack-3.1
- aspnetcore-targeting-pack-5.0
- assertj-core
- authd
- auto
- autoconf213
- autogen
- autogen-libopts
- awscli
- base64coder
- bash-doc
- batik
- batik-css
- batik-util
- bea-stax
- bea-stax-api
- bind-export-devel
- bind-export-libs
- bind-libs-lite
- bind-pkcs11
- bind-pkcs11-devel
- bind-pkcs11-libs
- bind-pkcs11-utils
- bind-sdb
- bind-sdb
- bind-sdb-chroot
- bitmap-console-fonts
- bitmap-fixed-fonts
- bitmap-fonts-compat
- bitmap-lucida-typewriter-fonts
- bluez-hid2hci
- boost-jam
- boost-signals
- bouncycastle
- bpg-algeti-fonts
- bpg-chveulebrivi-fonts
- bpg-classic-fonts
- bpg-courier-fonts
- bpg-courier-s-fonts
- bpg-dedaena-block-fonts
- bpg-dejavu-sans-fonts
- bpg-elite-fonts
- bpg-excelsior-caps-fonts
- bpg-excelsior-condenced-fonts
- bpg-excelsior-fonts
- bpg-fonts-common
- bpg-glaho-fonts
- bpg-gorda-fonts
- bpg-ingiri-fonts
- bpg-irubaqidze-fonts
- bpg-mikhail-stephan-fonts
- bpg-mrgvlovani-caps-fonts
- bpg-mrgvlovani-fonts
- bpg-nateli-caps-fonts
- bpg-nateli-condenced-fonts
- bpg-nateli-fonts
- bpg-nino-medium-cond-fonts
- bpg-nino-medium-fonts
- bpg-sans-fonts
- bpg-sans-medium-fonts
- bpg-sans-modern-fonts
- bpg-sans-regular-fonts
- bpg-serif-fonts
- bpg-serif-modern-fonts
- bpg-ucnobi-fonts
- brlapi-java
- bsh
- buildnumber-maven-plugin
- byaccj
- cal10n
- cbi-plugins
- cdparanoia
- cdparanoia-devel
- cdparanoia-libs
- cdrdao
- cmirror
- codehaus-parent
- codemodel
- compat-exiv2-026
- compat-guile18
- compat-hwloc1
- compat-libpthread-nonshared
- compat-libtiff3
- compat-openssl10
- compat-sap-c++-11
- compat-sap-c++-10
- compat-sap-c++-9
- createrepo_c-devel
- ctags
- ctags-etags
- culmus-keteryg-fonts
- culmus-shofar-fonts
- custodia
- cyrus-imapd-vzic
- dbus-c++
- dbus-c++-devel
- dbus-c++-glib
- dbxtool
- dejavu-fonts-common
- dhcp-libs
- directory-maven-plugin
- directory-maven-plugin-javadoc
- dirsplit
- dleyna-connector-dbus
- dleyna-core
- dleyna-renderer
- dleyna-server
- dnssec-trigger
- dnssec-trigger-panel
- dotnet
- dotnet-apphost-pack-3.0
- dotnet-apphost-pack-3.1
- dotnet-apphost-pack-5.0
- dotnet-host-fxr-2.1
- dotnet-host-fxr-2.1
- dotnet-hostfxr-3.0
- dotnet-hostfxr-3.1
- dotnet-hostfxr-5.0
- dotnet-runtime-2.1
- dotnet-runtime-3.0
- dotnet-runtime-3.1
- dotnet-runtime-5.0
- dotnet-sdk-2.1
- dotnet-sdk-2.1.5xx
- dotnet-sdk-3.0
- dotnet-sdk-3.1
- dotnet-sdk-5.0
- dotnet-targeting-pack-3.0
- dotnet-targeting-pack-3.1
- dotnet-targeting-pack-5.0
- dotnet-templates-3.0
- dotnet-templates-3.1
- dotnet-templates-5.0
- dotnet5.0-build-reference-packages
- dptfxtract
- drpm
- drpm-devel
- dump
- dvd+rw-tools
- dyninst-static
- eclipse-ecf
- eclipse-ecf-core
- eclipse-ecf-runtime
- eclipse-emf
- eclipse-emf-core
- eclipse-emf-runtime
- eclipse-emf-xsd
- eclipse-equinox-osgi
- eclipse-jdt
- eclipse-license
- eclipse-p2-discovery
- eclipse-pde
- eclipse-platform
- eclipse-swt
- ed25519-java
- ee4j-parent
- elfutils-devel-static
- elfutils-libelf-devel-static
- emacs-terminal
- emoji-picker
- enca
- enca-devel
- environment-modules-compat
- evince-browser-plugin
- exec-maven-plugin
- farstream02
- felix-gogo-command
- felix-gogo-runtime
- felix-gogo-shell
- felix-scr
- felix-osgi-compendium
- felix-osgi-core
- felix-osgi-foundation
- felix-parent
- file-roller
- fipscheck
- fipscheck-devel
- fipscheck-lib
- firewire
- fonts-tweak-tool
- forge-parent
- freeradius-mysql
- freeradius-perl
- freeradius-postgresql
- freeradius-rest
- freeradius-sqlite
- freeradius-unixODBC
- fuse-sshfs
- fusesource-pom
- future
- gamin
- gamin-devel
- gavl
- gcc-toolset-9
- gcc-toolset-9-annobin
- gcc-toolset-9-build
- gcc-toolset-9-perftools
- gcc-toolset-9-runtime
- gcc-toolset-9-toolchain
- gcc-toolset-10
- gcc-toolset-10-annobin
- gcc-toolset-10-binutils
- gcc-toolset-10-binutils-devel
- gcc-toolset-10-build
- gcc-toolset-10-dwz
- gcc-toolset-10-dyninst
- gcc-toolset-10-dyninst-devel
- gcc-toolset-10-elfutils
- gcc-toolset-10-elfutils-debuginfod-client
- gcc-toolset-10-elfutils-debuginfod-client-devel
- gcc-toolset-10-elfutils-devel
- gcc-toolset-10-elfutils-libelf
- gcc-toolset-10-elfutils-libelf-devel
- gcc-toolset-10-elfutils-libs
- gcc-toolset-10-gcc
- gcc-toolset-10-gcc-c++
- gcc-toolset-10-gcc-gdb-plugin
- gcc-toolset-10-gcc-gfortran
- gcc-toolset-10-gdb
- gcc-toolset-10-gdb-doc
- gcc-toolset-10-gdb-gdbserver
- gcc-toolset-10-libasan-devel
- gcc-toolset-10-libatomic-devel
- gcc-toolset-10-libitm-devel
- gcc-toolset-10-liblsan-devel
- gcc-toolset-10-libquadmath-devel
- gcc-toolset-10-libstdc++-devel
- gcc-toolset-10-libstdc++-docs
- gcc-toolset-10-libtsan-devel
- gcc-toolset-10-libubsan-devel
- gcc-toolset-10-ltrace
- gcc-toolset-10-make
- gcc-toolset-10-make-devel
- gcc-toolset-10-perftools
- gcc-toolset-10-runtime
- gcc-toolset-10-strace
- gcc-toolset-10-systemtap
- gcc-toolset-10-systemtap-client
- gcc-toolset-10-systemtap-devel
- gcc-toolset-10-systemtap-initscript
- gcc-toolset-10-systemtap-runtime
- gcc-toolset-10-systemtap-sdt-devel
- gcc-toolset-10-systemtap-server
- gcc-toolset-10-toolchain
- gcc-toolset-10-valgrind
- gcc-toolset-10-valgrind-devel
- gcc-toolset-11-make-devel
- gcc-toolset-12-annobin-annocheck
- gcc-toolset-12-annobin-docs
- gcc-toolset-12-annobin-plugin-gcc
- gcc-toolset-12-binutils
- gcc-toolset-12-binutils-devel
- gcc-toolset-12-binutils-gold
- GConf2
- GConf2-devel
- gegl
- genisoimage
- genwqe-tools
- genwqe-vpd
- genwqe-zlib
- genwqe-zlib-devel
- geoipupdate
- geronimo-annotation
- geronimo-jms
- geronimo-jpa
- geronimo-parent-poms
- gfbgraph
- gflags
- gflags-devel
- glassfish-annotation-api
- glassfish-el
- glassfish-fastinfoset
- glassfish-jaxb-core
- glassfish-jaxb-txw2
- glassfish-jsp
- glassfish-jsp-api
- glassfish-legal
- glassfish-master-pom
- glassfish-servlet-api
- glew-devel
- glib2-fam
- glog
- glog-devel
- gmock
- gmock-devel
- gnome-abrt
- gnome-boxes
- gnome-menus-devel
- gnome-online-miners
- gnome-shell-extension-disable-screenshield
- gnome-shell-extension-horizontal-workspaces
- gnome-shell-extension-no-hot-corner
- gnome-shell-extension-window-grouper
- gnome-themes-standard
- gnu-free-fonts-common
- gnu-free-mono-fonts
- gnu-free-sans-fonts
- gnu-free-serif-fonts
- gnupg2-smime
- gnuplot
- gnuplot-common
- gobject-introspection-devel
- google-droid-kufi-fonts
- google-gson
- google-noto-kufi-arabic-fonts
- google-noto-naskh-arabic-fonts
- google-noto-naskh-arabic-ui-fonts
- google-noto-nastaliq-urdu-fonts
- google-noto-sans-balinese-fonts
- google-noto-sans-bamum-fonts
- google-noto-sans-batak-fonts
- google-noto-sans-buginese-fonts
- google-noto-sans-buhid-fonts
- google-noto-sans-canadian-aboriginal-fonts
- google-noto-sans-cham-fonts
- google-noto-sans-cuneiform-fonts
- google-noto-sans-cypriot-fonts
- google-noto-sans-gothic-fonts
- google-noto-sans-gurmukhi-ui-fonts
- google-noto-sans-hanunoo-fonts
- google-noto-sans-inscriptional-pahlavi-fonts
- google-noto-sans-inscriptional-parthian-fonts
- google-noto-sans-javanese-fonts
- google-noto-sans-lepcha-fonts
- google-noto-sans-limbu-fonts
- google-noto-sans-linear-b-fonts
- google-noto-sans-lisu-fonts
- google-noto-sans-mandaic-fonts
- google-noto-sans-meetei-mayek-fonts
- google-noto-sans-mongolian-fonts
- google-noto-sans-myanmar-fonts
- google-noto-sans-myanmar-ui-fonts
- google-noto-sans-new-tai-lue-fonts
- google-noto-sans-ogham-fonts
- google-noto-sans-ol-chiki-fonts
- google-noto-sans-old-italic-fonts
- google-noto-sans-old-persian-fonts
- google-noto-sans-oriya-fonts
- google-noto-sans-oriya-ui-fonts
- google-noto-sans-phags-pa-fonts
- google-noto-sans-rejang-fonts
- google-noto-sans-runic-fonts
- google-noto-sans-samaritan-fonts
- google-noto-sans-saurashtra-fonts
- google-noto-sans-sundanese-fonts
- google-noto-sans-syloti-nagri-fonts
- google-noto-sans-syriac-eastern-fonts
- google-noto-sans-syriac-estrangela-fonts
- google-noto-sans-syriac-western-fonts
- google-noto-sans-tagalog-fonts
- google-noto-sans-tagbanwa-fonts
- google-noto-sans-tai-le-fonts
- google-noto-sans-tai-tham-fonts
- google-noto-sans-tai-viet-fonts
- google-noto-sans-tibetan-fonts
- google-noto-sans-tifinagh-fonts
- google-noto-sans-ui-fonts
- google-noto-sans-yi-fonts
- google-noto-serif-bengali-fonts
- google-noto-serif-devanagari-fonts
- google-noto-serif-gujarati-fonts
- google-noto-serif-kannada-fonts
- google-noto-serif-malayalam-fonts
- google-noto-serif-tamil-fonts
- google-noto-serif-telugu-fonts
- gphoto2
- graphviz-ruby
- gsl-devel
- gssntlmssp
- gtest
- gtest-devel
- gtkmm24
- gtkmm24-devel
- gtkmm24-docs
- gtksourceview3
- gtksourceview3-devel
- gtkspell
- gtkspell-devel
- gtkspell3
- guile
- gutenprint-gimp
- gutenprint-libs-ui
- gvfs-afc
- gvfs-afp
- gvfs-archive
- hamcrest-core
- hawtjni
- hawtjni
- hawtjni-runtime
- HdrHistogram
- HdrHistogram-javadoc
- highlight-gui
- hivex-devel
- 主机名
- hplip-gui
- hspell
- httpcomponents-project
- hwloc-plugins
- hyphen-fo
- hyphen-grc
- hyphen-hsb
- hyphen-ia
- hyphen-is
- hyphen-ku
- hyphen-mi
- hyphen-mn
- hyphen-sa
- hyphen-tk
- ibus-sayura
- icedax
- icu4j
- idm-console-framework
- Inkscape
- inkscape-docs
- inkscape-view
- iptables
- ipython
- isl
- isl-devel
- isorelax
- istack-commons-runtime
- istack-commons-tools
- iwl3945-firmware
- iwl4965-firmware
- iwl6000-firmware
- jacoco
- jaf
- jaf-javadoc
- jakarta-oro
- janino
- jansi-native
- jarjar
- java-1.8.0-ibm
- java-1.8.0-ibm-demo
- java-1.8.0-ibm-devel
- java-1.8.0-ibm-headless
- java-1.8.0-ibm-jdbc
- java-1.8.0-ibm-plugin
- java-1.8.0-ibm-src
- java-1.8.0-ibm-webstart
- java-1.8.0-openjdk-accessibility
- java-1.8.0-openjdk-accessibility-slowdebug
- java_cup
- java-atk-wrapper
- javacc
- javacc-maven-plugin
- javaewah
- javaparser
- javapoet
- javassist
- javassist-javadoc
- jaxen
- jboss-annotations-1.2-api
- jboss-interceptors-1.2-api
- jboss-logmanager
- jboss-parent
- jctools
- jdepend
- jdependency
- jdom
- jdom2
- jetty
- jetty-continuation
- jetty-http
- jetty-io
- jetty-security
- jetty-server
- jetty-servlet
- jetty-util
- jffi
- jflex
- jgit
- jline
- jmc
- jnr-netdb
- jolokia-jvm-agent
- js-uglify
- jsch
- json_simple
- jss-javadoc
- jtidy
- junit5
- jvnet-parent
- jzlib
- kernel-cross-headers
- khmeros-fonts-common
- ksc
- kurdit-unikurd-web-fonts
- kyotocabinet-libs
- langtable-data
- ldapjdk-javadoc
- lensfun
- lensfun-devel
- lftp-scripts
- libaec
- libaec-devel
- libappindicator-gtk3
- libappindicator-gtk3-devel
- libatomic-static
- libavc1394
- libblocksruntime
- libcacard
- libcacard-devel
- libcgroup
- libcgroup-pam
- libcgroup-tools
- libchamplain
- libchamplain-devel
- libchamplain-gtk
- libcroco
- libcroco-devel
- libcxl
- libcxl-devel
- libdap
- libdap-devel
- libdazzle-devel
- libdbusmenu
- libdbusmenu-devel
- libdbusmenu-doc
- libdbusmenu-gtk3
- libdbusmenu-gtk3-devel
- libdc1394
- libdnet
- libdnet-devel
- libdv
- libdwarf
- libdwarf-devel
- libdwarf-static
- libdwarf-tools
- libeasyfc
- libeasyfc-gobject
- libepubgen-devel
- libertas-sd8686-firmware
- libertas-usb8388-firmware
- libertas-usb8388-olpc-firmware
- libgdither
- libGLEW
- libgovirt
- libguestfs-benchmarking
- libguestfs-devel
- libguestfs-gfs2
- libguestfs-gobject
- libguestfs-gobject-devel
- libguestfs-java
- libguestfs-java-devel
- libguestfs-javadoc
- libguestfs-man-pages-ja
- libguestfs-man-pages-uk
- libguestfs-tools
- libguestfs-tools-c
- libhugetlbfs
- libhugetlbfs-devel
- libhugetlbfs-utils
- libicu-doc
- libIDL
- libIDL-devel
- libidn
- libiec61883
- libindicator-gtk3
- libindicator-gtk3-devel
- libiscsi-devel
- libjose-devel
- libkkc
- libkkc-common
- libkkc-data
- libldb-devel
- liblogging
- libluksmeta-devel
- libmalaga
- libmcpp
- libmemcached
- libmemcached-libs
- libmetalink
- libmodulemd1
- libmongocrypt
- libmtp-devel
- libmusicbrainz5
- libmusicbrainz5-devel
- libnbd-devel
- libnice
- libnice-gstreamer1
- liboauth
- liboauth-devel
- libpfm-static
- libpng12
- libpsm2-compat
- libpurple
- libpurple-devel
- libraw1394
- libreport-plugin-mailx
- libreport-plugin-rhtsupport
- libreport-plugin-ureport
- libreport-rhel
- libreport-rhel-bugzilla
- librpmem
- librpmem-debug
- librpmem-devel
- libsass
- libsass-devel
- libselinux-python
- libsqlite3x
- libtalloc-devel
- libtar
- libtdb-devel
- libtevent-devel
- libtpms-devel
- libunwind
- libusal
- libvarlink
- libverto-libevent
- libvirt-admin
- libvirt-bash-completion
- libvirt-daemon-driver-storage-gluster
- libvirt-daemon-driver-storage-iscsi-direct
- libvirt-devel
- libvirt-docs
- libvirt-gconfig
- libvirt-gobject
- libvirt-lock-sanlock
- libvirt-wireshark
- libvmem
- libvmem-debug
- libvmem-devel
- libvmmalloc
- libvmmalloc-debug
- libvmmalloc-devel
- libvncserver
- libwinpr-devel
- libwmf
- libwmf-devel
- libwmf-lite
- libXNVCtrl
- libyami
- log4j12
- log4j12-javadoc
- lohit-malayalam-fonts
- lohit-nepali-fonts
- lorax-composer
- lua-guestfs
- lucene
- lucene-analysis
- lucene-analyzers-smartcn
- lucene-queries
- lucene-queryparser
- Lucene-sandbox
- lz4-java
- lz4-java-javadoc
- mailman
- mailx
- make-devel
- malaga
- malaga-suomi-voikko
- marisa
- maven-antrun-plugin
- maven-assembly-plugin
- maven-clean-plugin
- maven-dependency-analyzer
- maven-dependency-plugin
- maven-doxia
- maven-doxia-sitetools
- maven-install-plugin
- maven-invoker
- maven-invoker-plugin
- maven-parent
- maven-plugins-pom
- maven-reporting-api
- maven-reporting-impl
- maven-resolver-api
- maven-resolver-connector-basic
- maven-resolver-impl
- maven-resolver-spi
- maven-resolver-transport-wagon
- maven-resolver-util
- maven-scm
- maven-script-interpreter
- maven-shade-plugin
- maven-shared
- maven-verifier
- maven-wagon-file
- maven-wagon-http
- maven-wagon-http-shared
- maven-wagon-provider-api
- maven2
- meanwhile
- mercurial
- mercurial-hgk
- meetis
- metis-devel
- mingw32-bzip2
- mingw32-bzip2-static
- mingw32-cairo
- mingw32-expat
- mingw32-fontconfig
- mingw32-freetype
- mingw32-freetype-static
- mingw32-gstreamer1
- mingw32-harfbuzz
- mingw32-harfbuzz-static
- mingw32-icu
- mingw32-libjpeg-turbo
- mingw32-libjpeg-turbo-static
- mingw32-libpng
- mingw32-libpng-static
- mingw32-libtiff
- mingw32-libtiff-static
- mingw32-openssl
- mingw32-readline
- mingw32-sqlite
- mingw32-sqlite-static
- mingw64-adwaita-icon-theme
- mingw64-bzip2
- mingw64-bzip2-static
- mingw64-cairo
- mingw64-expat
- mingw64-fontconfig
- mingw64-freetype
- mingw64-freetype-static
- mingw64-gstreamer1
- mingw64-harfbuzz
- mingw64-harfbuzz-static
- mingw64-icu
- mingw64-libjpeg-turbo
- mingw64-libjpeg-turbo-static
- mingw64-libpng
- mingw64-libpng-static
- mingw64-libtiff
- mingw64-libtiff-static
- mingw64-nettle
- mingw64-openssl
- mingw64-readline
- mingw64-sqlite
- mingw64-sqlite-static
- modello
- mojo-parent
- mongo-c-driver
- mousetweaks
- mozjs52
- mozjs52-devel
- mozjs60
- mozjs60-devel
- mozvoikko
- msv-javadoc
- msv-manual
- munge-maven-plugin
- mythes-lb
- mythes-mi
- mythes-ne
- nafees-web-naskh-fonts
- nbd
- nbdkit-devel
- nbdkit-example-plugins
- nbdkit-gzip-plugin
- nbdkit-plugin-python-common
- nbdkit-plugin-vddk
- ncompress
- ncurses-compat-libs
- net-tools
- netcf
- netcf-devel
- netcf-libs
- network-scripts
- network-scripts-ppp
- nkf
- nodejs-devel
- nodejs-packaging
- nss_nis
- nss-pam-ldapd
- objectweb-asm
- objectweb-asm-javadoc
- objectweb-pom
- ocaml-bisect-ppx
- ocaml-camlp4
- ocaml-camlp4-devel
- ocaml-lwt
- ocaml-mmap
- ocaml-ocplib-endian
- ocaml-ounit
- ocaml-result
- ocaml-seq
- opencryptoki-tpmtok
- opencv-contrib
- opencv-core
- opencv-devel
- openhpi
- openhpi-libs
- OpenIPMI-perl
- openssh-cavs
- openssh-ldap
- openssl-ibmpkcs11
- opentest4j
- os-maven-plugin
- overpass-mono-fonts
- pakchois
- pandoc
- paps-libs
- paranamer
- paratype-pt-sans-caption-fonts
- parfait
- parfait-examples
- parfait-javadoc
- pcp-parfait-agent
- pcp-pmda-rpm
- pcp-pmda-vmware
- pcsc-lite-doc
- peripety
- perl-B-Debug
- perl-B-Lint
- perl-Class-Factory-Util
- perl-Class-ISA
- perl-DateTime-Format-HTTP
- perl-DateTime-Format-Mail
- perl-File-CheckTree
- perl-homedir
- perl-libxml-perl
- perl-Locale-Codes
- perl-Mozilla-LDAP
- perl-NKF
- perl-Object-HashBase-tools
- perl-Package-DeprecationManager
- perl-Pod-LaTeX
- perl-Pod-Plainer
- perl-prefork
- perl-String-CRC32
- perl-SUPER
- perl-Sys-Virt
- perl-tests
- perl-YAML-Syck
- phodav
- php-recode
- php-xmlrpc
- pidgin
- pidgin-devel
- pidgin-sipe
- pinentry-emacs
- pinentry-gtk
- pipewire0.2-devel
- pipewire0.2-libs
- platform-python-coverage
- plexus-ant-factory
- plexus-bsh-factory
- plexus-cli
- plexus-component-api
- plexus-component-factories-pom
- plexus-components-pom
- plexus-i18n
- plexus-interactive
- plexus-pom
- plexus-velocity
- plymouth-plugin-throbgress
- pmreorder
- postgresql-test-rpm-macros
- powermock
- prometheus-jmx-exporter
- prometheus-jmx-exporter-openjdk11
- ptscotch-mpich
- ptscotch-mpich-devel
- ptscotch-mpich-devel-parmetis
- ptscotch-openmpi
- ptscotch-openmpi-devel
- purple-sipe
- pygobject2-doc
- pygtk2
- pygtk2-codegen
- pygtk2-devel
- pygtk2-doc
- python-nose-docs
- python-nss-doc
- python-podman-api
- python-psycopg2-doc
- python-pymongo-doc
- python-redis
- python-schedutils
- python-slip
- python-sqlalchemy-doc
- python-varlink
- python-virtualenv-doc
- python2-backports
- python2-backports-ssl_match_hostname
- python2-bson
- python2-coverage
- python2-docs
- python2-docs-info
- python2-funcsigs
- python2-ipaddress
- python2-mock
- python2-nose
- python2-numpy-doc
- python2-psycopg2-debug
- python2-psycopg2-tests
- python2-pymongo
- python2-pymongo-gridfs
- python2-pytest-mock
- python2-sqlalchemy
- python2-tools
- python2-virtualenv
- python3-bson
- python3-click
- python3-coverage
- python3-cpio
- python3-custodia
- python3-docs
- python3-flask
- python3-gevent
- python3-gobject-base
- python3-hivex
- python3-html5lib
- python3-hypothesis
- python3-ipatests
- python3-itsdangerous
- python3-jwt
- python3-libguestfs
- python3-mock
- python3-networkx-core
- python3-nose
- python3-nss
- python3-openipmi
- python3-pillow
- python3-ptyprocess
- python3-pydbus
- python3-pymongo
- python3-pymongo-gridfs
- python3-pyOpenSSL
- python3-pytoml
- python3-reportlab
- python3-schedutils
- python3-scons
- python3-semantic_version
- python3-slip
- python3-slip-dbus
- python3-sqlalchemy
- python3-syspurpose
- python3-virtualenv
- python3-webencodings
- python3-werkzeug
- python38-asn1crypto
- python38-numpy-doc
- python38-psycopg2-doc
- python38-psycopg2-tests
- python39-numpy-doc
- python39-psycopg2-doc
- python39-psycopg2-tests
- qemu-kvm-block-gluster
- qemu-kvm-block-iscsi
- qemu-kvm-block-ssh
- qemu-kvm-hw-usbredir
- qemu-kvm-device-display-virtio-gpu-gl
- qemu-kvm-device-display-virtio-gpu-pci-gl
- qemu-kvm-device-display-virtio-vga-gl
- qemu-kvm-tests
- qpdf
- qpdf-doc
- qperf
- qpid-proton
- qrencode
- qrencode-devel
- qrencode-libs
- qt5-qtcanvas3d
- qt5-qtcanvas3d-examples
- rarian
- rarian-compat
- re2c
- recode
- redhat-lsb
- redhat-lsb-core
- redhat-lsb-cxx
- redhat-lsb-desktop
- redhat-lsb-languages
- redhat-lsb-printing
- redhat-lsb-submod-multimedia
- redhat-lsb-submod-security
- redhat-lsb-supplemental
- redhat-lsb-trialuse
- redhat-menus
- redhat-support-lib-python
- redhat-support-tool
- reflections
- regexp
- relaxngDatatype
- resteasy-javadoc
- rhsm-gtk
- rpm-plugin-prioreset
- rpmemd
- rsyslog-udpspoof
- ruby-hivex
- ruby-libguestfs
- rubygem-abrt
- rubygem-abrt-doc
- rubygem-bson
- rubygem-bson-doc
- rubygem-bundler-doc
- rubygem-mongo
- rubygem-mongo-doc
- rubygem-net-telnet
- rubygem-xmlrpc
- s390utils-cmsfs
- samba-pidl
- samba-test
- samba-test-libs
- samyak-devanagari-fonts
- samyak-fonts-common
- samyak-gujarati-fonts
- samyak-malayalam-fonts
- samyak-odia-fonts
- samyak-tamil-fonts
- sane-frontends
- sanlk-reset
- sat4j
- scala
- scotch
- scotch-devel
- SDL_sound
- selinux-policy-minimum
- sendmail
- sgabios
- sgabios-bin
- shim-ia32
- shrinkwrap
- sil-padauk-book-fonts
- sisu-inject
- sisu-mojos
- sisu-plexus
- skkdic
- SLOF
- smc-anjalioldlipi-fonts
- smc-dyuthi-fonts
- smc-fonts-common
- smc-kalyani-fonts
- smc-raghumalayalam-fonts
- smc-suruma-fonts
- softhsm-devel
- sonatype-oss-parent
- sonatype-plugins-parent
- sos-collector
- sparsehash-devel
- spax
- spec-version-maven-plugin
- spice
- spice-client-win-x64
- spice-client-win-x86
- spice-glib
- spice-glib-devel
- spice-gtk
- spice-gtk-tools
- spice-gtk3
- spice-gtk3-devel
- spice-gtk3-vala
- spice-parent
- spice-protocol
- spice-qxl-wddm-dod
- spice-server
- spice-server-devel
- spice-qxl-xddm
- spice-server
- spice-streaming-agent
- spice-vdagent-win-x64
- spice-vdagent-win-x86
- sssd-libwbclient
- star
- stax-ex
- stax2-api
- stringtemplate
- stringtemplate4
- subscription-manager-initial-setup-addon
- subscription-manager-migration
- subscription-manager-migration-data
- subversion-javahl
- SuperLU
- SuperLU-devel
- supermin-devel
- swig
- swig-doc
- swig-gdb
- swtpm-devel
- swtpm-tools-pkcs11
- system-storage-manager
- systemd-tests
- tcl-brlapi
- testng
- thai-scalable-laksaman-fonts
- tibetan-machine-uni-fonts
- timedatex
- torque-libs
- tpm-quote-tools
- tpm-tools
- tpm-tools-pkcs11
- treelayout
- trousers
- trousers-lib
- tuned-profiles-compat
- tuned-profiles-nfv-host-bin
- tuned-utils-systemtap
- tycho
- uglify-js
- unbound-devel
- univocity-output-tester
- univocity-parsers
- usbguard-notifier
- usbredir-devel
- utf8cpp
- uthash
- velocity
- vinagre
- vino
- virt-dib
- virt-p2v-maker
- vm-dump-metrics-devel
- voikko-tools
- vorbis-tools
- weld-parent
- wodim
- woodstox-core
- wqy-microhei-fonts
- wqy-unibit-fonts
- xdelta
- xmlgraphics-commons
- xmlstreambuffer
- xinetd
- xorg-x11-apps
- xorg-x11-drv-qxl
- xorg-x11-server-Xspice
- xpp3
- xsane-gimp
- xsom
- xz-java
- xz-java-javadoc
- yajl-devel
- yp-tools
- ypbind
- ypserv
- zsh-html
8.22. 弃用和不维护的设备
本节列出了继续被支持的设备(驱动程序、适配器)
- ,直到 RHEL 8 生命周期结束,但可能在这个产品以后的主要发行本中不被支持,不建议在新的部署中使用。对列出的设备的支持不会改变。这些是 弃用的 设备。
- 可用,但不再在 RHEL 8 中进行常规测试或更新。红帽可能会自行决定修复严重的错误,包括安全漏洞。这些设备不应再在生产环境中使用,很可能会在下一个主发行版本中被禁用。这些是 不维护的 设备。
PCI 设备 ID 采用 vendor:device:subvendor:subdevice 的格式。如果没有列出设备 ID,则与相应驱动程序关联的所有设备都会被弃用。要在您的系统中检查硬件的 PCI ID,请运行 lspci -nn
命令。
设备 ID | 驱动 | 设备名称 |
---|---|---|
hns_roce | ||
ebtables | ||
arp_tables | ||
ip_tables | ||
ip6_tables | ||
ip6_set | ||
ip_set | ||
nft_compat | ||
usnic_verbs | ||
vmw_pvrdma | ||
hfi1 | ||
bnx2 | QLogic BCM5706/5708/5709/5716 驱动程序 | |
hpsa | 惠普公司: 智能阵列控制器 | |
0x10df:0x0724 | lpfc | Emulex 公司:OneConnect FCoE Initiator(Skyhawk) |
0x10df:0xe200 | lpfc | Emulex 公司:LPe15000/LPe16000 系列 8Gb/16Gb 光纤通道适配器 |
0x10df:0xf011 | lpfc | Emulex 公司:Saturn: LightPulse 光纤通道主机适配器 |
0x10df:0xf015 | lpfc | Emulex 公司:Saturn: LightPulse 光纤通道主机适配器 |
0x10df:0xf100 | lpfc | Emulex 公司:LPe12000 系列 8Gb 光纤通道适配器 |
0x10df:0xfc40 | lpfc | Emulex 公司:Saturn-X: LightPulse 光纤通道主机适配器 |
0x10df:0xe220 | be2net | Emulex 公司:OneConnect NIC(Lancer) |
0x1000:0x005b | megaraid_sas | Broadcom / LSI: MegaRAID SAS 2208 [Thunderbolt] |
0x1000:0x006E | mpt3sas | Broadcom / LSI: SAS2308 PCI-Express Fusion-MPT SAS-2 |
0x1000:0x0080 | mpt3sas | Broadcom / LSI: SAS2208 PCI-Express Fusion-MPT SAS-2 |
0x1000:0x0081 | mpt3sas | Broadcom / LSI: SAS2208 PCI-Express Fusion-MPT SAS-2 |
0x1000:0x0082 | mpt3sas | Broadcom / LSI: SAS2208 PCI-Express Fusion-MPT SAS-2 |
0x1000:0x0083 | mpt3sas | Broadcom / LSI: SAS2208 PCI-Express Fusion-MPT SAS-2 |
0x1000:0x0084 | mpt3sas | Broadcom / LSI: SAS2208 PCI-Express Fusion-MPT SAS-2 |
0x1000:0x0085 | mpt3sas | Broadcom / LSI: SAS2208 PCI-Express Fusion-MPT SAS-2 |
0x1000:0x0086 | mpt3sas | Broadcom / LSI: SAS2308 PCI-Express Fusion-MPT SAS-2 |
0x1000:0x0087 | mpt3sas | Broadcom / LSI: SAS2308 PCI-Express Fusion-MPT SAS-2 |
myri10ge | Myricom 10G 驱动程序(10GbE) | |
netxen_nic | QLogic/NetXen(1/10)GbE 智能以太网驱动程序 | |
0x1077:0x2031 | qla2xxx | QLogic 公司: 基于 ISP8324 的 16Gb 光纤通道到 PCI Express 适配器 |
0x1077:0x2532 | qla2xxx | QLogic 公司: 基于 ISP2532 的 8Gb 光纤通道到 PCI Express 适配器 |
0x1077:0x8031 | qla2xxx | QLogic 公司: 8300 系列 10GbE 聚合网络适配器(FCoE) |
qla3xxx | QLogic ISP3XXX 网络驱动程序 v2.03.00-k5 | |
0x1924:0x0803 | sfc | Solarflare 通信: SFC9020 10G 以太网控制器 |
0x1924:0x0813 | sfc | Solarflare 通信: SFL9021 10GBASE-T 以太网控制器 |
Soft-RoCE (rdma_rxe) | ||
HNS-RoCE | HNS GE/10GE/25GE/50GE/100GE RDMA Network Controller | |
liquidio | Cavium LiquidIO 智能服务器适配器驱动程序 | |
liquidio_vf | Cavium LiquidIO 智能服务器适配器虚拟功能驱动程序 |
设备 ID | 驱动 | 设备名称 |
---|---|---|
dl2k | ||
dlci | ||
dnet | ||
hdlc_fr | ||
rdma_rxe | ||
nicvf | ||
nicpf | ||
siw | ||
e1000 | Intel® PRO/1000 网络驱动程序 | |
mptbase | Fusion MPT SAS 主机驱动程序 | |
mptsas | Fusion MPT SAS 主机驱动程序 | |
mptscsih | Fusion MPT SCSI 主机驱动程序 | |
mptspi | Fusion MPT SAS 主机驱动程序 | |
0x1000:0x0071 [a] | megaraid_sas | Broadcom / LSI: MR SAS HBA 2004 |
0x1000:0x0073 [a] | megaraid_sas | Broadcom / LSI: MegaRAID SAS 2008 [Falcon] |
0x1000:0x0079 [a] | megaraid_sas | Broadcom / LSI: MegaRAID SAS 2108 [Liberator] |
nvmet_tcp | NVMe/TCP 目标驱动程序 | |
nvmet-fc | NVMe/Fabrics FC 目标驱动程序 | |
[a]
在 RHEL 8.0 中禁用了,由于客户请求,在 RHEL 8.4 中被重新启用了。
|
第 9 章 已知问题
这部分论述了 Red Hat Enterprise Linux 8.10 中的已知问题。
9.1. 安装程序和镜像创建
在 IBM Z 上安装 RHEL 时,udev
不会为 FID 枚举的 RoCE 卡分配可预测的接口名称
如果您使用 net.naming-scheme=rhel-8.7
内核命令行选项启动 RHEL 8.7 或更高版本的安装,则 RHEL 安装介质中的 udev
设备管理器会忽略由功能标识符(FID)枚举的 RoCE 卡的此设置。因此,udev
为这些设备分配无法预计的接口名称。在安装过程中没有临时解决方案,但您可以在安装后配置该功能。详情请查看 IBM Z 平台上确定可预测的 RoCE 设备名称。
(JIRA:RHEL-11397)
在具有 LPAR 并启用了 secure boot 的 IBM Power 10 系统上安装失败
RHEL 安装程序没有与 IBM Power 10 系统上静态密钥安全引导集成。因此,当使用 secure 引导选项启用逻辑分区(LPAR)时,安装会失败并显示错误,Unable to proceed with RHEL-x.x Installation
。
要临时解决这个问题,请安装 RHEL 但不启用 secure boot。引导系统后:
-
使用
dd
命令将签名的内核复制到 PReP 分区。 - 重启系统并启用 secure boot。
当固件验证引导装载程序和内核后,系统会成功启动。
如需更多信息,请参阅 https://www.ibm.com/support/pages/node/6528884
Bugzilla:2025814[1]
在 Anaconda 作为应用程序运行的系统中意外 SELinux 策略
当 Anaconda 作为应用程序运行在已安装的系统上(例如,使用 -image
anaconda 选项对镜像文件执行另一次安装)时,不禁止系统在安装过程中修改 SELinux 类型和属性。因此,某些 SELinux 策略的元素可能会在运行Anaconda 的系统上发生更改。
要临时解决这个问题,请不要在生产系统上运行 Anaconda。相反,在临时虚拟机中运行 Anaconda,以使 SELinux 策略在生产系统上保持不变。作为系统安装过程的一部分运行 anaconda,如从 boot.iso
或 dvd.iso
安装不会受此问题的影响。
auth
和 authconfig
Kickstart 命令需要 AppStream 软件仓库
auth
和 authconfig
Kickstart 命令在安装过程中需要 authselect-compat
软件包。如果没有这个软件包,如果使用了 auth
或 authconfig
,则安装会失败。但根据设计,authselect-compat
软件包只包括在 AppStream 仓库中。
要临时解决这个问题,请验证 BaseOS 和 AppStream 存储库是否对安装程序可用,或者在安装过程中使用 authselect
Kickstart 命令。
Bugzilla:1640697[1]
reboot --kexec
和 inst.kexec
命令不提供可预测的系统状态
使用 reboot --kexec Kickstart
命令或 inst.kexec
内核引导参数执行 RHEL 安装不会提供与完全重启相同的可预期系统状态。因此,在不重启的情况下切换安装的系统可能会导致无法预计的结果。
请注意,kexec
功能已弃用,并将在以后的 Red Hat Enterprise Linux 版本中删除。
Bugzilla:1697896[1]
USB CD-ROM 驱动器作为 Anaconda 中的安装源不可用
当源为 USB CD-ROM 驱动器,并且指定了 Kickstart ignoredisk --only-use=
命令时,安装会失败。在这种情况下,Anaconda 无法找到并使用这个源磁盘。
要临时解决这个问题,请使用 harddrive --partition=sdX --dir=/
命令从 USB CD-ROM 驱动器安装。因此,安装不会失败。
在安装程序中不默认启用网络访问
几个安装功能需要网络访问,例如:使用 Content Delivery Network(CDN)、NTP 服务器支持和网络安装源注册系统。但默认情况下不启用网络访问,因此在启用网络访问前无法使用这些功能。
要临时解决这个问题,请添加 ip=dhcp
在启动安装时启用网络访问。另外,使用引导选项传递 Kickstart 文件或位于网络中的库也会解决这个问题。因此可以使用基于网络的安装功能。
Bugzilla:1757877[1]
带有 iso9660 文件系统的硬盘分区安装失败
您不能在使用 iso9660
文件系统进行分区的系统中安装 RHEL。这是因为将设置为忽略包含 iso9660
文件系统分区的硬盘的更新安装代码。即使在没有使用 DVD 的情况下安装 RHEL,也会发生这种情况。
要临时解决这个问题,请在 Kickstart 文件中添加以下脚本,以便在安装开始前格式化磁盘。
注:在执行临时解决方案前,请备份磁盘上的数据。erafs
命令对磁盘中的所有现有数据进行格式化。
%pre
wipefs -a /dev/sda
%end
因此,安装可以正常工作,且没有任何错误。
HASH MMU
模式的 IBM Power 系统无法引导,并显示内存分配失败
具有 HASH 内存分配单元(MMU)
模式的 IBM Power Systems 最多支持 192 个核的 kdump
。因此,如果在超过 192 个核上启用了 kdump
,则系统会无法引导,显示内存分配失败。这个限制是因为 HASH MMU
模式下早期引导过程中的 RMA 内存分配。要临时解决这个问题,请使用启用了 fadump
的 Radix MMU
模式,而不是使用 kdump
。
Bugzilla:2028361[1]
RHEL for Edge 安装程序镜像在安装 rpm-ostree 有效负载时无法创建挂载点
当部署 rpm-ostree
有效负载时,例如在 RHEL for Edge 安装程序镜像中,安装程序不会为自定义分区正确创建一些挂载点。因此,安装会中止,并报以下错误:
The command 'mount --bind /mnt/sysimage/data /mnt/sysroot/data' exited with the code 32.
要临时解决这个问题:
- 使用自动分区方案,且不手动添加任何挂载点。
-
只在
/var
目录中手动分配挂载点。例如:/var/my-mount-point
和以下标准目录:/
、/boot
、/var
。
因此,安装过程成功完成。
使用 stig
配置集补救构建的镜像无法引导,并显示 FIPS 错误
RHEL 镜像构建器不支持 FIPS 模式。当使用由 xccdf_org.ssgproject.content_profile_stig
配置文件补救自定义的 RHEL 镜像构建器时,系统无法引导,并显示以下错误:
Warning: /boot//.vmlinuz-<kernel version>.x86_64.hmac does not exist FATAL: FIPS integrity test failed Refusing to continue
在系统镜像安装后,使用 fips-mode-setup --enable
命令手动启用 FIPS 策略无法正常工作,因为 /boot
目录在不同的分区上。如果禁用了 FIPS,则系统可以成功引导。目前,还没有可用的临时解决方案。
安装镜像后,您可以使用 fips-mode-setup --enable
命令手动启用 FIPS。
9.2. 安全性
OpenSC 可能无法正确检测 CardOS V5.3 卡对象
OpenSC 工具包没有正确地从某些 CardOS V5.3 卡中使用的不同的 PKCS #15 文件偏移中读取缓存。因此,OpenSC 可能无法列出卡对象,并防止从不同的应用程序使用它们。
要临时解决这个问题,请在 /etc/opensc.conf
文件中设置 use_file_caching = false
选项来关闭文件缓存。
sshd -T
提供关于 Ciphers、MAC 和 KeX 算法的不准确的信息
sshd -T
命令的输出不包含系统范围的加密策略配置或可能来自于环境文件 /etc/sysconfig/sshd
的其他选项,它们作为 sshd
命令的参数被应用。这种情况的发生是因为上游 OpenSSH 项目不支持 Include 指令,以支持 RHEL 8 中红帽提供的加密默认值。在使用 EnvironmentFile
启动sshd.service
单元服务的过程中,加密策略作为命令行参数被应用到 sshd
可执行文件中。要临时解决这个问题,请对环境文件使用 source
命令,并将加密策略作为参数传给 sshd
命令,如 sshd -T $CRYPTO_POLICY
。如需更多信息,请参阅 Ciphers、MAC 或 KeX 算法与 sshd -T
的不同,以了解当前加密策略级别所提供的内容。因此,sshd -T
的输出与当前配置的加密策略匹配。
Bugzilla:2044354[1]
在安装过程中强化系统时,RHV hypervisor 可能无法正常工作
安装 Red Hat Virtualization Hypervisor (RHV-H)并应用 Red Hat Enterprise Linux 8 STIG 配置文件时,OCAP Anaconda 附加组件可能会将系统强化为 RHEL 而不是 RVH-H,并删除 RHV-H 的基本软件包。因此,RHV hypervisor 可能无法正常工作。要临时解决这个问题,请在不应用任何配置文件强化的情况下安装 RHV-H 系统,并在安装完成后使用 OpenSCAP 来应用配置文件。因此,RHV hypervisor 可以正常工作。
CVE OVAL 提要现在仅采用压缩格式,并且数据流不采用 SCAP 1.3 标准
红帽提供 bzip2 压缩格式的 CVE OVAL 提要,且不再以 XML 文件格式提供。因为引用压缩的内容没有在安全内容自动化协议(SCAP) 1.3 规范中标准化,所以第三方 SCAP 扫描程序可能在扫描使用提要的规则时有问题。
某些 Rsyslog 优先级字符串无法正常工作
对允许对加密进行精细控制的 imtcp
的 GnuTLS 优先级字符串的支持不完整。因此,以下优先级字符串无法在 Rsyslog 远程日志记录应用程序中正常工作:
NONE:+VERS-ALL:-VERS-TLS1.3:+MAC-ALL:+DHE-RSA:+AES-256-GCM:+SIGN-RSA-SHA384:+COMP-ALL:+GROUP-ALL
要临时解决这个问题,请只使用正确的优先级字符串:
NONE:+VERS-ALL:-VERS-TLS1.3:+MAC-ALL:+ECDHE-RSA:+AES-128-CBC:+SIGN-RSA-SHA1:+COMP-ALL:+GROUP-ALL
因此,当前的配置必须仅限于可正常工作的字符串。
Server with GUI
和 Workstation
安装可能无法使用 CIS 服务器配置文件
CIS Server Level 1 和 Level 2 安全配置文件与 Server with GUI
和 Workstation
软件选择不兼容。因此,无法使用 Server with GUI
软件选择和 CIS Server 配置文件进行 RHEL 8 安装。使用 CIS Server Level 1 或 Level 2 配置以及这些软件选择之一尝试安装会产生错误信息:
package xorg-x11-server-common has been added to the list of excluded packages, but it can't be removed from the current software selection without breaking the installation.
如果您需要根据 CIS 基准使系统与 Server with GUI
或 Workstation
软件选择保持一致,请使用 CIS Workstation Level 1 或 Level 2 配置文件。
在 Kickstart 安装过程中修复与服务相关的规则可能会失败
在 Kickstart 安装过程中,OpenSCAP 有时会错误地显示不需要服务
状态补救。因此,OpenSCAP 可能会将安装的系统上的服务设置为不合规的状态。作为临时解决方案,您可以在 Kickstart 安装后扫描并修复该系统。这可以解决与服务相关的问题。
启用或禁用
Kickstart 在 RHEL 8 中使用 org_fedora_oscap
而不是 com_redhat_oscap
Kickstart 将 Open Security Content Automation Protocol(OSCAP)Anaconda 附加组件引用为 org_fedora_oscap
而不是 com_redhat_oscap
,后者可能会导致混淆。对于保持与 Red Hat Enterprise Linux 7 的兼容性,这是必需的。
Bugzilla:1665082[1]
libvirt
overrides xccdf_org.ssgproject.content_rule_sysctl_net_ipv4_conf_all_forwarding
当具有 route
或 nat
转发模式的虚拟网络启动时,libvirt
虚拟化框架都会启用 IPv4 转发。这会通过 xccdf_org.ssgproject.content_rule_sysctl_net_ipv4_conf_all_forwarding
规则覆盖配置,后续合规性扫描在评估此规则时会报告fail
结果。
应用其中一个场景来临时解决这个问题:
-
如果您的场景不需要,请卸载
libvirt
软件包。 -
更改
libvirt
创建的虚拟网络的转发模式。 -
通过定制您的配置文件来删除
xccdf_org.ssgproject.content_rule_sysctl_net_ipv4_conf_all_forwarding
规则。
fapolicyd
工具错误地允许执行更改的文件
在对文件进行任何更改后,文件的 IMA 哈希应该正确更新,fapolicyd
应该阻止更改的文件的执行。但是,这不会因为 IMA 策略设置与通过 evctml
程序哈希的文件中的差异而发生。因此,IMA 哈希没有在更改的文件的扩展属性中被更新。因此,fapolicyd
错误地允许更改的文件的执行。
Jira:RHEL-520[1]
semanage fcontext
命令重新排序本地修改
semanage fcontext -l -C
命令列出存储在 file_contexts.local
文件中的本地文件上下文修改。restorecon
工具处理 file_contexts.local
中从最新到最旧的条目。但是 semanage fcontext -l -C
以不同顺序列出条目。处理顺序和列出顺序之间的不匹配可能导致在管理 SELinux 规则时出现问题。
Jira:RHEL-24461[1]
FIPS 模式中的 openssl 只接受特定的 D-H 参数
在 FIPS 模式中,使用 OpenSSL 的 TLS 客户端返回一个 bad dh value
错误,并取消与使用手动生成的参数的服务器的 TLS 连接。这是因为 OpenSSL 当配置为符合 FIPS 140-2 时,只可用于符合 NIST SP 800-56A rev3 附加 D(RFC 3526 中定义的组 14、15、16、17 和 18,以及 RFC 7919)中定义的组。另,,使用 OpenSSL 的服务器会忽略所有其他参数,并选择类似大小的已知参数。要临时解决这个问题,请只使用兼容的组。
Bugzilla:1810911[1]
crypto-policies
错误地允许 Camellia 密码
RHEL 8 系统范围的加密策略应该在所有策略级别禁用 Camellia 密码,如产品文档中所述。但是 Kerberos 协议默认启用密码。
要临时解决这个问题,请应用 NO-CAMELLIA
子策略:
# update-crypto-policies --set DEFAULT:NO-CAMELLIA
在上一个命令中,如果您已经从 DEFAULT
切换,那么将 DEFAULT
替换为加密级名称。
因此,只有在您通过临时解决方案禁用系统范围的加密策略的所有应用程序中,Camellia 密码才会被正确禁止。
通过 OpenSC pkcs15-init
的智能卡配置过程无法正常工作
file_caching
选项在默认的 OpenSC 配置中是启用的,文件缓存功能无法正确处理pkcs15-init
工具中的一些命令。因此,通过 OpenSC 进行智能卡置备过程会失败。
要临时解决这个问题,请在 /etc/opensc.conf
文件中添加以下代码段:
app pkcs15-init { framework pkcs15 { use_file_caching = false; } }
只有在应用了前面描述的临时解决方案时,通过 pkcs15-init
进行智能卡配置才能正常工作。
到带有 SHA-1 签名的服务器的连接无法使用 GnuTLS
GnuTLS 安全通讯库以 insecure 形式拒绝 SHA-1 证书签名。因此,使用 GnuTLS 作为 TLS 后端的应用程序无法建立与提供此类证书的对等的 TLS 连接。这个行为与其他系统加密库不一致。
要临时解决这个问题,请升级服务器以使用 SHA-256 或更强大的哈希签名的证书,或切换到 LEGACY 策略。
Bugzilla:1628553[1]
libselinux-python
只能通过其模块提供
libselinux-python
软件包只包含用于开发 SELinux 应用程序的 Python 2 绑定,它用于向后兼容。因此,通过 yum install libselinux-python
命令,默认的 RHEL 8 软件仓库中不再提供 libselinux-python
。
要临时解决这个问题,请启用 libselinux-python
和 python27
模块,并使用以下命令安装 libselinux-python
软件包及其相依性软件包:
# yum module enable libselinux-python # yum install libselinux-python
或者,使用它的安装配置集在一个命令中安装 libselinux-python
:
# yum module install libselinux-python:2.8/common
因此,您可以使用给定的模块安装 libselinux-python
。
Bugzilla:1666328[1]
UDICA
仅在使用 --env container=podman
启动时才会处理 UBI 8 容器
Red Hat Universal Base Image 8(UBI 8)容器将 container
环境变量设置为 oci
值,而不是 podman
值。这可以防止 udica
工具分析容器 JavaScript Object Notation(JSON)文件。
要临时解决这个问题,请使用带有 --env container=podman
参数的 podman
命令启动 UBI 8 容器。因此,只有在使用上述临时解决方案时,udica
才能为UBI 8 容器生成 SELinux 策略。
默认日志设置在性能上的负面影响
默认日志环境设置可能会消耗 4 GB 内存甚至更多,当 systemd-journald
使用 rsyslog
运行时,速率限制值的调整会很复杂。
如需更多信息,请参阅 RHEL 默认日志设置对性能的负面影响及环境方案。
Jira:RHELPLAN-10431[1]
/etc/selinux/config
中的SELINUX=disabled
无法正常工作
在 /etc/selinux/config
中使用 SELINUX=disabled
选项禁用 SELinux 会导致内核在启用了 SELinux 的情况下引导,并在稍后的引导过程中切换到禁用模式。这可能导致内存泄漏。
要临时解决这个问题,请在内核命令行中添加 selinux=0
参数来禁用 SELinux,如 使用 SELinux 中的在引导时更改 SELinux 模式部分所述。
Jira:RHELPLAN-34199[1]
通过 TCP 连接的 IKE 在自定义 TCP 端口上无法正常工作
tcp-remoteport
Libreswan 配置选项无法正常工作。因此,当场景需要指定非默认 TCP 端口时,TCP 连接上的 IKE 无法建立。
scap-security-guide
无法配置闲置会话的终止
虽然数据流中仍然存在 sshd_set_idle_timeout
规则,但之前配置 sshd
的会话超时的方法不再可用。因此,该规则被标记为 not applicable
,且无法强化任何内容。其他配置闲置会话终止的方法(如 systemd
(Logind))也不可用。因此,scap-security-guide
无法将系统配置为在一定时间后可靠地断开闲置会话。
您可以使用以下方法之一临时解决这个问题,这些方法可能满足安全要求:
-
配置
accounts_tmout
规则。但是,可以使用exec
命令覆盖此变量。 -
配置
configure_tmux_lock_after_time
和configure_bashrc_exec_tmux
规则。这需要安装tmux
软件包。 -
升级到 RHEL 8.7 或更高版本,其中
systemd
功能已与正确的 SCAP 规则一起实施。
OSCAP Anaconda 附加组件不会在图形安装中获取定制的配置文件
OSCAP Anaconda 附加组件不提供一个选项,来在 RHEL 图形安装中选择或取消选择安全配置文件的定制。从 RHEL 8.8 开始,当从存档或 RPM 软件包安装时,附加组件不会考虑定制。因此,安装会显示以下出错信息,而不是获取 OSCAP 定制的配置文件:
There was an unexpected problem with the supplied content.
要临时解决这个问题,您必须在 Kickstart 文件的 %addon org_fedora_oscap
部分中指定路径,例如:
xccdf-path = /usr/share/xml/scap/sc_tailoring/ds-combined.xml tailoring-path = /usr/share/xml/scap/sc_tailoring/tailoring-xccdf.xml
因此,您只能将用于 SCAP 定制的配置文件的图形安装与相应的 Kickstart 规格一起使用。
OpenSCAP 内存消耗问题
在内存有限的系统上,OpenSCAP 扫描程序可能过早停止,或者可能没有生成结果文件。要临时解决这个问题,您可以自定义扫描配置文件,以取消选择涉及递归整个 /
文件系统的规则:
-
rpm_verify_hashes
-
rpm_verify_permissions
-
rpm_verify_ownership
-
file_permissions_unauthorized_world_writable
-
no_files_unowned_by_user
-
dir_perms_world_writable_system_owned
-
file_permissions_unauthorized_suid
-
file_permissions_unauthorized_sgid
-
file_permissions_ungroupowned
-
dir_perms_world_writable_sticky_bits
如需了解更多详细信息和临时解决方案,请参阅相关的 知识库文章。
重建 rpm
数据库会分配不正确的 SELinux 标签
使用 rpmdb --rebuilddb
命令重建 rpm
数据库,会为 rpm
数据库文件分配不正确的 SELinux 标签。因此,一些使用 rpm
数据库的服务可能无法正常工作。要在重建数据库后临时解决这个问题,请使用 restorecon -Rv /var/lib/rpm
命令重新标记数据库。
64 位 ARM 架构上错误地使用了审计的 ANSSI BP28 HP SCAP 规则
SCAP 安全指南(SSG)中的 ANSSI BP28 High 配置文件包含以下安全内容自动化协议(SCAP)规则,后者配置 Linux 审计子系统,但在 64 位 ARM 架构上无效:
-
audit_rules_unsuccessful_file_modification_creat
-
audit_rules_unsuccessful_file_modification_open
-
audit_rules_file_deletion_events_rename
-
audit_rules_file_deletion_events_rmdir
-
audit_rules_file_deletion_events_unlink
-
audit_rules_dac_modification_chmod
-
audit_rules_dac_modification_chown
-
audit_rules_dac_modification_lchown
如果您使用这个配置文件配置在 64 位 ARM 机器上运行的 RHEL 系统,则审计守护进程会因为使用了无效的系统调用而无法启动。
要临时解决这个问题,可以使用定制的配置文件从数据流中删除前面提到的规则,或通过编辑 /etc/audit/rules.d
目录中的文件来删除 -S <syscall>
片段。文件不得包含以下系统调用:
- Creat
- open
- rename
- rmdir
- unlink
- chmod
- chown
- lchown
于上述两种临时解决方法中的任何一种,即使在 64 位 ARM 系统上使用 ANSSI BP28 High 配置文件后,审计守护进程也可以启动。
9.3. RHEL for Edge
当包含 nodejs
或 npm
时,composer-cli
无法构建 RHEL for Edge 镜像
目前,在使用 RHEL 镜像构建器时,您无法使用 nodejs
和 npm
软件包自定义 RHEL 8 Edge 镜像,因为无法使用 nodejs
软件包构建 RHEL for Edge 镜像。NPM 软件包管理器期望其配置在 {prefix}/etc/npmrc
目录中,npm RPM 软件包在 /usr/etc/npmrc
目录中有一个指向 /etc/npmrc
的符号链接。要临时解决这个问题,请在构建 RHEL for Edge 系统后安装 nodejs
和 npm
软件包。
Jira:RHELDOCS-17126[1]
9.4. 订阅管理
syspurpose addons
对 subscription-manager attach --auto
输出没有影响
在 Red Hat Enterprise Linux 8 中,添加了 syspurpose
命令行工具的四个属性:role
、usage
、service_level_agreement
和 addons
目前,只有 role
、usage
和 service_level_agreement
会影响到运行 subscription-manager attach --auto
命令的输出。试图为 addons
参数设置值的用户不会观察到对自动附加的订阅有任何影响。
9.5. 软件管理
即使日志记录服务不可用,YUM 功能或插件也可能记录消息
某些 YUM 功能或插件可能在日志记录服务不可用时将消息记录到标准输出或标准错误输出。日志消息的级别指示消息记录在哪里:
- 信息消息记录到标准输出。
- 错误和调试消息记录到标准错误输出。
因此,当编写 YUM 选项脚本时,标准输出或标准错误输出上的不需要的日志消息可能会影响脚本的功能。
要临时解决这个问题,使用 yum -q
命令抑制标准输出和标准错误输出上的日志消息。这抑制了日志消息,但不是在标准输出上预期的命令结果。
Jira:RHELPLAN-50409[1]
cr_compress_file_with_stat()
可能会导致内存泄漏
createrepo_c
C 库包含 API cr_compress_file_with_stat()
函数。这个函数被声明为以 char **dst
作为第二个参数。根据其他参数,cr_compress_file_with_stat()
要么使用 dst
作为输入参数,要么使用它来返回一个分配的字符串。这种无法预测的行为可能会导致内存泄漏,因为它不会通知用户何时释放 dst
内容。
要临时解决这个问题,增加了一个新的 API cr_compress_file_with_stat_v2
函数,它只使用 dst
参数作为输入。它被声明为 char *dst
。这可防止内存泄漏。
请注意,cr_compress_file_with_stat_v2
函数为临时的,仅存在于 RHEL 8 中。之后,cr_compress_file_with_stat()
将会被修复。
Bugzilla:1973588[1]
当 scriptlet 失败时,YUM 事务被报告为成功
从 RPM 版本 4.6 开始,允许安装后 scriptlet 失败,而不会对事务造成致命影响。这个行为也被传播到 YUM。这导致 scriptlets 可能会偶尔失败,而整个软件包事务报告为成功。
目前还没有可用的临时解决方案。
请注意,这是预期行为,其在 RPM 和 YUM 之间保持一致。scriptlet 中的任何问题都应在软件包层面上解决。
9.6. Shell 和命令行工具
ipmitool
与某些服务器平台不兼容
ipmitool
工具为监控、配置和管理支持智能平台管理接口(IPMI)的设备提供服务。ipmitool
的当前版本默认使用 Cipher Suite 17,而不是之前的 Cipher Suite 3。因此,ipmitool
无法与在协商过程中与声称支持 Cipher Suite 17 的某些裸机节点通信,但实际上不支持这个加密套件。因此,ipmitool
会停止,并显示 no matching cipher suite
错误消息。
如需了解更多详细信息,请参阅相关的 知识库文章。
要解决这个问题,请更新您的基板管理控制器(BMC)固件以使用 Cipher Suite 17。
另外,如果 BMC 固件更新不可用,您可以通过强制 ipmitool
使用特定加密套件来临时解决这个问题。当使用 ipmitool
调用管理任务时,向 ipmitool
命令添加 -C
选项,以及您要使用的加密套件的 编号。请参见以下示例:
# ipmitool -I lanplus -H myserver.example.com -P mypass -C 3 chassis power status
当您不使用清理磁盘进行恢复时,ReaR 无法重新创建卷组
当您要恢复到包含现有数据的磁盘时,ReaR 无法执行恢复。
要临时解决这个问题,如果磁盘之前使用过,请在恢复之前手动擦除磁盘。要在救援环境中擦除磁盘,请在运行 rear recover
命令前使用以下命令之一:
-
使用
dd
命令覆盖磁盘。 -
使用带有
-a
标志的wipefs
命令来清除所有可用的元数据。
请参见以下擦除 /dev/sda
磁盘的元数据的示例:
# wipefs -a /dev/sda[1-9] /dev/sda
此命令首先从 /dev/sda
上的分区擦除元数据,然后是分区表本身。
启用了安全引导机制的 UEFI
系统上的 ReaR 救援镜像无法使用默认设置引导
使用 rear mkrescue
或 rear mkbackup
命令创建 ReaR 镜像失败,并显示以下信息:
grub2-mkstandalone might fail to make a bootable EFI image of GRUB2 (no /usr/*/grub*/x86_64-efi/moddep.lst file) (...) grub2-mkstandalone: error: /usr/lib/grub/x86_64-efi/modinfo.sh doesn't exist. Please specify --target or --directory.
缺少的文件是 grub2-efi-x64-modules
软件包的一部分。如果您安装此软件包,则会成功创建救援镜像,且没有任何错误。当启用了 UEFI
安全引导时,救援镜像无法引导,因为它使用未签名的引导装载程序。
要临时解决这个问题,请在 /etc/rear/local.conf
或 /etc/rear/site.conf
(ReaR 配置文件)中添加以下变量:
UEFI_BOOTLOADER=/boot/efi/EFI/redhat/grubx64.efi SECURE_BOOT_BOOTLOADER=/boot/efi/EFI/redhat/shimx64.efi
使用推荐的临时解决方案,即使在没有 grub2-efi-x64-modules
软件包的系统上也可以成功生成镜像,它可在启用了安全引导的系统上启动。另外,在系统恢复过程中,恢复的系统的引导加载程序被设置为 EFI
shim 引导装载程序。
有关 UEFI
、安全引导
和 shim 引导装载程序
的更多信息,请参阅 UEFI:引导系统时会发生什么 知识库文章。
Jira:RHELDOCS-18064[1]
coreutils
可能会报告误导性的 EPERM 错误代码
GNU Core 工具(coreutils
)使用 statx()
系统调用启动了。如果 seccomp
过滤器为未知系统调用返回 EPERM 错误代码,则 coreutils
可能会报告误导 EPERM 错误代码,因为 EPERM 无法与正常工作的 statx ()
syscall 返回的实际 Operation not permitted 错误区分开。
要临时解决这个问题,请更新 seccomp
过滤器,使其要么允许 statx()
系统调用,要么对其它不知道的系统调用返回 ENOSYS 错误代码。
sysstat
软件包中的 %vmeff
指标显示不正确的值
sysstat
软件包提供 %vmeff
指标来测量页面回收效率。sar -B
命令返回的 %vmeff
列的值不正确,因为 sysstat
不会解析后续内核版本提供的所有相关的 /proc/vmstat
值。要临时解决这个问题,您可以从 /proc/vmstat
文件中手动计算 %vmeff
值。详情请查看 为什么在 RHEL 8 和 RHEL 9 中 sar (1)
工具报告 %vmeff
值超过 100 % ?
sar
和 iostat
工具生成的 %util
和 svctm
列无效
当您在内核版本 4.18.0-55.el8
或更高版本的系统上使用 sar
或 iostat
工具收集系统使用情况统计数据时,sar
或 iostat
生成的 %util
和 svctm
列可能包含无效的数据。
Jira:RHEL-23074[1]
9.7. 基础架构服务
FIPS 模式中的 postfix TLS 指纹算法需要改为 SHA-256
默认情况下,在 RHEL 8中,postfix
使用带有TLS 的MD5 指纹来进行向后兼容。但是在 FIPS 模式中,MD5 哈希功能不可用,这可能会导致 TLS 在默认 postfix 配置中无法正常工作。要临时解决这个问题,需要在 postfix 配置文件中将哈希函数改为 SHA-256。
如需了解更多详细信息,请参阅 Fix postfix TLS in the FIPS mode by switching to SHA-256 instead of MD5。
brltty
软件包与 multilib 不兼容
不可能同时安装 32 位和 64 位版本的 brltty
软件包。您要么安装 32 位(brltty.i686
),要么安装 64 位(brltty.x86_64
)版本的软件包。建议使用 64 位版本。
9.8. 网络
使用 negative_advice
() 函数的过时的第三方模块可能会导致内核崩溃
核心网络操作 negative_advice ()
调用内联 dst_negative_advice ()
和 __dst_negative_advice ()
函数。RHEL 8.10 中的内核修补了这些内联功能中的安全问题(CVE-2024-36971)。如果在修复前编译了第三方模块,则此模块可能会错误地调用 negative_advice ()
。因此,第三方模块可能会使内核崩溃。要解决这个问题,请使用正确调用 negative_advice ()
函数的更新模块。
RoCE 接口因为网络接口名称的意外更改而丢失了其 IP 设置
如果两个条件都满足,则 RDMA over Converged Ethernet (RoCE)接口会因为网络接口名称的意外更改而丢失其 IP 设置:
- 用户从 RHEL 8.6 系统或更早的版本升级。
- RoCE 卡按 UID 枚举。
要临时解决这个问题:
使用以下内容创建
/etc/systemd/network/98-rhel87-s390x.link
文件:[Match] Architecture=s390x KernelCommandLine=!net.naming-scheme=rhel-8.7 [Link] NamePolicy=kernel database slot path AlternativeNamesPolicy=database slot path MACAddressPolicy=persistent
- 重启系统以使更改生效。
- 升级到 RHEL 8.7 或更高版本。
请注意,按功能 ID (FID)枚举且不是唯一的 RoCE 接口仍然会使用无法预测的接口名称,除非您设置了 net.naming-scheme=rhel-8.7
内核参数。在这种情况下,RoCE 接口将切换到具有 ens
前缀的可预测的名称。
Jira:RHEL-11398[1]
启用了 IPv6_rpfilter
选项的系统的网络吞吐量较低
在 firewalld.conf
文件中启用了 IPv6_rpfilter
选项的系统目前在高流量场景(如 100 Gbps 链接)中遇到次优性能和低网络吞吐量。要临时解决这个问题,请禁用 IPv6_rpfilter
选项。为此,请在 /etc/firewalld/firewalld.conf
文件中添加以下行:
IPv6_rpfilter=no
因此,系统性能更好,但安全性也有所降低。
Bugzilla:1871860[1]
9.9. 内核
内核 ACPI 驱动程序报告无法访问 PCIe ECAM 内存区域
固件提供的高级配置和电源接口(ACPI)表没有在 PCI 总线设备中定义内存区域。因此,在系统引导时会出现以下警告信息:
[ 2.817152] acpi PNP0A08:00: [Firmware Bug]: ECAM area [mem 0x30000000-0x31ffffff] not reserved in ACPI namespace [ 2.827911] acpi PNP0A08:00: ECAM at [mem 0x30000000-0x31ffffff] for [bus 00-1f]
但是,内核仍然可以访问 0x30000000-0x31ffff
内存区域,并可以正确地将该内存区域分配给 PCI 增强配置访问机制(ECAM)。您可以通过以下输出通过 256 字节偏移访问 PCIe 配置空间来验证 PCI 是正常工作的:
03:00.0 Non-Volatile memory controller: Sandisk Corp WD Black 2018/PC SN720 NVMe SSD (prog-if 02 [NVM Express]) ... Capabilities: [900 v1] L1 PM Substates L1SubCap: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2+ ASPM_L1.1- L1_PM_Substates+ PortCommonModeRestoreTime=255us PortTPowerOnTime=10us L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1- T_CommonMode=0us LTR1.2_Threshold=0ns L1SubCtl2: T_PwrOn=10us
因此,您可以忽略警告信息。
有关此问题的详情,请参阅 "Firmware Bug: ECAM area mem 0x30000000-0x31ffffff
not reserved in ACPI namespace" appears during system boot。
Bugzilla:1868526[1]
tuned-adm profile powerave
命令会导致系统变得无响应
执行 tuned-adm profile powersave
命令会导致使用旧的Thunderx(CN88x)处理器的Penguin Valkyrie 2000 2-socket 系统处于无响应状态。因此,需要重启系统以便恢复工作。要临时解决这个问题,如果您的系统符合上述说明,请避免使用 powersave
配置集。
Bugzilla:1609288[1]
HP NMI 监视器并不总是生成崩溃转储
在某些情况下,HP NMI watchdog 的 hpwdt
驱动无法声明一个由 HPE watchdog timer 生成的不可屏蔽中断(NMI),因为 NMI 被 perfmon
驱动所消耗。
缺少的 NMI 是由以下两个条件之一引发的:
- Integrated Lights-Out (iLO) 服务器管理软件中的 Generate NMI 按钮。这个按钮由用户触发。
-
hpwdt
watchdog。默认过期会向服务器发送一个 NMI。
在系统无响应时通常会出现这两个序列。在一般情况下,用于这两种情况的 NMI 处理程序调用 kernel panic()
功能,如果配置了, kdump
服务会生成 vmcore
文件。
由于缺少 NMI,没有调用 kernel panic()
且不收集 vmcore
。
第一种情况(1.),如果系统不响应,它会一直处于这个状态。要临时解决这种情况,请使用虚拟 Power 按钮来重置或者启用服务器。
在第二个示例中(2.),缺少的 NMI 之后会在 9 秒后被自动系统恢复(ASR)重置。
HPE Gen9 服务器行以单位数字显示这个问题。Gen10 频率更小。
Bugzilla:1602962[1]
重新加载相同的崩溃扩展可能会导致分段错误
当您加载已加载的崩溃扩展文件的副本时,可能会触发分段错误。目前,crash 工具会检测原始文件是否已被加载。因此,由于两个完全相同的文件在 crash 工具中并存,因此会发生命名空间冲突,这会触发 crash 工具,从而导致分段错误。
您可以通过只加载 crash 扩展文件一次来临时解决此问题。因此,在描述的场景中不再会出现分段错误。
将虚拟功能附加到虚拟机时连接会失败
使用传奇 ionic
设备驱动程序的 Pensando 网卡会默默地接受 VLAN 标签配置请求,并在将网络虚拟功能(VF
)附加到虚拟机(VM
)上时尝试配置网络连接。这些网络连接会失败,因为卡的固件还没有支持这个功能。
Bugzilla:1930576[1]
OPEN MPI 库可能会使用默认 PML 触发运行时失败
在 OPEN 消息密码界面(OPEN MPI)实现 4.0.x 系列中,Unified communicating X(UCX)是默认的点到点通信器(PML)。OPEN MPI 4.0.x 系列的后续版本弃用了 openib
Byte Transfer Layer(BTL)。
但是,当OPEN MPI 在 同构 集群(与硬件和软件配置相同)上运行时,UCX 仍然使用openib
BTL进行 MPI 单边操作。因此,这可能会触发执行错误。要临时解决这个问题:
-
使用以下参数运行
mpirun
命令:
-mca btl openib -mca pml ucx -x UCX_NET_DEVICES=mlx5_ib0
其中,
-
-mca btl openib
参数禁用openib
BTL -
-mca pml ucx
参数将 OPEN MPI 配置为使用ucx
PML。 -
x UCX_NET_DEVICES=
参数限制 UCX 使用指定的设备
OPEN MPI 在使用 异构 集群(不同硬件和软件配置)中运行时,使用 UCX 作为默认的 PML。因此,这可能会导致 OPEN MPI 任务以错误的性能、无响应行为或崩溃失败运行。要临时解决这个问题,将 UCX 优先级设置为:
-
使用以下参数运行
mpirun
命令:
-mca pml_ucx_priority 5
因此,OPEN MPI 库可以选择使用 UCX 的可替代传输层。
Bugzilla:1866402[1]
在内存热插拔操作后,vmcore 捕获失败
执行内存热插拔操作后,会更新包含内存布局信息的设备树。因此,makedumpfile
实用程序会尝试访问不存在的物理地址。如果以下条件都满足,就会出现问题:
- IBM Power System 的 little-endian 变体运行 RHEL 8。
-
在系统中启用了
kdump
或者fadump
服务。
因此,如果在内存 hot-plug 或 hot-unplug 操作后触发了内核崩溃,捕获内核将无法保存 vmcore
。
要临时解决这个问题,在 hot-plug 或 hot-unplug 后重启 kdump
服务:
# systemctl restart kdump.service
因此,vmcore
在上述场景中被成功保存。
Bugzilla:1793389[1]
使用 irqpoll
会导致 vmcore
生成失败
由于在 Amazon Web Services Graviton 1 处理器上运行的 64 位 ARM 架构上的 nvme
驱动程序存在问题,因此导致在给第一个内核提供 irqpoll
内核命令行参数时 vmcore
生成失败。因此,当内核崩溃时,vmcore
文件不会在 /var/crash/
目录中转储 。要临时解决这个问题:
在
/etc/sysconfig/kdump
文件中,将irqpoll
追加到KDUMP_COMMANDLINE_REMOVE
变量中。# KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
删除
/etc/sysconfig/kdump
文件中KDUMP_COMMANDLINE_APPEND
变量中的irqpoll
。# KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory udev.children-max=2 panic=10 swiotlb=noforce novmcoredd"
重启
kdump
服务:# systemctl restart kdump
因此,第一个内核会正确引导,在内核崩溃时可以捕获 vmcore
文件。
请注意,Amazon Web Services Graviton 2 和 Amazon Web Services Graviton 3 处理器不需要手动删除 /etc/sysconfig/kdump
文件中的 irqpoll
参数。
kdump
服务可能会使用大量崩溃内核内存来转储 vmcore
文件。确定捕获内核有足够的内存可用于 kdump
服务。
有关此已知问题的详情,请查看 irqpoll 内核命令行参数可能会导致 vmcore 生成失败 的文章。
Bugzilla:1654962[1]
具有大核数的系统上实时内核的硬件认证可能需要传递 skew-tick=1
引导参数
具有大量插槽和大核数的大型或中型系统可能会因为对 xtime_lock
(其在计时系统中使用)的锁争用而遇到延迟峰值。因此,硬件认证中的延迟峰值和延迟可能会在多处理系统上发生。作为临时解决方案,您可以通过添加 skew_tick=1
引导参数,偏移每个 CPU 的计时器刻度,来在不同的时间启动。
要避免锁冲突,请启用 skew_tick=1
:
使用
grubby
启用skew_tick=1
参数。# grubby --update-kernel=ALL --args="skew_tick=1"
- 重启以使更改生效。
通过显示您在启动过程中传递的内核参数来验证新设置。
cat /proc/cmdline
请注意,启用 skew_tick=1
会导致功耗的大量增加,因此只有在运行延迟敏感实时工作负载时才必须启用它。
Jira:RHEL-9318[1]
在 RHEL 8 上,调试内核无法在崩溃捕获环境中引导
由于 调试内核的内存密集型特性,当调试内核在使用,且触发了内核 panic 时会出现问题。因此,调试内核无法作为捕获内核启动,而是生成堆栈跟踪。要临时解决这个问题,请根据需要增大崩溃内核内存。因此,调试内核会在崩溃捕获环境中成功引导。
Bugzilla:1659609[1]
在引导时分配崩溃内核内存失败
在某些 Ampere Altra 系统上,当 BIOS 设置中禁用了 32 位区域时,在引导过程中分配崩溃内核内存会失败。因此,kdump
服务无法启动。这是因为 4 GB 以下的内存碎片导致,没有足够大的碎片来包含崩溃内核内存。
要临时解决这个问题,请在 BIOS 中启用 32 位内存区域,如下所示:
- 在您的系统中打开 BIOS 设置。
- 打开 Chipset 菜单。
-
在 Memory Configuration 下,启用
SSlave 32-bit
选项。
因此,在 32 位区域中的崩溃内核内存分配会成功,kdump
服务可以按预期工作。
Bugzilla:1940674[1]
QAT 管理器没有为 LKCF 保留备用设备
Intel® QuickAssist Technology (QAT)管理器(qatmgr
)是一个用户空间进程,默认情况下会使用系统中的所有 QAT 设备。因此,没有为 Linux 内核加密框架(LKCF)保留任何 QAT 设备。不需要临时解决这种情况,因为此行为是预期的,大多数用户都将使用来自用户空间的加速。
Bugzilla:1920086[1]
Solarflare 无法创建最大数量的虚拟函数(VF)
因为资源不足,Solarflare NIC 无法创建最大数量的 VF 。您可以检查 PCIe 设备可以在 /sys/bus/pci/devices/PCI_ID/sriov_totalvfs
文件中创建的 VF 的最大数量。要临时解决这个问题,您可以将 VF 的数量或 VF MSI 中断值调整为较低的值,可以在启动时从 Solarflare Boot Manager
调整或使用 Solarflare sfboot
工具调整。默认的 VF MSI 中断值为 8
。
-
要使用
sfboot
调整 VF MSI 中断值:
# sfboot vf-msix-limit=2
调整 VF MSI 中断值会影响 VF 性能。
有关调整的参数的更多信息,请参阅 Solarflare 服务器适配器用户指南
。
Bugzilla:1971506[1]
使用 page_poison=1
可能会导致内核崩溃
当在带有错误 EFI 实现的固件上使用 page_poison=1
作为内核参数时,操作系统可能会导致内核崩溃。默认情况下,这个选项被禁用,不推荐启用它,特别是在生产系统中。
Bugzilla:2050411[1]
iwl7260-firmware
破坏了 Intel Wi-Fi 6 AX200、AX210 和 Lenovo ThinkPad P1 Gen 4 上的 Wi-Fi
在将 iwl7260-firmware
或 iwl7260-wifi
驱动程序更新到 RHEL 8.7 及更新版本提供的版本后,硬件会进入不正确的内部状态。错误地报告其状态。因此,Intel Wifi 6 卡可能无法正常工作,并显示错误信息:
kernel: iwlwifi 0000:09:00.0: Failed to start RT ucode: -110 kernel: iwlwifi 0000:09:00.0: WRT: Collecting data: ini trigger 13 fired (delay=0ms) kernel: iwlwifi 0000:09:00.0: Failed to run INIT ucode: -110
一个没有确认的临时解决方法是关闭并再次打开系统。不要重启。
Bugzilla:2106341[1]
IBM Power 系统上的安全引导不支持迁移
目前在 IBM Power 系统上,在成功迁移物理卷(PV)后不会引导逻辑分区(LPAR)。因此,在分区上启用了安全引导的任何类型的自动迁移都会失败。
Bugzilla:2126777[1]
kmod
中的 weak-modules
不能与模块间依赖一起工作
kmod
软件包提供的 weak-modules
脚本决定了哪些模块与安装的内核 kABI 兼容。但是,在检查模块的内核兼容性时,weak-modules
按照构建它们的内核的从高到低版本来处理模块符号依赖项。因此,针对不同内核版本构建的具有相互依赖关系的模块可能会被解释为不兼容,因此 weak-modules
脚本不能在此场景下工作。
要临时解决这个问题,请在安装新内核前针对最新的库存内核构建或放置额外的模块。
Bugzilla:2103605[1]
Ampere Altra 服务器中的 kdump
进入 OOM 状态
Ampere Altra 和 Altra Max 服务器中的固件当前会导致内核分配太多事件、中断和命令队列,这消耗了太多内存。因此,kdump
内核进入内存不足(OOM)状态。
要临时解决这个问题,请通过将 crashkernel=
内核选项的值增加到 640M,来为 kdump
保留额外的内存。
Bugzilla:2111855[1]
9.10. 文件系统和存储
保存一个 LUKS 卷的 LVM mirror
设备有时将变为无响应
在某些情况下,保存 LUKS 卷的片段类型的 mirror
LVM 设备可能会变得无响应。无响应设备会拒绝所有 I/O 操作。
要解决这个问题,红帽建议在有弹性软件定义的存储之上使用带 raid1
的片段类型的 LVM RAID 1 设备而不是镜像( mirror
)。
raid1
segment 类型是默认的 RAID 配置类型,它作为推荐的解决方案替换 mirror
。
要将 mirror
设备转换为 raid1
,请参阅将镜像 LVM 设备转换为 RAID1 设备。
Bugzilla:1730502[1]
无法将 /boot
文件系统放在 LVM 中
您不能将 /boot
文件系统放在 LVM 逻辑卷中。这种限制的原因如下:
-
在 EFI 系统中,EFI 系统分区 通常充当
/boot
文件系统。uEFI 标准要求有特定的 GPT 分区类型和具体文件系统类型。 -
RHEL 8 在系统引导条目中使用 Boot Loader 规格 (BLS)。这个规格要求
/boot
文件系统可由平台固件可读。在 EFI 系统中,平台固件只能读取 uEFI 标准定义的/boot
配置。 - 在 GRUB 2 引导装载程序中不支持 LVM 逻辑卷。红帽没有计划进行改进,因为如 uEFI 和 BLS 的标准,这个功能的使用情况正在下降。
红帽不计划在 LVM 中支持 /boot
。反之,红帽提供了管理系统快照和回滚的工具,这些工具不需要将 /boot
文件系统放在 LVM 逻辑卷中。
Bugzilla:1496229[1]
LVM 不再允许使用混合块大小创建卷组
LVM 工具(如 vgcreate
或 vgextend
)不再允许您创建有不同逻辑块大小的物理卷(PV)的卷组(VG)。LVM 启用了这个更改,因为如果您使用不同块大小的 PV 扩展了基本逻辑卷(LV),文件系统将无法挂载。
要重新创建带有混合块大小的 VG,在 lvm.conf
文件中设置 allow_mixed_block_sizes=1
选项。
LVM writecache
的限制
writecache
LVM 缓存方法有以下限制,这些限制不会出现在 cache
方法中:
-
使用
pvmove
命令时您无法命名writecache
逻辑卷。 -
您不能将带有
writecache
的逻辑卷与精简池或 VDO 结合使用。
以下限制也适用于 cache
方法:
-
您不能在将
cache
或writecache
附加到逻辑卷时重新定义大小。
Jira:RHELPLAN-27987[1], Bugzilla:1798631, Bugzilla:1808012
启用 IOMMU 后系统 panic
通过将 intel_iommu
参数设置为 on
,在内核命令行上启用输入输出内存管理单元(IOMMU)导致系统 panic ,显示 0x6b6b6b6b6b6b6b6b: 0000
非规范地址的一般保护故障
要临时解决这个问题,请确保将 intel_iommu
被设置为 off
。
Jira:RHEL-1765[1]
使用 NVMe/TCP 驱动程序时不支持设备映射器多路径。
在 NVMe/TCP 设备之上使用设备映射器多路径可能会导致性能降低和错误处理。要避免这个问题,请使用原生 NVMe 多路径而不是 DM 多路径工具。对于 RHEL 8,您可以向内核命令行中添加 nvme_core.multipath=Y
选项。
Bugzilla:2022359[1]
blk-availability
systemd 服务停用了复杂的设备堆栈
在 systemd
中,默认的块停用代码并不总是正确处理虚拟块设备的复杂堆栈。在一些配置中,虚拟设备在关闭过程中可能无法被删除,这会导致记录错误信息。要临时解决这个问题,请执行以下命令来停用复杂块设备堆栈:
# systemctl enable --now blk-availability.service
因此,复杂虚拟设备堆栈会在关闭过程中被正确停用,且不会生成错误消息。
Bugzilla:2011699[1]
XFS 配额警告经常被触发
使用配额计时器会导致配额警告的触发过于频繁,这导致软配额的强制执行的速度比应该执行的速度更快。要临时解决这个问题,请不要使用软配额,这会防止触发警告。因此,警告信息量将不再强制软配额限制,会尊重配置的超时时间。
Bugzilla:2059262[1]
9.11. 动态编程语言、网页和数据库服务器
Git
无法从具有潜在不安全所有权的存储库克隆或获取
为了防止远程代码执行并缓解 CVE-2024-32004,在 Git
中引入了更严格的所有权检查以克隆本地存储库。由于 RHSA-2024:4084 公告中引入的更新,Git
将具有潜在不安全所有权的本地存储库视为可疑。
因此,如果您试图通过 git-daemon
从本地托管的存储库克隆,且您不是存储库的所有者,则 Git
返回一条有关可疑的所有者的安全警报,且无法从存储库克隆或获取。
要临时解决这个问题,请执行以下命令来将存储库明确标记为安全:
git config --global --add safe.directory /path/to/repository
Jira:RHELDOCS-18435[1]
当使用 virtualenv
工具时,创建虚拟 Python 3.11 环境会失败
RHEL 8 中由 python3-virtualenv
软件包提供的 virtualenv
工具与 Python 3.11 不兼容。尝试使用 virtualenv
创建虚拟环境将失败,并显示以下错误消息:
$ virtualenv -p python3.11 venv3.11 Running virtualenv with interpreter /usr/bin/python3.11 ERROR: Virtual environments created by virtualenv < 20 are not compatible with Python 3.11. ERROR: Use `python3.11 -m venv` instead.
要创建 Python 3.11 虚拟环境,请使用 python3.11 -m venv
命令,它使用标准库的 venv
模块。
python3.11-lxml
不提供 lxml.isoschematron
子模块
python3.11-lxml
软件包不与 lxml.isoschematron
子模块一起分发,因为它不是开源许可证。子模块实现 ISO 架构支持。作为替代方案,lxml.etree.Schematron
类种提供了 pre-ISO-Schematron 验证。python3.11-lxml
软件包的其余内容不受影响。
PAM 插件版本 1.0 在 MariaDB
中无法正常工作
MariaDB 10.3
提供了可插拔验证模块(PAM)插件版本1.0 。MariaDB 10.5
提供插件版本 1.0 和 2.0,版本 2.0 是默认版本。
MariaDB
PAM 插件版本 1.0 在 RHEL 8 中无法正常工作。要临时解决这个问题,请使用 mariadb:10.5
模块流提供的 PAM 插件版本 2.0。
OpenLDAP 库之间的符号冲突可能会导致 httpd
崩溃
当 OpenLDAP 提供的 libldap
和libldap_r
库被加载并在单个进程中使用时,这些库之间可能会发生符号冲突。因此,如果 httpd
配置也加载 mod_security
或 mod_auth_openidc
模块,则使用 PHP ldap
扩展的 Apache httpd
子进程可能会意外终止。
从因为RHEL 8.3 更新到 Apache Portable Runtime(APR)库,您可以通过设置 APR_DEEPBIND
环境变量来临时解决这个问题,该变量在载入 httpd
模块时,允许使用 RTLD_DEEPBIND
动态链接器选项。当 APR_DEEPBIND
环境变量启用时,在加载冲突库的 httpd
配置中不再崩溃。
Bugzilla:1819607[1]
当有 32 位应用程序调用 getpwnam()
时,可能会失败
当 NIS 用户使用32 位应用程序调用 getpwnam()
函数时,如果没有 nss_nis.i686
软件包,则调用会失败。要临时解决这个问题,使用 yum install nss_nis.i686
手动安装缺少的软件包。
9.12. 身份管理
将 Samba 作为打印服务器运行,并从 RHEL 8.4 或更早版本更新时所需的操作
有了这个更新,samba
软件包不再创建 /var/spool/samba/
目录。如果您将 Samba 用作打印服务器,并将 [printers]
共享中的 /var/spool/samba/
用于假脱机打印作业,则SELinux 会阻止 Samba 用户在此目录中创建文件。因此,打印作业失败,auditd
服务会在 /var/log/audit/audit.log
中记录一跳 denied
消息。要在更新 8.4 及更早版本的系统后避免此问题:
-
在
/etc/samba/smb.conf
文件中搜索[printers]
共享。 -
如果共享定义包含
path = /var/spool/samba/
,请更新设置,并将path
参数设为/var/tmp/
。 重启
smbd
服务:# systemctl restart smbd
如果在 RHEL 8.5 或更高版本上新安装了 Samba,则不需要任何操作。在本例中,samba-common
软件包提供的默认 /etc/samba/smb.conf
文件已将 /var/tmp/
目录用于假脱机打印作业。
Bugzilla:2009213[1]
将 cert-fix
程序与 --agent-uid pkidbuser
选项一同使用会破坏证书系统
使用带有 --agent-uid pkidbuser
选项的 cert-fix
工具可破坏证书系统的 LDAP 配置。因此,,证系统可能会变得不稳定,需要手动步骤才能恢复该系统。
FIPS 模式不支持使用共享 secret 建立跨林信任
在 FIPS 模式中使用共享 secret 建立跨林信任会失败,因为 NTLMSSP 身份验证不兼容 FIPS。要临时解决这个问题,在启用了 FIPS 模式的 IdM 域和 AD 域间建立信任时,使用 Active Directory(AD)管理帐户进行身份验证。
在 rebase 到版本 1.2.2 后,降级authselect
会破坏系统身份验证
authselect
软件包已 rebase 到最新的上游版本 1.2.2
。不支持降级 authselect
,这会中断所有用户的系统身份验证,包括root
用户。
如果您将authselect
软件包降级到 1.2.1
或更早版本,请执行以下步骤来解决这个问题:
-
在 GRUB 引导屏幕中,选择带有您要引导的内核版本的
Red Hat Enterprise Linux
,然后按e
编辑该条目。 -
在以
linux
开头的行的末尾输入single
作为单独的单词,然后按Ctrl+X
启动引导过程。 - 以单用户模式引导时,输入 root 密码。
使用以下命令恢复 authselect 配置:
# authselect select sssd --force
IdM 到 AD 跨域 TGS 请求失败
IdM Kerberos 票据中的 Privilege Attribute 证书(PAC) 信息现在使用 AES SHA-2 HMAC 加密进行签名,这是 Active Directory (AD) 不支持的。
因此,IdM 到 AD 跨域 TGS 请求(即双向信任设置)失败,并显示以下错误:
Generic error (see e-text) while getting credentials for <service principal>
对 ldap_id_use_start_tls
选项使用默认值时的潜在风险
当使用没有 TLS 的 ldap://
进行身份查找时,可能会对攻击向量构成风险。特别是中间人(MITM)攻击,例如,攻击者可以通过更改 LDAP 搜索中返回的对象的 UID 或 GID 来冒充用户。
目前,强制 TLS 的 SSSD 配置选项 ldap_id_use_start_tls
默认为 false
。确保您的设置在可信环境中操作,并决定对 id_provider = ldap
使用未加密的通信是否是安全的。注意 id_provider = ad
和 id_provider = ipa
不受影响,因为它们使用 SASL 和 GSSAPI 保护的加密连接。
如果使用未加密的通信不安全,请在 /etc/sssd/sssd.conf
文件中将 ldap_id_use_start_tls
选项设置为 true
来强制使用 TLS。计划在以后的 RHEL 版本中更改的默认行为。
Jira:RHELPLAN-155168[1]
从 RHEL 8.6 到 RHEL 8.7 或更高版本的 pki-core-debuginfo
更新会失败
将 pki-core-debuginfo
软件包从 RHEL 8.6 更新至 RHEL 8.7 或更高版本会失败。要临时解决这个问题,请运行以下命令:
-
yum remove pki-core-debuginfo
-
yum update -y
-
yum install pki-core-debuginfo
-
yum install idm-pki-symkey-debuginfo idm-pki-tools-debuginfo
Jira:RHEL-13125[1]
迁移的 IdM 用户可能会因为不匹的域 SID 而无法登录
如果您使用 ipa migrate-ds
脚本将用户从一个 IdM 部署迁移到另一个,则这些用户可能会在使用 IdM 服务时有问题,因为它们之前存在的安全标识符(SID)没有当前 IdM 环境的域 SID。例如,这些用户可以使用 kinit
工具检索 Kerberos 票据,但不能登录。要临时解决这个问题,请参阅以下知识库文章: Migrated IdM 用户因为不匹配的域 SID 而无法登录。
Jira:RHELPLAN-109613[1]
FIPS 模式下的 IdM 不支持使用 NTLMSSP 协议来建立双向跨林信任
在活动目录(AD)和启用了 FIPS 模式的身份管理(IdM)之间建立双向跨林信任会失败,因为新技术局域网管理器安全支持提供程序 (NTLMSSP)身份验证不符合 FIPS。FIPS 模式下的 IdM 不接受在尝试验证时 AD 域控制器使用的 RC4 NTLM 哈希。
为 Kerberos 主体设置过期日期时不正确的警告
如果您为 Kerberos 主体设置了密码过期日期,则使用 32 位签名的整数变量将当前的时间戳与过期时间戳进行比较。如果过期日期在将来超过 68 年,则会导致整数变量溢出,从而导致显示以下警告信息:
Warning: Your password will expire in less than one hour on [expiration date]
您可以忽略此消息,密码将在配置的日期和时间正确过期。
在 RHEL 8 上,NIS 映射中大量条目的枚举较慢
当您在 RHEL 8 上安装 nis_nss
软件包时,会缺少 /etc/default/NSS
配置文件,因为 glibc-common
软件包不再提供该文件。因此,在 RHEL 8 上,NIS 映射中大量条目的枚举比在 RHEL 7 上花费更长的时间,因为每个请求默认被单独处理,而不是批量处理。
要临时解决这个问题,请使用以下内容创建 /etc/default/nss
文件,并确保将 SETENT_BATCH_READ
变量设置为 TRUE
:
# /etc/default/nss # This file can theoretically contain a bunch of customization variables # for Name Service Switch in the GNU C library. For now there are only # four variables: # # NETID_AUTHORITATIVE # If set to TRUE, the initgroups() function will accept the information # from the netid.byname NIS map as authoritative. This can speed up the # function significantly if the group.byname map is large. The content # of the netid.byname map is used AS IS. The system administrator has # to make sure it is correctly generated. #NETID_AUTHORITATIVE=TRUE # # SERVICES_AUTHORITATIVE # If set to TRUE, the getservbyname{,_r}() function will assume # services.byservicename NIS map exists and is authoritative, particularly # that it contains both keys with /proto and without /proto for both # primary service names and service aliases. The system administrator # has to make sure it is correctly generated. #SERVICES_AUTHORITATIVE=TRUE # # SETENT_BATCH_READ # If set to TRUE, various setXXent() functions will read the entire # database at once and then hand out the requests one by one from # memory with every getXXent() call. Otherwise each getXXent() call # might result into a network communication with the server to get # the next entry. SETENT_BATCH_READ=TRUE # # ADJUNCT_AS_SHADOW # If set to TRUE, the passwd routines in the NIS NSS module will not # use the passwd.adjunct.byname tables to fill in the password data # in the passwd structure. This is a security problem if the NIS # server cannot be trusted to send the passwd.adjuct table only to # privileged clients. Instead the passwd.adjunct.byname table is # used to synthesize the shadow.byname table if it does not exist. #ADJUNCT_AS_SHADOW=TRUE
Jira:RHEL-34075[1]
在引入新选项 local_auth_policy
后,智能卡验证可能需要更新配置
升级到 RHEL 8.10 后,因为 local_auth_policy
选项引入的更改,智能卡验证可能会失败。当 local_auth_policy
设置为默认值时,会匹配
,SSSD 会限制在线可用的离线验证方法。因此,如果配置的后端没有提供智能卡验证,例如使用 auth_provider = ldap
时,它将不适用于用户。要临时解决这个问题,请通过将 local_auth_policy = enable:smartcard
添加到 sssd.conf
文件的 domain 部分来显式启用 Smartcard 验证方法,然后重新启动 SSSD。
9.13. 桌面
无法从软件仓库中禁用 flatpak
程序库
目前,在 GNOME 软件工具中的软件程序库工具中无法禁用或删除 flatpak
程序库。
第二代 RHEL 8 虚拟机有时无法在 Hyper-V Server 2016 主机上引导
当使用 RHEL 8 作为在 Microsoft Hyper-V Server 2016 主机上运行的虚拟机(VM)中的客户机操作系统时,虚拟机在某些情况下无法引导,并返回到 GRUB 引导菜单。另外,会在 Hyper-V 事件日志中记录以下错误:
The guest operating system reported that it failed with the following error code: 0x1E
这个错误是由 Hyper-V 主机上的 UEFI 固件错误造成的。要临时解决这个问题,请将 Hyper-V Server 2019 或更高版本用作主机。
Bugzilla:1583445[1]
在桌面和应用程序间进行拖放操作无法正常工作
由于 gnome-shell-extensions
软件包中的一个 bug,drag-and-drop 功能目前在桌面和应用程序间无法正常工作。以后的发行版本中将重新添加对这个功能的支持。
WebKitGTK 无法在 IBM Z 上显示网页
当尝试在 IBM Z 架构上显示网页时,WebKitGTK 网页浏览器引擎会失败。网页将保持空白,WebKitGTK 进程意外停止。
因此,您无法使用那些使用 WebKitGTK 的应用程序的某些功能来显示网页,如下所示:
- Evolution 邮件客户端
- GNOME 在线帐户设置
- GNOME 帮助应用程序
9.14. 图形基础结构
radeon
驱动程序无法正确重置硬件
radeon
内核驱动程序目前没有在 kexec
上下文中正确重置硬件。相反,radeon
无法工作,从而导致剩余的 kdump
服务失败。
要临时解决这个问题,在 kdump
中禁用 radeon
,方法是在 /etc/kdump.conf
文件中添加以下行:
dracut_args --omit-drivers "radeon" force_rebuild 1
重启系统和 kdump
。启动 kdump
后,可能会从配置文件中删除 force_rebuild 1
行。
请注意,在这种情况下,转储过程中没有可用的图形,但 kdump
可以正常工作。
Bugzilla:1694705[1]
多个 HDR 显示在单个 MST 拓扑上可能无法打开
在使用带有 nouveau
驱动程序的 NVIDIA Turing GPU 的系统上,使用带有多个监控器的 DisplayPort
hub (如笔记本电脑 dock))可能会导致它无法打开。这是因为系统错误地认为 hub 中没有足够的带宽来支持所有显示器。
Bugzilla:1812577[1]
ESXi 中的 GUI 可能会因为视频内存较低而崩溃
VMware ESXi 7.0.1 带有 vCenter Server 7.0.1 的 RHEL 虚拟机上的图形用户界面(GUI)需要一定的视频内存。如果您将多个控制台或高分辨率监控器连接到虚拟机,则 GUI 至少需要 16 MB 的视频内存。如果您使用较少的视频内存启动 GUI,则 GUI 可能会意外终止。
要临时解决这个问题,请配置虚拟机监控程序为虚拟机分配至少 16MB 视频内存。因此,虚拟机上的 GUI 不会崩溃。
如果您遇到这个问题,红帽建议您将其报告给 VMware。
另请参阅以下 VMware 文章: 具有高分辨率 VM 控制台的虚拟机可能会在 ESXi 7.0.1 (83194)上遇到崩溃。
Bugzilla:1910358[1]
VNC Viewer 显示在 IBM Z 中带有 16 位颜色深度的错误颜色
当您连接到带有 16 位色彩深度的 IBM Z 服务器上的 VNC 会话时,VNC Viewer 应用程序会显示错误的颜色。
要临时解决这个问题,请在 VNC 服务器中设置 24 位颜色深度。使用 Xvnc
服务器将 -depth 16
选项替换为 -depth 24
(在 Xvnc
配置中)。
因此,VNC 客户端会显示正确的颜色,但在服务器中使用更多的网络带宽。
无法使用 sudo
命令运行图形应用程序
当试图以具有更高权限的用户运行图形应用程序时,应用程序无法打开并带有一个出错信息。发生故障的原因是 Xwayland
被 Xauthority
文件限制,为使用常规用户凭证进行验证。
要临时解决这个问题,使用 sudo -E
命令以 root
用户运行图形程序。
ARM 不支持硬件加速
内置图形驱动程序不支持 64 位 ARM 架构中的硬件加速或 Vulkan API。
要启用硬件加速或者 ARM 上的 Vulkan,安装专有 Nvidia 驱动程序。
Jira:RHELPLAN-57914[1]
9.15. Red Hat Enterprise Linux 系统角色
将 RHEL 系统角色与 Ansible 2.9 一起使用可以显示一条有关将 dnf
与 command
模块一起使用的警告
从 RHEL 8.8 开始,RHEL 系统角色不再在 dnf
模块中使用 warn
参数,因为此参数已在 Ansible Core 2.14 中删除。但是,如果您仍然将最新的 rhel-system-roles
软件包与 Ansible 2.9 一起使用,且角色安装软件包,则会显示以下警告之一:
[WARNING]: Consider using the dnf module rather than running 'dnf'. If you need to use command because dnf is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
[WARNING]: Consider using the yum, dnf or zypper module rather than running 'rpm'. If you need to use command because yum, dnf or zypper is insufficient you can add 'warn: false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid of this message.
如果要隐藏这些警告,请将 command_warnings = False
设置添加到 ansible.cfg
文件的 [Defaults]
部分。但请注意,此设置禁用了 Ansible 中的所有警告。
使用 playbook 或清单中的 localhost
主机名无法管理 localhost
RHEL 中包含了 ansible-core 2.13
软件包,如果您在您管理节点的同一台主机上运行 Ansible,则无法通过在 playbook 或清单中使用 localhost
主机名来实现它。这是因为 ansible-core 2.13
使用 python38
模块,并且缺少许多库,例如,用于 storage
角色的 blivet
,用于 network
角色的 gobject
。要临时解决这个问题,如果您已在 playbook 或清单中使用了 localhost
主机名,您可以使用 ansible_connection=local
来添加一个连接,或者使用 ansible_connection=local
选项创建一个列出 localhost
的清单文件。使用这种方式,您可以管理 localhost
上的资源。如需了解更多详细信息,请参阅文章 在 localhost 上运行时,RHEL 系统角色 playbook 失败。
当 rhc_auth
包含激活密钥时,rhc
系统角色在已注册的系统上会失败
如果为 rhc_auth
参数指定了激活密钥,在在已经注册的系统上执行 playbook 文件会失败。要临时解决这个问题,在已经注册的系统上执行 playbook 文件时不要指定激活密钥。
配置 imuxsock 输入基本类型导致一个问题
通过 logging
RHEL 系统角色和 use_imuxsock
选项配置"imuxsock"输入基本类型导致受管节点上生成的配置出现问题。此角色设置 name
参数,但 "imuxsock" 输入类型不支持 name
参数。因此,rsyslog
日志记录工具打印 parameter 'name' not known – typo in config file?
错误。
对于 RHEL 9 UEFI 受管节点,bootloader
RHEL 系统角色的 bootloader_password
变量无法工作
在以前的版本中,bootloader_password
变量错误地将密码信息放在 /boot/efi/EFI/redhat/user.cfg
文件中。正确的位置是 /boot/grub2/user.cfg
文件。因此,当重启受管节点来修改任何引导装载程序条目时,GRUB2 不提示您输入密码。要临时解决这个问题,您可以手动将 user.cfg
文件从不正确的 /boot/efi/EFI/redhat/
目录中移到正确的 /boot/grub2/
目录中,以实现预期的行为。
9.16. 虚拟化
使用大量队列可能会导致 Windows 虚拟机失败
当启用了虚拟可信平台模块(vTPM)设备,且将 multi-queue virtio-net 功能配置为使用超过 250 个队列时,Windows 虚拟机(VM)可能会失败。
这个问题是由 vTPM 设备的限制造成的。vTPM 设备对打开的文件描述符的最大数有一个硬编码的限制。因为会为每个新队列打开多个文件描述符,因此可能会超过内部 vTPM 的限值,从而导致虚拟机失败。
要临时解决这个问题,请选择以下两个选项之一:
- 保持 vTPM 设备启用,但使用少于 250 个队列。
- 禁用 vTPM 设备以使用超过 250 个队列。
Jira:RHEL-13336[1]
在 AMD Milan 系统上有时无法提供 Milan
VM CPU 类型
在某些 AMD Milan 系统上,默认在 BIOS 中禁用了增强 REP MOVSB(erms
)和 Fast Short REP MOVSB(fsrm
)功能标记。因此,在这些系统上可能无法使用 Milan
CPU 类型。另外,在具有不同功能标志设置的 Milan 主机之间的虚拟机实时迁移可能会失败。要临时解决这个问题,在主机的 BIOS 中手动打开 erms
和 fsrm
。
Bugzilla:2077770[1]
当在 AMD EPYC 上使用主机透传模式时,虚拟机不会检测到 SMT CPU 拓扑
当在AMD EPYC 主机上以CPU主机直通模式引导虚拟机(VM)时,不会显示TOPOEXT
CPU 功能标志。因此,虚拟机无法检测到每个内核有多个线程的虚拟 CPU 拓扑。要临时解决这个问题,使用 EPYC CPU 模型而不是主机透传引导虚拟机。
使用 virtio-blk 将 LUN 设备附加到虚拟机中无法正常工作
q35 机器类型不支持 virtio 1.0 设备,因此 RHEL 8 不支持 virtio 1.0 中弃用的功能。特别是,RHEL 8 主机无法从 virtio-blk 设备发送 SCSI 命令。因此,使用 virtio-blk 控制器时,将物理磁盘作为 LUN 设备附加到虚拟机会失败。
请注意,物理磁盘仍可被传递给客户端操作系统,但应该使用 device='disk'
选项而不是 device='lun'
选项进行配置。
Bugzilla:1777138[1]
当使用很多 virtio-blk 磁盘时,虚拟机有时无法启动
在虚拟机(VM)中添加大量 virtio-blk 设备可能会耗尽平台中可用的中断向量。如果发生了这种情况,VM 的客户机操作系统无法引导,并显示 dracut-initqueue[392]: Warning: Could not boot
错误。
带有 iommu_platform=on
的虚拟机无法在 IBM POWER 上启动
RHEL 8 目前不支持 IBM POWER 系统上的虚拟机(VM)的 iommu_platform=on
参数。因此,在 IBM POWER 硬件上启动使用这个参数的虚拟机会导致虚拟机在引导过程中变得无响应。
在使用 ibmvfc
驱动程序时,IBM POWER 主机现在可以正常工作
当在 PowerVM 逻辑分区(LPAR)上运行 RHEL 8 时,以前可能会因为 ibmvfc
驱动程序的问题而发生各种错误。因此,在某些情况下,主机上会触发内核 panic,例如:
- 使用 Live Partition Mobility(LPM)功能
- 重置主机适配器
- 使用 SCSI 错误处理(SCSI EH)功能
有了此更新,ibmvfc
的处理已被修复,上面描述的内核 panics 不再发生。
Bugzilla:1961722[1]
在 IBM POWER 系统中使用 perf kvm record
可能会导致虚拟机崩溃
当在 IBM POWER 硬件的 little-endian 变体中使用 RHEL 8 主机时,使用 perf kvm record
命令为 KVM 虚拟机(VM)收集追踪事件样本会导致虚拟机变得没有响应。在以下情况下发生这种情况:
-
perf
工具由非特权用户使用,-p
选项用来标识虚拟机 - 例如perf kvm record -e trace_cycles -p 12345
。 -
虚拟机是使用
virsh
shell 启动的。
要临时解决这个问题,请使用带有-i
选项的 perf kvm
工具来监控使用 virsh
shell 创建的虚拟机。例如:
# perf kvm record -e trace_imc/trace_cycles/ -p <guest pid> -i
请注意,在使用 -i
选项时,子任务不会继承计数器,因此线程不会被监控。
Bugzilla:1924016[1]
带有启用 Hyper-V 的 Windows Server 2016 虚拟机无法引导
目前,无法引导使用 Windows Server 2016 作为客户端操作系统的虚拟机,它启用了 Hyper-V 角色,并使用以下 CPU 模型之一:
- EPYC-IBPB
- EPYC
要临时解决这个问题,使用 EPYC-v3 CPU 模型,或者为虚拟机手动启用 xsaves CPU 标记。
Bugzilla:1942888[1]
将 POWER9 客户端从 RHEL 7-ALT 主机迁移到 RHEL 8 会失败
目前,将 POWER9 虚拟机从 RHEL 7-ALT 主机系统迁移到 RHEL 8 会变得没有响应,显示Migration status: active
状态)。
要临时解决这个问题,在 RHEL 7-ALT 主机上禁用 Transparent Huge Pages(THP),这样可使迁移成功完成。
Bugzilla:1741436[1]
使用 virt-customize
有时会导致 guestfs-firstboot
失败
使用 virt-customize
工具修改了虚拟机(VM)磁盘镜像后,guestfs-firstboot
服务在某些情况下会因为 SELinux 权限不正确而失败。这会导致虚拟机启动过程中出现各种问题,如创建用户失败或系统注册失败。
要避免这个问题,请使用带有 --selinux-relabel
选项的 virt-customize
命令。
从 macvtap 虚拟网络中删除转发接口会重置这个网络的所有连接计数
目前,从带有多个转发接口的 macvtap
虚拟网络中删除一个转发接口也会重置网络的其他转发接口的连接状态。因此,实时网络 XML 中的连接信息是不正确的。但请注意,这不会影响虚拟网络的功能。要临时解决这个问题,请重启主机上的 libvirtd
服务。
带有 SLOF 的虚拟机无法在 netcat 界面中引导
当使用 netcat(nc
)接口来访问当前在 Slimline Open Firmware(SLOF)提示符下等待的虚拟机控制台时,用户输入会被忽略,虚拟机仍无响应。要临时解决这个问题,请在连接虚拟机时使用 nc -C
选项,或者使用 telnet 接口。
Bugzilla:1974622[1]
在某些情况下,在 virt-manager
中将中介设备附加到虚拟机会失败
virt-manager
应用程序目前能够检测中介设备,但不能识别该设备是否处于活跃状态。因此,尝试使用 virt-manager
将不活跃的中介设备附加到正在运行的虚拟机(VM)会失败。同样,尝试使用不活跃的中介设备创建新虚拟机会失败,并显示 device not found
错误。
要临时解决这个问题,请使用 virsh nodedev-start
或 mdevctl start
命令来激活中介设备,然后再在 virt-manager
中使用它。
RHEL 9 虚拟机无法在 POWER8 兼容模式下启动
目前,如果虚拟机也使用类似如下的 CPU 配置,启动将 RHEL 9 作为客户机操作系统来运行的虚拟机(VM)会失败:
<cpu mode="host-model"> <model>power8</model> </cpu>
要临时解决这个问题,请不要在 RHEL 9 虚拟机中使用 POWER8 兼容性模式。
另外,请注意,在 POWER8 主机上无法运行 RHEL 9 虚拟机。
在 virtiofs
上不会自动清除 SUID 和 SGID
当您使用 killpriv_v2
功能运行 virtiofsd
服务时,您的系统在执行某些文件系统操作后可能无法自动清除 SUID 和HMC 权限。因此,不能清除权限可能会导致潜在的安全威胁。要临时解决这个问题,请输入以下命令禁用 killpriv_v2
功能:
# virtiofsd -o no_killpriv_v2
Bugzilla:1966475[1]
在主机上重启 OVS 服务可能会阻止在其上运行的虚拟机的网络连接
当 Open vSwitch (OVS)服务在主机上重启时或崩溃时,在此主机上运行的虚拟机(VM)无法恢复网络设备的状态。因此,虚拟机可能无法完全接收数据包。
此问题只会影响在 virtio
网络堆栈中使用压缩 virtqueue 格式的系统。
要临时解决这个问题,使用 virtio
网络设备定义中的 packed=off
参数来禁用压缩的 virtqueue。当禁用压缩的 virtqueue 时,网络设备的状态在某些情况下可以从 RAM 中恢复。
nodedev-dumpxml
无法正确列出某些介质设备的属性
目前,nodedev-dumpxml
无法正确列出使用 nodedev-create
命令创建的介质设备的属性。要临时解决这个问题,请使用 nodedev-define
和 nodedev-start
命令。
启动带有 NVIDIA A16 GPU 的虚拟机有时会导致主机 GPU 停止工作
目前,如果您启动了一个使用 NVIDIA A16 GPU 直通设备的虚拟机,在某些情况下,主机系统上的 NVIDIA A16 GPU 物理设备会停止工作。
要临时解决这个问题,请重新 hypervisor ,并将 GPU 设备的 reset_method
设置为 bus
:
# echo bus > /sys/bus/pci/devices/<DEVICE-PCI-ADDRESS>/reset_method # cat /sys/bus/pci/devices/<DEVICE-PCI-ADDRESS>/reset_method bus
详情请查看 红帽知识库。
Jira:RHEL-2451[1]
9.17. 云环境中的 RHEL
在 VMware 主机上的 RHEL 虚拟机中设置静态 IP 无法正常工作
目前,当使用 RHEL 作为 VMware 主机上虚拟机(VM)的客户机操作系统时,DatasourceOVF 功能无法正常工作。因此,如果您使用 cloud-init
实用程序将虚拟机的网络设置为静态 IP,然后重启虚拟机,则虚拟机的网络将更改为 DHCP。
要临时解决这个问题,请参阅 VMware 知识库。
kdump 有时不会在 Azure 和 Hyper-V 上启动
在托管在 Microsoft Azure 或 Hyper-V hypervisor 上的 RHEL 8 客户机操作系统中,启动 kdump
内核在某些情况下会在启用执行后通知程序时失败。
要临时解决这个问题,请禁用 crash kexec post notifiers:
# echo N > /sys/module/kernel/parameters/crash_kexec_post_notifiers
Bugzilla:1865745[1]
当使用多个客户机磁盘引导 Hyper-V 虚拟机时,SCSI 主机地址有时会改变
目前,当在 Hyper-V hypervisor 上引导 RHEL 8 虚拟机时,主机部分的主机 、Bus、Target、Lun(HBTL)SCSI 地址在某些情况下发生了变化。因此,使用虚拟机中的 HBTL SCSI 识别或者设备节点设置的自动任务无法持续工作。如果虚拟机有多个磁盘,或者磁盘大小不同,会出现这种情况。
要临时解决这个问题,使用以下方法之一修改 kickstart 文件:
方法 1:对 SCSI 设备使用持久性标识符。
您可以使用以下 powershell 脚本来确定具体设备标识符:
# Output what the /dev/disk/by-id/<value> for the specified hyper-v virtual disk. # Takes a single parameter which is the virtual disk file. # Note: kickstart syntax works with and without the /dev/ prefix. param ( [Parameter(Mandatory=$true)][string]$virtualdisk ) $what = Get-VHD -Path $virtualdisk $part = $what.DiskIdentifier.ToLower().split('-') $p = $part[0] $s0 = $p[6] + $p[7] + $p[4] + $p[5] + $p[2] + $p[3] + $p[0] + $p[1] $p = $part[1] $s1 = $p[2] + $p[3] + $p[0] + $p[1] [string]::format("/dev/disk/by-id/wwn-0x60022480{0}{1}{2}", $s0, $s1, $part[4])
您可以在 hyper-v 主机上使用此脚本,如下所示:
PS C:\Users\Public\Documents\Hyper-V\Virtual hard disks> .\by-id.ps1 .\Testing_8\disk_3_8.vhdx /dev/disk/by-id/wwn-0x60022480e00bc367d7fd902e8bf0d3b4 PS C:\Users\Public\Documents\Hyper-V\Virtual hard disks> .\by-id.ps1 .\Testing_8\disk_3_9.vhdx /dev/disk/by-id/wwn-0x600224807270e09717645b1890f8a9a2
之后,可在 kickstart 文件中使用磁盘值,如下所示:
part / --fstype=xfs --grow --asprimary --size=8192 --ondisk=/dev/disk/by-id/wwn-0x600224807270e09717645b1890f8a9a2 part /home --fstype="xfs" --grow --ondisk=/dev/disk/by-id/wwn-0x60022480e00bc367d7fd902e8bf0d3b4
因为这些值特定于每个虚拟磁盘,因此需要为每个虚拟机实例进行配置。因此,使用 %include
语法将磁盘信息放在单独的文件中可能很有用。
方法 2:按大小设置设备选择。
根据大小配置磁盘选择的 kickstart 文件必须包含类似如下的行:
... # Disk partitioning information is supplied in a file to kick start %include /tmp/disks ... # Partition information is created during install using the %pre section %pre --interpreter /bin/bash --log /tmp/ks_pre.log # Dump whole SCSI/IDE disks out sorted from smallest to largest ouputting # just the name disks=(`lsblk -n -o NAME -l -b -x SIZE -d -I 8,3`) || exit 1 # We are assuming we have 3 disks which will be used # and we will create some variables to represent d0=${disks[0]} d1=${disks[1]} d2=${disks[2]} echo "part /home --fstype="xfs" --ondisk=$d2 --grow" >> /tmp/disks echo "part swap --fstype="swap" --ondisk=$d0 --size=4096" >> /tmp/disks echo "part / --fstype="xfs" --ondisk=$d1 --grow" >> /tmp/disks echo "part /boot --fstype="xfs" --ondisk=$d1 --size=1024" >> /tmp/disks %end
Bugzilla:1906870[1]
如果 RHEL 实例是由 cloud-init
提供的,且使用 NFSv3 挂载条目配置的,则其在 Azure 上无法引导
目前,如果 VM 是由 cloud-init
工具提供的,且虚拟机的客户机操作系统在 /etc/fstab
文件中有 NFSv3 挂载条目,则在 Microsoft Azure 云平台上引导 RHEL 虚拟机(VM)会失败。
Bugzilla:2081114[1]
9.18. 支持性
getattachment
命令无法一次下载多个附件
redhat-support-tool
命令提供了用于下载附件的 getattachment
子命令。但是,getattachment
目前只能下载单个附件,无法下载多个附件。
作为临时解决方案,您可以通过在 getattachment
子命令中一个一个地传递每个附件的问题单号和 UUID 来下载多个附件。
redhat-support-tool
无法用于 FUTURE
加密策略
因为客户门户网站 API 中的证书使用的加密密钥不满足 FUTURE
系统范围的加密策略的要求,所以 redhat-support-tool
程序目前无法使用这个策略级别。
要临时解决这个问题,在连接到客户门户网站 API 时使用 DEFAULT
加密策略。
在 IBM Power Systems Little Endian 上运行 sos report
时超时
当在具有带有数百或数千个 CPU 的 IBM Power Systems,Little Endian 上运行 sos report
命令时,处理器插件会在收集 /sys/devices/system/cpu
目录的大量内容时达到默认的 300 秒超时时间。作为临时解决方案,请相应地增加插件的超时时间:
- 对于一次性设置,请运行:
# sos report -k processor.timeout=1800
-
对于永久性更改,请编辑
/etc/sos/sos.conf
文件的[plugin_options]
部分:
[plugin_options] # Specify any plugin options and their values here. These options take the form # plugin_name.option_name = value #rpm.rpmva = off processor.timeout = 1800
示例值设为 1800。特定的超时值高度依赖于特定的系统。要适当地设置插件超时,您可以首先通过运行以下命令来估算收集一个没有超时的插件所需的时间:
# time sos report -o processor -k processor.timeout=0 --batch --build
Bugzilla:2011413[1]
9.19. 容器
在较旧的容器镜像中运行 systemd 无法正常工作
在较旧的容器镜像(如 centos:7
)中运行 systemd 将无法正常工作:
$ podman run --rm -ti centos:7 /usr/lib/systemd/systemd Storing signatures Failed to mount cgroup at /sys/fs/cgroup/systemd: Operation not permitted [!!!!!!] Failed to mount API filesystems, freezing.
要临时解决这个问题,请使用以下命令:
# mkdir /sys/fs/cgroup/systemd # mount none -t cgroup -o none,name=systemd /sys/fs/cgroup/systemd # podman run --runtime /usr/bin/crun --annotation=run.oci.systemd.force_cgroup_v1=/sys/fs/cgroup --rm -ti centos:7 /usr/lib/systemd/systemd
Jira:RHELPLAN-96940[1]
第 10 章 国际化
10.1. Red Hat Enterprise Linux 8 国际语言
Red Hat Enterprise Linux 8 支持多种语言的安装,并根据您的需要更改语言。
- 东亚语言 - 日语、韩语、简体中文和繁体中文。
- 欧洲语言 - 英语、德语、西班牙语、法语、意大利语、葡萄牙语和俄语。
下表列出了为各种主要语言提供的字体和输入法。
语言 | 默认字体(字体软件包) | 输入法 |
---|---|---|
English | dejavu-sans-fonts | |
法语 | dejavu-sans-fonts | |
德语 | dejavu-sans-fonts | |
意大利语 | dejavu-sans-fonts | |
俄语 | dejavu-sans-fonts | |
西班牙语 | dejavu-sans-fonts | |
葡萄牙语 | dejavu-sans-fonts | |
简体中文 | google-noto-sans-cjk-ttc-fonts, google-noto-serif-cjk-ttc-fonts | ibus-libpinyin, libpinyin |
繁体中文 | google-noto-sans-cjk-ttc-fonts, google-noto-serif-cjk-ttc-fonts | ibus-libzhuyin, libzhuyin |
日语 | google-noto-sans-cjk-ttc-fonts, google-noto-serif-cjk-ttc-fonts | ibus-kkc, libkc |
韩语 | google-noto-sans-cjk-ttc-fonts, google-noto-serif-cjk-ttc-fonts | ibus-hangul, libhangul |
10.2. RHEL 8 中国际化的显著变化
RHEL 8 与 RHEL 7 相比,对国际化进行了以下更改:
- 添加了对 Unicode 11 计算行业标准的支持。
- 国际化发布在多个软件包中,这样就可以进行较小的内存占用安装。如需更多信息,请参阅 使用 langpacks。
-
一些
glibc
区域已与 Unicode Common Locale Data Repository (CLDR)同步。
附录 A. 按组件划分的问题单列表
在本文档中列出了 Bugzilla 和 JIRA 问题单以供参考。这些链接会指向本文档中描述问题单的发行注记。
附录 B. 修订历史
0.0-18
2021 年 11 月 5 日星期二,Lulaka netobserv (lspackova@redhat.com)
- 向 Compilers 和开发工具 中添加了多个新功能,即:新的 GCC Toolset 14、GCC Toolset 13 GCC 更新、LLVM、R Rust 和 Go Toolsets 的重基。
0.0-17
2024 年 10 月 23 日星期四,Gabriela Fialová(gfialova@redhat.com)
- 添加了一个已知问题 RHELDOCS-18777 (身份管理)
0.0-16
2024 年 10 月 17 日星期四,Brian Angelica (bangelic@redhat.com)
- 添加了已弃用的功能 RHELDOCS-19027 (文件系统和存储)
0.0-15
2024 年 10 月 9 日星期三,Brian Angelica (bangelic@redhat.com)
- 添加了已弃用的功能 RHEL-18958 (容器)
0.0-14
2024 年 10 月 9 日星期三,Brian Angelica (bangelic@redhat.com)
- 添加了一个程序错误修复 RHEL-45908 (身份管理)
0.0-13
Tue 年 9 月 24 2024 日星期二,Manxonka5-6 (lspackova@redhat.com)
- 添加了一个增强 RHEL-49614 (动态编程语言、Web 和数据库服务器)
0.0-12
Tue Aug 27 2024, swigkaxetex (lspackova@redhat.com)
- 添加了一个程序错误修复 RHEL-39994 (编译器和开发工具)
0.0-11
2024 年 8 月 14 日星期三,Brian Angelica (bangelic@redhat.com)
- 添加了一个已知问题 RHELDOCS-18748 (网络)
0.0-10
2024 年 8 月 14 日星期三,Brian Angelica (bangelic@redhat.com)
- 添加了一个增强 RHEL-47595 (网络)
0.0-9
Fri Aug 09 2024,Brian Angelica (bangelic@redhat.com)
- 添加了一个已知问题 RHEL-11397 (安装程序和镜像创建)
0.0-8
2024 年 7 月 18 日星期四, Gabriela Fialová(gfialova@redhat.com)
- 更新了 JIRA:RHELDOCS-17573 (身份管理)中的已弃用的功能
0.0-7
2024 年 7 月 11 日星期四,Lenka Špačková (lspackova@redhat.com)
- 添加了一个已知问题 RHEL-45711 (系统角色)
0.0-6
2024 年 7 月 8 日星期一, Lenka Špačková (lspackova@redhat.com)
- 修复了 RHEL-25405 中的格式化和参考(编译器和开发工具)
0.0-5
2024 年 7 月 3 日星期三, Lenka Špačková (lspackova@redhat.com)
- 添加了一个已知问题 RHEL-34075 (身份管理)
0.0-4
2024 年 6 月 25 日星期二, Lenka Špačková (lspackova@redhat.com)
- 添加了一个已知问题 RHELDOCS-18435(动态编程语言、Web 和数据库服务器)
0.0-3
2024 年 6 月 12 日星期三,Brian Angelica (bangelic@redhat.com)
- 更新了 JIRA:RHELPLAN-123140 (身份管理)中的增强功能
0.0-2
2024 年 6 月 7 日星期五,Brian Angelica (bangelic@redhat.com)
- 更新了 JIRA:RHELDOCS-18326 (Red Hat Enterprise Linux 系统角色)中的已知问题
0.0-1
2024 年 5 月 23 日星期四,Brian Angelica (bangelic@redhat.com)
- Red Hat Enterprise Linux 8.10 发行注记发布。
0.0-0
2024 年 3 月 27 日星期三, Lucie Vařáková (lvarakova@redhat.com)
- Red Hat Enterprise Linux 8.10 Beta 发行注记发布。