8.9 发行注记
Red Hat Enterprise Linux 8.9 发行注记
摘要
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 JIRA 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 单击顶部导航栏中的 Create。
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 概述
1.1. RHEL 8.9 中的主要变化
安装程序和镜像创建
镜像构建器的主要亮点:
- 除了对旧的 BIOS 引导的支持,对 AWS EC2 AMD 或 Intel 64 位架构 AMI 镜像进行了增强,以支持 UEFI 引导。
如需更多信息,请参阅 新功能 - 安装程序和镜像创建。
安全性
与安全相关的主要亮点:
- OpenSCAP 被 rebase 到版本 1.3.8。
- ANSSI-BP-028 SCAP 安全配置文件已更新至版本 2.0。
-
SCAP 安全指南 现在包含改进的规则,以提供更一致的交互式用户配置,DISA STIG 配置文件支持
audit_rules_login_events_faillock
。
如需更多信息,请参阅 新功能 - 安全性。
动态编程语言、网页和数据库服务器
Node.js 20 现在作为新模块流提供。
如需更多信息,请参阅 新功能 - 动态编程语言、Web 和数据库服务器。
编译器和开发工具
更新了性能工具和调试器
RHEL 8.9 中更新了以下性能工具和调试器:
- Valgrind 3.21
- SystemTap 4.9
- elfutils 0.189
更新了性能监控工具
RHEL 8.9 中更新了以下性能监控工具:
- Grafana 9.2.10
- grafana-pcp 5.1.1
更新了编译器工具集
RHEL 8.9 中更新了以下编译器工具集:
- GCC Toolset 13 (新的)
- LLVM Toolset 16.0.6
- Rust Toolset 1.71.1
- Go Toolset 1.20.10
如需更多信息,请参阅 新功能 - 编译和开发工具。
RHEL 8 中的 Java 实现
RHEL 8 AppStream 软件仓库包括:
-
java-21-openjdk
软件包,其提供 OpenJDK 21 Java 运行时环境和 OpenJDK 21 Java 软件开发套件。 -
java-17-openjdk
软件包,提供 OpenJDK 17 Java 运行时环境和 OpenJDK 17 Java 软件开发组件。 -
java-11-openjdk
软件包,提供 OpenJDK 11 Java 运行时环境和 OpenJDK 11 Java 软件开发组件。 -
java-1.8.0-openjdk
软件包,提供 OpenJDK 8 Java 运行时环境和开源 JDK 8 Java 软件开发组件。
红帽构建的 OpenJDK 软件包在其可移植的 Linux 版本、RHEL 8.9 及更新版本之间共享一组二进制文件。由于此更新,在 RHEL 上从源 RPM 重建 OpenJDK 软件包的过程有一个变化。有关新重建过程的更多信息,请参阅 README.md
文件,该文件包括在红帽构建的 OpenJDK 的 SRPM 软件包中,并由 javajpeg-openjdk-headless
软件包安装在 /usr/share/doc
树下。
如需更多信息,请参阅 OpenJDK 文档。
1.2. 原位升级和操作系统转换
RHEL 7 原位升级到 RHEL 8
目前可能的原位升级路径是:
- 在 64 位 Intel、IBM POWER 8 (little endian)和 IBM Z 架构上从 RHEL 7.9 升级到 RHEL 8.6 、RHEL 8.8 和 RHEL 8.9
- 在 64 位 Intel 构架上带有 SAP HANA 的系统,从 RHEL 7.9 升级到 RHEL 8.6 和 RHEL 8.8。
如需更多信息,请参阅支持的 Red Hat Enterprise Linux 原位升级路径。
有关执行原位升级的步骤,请参阅 从 RHEL 7 升级到 RHEL 8。
有关在带有 SAP 环境的系统上执行原位升级的说明,请参阅 如何将 SAP 环境从 RHEL 7 原位升级到 RHEL 8。
主要改进包括:
-
在使用
ftype=0
格式的 XFS 文件系统的系统上,对磁盘空间的要求大大减少。 -
在升级过程中为升级创建的磁盘镜像现在具有动态大小。不再需要
LEAPP_OVL_SIZE
环境变量。 - 在现有磁盘分区上计算所需可用空间的问题已修复。现在,在系统需要重启前可以正确地检测到缺少的可用磁盘空间,报告可以正确地显示没有足够的可用空间来继续升级 RPM 事务的文件系统。
- 现在,使用自定义 leapp 执行器可以在原位升级过程中对第三方驱动程序进行管理。
- 预升级和升级报告概述现在在终端中显示。
- 现在支持在 Red Hat OpenStack Platform 中 RHEL Real Time 和 RHEL Real Time for Network Functions Virtualization (NFV)的升级。
从 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 或 Oracle Linux(称为版本 6 或 7),可以将操作系统转换为 RHEL,然后执行 RHEL 8 的原位升级。请注意,CentOS Linux 6 和 Oracle Linux 6 的转换使用不被支持的 Convert2RHEL
工具。有关不支持的转换的更多信息,请参阅 如何执行从 RHEL 派生的 Linux 发行版本到 RHEL 的不支持的转换。
有关红帽如何支持从其他 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
- Red Hat Out of Memory Analyzer
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.9 与内核版本 4.18.0-513.5.1 一起分发,它支持以下构架:
- 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。有关自动 Kickstart 安装和其他高级主题,请参阅 自动安装 RHEL 文档。
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.9 中引入的新功能和主要改进。
4.1. 安装程序和镜像创建
支持 AWS EC2 镜像的传统和 UEFI 引导
在以前的版本中,RHEL 镜像构建器创建的 EC2 AMD 或 Intel 64 位架构 AMI 镜像只支持旧的引导类型。因此,无法利用某些需要 UEFI 引导的 AWS 功能,如安全引导。除了支持旧的 BIOS 引导外,此增强还扩展了 AWS EC2 AMD 或 Intel 64 位架构 AMI 镜像,以支持 UEFI 引导。现在,可以利用需要使用 UEFI 引导镜像的 AWS 功能。
Jira:RHELDOCS-16339[1]
新的引导选项 inst.wait_for_disks=
,来为载入 kickstart 文件或内核驱动程序添加等待时间
有时,在引导过程中可能需要几秒钟才能从带有 OEMDRV
标签的设备加载 kickstart 文件或内核驱动程序。要调整等待时间,您现在可以使用新的引导选项 inst.wait_for_disks=
。使用这个选项,您可以指定安装前要等待多少秒。默认时间被设置为 5
秒,但您可以使用 0
秒来最小化延迟。有关这个选项的更多信息,请参阅 存储引导选项。
新的 network
kickstart 选项来控制 DNS 处理
现在,您可以使用带有以下新选项的 network
kickstart 命令控制 DNS 处理:通过 --device
选项使用这些新选项。
--ipv4-dns-search
和--ipv6-dns-search
选项允许您手动设置 DNS 搜索域。这些选项镜像其相应的 NetworkManager 属性,例如:network --device ens3 --ipv4-dns-search domain1.example.com,domain2.example.com
-
--ipv4-ignore-auto-dns
和--ipv6-ignore-auto-dns
选项允许您忽略 DHCP 中的 DNS 设置。它们不需要任何参数。
Bugzilla:1656662[1]
4.2. 安全性
opencryptoki
rebase 到 3.21.0
opencryptoki
软件包已 rebase 到版本 3.21.0,它提供很多改进和 bug 修复。最值得注意的是, opencryptoki
现在支持以下功能:
- 并发硬件安全模块(HSM)主密钥更改
-
将所选密钥转换为受保护的密钥的
protected-key
选项 - 其他密钥类型,如 DH、DSA 和通用 secret 密钥类型
- EP11 主机库版本 4
- AES-XTS 密钥类型
- 特定于 IBM 的 Kyber 密钥类型和机制
- 其他特定于 IBM 的 Dilithium 密钥第 2 轮和第 3 轮变体
另外,pkcsslotd
槽管理器不再以 root 用户身份运行,opencryptoki
提供了进一步强化。有了此更新,您也可以使用以下一组新命令:
p11sak set-key-attr
- 要修改密钥
p11sak copy-key
- 要复制密钥
p11sak import-key
- 要导入密钥
p11sak export-key
- 要导出密钥
Bugzilla:2159697[1]
fapolicyd
现在为故障排除提供规则号
有了这个增强,新的内核和 Audit 组件允许 fapolicyd
服务发送导致拒绝 fanotify
API 的规则号。因此,您可以更精确地对与 fapolicyd
相关的问题进行故障排除。
ANSSI-BP-028 安全配置文件更新至版本 2.0
SCAP 安全指南中的以下法国信息系统安全局(ANSSI) BP-028 配置文件已更新为与版本 2.0 保持一致:
- ANSSI-BP-028 最低级别
- ANSSI-BP-028 中间级别
- ANSSI-BP-028 增强级别
- ANSSI-BP-028 高级别
更好地定义交互式用户
scap-security-guide
软件包中的规则已被改进,以提供更一致的交互式用户配置。在以前的版本中,一些规则使用不同的方法来识别交互式和非交互式用户。有了这个更新,我们已统一了交互用户的定义。UID 大于或等于 1000 的用户帐户现在被视为交互式用户,但 nobody
和 nfsnobody
帐户以及使用 /sbin/nologin
作为登录 shell 的帐户除外。
这个更改会影响以下规则:
-
accounts_umask_interactive_users
-
accounts_user_dot_user_ownership
-
accounts_user_dot_group_ownership
-
accounts_user_dot_no_world_writable_programs
-
accounts_user_interactive_home_directory_defined
-
accounts_user_interactive_home_directory_exists
-
accounts_users_home_files_groupownership
-
accounts_users_home_files_ownership
-
accounts_users_home_files_permissions
-
file_groupownership_home_directories
-
file_ownership_home_directories
-
file_permissions_home_directories
-
file_permissions_home_dirs
-
no_forward_files
Bugzilla:2157877,Bugzilla:2178740
DISA STIG 配置文件现在支持 audit_rules_login_events_faillock
有了这个增强,SCAP 安全指南 audit_rules_login_events_faillock
规则(其引用了 STIG ID RHEL-08-030590)已添加到 RHEL 8 的 DISA STIG 配置文件中。此规则检查 Audit 守护进程是否已配置为记录任何尝试修改存储在 /var/log/faillock
目录中的登录事件日志。
OpenSCAP rebase 到 1.3.8
OpenSCAP 软件包已更新到上游版本 1.3.8。此版本提供各种程序错误修复和增强,最重要的是:
-
修复了
systemd
探测,以不忽略某些systemd
单元 -
向
shadow
OVAL 探测添加了离线功能 -
向
sysctl
OVAL 探测添加了离线功能 -
向网络文件系统列表中添加了
auristorfs
-
使用
autotailor
工具生成的定制文件为问题创建了一个临时解决方案
SCAP 安全指南 rebase 到版本 0.1.69
SCAP 安全指南(SSG)软件包已 rebase 到上游版本 0.1.69。此版本提供各种改进和 bug 修复,特别是为 RHEL 9 提供的三个新的 SCAP 配置文件,它们与 2022 年 10 月西班牙国家加密中心发布的三级 CCN-STIC-610A22 指南一致:
- CCN Red Hat Enterprise Linux 9 - 基本
- CCN Red Hat Enterprise Linux 9 - 中级
- CCN Red Hat Enterprise Linux 9 - 高级
支持从 RHEL 8.8 及更新版本到 RHEL 9.2 及更新版本的启用了 FIPS 的原位升级
随着 RHBA-2023:3824 公告的发布,您可以执行 RHEL 8.8 及更新版本系统到 RHEL 9.2 及更新版本系统的启用了 FIPS 模式的原位升级。
crypto-policies
permitted_enctypes
不再在 FIPS 模式下破坏复制
在此次更新之前,在 RHEL 8 上运行的 IdM 服务器发送一个 AES-256-HMAC-SHA-1- 加密的服务票据,即在 FIPS 模式下运行 RHEL 9 的一个 IdM 副本。因此,默认的 permitted_enctypes
krb5
配置在 FIPS 模式下破坏了 RHEL 8 IdM 服务器和 RHEL 9 IdM 副本之间的复制。
有了此更新,permitted_enctypes
krb5
配置选项的值取决于 mac
和 cipher
加密策略
值。默认情况下,它允许对可互操作的加密类型进行优先处理。
作为此更新的额外结果,仅在 LEGACY:AD-SUPPORT
子策略和 aes256-cts-hmac-sha1-96
中可用的 arcfour-hmac-md5
选项,在 FUTURE
策略中不再可用。
如果使用 Kerberos,请验证 /etc/crypto-policies/back-ends/krb5.config
文件中 permitted_enctypes
的值的顺序。如果您的场景需要不同的顺序,请应用自定义加密子策略。
审计现在支持 FANOTIFY
记录字段
audit
软件包的这个更新引进了对 FANOTIFY
审计记录字段的支持。审计子系统现在在 AUDIT_FANOTIFY
记录中记录额外的信息,特别是:
-
fan_type
指定FANOTIFY
事件的类型 -
fan_info
指定额外的上下文信息 -
sub_trust
和obj_trust
指示事件中涉及的主题和对象的信任级别
因此,您可以更好地理解为什么在某些情况下审计系统拒绝访问。这可帮助您为 fapolicyd
框架等工具编写策略。
新的 SELinux 布尔值,以允许 QEMU 客户机代理执行受限命令
在以前的版本中,应该通过 QEMU 客户机代理守护进程程序在受限上下文中执行的命令,如 mount
失败,并显示 Access Vector Cache (AVC) denial。要能够执行这些命令,guest-agent
必须在 virt_qemu_ga_unconfined_t
域中运行。
因此,这个更新添加了 SELinux 策略布尔值 virt_qemu_ga_run_unconfined
,它允许 guest-agent
为以下目录中的可执行文件转换为 virt_qemu_ga_unconfined_t
:
-
/etc/qemu-ga/fsfreeze-hook.d/
-
/usr/libexec/qemu-ga/fsfreeze-hook.d/
-
/var/run/qemu-ga/fsfreeze-hook.d/
另外,qemu-ga
守护进程的转换的必要规则已添加到 SELinux 策略布尔值中。
因此,您现在可以通过启用 virt_qemu_ga_run_unconfined
布尔值,通过没有 AVC 拒绝的 QEMU 客户机代理执行受限命令。
4.3. 基础架构服务
Postfix 现在支持 SRV 查找
有了这个增强,您现在可以使用 Postfix DNS 服务记录解析(SRV)来自动配置邮件客户端并平衡服务器的负载。另外,您可以通过在 Postfix 配置中使用以下与 SRV 相关的选项来防止由临时的 DNS 问题或错误配置的 SRV 记录导致的邮件发送中断:
use_srv_lookup
- 您可以使用 DNS SRV 记录为指定的服务启用发现。
allow_srv_lookup_fallback
- 您可以使用级联方法查找服务。
ignore_srv_lookup_error
- 即使 SRV 记录不可用或遇到错误,您也可以确保服务发现可以正常工作。
现在您可以在 vsftpd
中指定 TLS 1.3 密码套件
有了这个增强,您可以使用新的 ssl_ciphersuites
选项来配置 vsftpd
使用哪个密码套件。因此,您可以指定与之前 TLS 版本不同的 TLS 1.3 密码套件。要指定多个密码套件,请使用冒号(:)分隔条目。
cups-filters
中提供了通用 LF-to-CRLF 驱动程序
有了这个增强,您现在可以使用通用 LF-to-CRLF 驱动程序,它为接受 CR+LF 字符的打印机将 LF 字符转换为 CR+LF 字符。回车返回(CR),换行(LF)是标记行末尾的控制字符。因此,通过使用这个驱动程序,您可以将应用程序中的 LF 字符终止的文件发送到只接受 CR+LF 字符的打印机。通用 LF-to-CRLF 驱动程序是 RHEL 7 中 text-only
驱动程序的重命名版本。新名称反映了其实际功能。
Bugzilla:2118406[1]
4.4. 网络
iproute
rebase 到版本 6.2.0
iproute
软件包已升级到上游版本 6.2.0,与之前的版本相比,它提供了很多改进和 bug 修复。最显著的更改有:
-
新的
ip stats
命令管理并显示接口统计信息。默认情况下,ip stats show
命令显示所有网络设备,包括网桥和绑定的统计信息。您可以使用dev
和group
选项过滤输出。详情请查看ip-stats (8)
手册页。 -
ss
工具现在提供-T
(--threads
)选项来显示线程信息,这会扩展-p
(--processes
)选项。详情请查看ss (8)
手册页。 -
您可以使用新的
bridge fdb flush
命令删除与提供的选项匹配的特定转发数据库(fdb)条目。详情请查看bridge (8)
手册页。
Jira:RHEL-424[1]
默认 nftables
服务配置的安全改进
此增强将 do_masquerade
链添加到 /etc/sysconfig/nftables/nat.nft
文件中的默认 nftables
服务配置中。这降低了端口影子攻击的风险,这在 CVE-2021-3773 中进行了描述。do_masquerade
链中的第一个规则检测到合适的数据包,并强制实施源端口随机化,以减少端口影子攻击的风险。
NetworkManager
支持 no-aaaa
DNS 选项
现在,您可以通过抑制由 stub 解析器生成的 AAAA 查询,使用 no-aaaa
选项在受管主机上配置 DNS 设置。在以前的版本中,没有选项来抑制 stub 解析器生成的 AAAA 查询,包括由基于 NSS 的接口(如 getaddrinfo
)触发的 AAAA 查找;只有 DNS 查找受到影响。有了这个增强,您可以使用 nmcli
工具禁用 IPv6 解析。重启 NetworkManager
服务后,no-aaaa
设置会反映在 /etc/resolv.conf
文件中,并具有对 DNS 查找的额外控制。
nm-cloud-setup
工具现在支持 IMDSv2 配置
用户可以使用 nm-cloud-setup
工具配置带有实例元数据服务版本 2 (IMDSv2)的 AWS Red Hat Enterprise Linux EC2 实例。要遵守改进的安全性,其限制对 EC2 元数据和新功能未经授权的访问,需要 AWS 和红帽服务间的集成来提供高级功能。此增强使 nm-cloud-setup
工具能够获取并保存 IMDSv2 令牌,验证 EC2 环境,并使用安全 IMDSv2 令牌检索有关可用接口和 IP 配置的信息。
libnftnl
软件包 rebase 到版本 1.2.2
到内核 nf_tables
子系统的 Netlink API (libnftnl
)软件包已更新。主要变化和增强包括:
添加的功能:
-
udata
属性的嵌套 -
使用
exthdr
表达式重置 TCP 选项 -
sdif
和sdifname
元关键字 -
支持
nftnl_chain
结构中的新属性NFTNL_CHAIN_FLAGS
,以在内核和用户空间之间进行通信标志。 -
支持
nftnl_set
结构 nftables 设置后端来对集合和 set elements 添加表达式。 - 对集合 、表、对象和链的注释
-
nftnl_table
结构现在有一个NFTNL_TABLE_OWNER
属性。设置此属性以使内核将所有者与用户空间进行通信。 - 准备好对流化设备的增量更新
-
与
nftnl_set udata
定义相关的typeof
关键字 -
链
ID 属性 - 从规则中删除表达式的函数
-
新的
last
表达式
-
改进了位表达式:
-
新添加的
op
和data
属性 - 左和右移动
- 与其他表达式的调试输出一致
-
新添加的
改进了套接字表达式:
-
添加了
wildcard
属性 - 对 cgroup v2 的支持
-
添加了
改进了调试输出:
-
在 set elements 中包含了
key_end
数据寄存器 -
从
masq
和 nat 表达式中丢弃了未使用的寄存器 - 为 verdict map 元素应用了修复
- 从丢弃的 XML 格式中删除了剩余内容
- 支持内部标头的有效负载偏移
-
在 set elements 中包含了
4.5. 内核
RHEL 8.9 中的内核版本
Red Hat Enterprise Linux 8.9 与内核版本 4.18.0-513.5.1 一起分发。
RHEL 内核现在支持 AutoIBRS
自动 Indirect Branch Restricted Speculation (AutoIBRS)是由 AMD EPYC 9004 Genoa 处理器系列以及更新的 CPU 版本提供的一种功能。AutoIBRS 是 Spectre v2 CPU 漏洞的默认缓解方案,它提高了性能并改进了可扩展性。
Bugzilla:1989283[1]
Intel® QAT 内核驱动程序 rebase 到上游版本 6.2
Intel® Quick Assist Technology (QAT)已 rebase 到上游版本 6.2。Intel® QAT 包括针对对称和非对称加密、压缩性能和其他 CPU 密集型任务优化的加速器。
rebase 包括很多 bug 修复和增强。最显著的增强是对 QAT GEN4 的以下硬件加速器设备的支持:
- Intel Quick Assist Technology 401xx 设备
- Intel Quick Assist Technology 402xx 设备
Bugzilla:2144529[1]
makedumpfile
rebase 到版本 1.7.2
makedumpfile
工具,其通过压缩页或排除不需要的内存页使崩溃转储文件变小,已从版本 1.7.2 rebase 到版本 1.7.2。rebase 包括很多 bug 修复和增强。
最显著的变化是在 AMD 和 Intel 64 位构架上为独立转储(sadump
)机制添加了 5 级分页模式。5 级分页模式扩展了处理器的线性地址宽度,以允许应用程序访问更大的内存。5 级分页将虚拟地址的大小从 48 位扩展到 57 位,并将物理地址从 46 位扩展到 52 位。
4.6. 文件系统和存储
支持在创建 GFS2 文件系统时指定 UUID
mkfs.gfs2
命令现在支持新的 -U
选项,该选项可让您为所创建的文件系统指定文件系统 UUID。如果省略这个选项,文件系统的 UUID 会随机生成。
fuse3
现在允许在不触发 umount
的情况下使目录条目无效
有了此更新,已在 fuse3
软件包中添加了一个新的机制,它允许使目录条目无效,而无需自动触发条目上存在的任何挂载的 umount
。
Bugzilla:2171095[1]
4.7. 高可用性和集群
Pacemaker 的调度程序现在在尝试满足可选托管约束之前,尝试满足所有强制托管约束
在以前的版本中,无论它们是强制的还是可选的,托管约束都会被逐一考虑。这意味着,即使节点分配是可能的,某些资源也无法运行。在尝试满足可选的托管约束之前,Pacemaker 的调度程序现在会尝试满足所有强制托管约束,包括组成员之间的隐式限制。因此,混合了可选和强制托管约束的资源现在更有可能运行。
IPaddr2
和 IPsrcaddr
集群资源代理现在支持基于策略的路由
IPaddr2
和 IPsrcaddr
集群资源代理现在支持基于策略的路由,这可让您配置复杂的路由场景。基于策略的路由要求您配置资源代理的 table
参数。
Filesystem
资源代理现在支持 EFS 文件系统类型
ocf:heartbeat:Filesystem
集群资源代理现在支持 Amazon Elastic File System (EFS)。现在,您可以在配置 Filesystem
资源时指定 fstype=efs
。
alert_snmp.sh.sample
警报代理现在支持 SNMPv3
alert_snmp.sh.sample
警报代理(这是 Pacemaker 提供的示例警报代理)现在支持 SNMPv3 协议和 SNMPv2。有了这个更新,您可以复制 alert_snmp.sh.sample
代理,而无需修改,以使用带有 Pacemaker 警报的 SNMPv3。
新 enabled
警报元选项,以禁用 Pacemaker 警报
Pacemaker 警报和警报接收者现在支持 enabled
元选项。
-
将警报的
enabled
元选项设置为false
,来禁用警报。 -
将警报的
enabled
元选项设置为true
,将特定接收者的该选项设置为false
会禁用该接收者的警报。
enabled
元选项的默认值为 true
。出于任何原因(如计划维护),您可以使用这个选项来临时禁用警报。
pacemaker 远程节点现在在短暂的连接中断后可保留临时节点属性
在以前的版本中,当 Pacemaker 远程连接丢失时,Pacemaker 通常会清除其临时节点属性。如果连接快速恢复,且远程守护进程在此期间没有重启,则不需要此项。Pacemaker 远程节点现在在短暂的、可恢复的连接中断后可保留临时节点属性。
对 pcs property
命令的改进
pcs property
命令现在支持以下改进:
pcs property config --output-format=
选项-
指定
--output-format=cmd
来显示从当前集群属性配置中创建的pcs property set
命令。您可以使用这个命令在不同的系统上重新创建配置的集群属性。 -
指定
--output-format=json
,来以 JSON 格式显示配置的集群属性。 -
指定
output-format=text
,来以纯文本格式显示配置的集群属性,这是此选项的默认值。
-
指定
-
pcs property defaults
命令,它替换了已弃用的pcs property --defaults
选项 -
pcs property describe
命令,它描述了集群属性的含义。
4.8. 动态编程语言、网页和数据库服务器
完全支持新的 nodejs:20
模块流
以前作为技术预览提供的新模块流 nodejs:20
被发布的 RHEA-2023:7249 公告完全支持 。nodejs:20
模块流现在提供 Node.js 20.9
,它是一个长期支持(LTS)版本。
与 RHEL 8.7 以来的 Node.js 18
相比,RHEL 8.9 中包含的 Node.js 20
提供了许多新功能、bug 修复、安全修复和性能改进。
主要变更包括:
-
V8
JavaScript 引擎已升级至版本 11.3。 -
npm
软件包管理器已升级至版本 9.8.0。 -
Node.js
引入了一个新的实验性权限模型。 -
Node.js
引入了一个新的实验性单可执行文件应用程序(SEA)功能。 -
Node.js
提供了对 Experimental ECMAScript 模块(ESM)加载程序的改进。 -
在
Node.js 18
中作为实验性node:test
模块引进的原生测试运行程序现在被视为是稳定的。
要安装 nodejs:20
模块流,请使用:
# yum module install nodejs:20
如果要从 nodejs:18
流升级,请参阅 切换到更新的流。
有关 nodejs
应用程序流支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期。
Python tarfile
提取函数的一个新 filter
参数
要缓解 CVE-2007-4559,Python 向 tarfile
提取函数添加了一个 filter
参数。参数允许关闭 tar
功能以提高安全性(包括阻止 CVE-2007-4559 目录遍历攻击)。如果没有指定过滤器,则在 RHEL 中默认使用 'data'
过滤器,这是最安全但最有限的。另外,当应用程序受到影响时,Python 会发出一个警告。
如需更多信息,包括隐藏警告的说明,请参阅知识库文章 Python tarfile 库中目录遍历攻击的缓解(CVE-2007-4559) 。
Jira:RHELDOCS-16405[1]
HTTP::Tiny
Perl 模块现在默认验证 TLS 证书
HTTP::Tiny
Perl 模块中的 verify_SSL
选项的默认值已从 0
变为 1
,以在使用 HTTPS 时验证 TLS 证书。这个更改修复了 HTTP::Tiny
的 CVE-2023-31486 和 CPAN Perl 模块的 CVE-2023-31484 。
为了支持 TLS 验证,这个更新在 perl-HTTP-Tiny
软件包中添加了以下依赖项:
-
perl-IO-Socket-SSL
-
perl-Mozilla-CA
-
perl-Net-SSLeay
Bugzilla:2228409[1]
Python 中的一个控制电子邮件地址解析的新环境变量
为缓解 CVE-2023-27043,一个向后兼容的更改,以确保在 Python 3 中引入了更严格的电子邮件地址的解析。
RHSA-2024:0256 中的更新引入了一个新的 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]
4.9. 编译器和开发工具
改进了 glibc
中基于 Intel® Xeon® v5 硬件的字符串和内存例程性能
在以前的版本中,glibc
用于字符串和内存例程的默认缓存量会导致基于 Intel® Xeon® v5 的系统上的性能低于预期。有了此更新,已调整了要使用的缓存量,以提高性能。
GCC 现在支持保留寄存器参数
有了此更新,您可以将参数寄存器内容存储到堆栈,并生成合适的 Call Frame Information (CFI),以允许 unwinder 找到它,而不会给性能造成负面影响。
Bugzilla:2168205[1]
新的 GCC Toolset 13
GCC Toolset 13 是一个编译器工具集,其提供开发工具的最新版本。它在 AppStream 存储库中以 Software Collection 的形式作为 Application Stream 提供。
GCC 编译器已更新至版本 13.1.1,它提供了上游 GCC 中可用的很多 bug 修复和增强。
GCC Toolset 13 提供了以下工具和版本:
工具 | 版本 |
---|---|
GCC | 13.1.1 |
GDB | 12.1 |
binutils | 2.40 |
dwz | 0.14 |
annobin | 12.20 |
要安装 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
如需更多信息,请参阅https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/developing_c_and_cpp_applications_in_rhel_8/additional-toolsets-for-development_developing-applications#gcc-toolset-13_assembly_additional-toolsets-for-development[GCC Toolset 13] 和 使用 GCC Toolset。
Bugzilla:2171898[1], Bugzilla:2171928, Bugzilla:2188490
GCC Toolset 13:GCC rebase 到版本 13.1.1
在 GCC Toolset 13 中,GNU Compiler Collection (GCC)已更新至版本 13.1.1.。主要变更包括:
常规改进
OpenMP:
- OpenMP 5.0:Fortran 现在支持一些非矩形循环嵌套。GCC 11 中添加了对 C/C++ 的此类支持。
- 添加了许多 OpenMP 5.1 功能。
- 添加了对 OpenMP 5.2 功能的初始支持。
-
现在提供了一个新的 debug 信息压缩选项值
-gz=zstd
。 -
-Ofast
、-ffast-math
和-funsafe-math-optimizations
选项不再添加启动代码,来在使用-shared
选项生成共享对象时更改浮点环境。 -
GCC 现在可以使用 Static Analysis Results Interchange Format(SARIF)发出其诊断,此格式是一个适合于捕获静态分析工具(如 GCC 的
-fanalyzer
)结果的基于 JSON 的格式。您还可以使用 SARIF 来捕获机器可读格式的其他 GCC 警告和错误。 - 实现了链接时优化改进。
新的语言和特定语言改进
C 系列:
-
新的
-Wxor-used-as-pow
选项警告有关排他或(^
)运算符的使用,用户可能指的是取幂。 为记录是文件描述符的
int
参数添加了三个新的功能属性:-
attribute((fd_arg(N)))
-
attribute((fd_arg_read(N)))
-
attribute((fd_arg_write(N)))
-fanalyzer
也使用这些属性来检测文件描述符的滥用。-
-
已为 C++23 可移植假设添加了一个新的语句属性
attribute((assume(EXPR)));
。属性也在 C 或更早的 C++ 中支持。 -
GCC 现在可以控制何时将一个结构的尾随数组视为一个灵活的数组成员,以便访问此类数组的元素。默认情况下,聚合中的所有尾随数组都被视为灵活的数组成员。使用新的命令行选项
-fstrict-flex-arrays
来控制哪些数组被视为灵活的数组。
C:
实现了几个 C23 功能:
-
引入了
nullptr
常量。 - 增强了枚举来指定底层类型。
- 对可变参数列表的要求已放宽。
-
引入了
auto
功能,来为对象定义启用类型推断。 -
为对象定义引入了
constexpr
指定符。 - 为复合字面引入了 storage-class 指定符。
-
引入了
typeof
对象(以前作为扩展支持)和typeof_unqual
对象。 -
添加了新的关键字:
alignas
,alignof
,bool
,false
,static_assert
,thread_local
和true
。 -
添加了
[[noreturn]]
属性,来指定不会向其调用者返回执行的函数。 - 添加了对空初始化器大括号的支持。
-
添加了对
STDC_VERSION keyring_H
标头版本宏的支持。 -
删除了
ATOMIC_VAR_INIT
宏。 -
为
<stddef.h>
标头添加了unreachable
宏。 - 删除了三角图。
- 删除了非原型函数。
-
通过
-Wformat
选项为%wN
和%wfN
格式长度修饰符添加了printf
和scanf
格式检查。 - 添加了对 Unicode Standard Annex (UAX) 31 标识符语法的支持。
-
C23 中采用的现有功能已调整为遵循 C23 要求,且不会使用
-std=c2x -Wpedantic
选项进行诊断。
-
引入了
-
新的
-Wenum-int-mismatch
选项警告枚举类型和整数类型之间的不匹配。
C++:
通过
-fexcess-precision
选项实现超精度支持。它默认在严格的标准模式(如-std=c++17
)下启用,其中其默认为-fexcess-precision=standard
。在 GNU 标准模式下,如-std=gnu++20
,其默认为-fexcess-precision=fast
,这会恢复以前的行为。-fexcess-precision
选项会影响以下构架:-
使用 x87 math 的 Intel 32 和 64 位,某些情况下的 Motorola 68000 ,其中
float
和double
表达式以long double
评估。 -
以
double
精度评估float
表达式的 64 位 IBM Z 系统。 -
支持
std::float16_t
或std::bfloat16_t
类型的几个架构,其中这些类型以float
精度评估。
-
使用 x87 math 的 Intel 32 和 64 位,某些情况下的 Motorola 68000 ,其中
改进了对 C++23 的实验性支持,包括:
- 添加了对复合语句末尾的标签的支持。
- 添加了一个类型 trait ,来检测绑定到临时类型的引用。
- 重新引入对易失性复合操作的支持。
-
添加了对
#warning
指令的支持。 - 添加了对分隔的转义序列的支持。
- 添加了对命名的通用字符转义的支持。
-
为
char8_t
类型添加了兼容性和可移植性修复。 -
添加了静态
operator()
函数对象。 - 简化的隐式移动。
- 现在,在表达式中重写等式不是一个突破性的变化。
- 删除了不可编码的宽字符量和宽多字符量。
-
放宽了一些
constexpr
函数限制。 - 扩展了浮点类型和标准名称。
- 实现了可移植假设。
- 添加了对作为可移植源文件编码标准的 UTF-8 的支持。
-
添加了对静态
operator[]
子脚本的支持。
新警告:
-
当值通过
std::move
移到其自身时,-Wself-move
会警告。 -
当参考绑定到其生命周期已结束的临时参考时,
-Wdangling-reference
会警告。 -
-Wpessimizing-move
和-Wredundant-move
警告已扩展为在更多上下文中警告。
-
当值通过
-
新的
-nostdlib++
选项启用与g++
的链接,而无需在 C++ 标准库中隐式链接。
libstdc++
运行时库中的更改
改进了 C++20 的实验性支持,包括:
-
添加了
<format>
标头和std::format
函数。 -
在
<chrono>
标头中添加了对std::chrono::utc_clock
时钟、其他时钟、时区和std::format
函数的支持。
-
添加了
改进了对 C++23 的实验性支持,包括:
-
在
<ranges>
标头中添加了:view::zip
,views::zip_transform
,views::adjacent
,views::adjacent_transform
,views::pairwise
,views::slide
,views::chunk
,views::chunk_by
,views::repeat
,views::chunk_by
,views::cartesian_product
,views::as_rvalue
,views::enumerate
,views::as_const
。 -
在
<algorithm>
标头中添加了:ranges::contains
,ranges::contains_subrange
,ranges::iota
,ranges::find_last
,ranges::find_last_if
,ranges::find_last_if_not
,ranges::fold_left
,ranges::fold_left_first
,ranges::fold_right
,ranges::fold_right_last
,ranges::fold_left_with_iter
,ranges::fold_left_first_with_iter
。 -
支持
std::expected
类模板的 monadic 操作。 -
向
std::bitset
、std::to_chars
和std::from_chars
函数添加了constexpr
修饰符。 - 添加了对扩展的浮点类型的库支持。
-
在
-
添加了对 Library Fundamentals Technical Specification (TS)的版本 3 中
<experimental/scope>
标头的支持。 -
添加了对 Concurrency TS 的版本 2 中
<experimental/synchronized_value>
标头的支持。 添加了对许多之前在 freestanding 模式下不可用的功能的支持。例如:
-
std::tuple
类模板现在可用于独立编译。 -
libstdc++
库向 freestanding 子集添加了组件,如std::array
和std::string_view
。 -
libstdc++
库现在使用-ffreestanding
编译器选项,因此不再需要构建libstdc++
库的一个单独的独立安装。使用-ffreestanding
编译将可用的功能限制到独立的子集,即使libstdc++
库是作为完整的托管的实现而构建的。
-
新目标和特定于目标的改进
64 位 ARM 架构:
-
添加了对
-march=
选项的armv9.1-a
、armv9.2-a
和armv9.3-a
参数的支持。
32 位和 64 位 AMD 和 Intel 架构:
-
对于 C 和 C++,启用了流 SIMD 扩展 2 及更高版本的系统上支持
__bf16
类型。 -
真正的
__bf16
类型现在用于AVX512BF16
指令的内在特性。在以前的版本中,使用__bfloat16
,它是一种 short 的 typedef 。在将 GCC 12 升级到 GCC 13 时,调整您的AVX512BF16
相关源代码。 添加了新的指令集架构(ISA)扩展,以支持以下 Intel 指令:
-
AVX-IFMA
,其指令内在特性通过-mavxifma
编译器开关提供。 -
AVX-VNNI-INT8
,其指令内在特性通过-mavxvnniint8
编译器开关提供。 -
AVX-NE-CONVERT
,其指令内在特性通过-mavxneconvert
编译器开关提供。 -
CMPccXADD
,其指令内在特性通过-mcmpccxadd
编译器开关提供。 -
AMX-FP16
,其指令内在特性通过-mamx-fp16
编译器开关提供。 -
PREFETCHI
,其指令内在特性通过-mprefetchi
编译器开关提供。 -
RAO-INT
,其指令内在特性通过-mraoint
编译器开关提供。 -
AMX-COMPLEX
,其指令内在特性通过-mamx-complex
编译器开关提供。
-
-
GCC 现在通过
-march=znver4
编译器开关,支持基于znver4
核的 AMD CPU。开关在自动向量化时考虑使用 512 位向量。
对静态分析器的改进
静态分析器已得到 20 个新警告:
-
-Wanalyzer-allocation-size
-
-Wanalyzer-deref-before-check
-
-Wanalyzer-exposure-through-uninit-copy
-
-Wanalyzer-imprecise-fp-arithmetic
-
-Wanalyzer-infinite-recursion
-
-Wanalyzer-jump-through-null
-
-Wanalyzer-out-of-bounds
-
-Wanalyzer-putenv-of-auto-var
-
-Wanalyzer-tainted-assertion
与文件描述符滥用相关的 7 个新警告:
-
-Wanalyzer-fd-access-mode-mismatch
-
-Wanalyzer-fd-double-close
-
-Wanalyzer-fd-leak
-
-Wanalyzer-fd-phase-mismatch
(例如,在对套接字调用listen
前,对套接字调用accept
) -
-Wanalyzer-fd-type-mismatch
(例如,对数据报套接字使用流套接字操作) -
-Wanalyzer-fd-use-after-close
-Wanalyzer-fd-use-without-check
-
另外,还实现对
open
、close
、creat
、dup
、dup2
、dup3
、pipe
、pipe2
、read
、和write
函数的行为的特殊处理。
-
另外,还实现对
-
对滥用
<stdarg.h>
标头的四个新警告:-
-Wanalyzer-va-list-leak
警告在va_start
或va_copy
宏之后缺少va_end
宏。 -
-Wanalyzer-va-list-use-after-va-end
警告在已对其调用了va_end
宏的va_list
对象类型上使用了va_arg
或va_copy
宏。 -
-Wanalyzer-va-arg-type-mismatch
类型检查针对实际传递 variadic 调用的参数类型的过程间执行路径中的va_arg
宏的使用情况。 -
-Wanalyzer-va-list-exhausted
警告va_arg
宏是否在过程间执行路径中对va_list
对象类型使用了太多次。
-
-
- 很多其他改进。
后向不兼容更改
对于 C++,全局 iostream 对象(如 std::cout
, std::cin
)的构建现在在标准库中完成,而不是在包含 <iostream>
标头的每个源文件中完成。这个更改提高了 C++ 程序的启动性能,但这意味着如果在运行时没有使用正确的 libstdc++.so
版本,则使用 GCC 13.1 编译的代码将崩溃。请参阅有关在运行时使用正确的 libstdc++.so
的 文档。未来的 GCC 发行版将缓解这个问题,这样,带有不兼容 libstdc++.so
的程序根本不能运行。
Bugzilla:2172091[1]
GCC Toolset 13: annobin
rebase 到版本 12.20
GCC Toolset 13 提供了 annobin
软件包版本 12.20。主要改进包括:
-
添加了对将
annobin
备注移到单独的调试信息文件中的支持。这导致减小了可执行二进制文件的大小。 - 添加了对新的较小的备注格式的支持,减少了单独 debuginfo 文件的大小以及创建这些文件所需的时间。
Bugzilla:2171923[1]
GCC Toolset 13:GDB rebase 到版本 12.1
GCC Toolset 13 提供 GDB 版本 12.1。
重要的程序错误修复和增强包括:
-
GDB 现在默认设置源代码和反汇编器的样式。如果样式干扰了 GDB 的自动化或脚本,您可以使用
maint set gnu-source-highlight enabled off
和maint set style disassembler enabled off
命令禁用它。 -
GDB 现在每当遇到内部错误时都会显示回溯追踪。如果这会影响脚本或自动化,您可以使用
maint set backtrace-on-fatal-signal off
命令禁用此功能。
C/C++ 改进:
- GDB 现在像对待功能过载一样对待涉及 C++ 模板的功能或类型。您可以省略参数列表,以在模板功能系列上设置断点,包括类型或由多个模板类型组成的功能。Tab 补全已得到类似的改进。
终端用户界面(TUI):
tui layout
tui focus
tui refresh
tui window height
这些分别是旧layout
,focus
,refresh
和winheight
TUI 命令的新名称旧名称仍作为这些新命令的别名存在。tui window width
winwidth
使用新的
tui window width
命令或winwidth
别名,当窗口在水平模式下布局时调整 TUI 窗口的宽度。info win
这个命令现在在其输出中包含有关 TUI 窗口宽度的信息。
机器接口(MI)更改:
- MI 解释器的默认版本现在是 4 (-i=mi4)。
-
没有标志的
-add-inferior
命令现在继承当前下级的连接。这将恢复版本 10 之前的 GDB 的行为。 -
-add-inferior
命令现在接受一个--no-connection
标志,这导致新的下级在没有连接的情况下启动。 断点输出中的
script
字段(其在 MI 3 及更早版本中的语法不正确)已在 MI 4 中成为一个列表。这会影响以下命令和事件:-
-break-insert
-
-break-info
-
=breakpoint-created
=breakpoint-modified
使用
-fix-breakpoint-script-output
命令启用使用早期 MI 版本的新行为。
-
新命令:
maint set internal-error backtrace [on|off]
maint show internal-error backtrace
maint set internal-warning backtrace [on|off]
maint show internal-warning backtrace
GDB 现在在遇到内部错误或内部警告时打印其自身的回溯追踪。对于内部错误,这默认是启用的,对于内部警告,默认禁用。
exit
除了现有的
quit
命令外,您还可以使用新的exit
命令退出 GDB。maint set gnu-source-highlight enabled [on|off]
maint show gnu-source-highlight enabled
启用或禁用 GNU Source Highlight 库来向源代码添加样式。禁用时,即使库可用,也不会使用它。当 GNU Source Highlight 库没有使用时,使用 Python Pygments 库。set suppress-cli-notifications [on|off]
show suppress-cli-notifications
控制是否禁止为 CLI 打印通知。当您更改所选上下文(如当前的下级、线程或帧)或正在调试的程序停止时(例如:由于遇到断点、完成源步进或中断)时,会发生 CLI 通知。
set style disassembler enabled [on|off]
show style disassembler enabled
启用后,如果 GDB 是使用支持的 Python 编译的,且有 Python Pygments 软件包可用,则命令会向反编译器输出应用样式。
更改的命令:
set logging [on|off]
弃用,并被
set logging enabled [on|off]
命令替换。print
使用类似
/x
的基数修改格式的浮点值打印已变为显示所需基数中值的底层字节。clone-inferior
clone-inferior
命令现在确保TTY
、CMD
和ARGs
设置从原始下级复制到新的下级。所有使用set environment
或unset environment
命令对环境变量的修改也会被复制到新的下级中。
Python API:
-
新的
gdb.add_history()
函数接受一个gdb.Value
对象,并将其代表的值添加到 GDB 的历史记录列表中。函数返回一个整数,这是历史记录列表中新项目的索引。 -
新的
gdb.history_count()
函数返回 GDB 值历史记录中的值数。 -
新的
gdb.events.gdb_exiting
事件通过gdb.GdbExitingEvent
对象调用,该对象具有包含 GDB 退出码值的只读属性exit_code
。在 GDB 开始清理其内部状态前,此事件会在 GDB 退出前触发。 -
新的
gdb.architecture_names()
函数返回一个包含所有可能的Architecture.name()
值的列表。每个条目都是一个字符串。 -
新的
gdb.Architecture.integer_type()
函数返回一个给定大小和符号的整数类型。 -
新的
gdb.TargetConnection
对象类型表示一个连接(如info connections
命令显示的那样)。子类gdb.RemoteTargetConnection
表示remote
和extended-remote
连接。 -
gdb.Inferior
类型现在有一个connection
属性,它是gdb.TargetConnection
对象的一个实例,连接被这个下级使用。如果下级没有连接,则这可以是None
。 -
当从 GDB 中删除连接时,新的
gdb.events.connection_removed
事件注册中心会发出一个gdb.ConnectionEvent
事件。此事件有一个connection
属性,一个用于要删除的连接的gdb.TargetConnection
对象。 -
新的
gdb.connections()
函数返回所有当前活跃连接的列表。 -
新的
gdb.RemoteTargetConnection.send_packet (PACKET)
方法等同于现有的maint packet
CLI 命令。您可以使用它来向远程目标发送指定的数据包。 -
新的
gdb.host_charset()
函数返回作为字符串的当前主机字符集的名称。 -
新的
gdb.set_parameter (NAME,VALUE)
函数将 GDB 参数NAME
设置为VALUE
。 -
新的
gdb.with_parameter (NAME,VALUE)
函数返回一个上下文管理器,该管理器临时将 GDB 参数NAME
设置为VALUE
,然后在上下文退出时重置它。 -
gdb.Value.format_string
方法现在接受一个styling
参数,该参数是一个布尔值。当为true
时,返回的字符串可以包含转义序列以应用样式。只有在 GDB 上打开样式时,才会显示样式(请参阅帮助设置样式
)。当未指定styling
参数时,其为默认值false
,则不会将样式应用到返回的字符串。 -
新的只读属性
gdb.InferiorThread.details
是一个包含额外的特定于目标的线程信息的字符串,或者如果没有这样的附加信息,则为None
。 -
新的只读属性
gdb.Type.is_scalar
对于 scalar 类型为True
,对所有其他类型为False
。 -
新的只读属性
gdb.Type.is_signed
仅在Type.is_scalar
为True
时可读,对于有符号类型将为True
,对于所有其他类型将为False
。尝试读取 non-scalar 类型的此属性将引发一个ValueError
。 - 现在,您可以添加在 Python 中添加 GDB 和实施的 MI 命令。
如需更多信息,请参阅上游发行注记:
Bugzilla:2172095[1]
GCC Toolset 13:bintuils
rebase 到版本 2.40
GCC Toolset 13 提供 binutils
软件包版本 2.40。主要改进包括:
链接器:
-
链接器的新
-w
(--no-warnings
)命令行选项抑制了任何警告或错误消息的生成。如果您需要创建一个已知无法正常工作的二进制文件,这非常有用。 现在,ELF 链接器会生成一条警告信息,如果:
- 堆栈可执行
-
它创建了一个内存常量片段,具有
Read
、Write
和eXecute
全部三个权限集 它会创建一个具有
eXecute
权限的线程本地数据段。您可以使用
--no-warn-exec-stack
或--no-warn-rwx-segments
选项禁用这些警告。
- 链接器现在可以将任意 JSON 格式的元数据插入到它创建的二进制文件中。
其他工具:
-
新的
objdump
工具的--private
选项,用于显示文件标头中的字段,以及 Portable Executable (PE)格式的部分标头。 -
objcopy
和strip
的新的--strip-section-headers
命令行选项,来从 ELF 文件中删除 ELF 部分标头。 -
objdump
工具的新的--show-all-symbols
命令行选项,来在反汇编时显示与给定地址匹配的所有符号,而不是显示与地址匹配的第一个符号的默认功能。 -
nm
工具的新-W
(--no-weak
)选项使其忽略弱符号。 objdump
工具现在支持对某些架构的反汇编输出的语法高亮显示。使用--disassembler-color=MODE
命令行选项,MODE 是以下之一:-
off
-
color
- 所有终端模拟器都支持这个选项。 -
extended-color
- 这个选项使用所有终端模拟器都不支持的 8 位颜色。
-
Bugzilla:2171924[1]
GCC Toolset 13: annobin
rebase 到版本 12.20
GCC Toolset 13 提供了 annobin
软件包版本 12.20。主要改进包括:
-
添加了对将
annobin
备注移到单独的调试信息文件中的支持。这导致减小了可执行二进制文件的大小。 - 添加了对新的较小的备注格式的支持,它减少了各个 debuginfo 文件的大小以及创建这些文件所需的时间。
Bugzilla:2171921[1]
Valgrind rebase 到版本 3.21.0
Valgrind 已更新至版本 3.21.0。主要改进包括:
-
--vgdb-stop-at=event1,event2,…
选项的新abexit
值会在程序异常退出(如非零退出码)时通知gdbserver
工具。 新的
--enable-debuginfod=[yes|no]
选项指示 Valgrind 使用DEBUGINFOD_URLS
环境变量中列出的debuginfod
服务器来获取在 Valgrind 下运行的程序缺少的 DWARF debuginfo 信息。此选项的默认值为yes
。注意默认不设置
DEBUGINFOD_URLS
环境变量。-
使用
--multi
选项调用时,vgdb
工具现在支持扩展的远程协议。此模式下支持 GDBrun
命令,因此您可以从单个终端运行 GDB 和 Valgrind。 -
对于截获
malloc()
调用的工具,您可以使用--realloc-zero-bytes-frees=[yes|no]
选项更改realloc()
函数的行为。 -
memcheck
工具现在对大小为零的realloc ()
函数的使用情况进行检查。使用新的--show-realloc-size-zero=[yes|no]
开关来禁用此功能。 -
您可以对
helgrind
工具使用新的--history-backtrace-size=value
选项,来配置要在早期访问的堆栈跟踪中记录的条目的数量。 -
--cache-sim=[yes|no]
cachegrind
选项现在默认为no
,因此默认只收集指令缓存读事件。 -
cg_annotate
、cg_diff
和cg_merge
cachegrind
工具的源代码已被重写,因此工具具有更灵活的命令行选项处理。例如,它们现在支持--show-percs
和--no-show-percs
选项,以及现有的--show-percs=yes
和--show-percs=no
选项。 -
cg_annotate
cachegrind
工具现在支持区分(使用--diff
、--mod-filename
和--mod-funcname
选项)和合并(通过传递多个数据文件)。另外,cg_annotate
现在在文件和函数级别提供更多信息。 -
DHAT
工具的新的用户请求允许您覆盖对内存块的访问数直方图的 1024 字节限制。
现在支持以下特定于架构的指令集:
64 位 ARM:
- v8.2 scalar 和 vector Floating-point Absolute Difference (FABD), Floating-point Absolute Compare Greater than or Equal (FACGE), Floating-point Absolute Compare Greater Than (FACGT)和 Floating-point Add (FADD)指令。
- v8.2 浮点(FP)比较和条件比较指令。
- v8.2 浮点(FP)的零变体比较指令。
64-位 IBM Z:
-
支持各种
miscellaneous-instruction-extensions facility 3
和vector-enhancements facility 2
。这使用-march=arch13
或-march=z15
选项编译的程序能够在 Valgrind 下执行。
-
支持各种
IBM Power:
- ISA 3.1 支持现已完成。
- ISA 3.0 现在支持交付一个随机数字(darn)指令。
- ISA 3.0 现在支持 System Call Vectored(scv)指令。
- ISA 3.0 现在支持复制、粘贴和 cpabort 指令。
SystemTap
rebase 到版本 4.9
systemtap
软件包已升级到版本 4.9。主要变更包括:
-
新的 Language-Server-Protocol (LSP)后端,用于在支持 LSP 的编辑器上更轻松地交互式起草
systemtap
脚本。 - 访问 Python/Jupyter 交互式笔记本前端。
- 改进了 DWARF 5 位字段的处理。
elfutils
rebase 到版本 0.189
elfutils
软件包已更新至版本 0.189。主要改进和 bug 修复包括:
libelf
-
elf_compress
工具现在支持ELFCOMPRESS_ZSTD
ELF 压缩类型。 libdwfl
-
对于指向
DW_TAG_unspecified_type
类型标签的 DWARF Information Entries (DIEs),dwfl_module_return_value_location
函数现在返回 0 (无返回类型)。 eu-elfcompress
-
-t
和--type=
选项现在通过zstd
参数支持 Zstandard (zstd
)压缩格式。
libpfm
rebase 到版本 4.13
libpfm
软件包已更新至版本 4.13。有了此更新,libpfm
现在可以访问以下处理器微架构的性能监控硬件原生事件:
- AMD Zen 4
- ARM Neoverse N1
- ARM Neoverse N2
- ARM Neoverse V1
- ARM Neoverse V2
- 第四代 Intel® Xeon® Scalable Processors
- IBM z16
Bugzilla:2185653, Bugzilla:2111987, Bugzilla:2111966, Bugzilla:2111973, Bugzilla:2109907, Bugzilla:2111981, Bugzilla:2047725
papi
支持新的处理器微架构
有了此增强,您可以使用以下处理器微架构上预设置的 papi
事件访问性能监控硬件:
- ARM Neoverse N1
- ARM Neoverse N2
- ARM Neoverse V1
- ARM Neoverse V2
Bugzilla:2111982[1], Bugzilla:2111988
papi
现在支持 64 位 ARM 的快速性能事件数读取操作
以前在 64 位 ARM 处理器上,所有性能事件计数器读取操作都需要使用资源密集型的系统调用。已对 64 位 ARM 更新了 papi
,以便让使用性能计数器监控其自身的进程使用更快的性能事件计数器的用户空间读取。将 /proc/sys/kernel/perf_user_access
参数设置为 1 ,来将 papi
读取 2 个计数器的平均时钟周期数从 724 周期减少到 29 周期。
Bugzilla:2161146[1]
LLVM Toolset rebase 到版本 16.0.6
LLVM Toolset 已更新至版本 16.0.6。
主要改进包括:
- 对优化的改进
- 对新 CPU 扩展的支持
- 改进了对新 C++ 版本的支持。
重要的向后不兼容的更改包括:
-
Clang 的默认 C++ 标准现在是
gnu++17
,而不是gnu++14
。 -
-Wimplicit-function-declaration
,-Wimplicit-int
和-Wincompatible-function-pointer-types
选项现在默认为 C 代码错误。这可能会影响配置脚本的行为。
默认情况下,Clang 16 使用 libstdc++
库版本 13 和 GCC Toolset 13 提供的 binutils 2.40
。
如需更多信息,请参阅 LLVM 发行注记 和 Clang 发行注记。
Rust Toolset rebase 到版本 1.71.1
Rust Toolset 已更新至版本 1.71.1。主要变更包括:
- 多个生成者(mpsc),单个消费者渠道的新实现,以提高性能
-
新的 Cargo
稀疏
索引协议,来更有效地使用crates.io
注册中心 -
用于一次性值初始化的新的
OnceCell
和OnceLock
类型 -
新的
C-unwind
ABI 字符串,以启用跨 Foreign Function Interface (FFI)边界的强制展开的使用
如需了解更多详细信息,请参阅上游版本公告系列:
Rust profiler_builtins
运行时组件现在可用
有了此增强,Rust profile_builtins
运行时组件现在可用。此运行时组件启用了以下编译器选项:
-C instrument-coverage
- 启用了覆盖率分析
-C profile-generate
- 启用了配置文件引导的优化
Bugzilla:2213875[1]
Go Toolset rebase 到版本 1.20.10
Go Toolset 已更新到版本 1.20.10。
主要改进包括:
-
在
unsafe
软件包中添加了新功能,以处理片段和字符串,而不取决于内部表示。 - 可比较类型现在可以满足可比较约束。
-
新的
crypto/ecdh
软件包。 -
go build
和go test
命令不再接受-i
标志。 -
go generate
和go test
命令现在接受-skip pattern
选项。 -
go build
、go install
和其它与构建相关的命令现在支持-pgo
和-cover
标志。 -
go
命令现在默认在没有 C 工具链的系统上禁用cgo
。 -
go version -m
命令现在支持读取更多的 Go 二进制文件类型。 -
go
命令现在默认在没有 C 工具链的系统上禁用cgo
。 - 添加了对从应用程序和集成测试收集代码覆盖配置文件的支持,而不是仅从单元测试中收集它们。
Bugzilla:2185260[1]
grafana
rebase 到版本 9.2.10
grafana
软件包已更新至版本 9.2.10。主要变更包括:
- 时间序列面板现在是默认的视觉化选项,代替了图形面板。
- Grafana 提供了一个新的 Prometheus 和 Loki 查询构建器。
- Grafana 现在包括多个 UI/UX 和性能改进。
- 许可证已从 Apache 2.0 变为 GNU Affero General Public License (AGPL)。
- heatmap 面板现在在整个 Grafana 中使用。
- Geomaps 现在可以测量距离和区域。
- Alertmanager 现在基于 Prometheus Alertmanager 版本 0.24。
-
Grafana Alerting 规则现在在执行错误或超时时默认返回一个
Error
状态。 - 表达式现在可以用在公共仪表盘上。
- 合并转换现在支持内部合并。
- 公共仪表盘现在允许共享 Grafana 仪表盘。
- 新的 Prometheus 流解析器现在作为一个可选功能提供。
如需更多信息,请参阅上游发行注记:
grafana-pcp
rebase 到版本 5.1.1
提供 Performance Co-Pilot Grafana 插件的 grafana-pcp
软件包已更新至版本 5.1.1。主要变更包括:
- 查询编辑器:添加了用于禁用速率对话和时间利用率对话的按钮
Redis 数据源:
-
删除了已弃用的
label_values (metric, label)
函数 - 修复了具有许多系列的指标的网络错误(需要 Performance Co-Pilot 版本 6 及更高版本)
-
删除了已弃用的
-
将
pmproxy
API 超时设置为 1 分钟
.NET 8.0 可用
Red Hat Enterprise Linux 8.9 与 .NET 版本 8.0 一起分发。主要改进包括:
- 添加了对 C#12 和 F#8 语言版本的支持。
- 添加了对直接使用 .NET 软件开发套件构建容器镜像的支持。
- 许多对垃圾收集器(GC)、Just-In-Time (JIT)编译器和基本库的性能改进。
Jira:RHELPLAN-164398[1]
4.10. 身份管理
samba
rebase 到版本 4.18.4
samba
软件包已升级到上游版本 4.18.4,与之前的版本相比,它提供了 bug 修复和增强。最显著的更改:
- 之前版本中的安全性改进影响了高元数据工作负载的服务器消息块(SMB)服务器的性能。在这种情况下,此更新提高了性能。
-
新的
wbinfo --change-secret-at=<domain_controller>
命令强制对指定域控制器上信任帐户密码执行更改。 -
默认情况下,Samba 将访问控制列表(ACL)存储在文件的
security.NTACL
扩展属性中。现在,您可以使用/etc/samba/smb.conf
文件中的acl_xattr:<security_acl_name>
设置自定义属性名称。请注意,自定义扩展属性名称不是作为security.NTACL
的一个受保护的位置。因此,对服务器有本地访问权限的用户可以修改自定义属性的内容,并破坏 ACL。
请注意,从 Samba 4.11 开始,服务器消息块块版本 1 (SMB1)协议已被弃用,并将在以后的发行版本中删除。
在启动 Samba 前备份数据库文件。当 smbd
、nmbd
或 winbind
服务启动时,Samba 会自动更新其 tdb
数据库文件。红帽不支持降级 tdb
数据库文件。
更新 Samba 后,使用 testparm
工具来验证 /etc/samba/smb.conf
文件。
ipa
rebase 到版本 4.9.12
ipa
软件包已升级到版本 4.9.12 。如需更多信息,请参阅 上游 FreeIPA 发行注记。
现在,可以在单个 Ansible 任务中管理多个 IdM 组和服务
通过 ansible-freeipa
中的这一增强,您可以使用单个 Ansible 任务添加、修改和删除多个身份管理(IdM)用户组和服务。为此,请使用 ipagroup
和 ipaservice
模块的 groups
和 services
选项。
使用 ipagroup
中提供的 groups
选项,您可以指定仅应用到特定组的多个组变量。这个组由 name
变量定义,这是 groups
选项的唯一强制的变量。
同样,使用 ipaservice
中提供的 services
选项,您可以指定仅应用到特定服务的多个服务变量。此服务由 name
变量定义,这是 services
选项的唯一强制的变量。
Jira:RHELDOCS-16474[1]
ansible-freeipa
ipaserver
角色现在支持随机序列号
有了此更新,您可以将 ipaserver_random_serial_numbers=true
选项与 ansible-freeipa
ipaserver
角色一起使用。这样,您可以在使用 Ansible 安装身份管理(IdM)服务器时,为 PKI 中的证书和请求生成完全随机的序列号。使用 RSNv3,您可以避免大型 IdM 安装中的范围管理,并防止重新安装 IdM 时常见的冲突。
RSNv3 仅支持新的 IdM 安装。如果启用,则需要在所有 PKI 服务上使用 RSNv3。
Jira:RHELDOCS-16462[1]
ipaserver_remove_on_server
和 ipaserver_ignore_topology_disconnect
选项现在在 ipaserver
角色中提供
如果使用 ipaserver
ansible-freeipa
角色的 remove_server_from_domain
选项从身份管理(IdM)拓扑中删除一个副本导致一个断开的拓扑,则必须指定您要保留域的哪一部分。具体来说,您必须执行以下操作:
-
指定
ipaserver_remove_on_server
值,以识别您要保留拓扑哪个部分。 -
将
ipaserver_ignore_topology_disconnect
设置为 True。
请注意,如果使用 remove_server_from_domain
选项从 IdM 中删除一个副本会保留一个连接的拓扑,则不需要这些选项的任何一个。
ipaclient
角色现在允许在 IdM 级别上配置用户 subID 范围
有了此更新,ipaclient
角色提供了 ipaclient_subid
选项,您可以使用它在身份管理(IdM)级别上配置 subID 范围。没有明确设置为 true
的新选项,ipaclient
角色会保持默认行为,并在没有为 IdM 用户配置 subID 范围的情况下安装客户端。
在以前的版本中,角色配置了 sssd
authselect
配置文件,它会自定义 /etc/nsswitch.conf
文件。subID 数据库没有使用 IdM,只依赖于 /etc/subuid
和 /etc/subgid
的本地文件。
现在,您可以使用 ipacert
Ansible 模块管理 IdM 证书
现在,您可以使用 ansible-freeipa
ipacert
模块为身份管理(IdM)用户、主机和服务请求或检索 SSL 证书。然后,用户、主机和服务可以使用这些证书向 IdM 进行身份验证。您还可以撤销证书,以及恢复已搁置的证书。
MIT Kerberos 现在支持扩展的 KDC MS-PAC 签名
哟了此更新,红帽使用的 MIT Kerberos 实现了对 Microsoft 引入的两种 Privilege Attribute Certificate (PAC) 签名的支持,以响应最新的 CVE。具体来说,RHEL 8 中的 MIT Kerberos 支持 KB5020805 中发布的扩展 KDC 签名,并解决了 CVE-2022-37967。
请注意,由于 ABI 稳定性约束,RHEL8 上的 MIT Kerberos 无法支持其他 PAC 签名类型,即 KB4598347 中定义的 Ticket 签名。
要排除与此增强相关的问题,请查看以下知识库资源:
另请参阅 BZ#2211387 和 BZ#2176406。
RHEL 8.9 提供了 389-ds-base
1.4.3.37
RHEL 8.9 与 389-ds-base
软件包版本 1.4.3.37 一起分发。
新的 passwordAdminSkipInfoUpdate: on/off
配置选项现在可用
您可以在 cn=config
条目下添加一个新的 passwordAdminSkipInfoUpdate: on/off
设置,以对密码管理员执行的密码更新提供精细控制。当您启用此设置时,密码更新不会更新某些属性,例如 passwordHistory
,passwordExpirationTime
,passwordRetryCount
,pwdReset
和 passwordExpWarned
。
4.11. 图形基础结构
现在完全支持 Intel Arc A 系列图形
以前作为技术预览提供的 Intel Arc A 系列图形(Alchemist 或 DG2)功能现在被完全支持。Intel Arc A 系列图形是一个启用了硬件加速的 GPU,主要用于 PC 游戏。
有了这个版本,您不再需要设置 i915.force_probe
内核选项,并且默认启用对这些 GPU 的全面支持。
Bugzilla:2041686[1]
4.12. Web 控制台
Podman 健康检查操作现在可用
您可以在创建新容器时选择以下 Podman 健康检查操作之一:
- No action(默认):不执行任何操作。
- Restart: 重启容器。
- Stop :停止容器。
- Force stop :强制停止容器,它不会等待容器退出。
Jira:RHELDOCS-16247[1]
Web 控制台的帐户页更新
此更新在 Accounts 页中引入了以下更新:
- 现在,可以在帐户创建过程中添加自定义用户 ID,并定义主目录和 shell。
- 在创建帐户时,密码验证会对每次击键操作主动执行检查。另外,对弱密码现在会显示一个警告。
- 帐户详细信息页现在显示帐户的主目录和 shell。
- 可以从帐户详情页更改 shell。
Jira:RHELDOCS-16367[1]
4.13. Red Hat Enterprise Linux 系统角色
postgresql
RHEL 系统角色现在可用
新的 postgresql
RHEL 系统角色安装、配置、管理和启动 PostgreSQL
服务器。角色还优化了数据库服务器设置,以提高性能。
角色支持 RHEL 8 和 RHEL 9 管理的节点上 PostgreSQL
的当前发布的和支持的版本。
如需更多信息,请参阅使用 postgresql RHEL 系统角色安装和配置 PostgreSQL。
keylime_server
RHEL 系统角色
使用新的 keylime_server
RHEL 系统角色,您可以使用 Ansible playbook 在 RHEL 9 系统上配置 verifier 和 registrar Keylime 组件。Keylime 是一个使用可信平台模块(TPM)技术的远程机器验证工具。
支持新的 ha_cluster
系统角色功能
ha_cluster
系统角色现在支持以下功能:
- 资源配置和资源操作默认值,包括带有规则的多个默认值集合。
- 加载和阻止 SBD watchdog 内核模块。这使得安装的硬件 watchdog 可供集群使用。
-
向集群主机和仲裁设备分配不同的密码。因此,您可以配置一个部署,其中同一仲裁主机被加入到多个独立的集群,这些集群上的
hacluster
用户的密码不一样。
有关您配置用于实现这些功能的参数的详情,请参考 使用 ha_cluster
RHEL 系统角色配置高可用性集群。
Bugzilla:2190483,Bugzilla:2190478,Bugzilla:2216485
storage
系统角色支持为 RAID LVM 卷配置条带大小
有了此更新,您可以在创建 RAID LVM 设备时指定自定义条带大小。为了更好的性能,请为 SAP HANA 使用自定义条带大小。建议的 RAID LVM 卷的条带大小为 64 KB。
Podman
RHEL 系统角色现在支持 Quadlets、healthchecks 和 secret
从 Podman 4.6 开始,您可以在 podman
RHEL 系统角色中使用 podman_quadlet_specs
变量。您可以通过指定一个单元文件来定义一个 Quadlet,或按名称、单元类型和规范在清单中定义一个 Quadlet。单元类型可以是以下:container
、kube
、network
和 volume
。请注意,Qadlets 仅适用于 RHEL 8 上的 root 容器。Quadlets 适用于 RHEL 9 上的无根容器。
healthcheck 只支持 Quadlet 容器类型。在 [Container]
部分中,指定 HealthCmd
字段来定义 healthcheck 命令和 HealthOnFailure
字段,以在容器不健康时定义操作。可能的选项为 none
,kill
,restart
和 stop
。
您可以使用 podman_secrets
变量来管理 secret。详情请查看 上游文档。
Jira:RHELPLAN-154440[1]
RHEL 系统角色现在对挂载点自定义有新的卷选项
有了此更新,您现在可以为挂载目录指定 mount_user
、mount_group
和 mount_permissions
参数。
kdump
RHEL 系统角色更新
kdump
RHEL 系统角色已更新至更新的版本,其带来以下值得注意的改进:
-
安装
kexec-tools
后,工具套件不再产生/etc/sysconfig/kdump
文件,因为您不再需要管理此文件。 -
角色支持
auto_reset_crashkernel
和dracut_args
变量。
如需了解更多详细信息,请参阅 /usr/share/doc/rhel-system-roles/kdump/
目录中的资源。
ad_integration
RHEL 系统角色现在可以重新加入 AD 域
有了此更新,您可以使用 ad_integration
RHEL 系统角色重新加入活动目录(AD)域。为此,请将 ad_integration_force_rejoin
变量设置为 true
。如果 realm_list
输出显示该主机已在一个 AD 域中,则它将在重新加入前离开现有域。
rhc
系统角色现在支持设置代理服务器类型
rhc_proxy
参数下新引入的属性 scheme
使您可以使用 rhc
系统角色来配置代理服务器类型。您可以设置两个值:http
默认值和 https
。
ssh
角色中禁用配置备份的新选项
现在,您可以通过将新的 ssh_backup
选项设置为 false
来防止旧配置文件被覆盖前备份它们。在以前的版本中,备份配置文件是自动创建的,这可能不是必需的。ssh_backup
选项的默认值为 true
,其保留原始行为。
certificate
RHEL 系统角色现在在使用 certmonger
时允许更改证书文件模式
在以前的版本中,由具有 certmonger
提供者的 certificate
RHEL 系统角色创建的证书使用默认的文件模式。但是,在某些用例中,您可能需要更严格的模式。有了此更新,您现在可以使用 mode
参数设置一个不同的证书和密钥文件模式。
用于管理 systemd
单元的新的 RHEL 系统角色
rhel-system-role
软件包现在包含 systemd
RHEL 系统角色。您可以使用此角色来部署单元文件,并在多个系统上管理 systemd
单元。您可以通过提供 systemd
单元文件和模板,并通过指定这些单元的状态(如 started、stoped、masked 和其他)来自动化 systemd
功能。
network
RHEL 系统角色支持 no-aaaa
DNS 选项
现在,您可以使用 no-aaaa
选项在受管节点上配置 DNS 设置。在以前的版本中,没有选项来抑制 stub 解析器生成的 AAAA 查询,包括由基于 NSS 的接口(如 getaddrinfo
)触发的 AAAA 查找;只有 DNS 查找受到影响。有了这个增强,您可以压制由 stub 解析器产生的 AAAA 查询。
network
RHEL 系统角色支持 auto-dns
选项,来控制自动 DNS 记录更新
此功能增强为定义的名称服务器和搜索域提供支持。现在,您只能使用 dns
和 dns_search
属性中指定的名称服务器和搜索域,同时禁用自动配置的名称服务器和搜索域,如 DHCP 中的 dns record
。有了这个增强,您可以通过更改 auto-dns
设置来禁用自动 dns 记录。
firewall
RHEL 系统角色支持与 ipset
相关的变量
有了 firewall
RHEL 系统角色的这个更新,您可以定义、修改和删除 ipset
。您还可以从防火墙区中添加和删除 ipset
。或者,您可以在定义防火墙富规则时使用这些 ipset
。
您可以使用以下变量,使用 firewall
RHEL 系统角色管理 ipset
:
-
ipset
-
ipset_type
-
ipset_entries
-
short
-
description
-
state: present
或state: absent
-
permanent: true
以下是此改进的一些显著优点:
- 您可以降低为许多 IP 地址定义规则的富规则的复杂度。
- 您可以根据需要从集合中添加或删除 IP 地址,而无需修改多个规则。
如需了解更多详细信息,请参阅 /usr/share/doc/rhel-system-roles/firewall/
目录中的资源。
使用 restorecon -T 0
提高了 selinux
系统角色的性能
在所有适用的情况下,selinux
系统角色现在将 -T 0
选项和 restorecon
命令一起使用。这提高了在文件上恢复默认的 SELinux 安全上下文的任务的性能。
firewall
RHEL 系统角色有一个禁用冲突服务的选项,如果 firewalld
被屏蔽,它不再失败
在以前的版本中,当角色运行时 firewalld
被屏蔽或存在冲突服务时,firewall
系统角色失败。这个更新引入了两个显著改进:
linux-system-roles.firewall
角色总是尝试在角色运行时安装、取消屏蔽,以及启用 firewalld
服务。您现在可以在 playbook 中添加一个新的变量 firewall_disable_conflicting_services
,来禁用已知的冲突服务,如 iptables.service
、nftables.service
和 ufw.service
。firewall_disable_conflicting_services
变量默认被设置为 false
。要禁用冲突服务,请将变量设置为 true
。
podman
RHEL 系统角色现在使用 getsubids
获取子指南和子gid
podman
RHEL 系统角色现在使用 getsubids
命令分别获取用户和组的 subuid 和 subgid 范围。podman
RHEL 系统角色也使用这个命令来验证用户和组是否与身份管理一起使用。
Jira:RHEL-866[1]
podman_kube_specs
变量现在支持 pull_image
和 continue_if_pull_fails
字段
podman_kube_specs
变量现在支持新字段:
-
pull_image
:确保镜像在使用前被拉取(pull)。默认值为true
。如果您有一些其他机制来确保镜像在系统上存在,且您不想拉取镜像,请使用false
。 -
continue_if_pull_fails
:如果拉取镜像失败,它不会被视为一个致命错误,并使用角色继续执行。默认值为false
。如果您有一些其他机制来确保正确的镜像在系统上存在,请使用true
。
Jira:RHEL-858[1]
重置 firewall
RHEL 系统角色配置现在需要较少的停机时间
在以前的版本中,当使用 previous: replaced
变量重置 firewall
角色配置时,firewalld
服务会重启。重启会增加停机时间并延长打开连接的时间,在此期间,firewalld
不会阻止来自活跃连接的流量。有了这个增强,firewalld
服务通过重新加载而不是重启来完成配置重置。重新加载最小化了停机时间,并减少了绕过防火墙规则的机会。因此,使用 previous: replaced
变量重置 firewall
角色配置现在需要最少的停机时间。
4.14. 云环境中的 RHEL
cloud-init 支持 NetworkManager keyfiles
有了此更新,cloud-init
工具可以使用 NetworkManager (NM) keyfile 来配置创建的云实例的网络。
请注意,默认情况下,cloud-init
仍然使用 sysconfig
方法来进行网络设置。要将 cloud-init
配置为使用 NM keyfile,请编辑 /etc/cloud/cloud.cfg
,并将 network-manager
设置为主网络呈现器:
# cat /etc/cloud/cloud.cfg network: renderers: ['network-manager', 'eni', 'netplan', 'sysconfig', 'networkd']
Bugzilla:2219528[1]
cloud-init
现在默认使用 ESXi 上的 VMware 数据源
在使用 VMware ESXi hypervisor (如 VMware vSphere 云平台)的主机上创建 RHEL 虚拟机(VM)时。这提高了使用 cloud-init
创建 RHEL 的 ESXi 实例的性能和稳定性。但请注意,ESXi 仍与 Open Virtualization Format (OVF)数据源兼容,如果 VMware 数据源不可用,您可以使用 OVF 数据源。
Bugzilla:2230777[1]
4.15. 支持性
sos
rebase 到版本 4.6
用于收集配置、诊断和故障排除数据的 sos
工具已 rebase 到版本 4.6。这个版本提供了以下改进:
-
sos
报告现在包含/boot/grub2/custom.cfg
和/boot/grub2/user.cfg
文件的内容,它们可能包含对引导问题进行故障排除的重要信息。(BZ#2213951) -
OVN-Kubernetes 的
sos
插件为互连环境收集额外的日志。有了此更新,当ovnkube-node
和ovnkube-controller
容器合并为一个时,sos
也从ovnkube-controller
容器收集日志。
另外,重要的 bug 修复包括:
-
sos
现在在 OpenShift Container Platform 4 环境中正确收集cgroup
数据(BZ#2186361)。 -
在收集启用了
sudo
插件的sos
报告时,sos
现在正确地删除了bindpw
选项。(BZ#2143272) -
subscription_manager
插件不再从/var/lib/rhsm/
路径收集代理用户名和密码。(BZ#2177282) -
virsh
插件不再收集 virt-manager 日志中的 SPICE 远程-显示密码,这阻止了sos
在其报告中披露密码。(BZ#2184062) sos
现在屏蔽了之前在/var/lib/iscsi/nodes/<IQN>/<PortalIP>/default
文件中显示的用户名和密码。重要生成的存档可能包含被视为敏感的数据。因此,在将其传递给任何第三方之前,您应该始终检查内容。
(BZ#2187859)
-
即使日志文件的大小超了,且插件超时了,
sos
也会完成尾部日志收集。(BZ#2203141) -
当在 Pacemaker 集群节点上输入
sos collect
命令时,sos
会从同一集群节点收集 sos 报告。(BZ#2186460) -
当从 OpenShift Container Platform 4 环境中的主机收集数据时,
sos
现在使用sysroot
路径,这样可保证只组装正确的数据。(BZ#2075720) -
sos report --clean
命令按预期模糊所有 MAC 地址。(BZ#2207562) -
禁用
hpssm
插件不再引起异常。(BZ#2216608) -
sos clean
命令遵循已清理文件的权限。(BZ#2218279)
有关 sos
的每个发行版本的详情,请参阅 上游发行注记。
Jira:RHELPLAN-156196[1]
4.16. 容器
Podman 支持拉取和推送 zstd 压缩的镜像
您可以拉取和推送使用 zstd
格式压缩的镜像。zstd 压缩比 gzip 效率更高,更快。它可以减少拉取和推送镜像所需的网络流量和存储量。
Jira:RHELPLAN-154313[1]
Podman 中的 Quadlet 现在可用
从 Podman v4.6 开始,您可以使用 Quadlet 从容器描述中自动生成一个 systemd
服务文件。Quadlets 可能比 podman generate systemd
命令更容易使用,因为描述侧重于相关的容器详情,且没有在 systemd
下运行容器的技术复杂性。请注意,Qadlets 仅适用于有根容器。
如需了解更多详细信息,请参阅 Quadlet 上游文档 和 使用 Quadlet 使 systemd 更好地用于 Podman 文章。
Jira:RHELPLAN-154431[1]
Container Tools 软件包已更新
现在提供更新的 Container Tools 软件包,其包括 Podman、Buildah、Skopeo、crun 和 runc 工具。与之前的版本相比,这个版本应用了一系列 bug 修复和增强。
Podman v4.6 中的显著变化包括:
-
podman kube play
命令现在支持--configmap=<path>
选项,来为 Kubernetes YAML 文件提供 pod 容器中使用的环境变量。 -
podman kube play
命令现在支持--configmap
选项的多个 Kubernetes YAML 文件。 -
podman kube play
命令现在支持存活度探测中的 containerPort 名称和端口号。 -
podman kube play
命令现在将 ctrName 作为别名添加到 pod 网络。 -
podman kube play
和podman kube generate
命令现在支持 SELinux 文件类型标签和 ulimit 注解。 -
添加了一个新命令
podman secret exists
,它验证具有指定名称的 secret 是否存在。 -
podman create
,podman run
,podman pod create
和podman pod clone
命令现在支持一个新选项--shm-size-systemd
,它允许限制特定于 systemd 挂载的 tmpfs 的大小。 -
podman create
和 podman run 命令现在支持一个新选项--security-opt label=nested
,它允许在受限容器中进行 SELinux 标记。 - Podman 现在支持对在 pod 内运行的容器进行自动更新。
-
Podman 现在可以使用 SQLite 数据库作为后端,来提高稳定性。默认保留 BoltDB 数据库。您可以通过在
containers.conf
文件中设置database_backend
字段来选择数据库。 -
Podman 现在支持 Quadlets 从容器描述中自动生成一个
systemd
服务文件。该描述侧重于相关的容器详情,隐藏了在systemd
下运行容器的技术复杂性。
有关显著变化的详情,请查看 上游发行注记。
Jira:RHELPLAN-154443[1]
Podman 现在支持 Podmansh 登录 shell
从 Podman v4.6 开始,您可以使用 Podmansh
登录 shell 管理用户访问权限和控制。要切换到 CGroups v2,请将 systemd.unified_cgroup_hierarchy=1
添加到内核命令行。配置用户的设置,以使用 /usr/bin/podmansh
命令作为登录 shell ,而不是标准的 shell 命令,例如 /usr/bin/bash
。当用户登录到系统设置时,podmansh
命令在名为 podmansh
的 Podman 容器中运行用户的会话。用户登录的容器是使用 Quadlet 文件定义的,这些文件是在 /etc/containers/systemd/users/
目录中创建的。在这些文件中,将 [Container]
部分中的 ContainerName
字段设置为 podmansh
。当用户会话启动时,systemd 会自动启动 podmansh
,并继续运行,直到所有用户会话退出为止。
如需更多信息,请参阅 Podman v4.6.0 引入了 Podmansh: 革命性的登录 Shell。
Jira:RHELPLAN-163002[1]
现在,可提供带有 Fulcio 和 Rekor 的 sigstore 签名的客户端
有了 Fulcio 和 Rekor 服务器,您现在可以根据 OpenID Connect (OIDC)服务器身份验证使用短期证书来创建签名,而不是手动管理私钥。以前作为技术预览提供的具有 Fulcio 和 Rekor 的 sigstore 签名的客户端现在完全支持。这个添加的功能只是客户端侧支持,不包括 Fulcio 或 Rekor 服务器。
在 policy.json
文件中添加 fulcio
部分。要签署容器镜像,请使用 podman push --sign-by-sigstore=file.yml
或 skopeo copy --sign-by-sigstore=file.yml
命令,其中 file.yml
是 sigstore 签名参数文件。
要验证签名,请在 policy.json
文件中添加 fulcio
部分和 rekorPublicKeyPath
或 rekorPublicKeyData
字段。如需更多信息,请参阅 containers-policy.json
手册页。
Jira:RHELPLAN-160659[1]
第 5 章 对外部内核参数的重要更改
本章为系统管理员提供了 Red Hat Enterprise Linux 8.9 附带的内核中显著变化的总结。这些更改包括添加或更新的 proc
条目、sysctl
和 sysfs
默认值、引导参数、内核配置选项或者任何可见的行为更改。
新内核参数
- gather_data_sampling=[X86,INTEL]
使用这个内核参数,您可以控制 Gather Data Sampling (GDS)缓解。
(GDS)是一个硬件漏洞,其允许对之前存储在向量寄存器中的数据进行非特权推测访问。
默认情况下,此问题在更新的微码中被缓解。缓解可能会有性能影响,但可以被禁用。在没有微码缓解的系统上,禁用 AVX 服务器作为一种缓解。可用值包括:
-
force
:禁用 AVX ,以缓解没有微码缓解的系统。如果存在微码缓解,则无效。已知在带有 bug 的 AVX 枚举用户空间中会导致崩溃。 -
off
:禁用 GDS 缓解。
-
- rdrand=[X86]
使用这个内核参数,您可以隐藏 RDRAND 支持的广告。这会影响某些 AMD 处理器,因为 BIOS 支持有 bug,特别是围绕挂起或恢复路径。
-
force
:覆盖内核的决定,来隐藏 RDRAND 支持的广告。
-
更新的内核参数
- intel_pstate=[X86]
您可以为 CPU 性能扩展使用此内核参数。可用值包括:
-
disable
- 不启用intel_pstate
作为支持的处理器的默认扩展驱动程序。 -
[NEW]
active
- 使用intel_pstate
驱动程序绕过cpufreq
的扩展调控层,并为 p-state 选择提供自己的算法。在 active 模式下,intel_pstate
提供两种 P-state 选择算法:powersave 和 performance。它们运行的方式取决于硬件管理的 P-states (HWP)功能是否已在处理器中启用了,并可能在处理器型号上也启用了。 -
passive
- 使用intel_pstate
作为扩展驱动程序,但将其配置为与通用cpufreq
调控一起工作(而不是启用其内部调控)。这个模式不能与硬件管理的 P-states (HWP)功能一同使用。 -
force
- 在默认禁止它,而使用acpi-cpufreq
的系统上启用intel_pstate
。强制intel_pstate
驱动程序而不是acpi-cpufreq
可能会禁用平台功能,如热控制和功率封顶,这依赖指示给 OSPM 的 ACPI P-States 信息,因此应谨慎使用。这个选项不能与intel_pstate
驱动程序不支持的处理器一起工作,或不能在使用pcc-cpufreq
而不是acpi-cpufreq
的平台上工作。 -
no_hwp
- 不启用硬件 P 状态控制(HWP)(如果可用)。 -
hwp_only
- 仅在支持硬件 P 状态控制(HWP)的系统上加载intel_pstate
(如果可用)。 -
support_acpi_ppc
- 强制ACPI _PPC
性能限制。如果 Fixed ACPI Description Table 将首选的电源管理配置文件指定为 "Enterprise Server" 或 " Performance Server",则默认打开此功能。 -
per_cpu_perf_limits
- 使用cpufreq sysfs
接口允许每个逻辑 CPU P-State 性能控制限制。
-
- rdt=[HW,X86,RDT]
使用这个内核参数,您可以打开或关闭单个 RDT 功能。列表包括:
cmt
,mbmtotal
,mbmlocal
,l3cat
,l3cdp
,l2cat
,l2cdp
,mba
,[NEW]smba
,[NEW]bmec
.例如,要打开
cmt
并关闭mba
,请使用:rdt=cmt,!mba
- tsc=[x86]
使用这个内核参数,您可以禁用对 TSC 的时钟源稳定性检查。这个参数采用的格式是:
<string>
。-
reliable
:将 tsc 时钟源标记为 reliable,这会在运行时禁用时钟源验证,以及引导时所做的稳定性检查。用于对较旧的硬件和在虚拟化环境中启用高分辨率计时器模式。 -
noirqtime
: 不要使用 TSC 来进行irq
核算。用于在 RDTSC 较慢的任何平台上运行时禁用IRQ_TIME_ACCOUNTING
,这个核算可能会增加开销。 -
unstable
: 将 TSC 时钟源标记为 unstable,这会在引导时将 TSC 标记为 unconditionly unstable ,并避免在 TSC watchdog 通知后出现任何进一步的混乱。 -
nowatchdog
: 禁用时钟源 watchdog。在具有严格的延迟要求的情况下使用(其中来自时钟源 watchdog 的中断是不可接受的)。 -
recalibrate
: 强制在其 TSC 频率是从使用 MSR or CPUID(0x15)的 HW 或 FW 获得的系统上对 HW 计时器(HPET 或 PM 计时器)进行强制重新校准。如果差别超过 500 ppm,则警告。
-
新的 sysctl 参数
- nmi_wd_lpm_factor=(仅限 PPC)
应用到 NMI watchdog 超时的因素(仅在
nmi_watchdog
设置为1
时)。这个因素代表了在 LPM 过程中计算 NMI watchdog 超时时添加到watchdog_thresh
的百分比。软锁定超时不会受到影响。-
值
0
表示没有更改。 -
默认值为
200
表示 NMI watchdog 设置为 30s (基于watchdog_thresh
等于 10)。
-
值
- txrehash
使用这个内核参数,您可以控制对套接字的默认哈希 rethink 行为。
-
如果设为
1
(默认),则在侦听套接字上执行哈希 rethink。 -
如果设为
0,
则不会执行哈希 rethink。
-
如果设为
第 6 章 设备驱动程序
6.1. 新驱动程序
网络驱动程序
-
Thunderbolt/USB4 网络驱动程序(
thunderbolt_net
) -
Broadcom 802.11 无线 LAN fullmac 驱动程序(
brcmfmac
)(仅在 64 位 ARM 架构中)
图形驱动程序和各种驱动程序
-
MediaTek 设备版本 0.1的蓝牙支持 (
btmtk
),仅在 IBM Power Systems、Little Endian、AMD 和 Intel 64 位构架中 -
DRM Buddy Allocator (
drm_buddy
),仅在 64 位 IBM Z 架构中 -
DRM 显示适配器帮助程序(
drm_display_helper
),仅在 64 位 IBM Z 架构中 -
Microsoft Azure Network Adapter IB 驱动程序(
mana_ib
),仅在 AMD 和 Intel 64 位构架中 -
Linux USB 视频类驱动程序(
uvc
)(仅在 IBM Power Systems、Little Endian、AMD 和 Intel 64 位构架中 -
Intel Meteor Lake PCH pinctrl/GPIO 驱动程序(
pinctrl-meteorlake
),仅在 AMD 和 Intel 64 位构架中 -
Intel In Field Scan (IFS)设备(
intel_ifs
),仅在 AMD 和 Intel 64 位构架中 -
Intel Uncore Frequency 通用模块(
intel-uncore-frequency-common
),仅在 AMD 和 Intel 64 位构架中 -
Intel Uncore Frequency Limits 驱动程序 (
intel-uncore-frequency
),仅在 AMD 和 Intel 64 位构架中 -
AMD SoundWire 驱动程序(
soundwire-amd
),仅在 AMD 和 Intel 64 位构架中 -
DisplayPort Alternate 模式 (
typec_displayport
),仅在 64 位 ARM 架构、IBM Power Systems、Little Endian 和 AMD 和 Intel 64 位构架中 -
virtio-mem 驱动程序(
virtio_mem
),仅在 AMD 和 Intel 64 位构架中
6.2. 更新的驱动程序
网络驱动程序更新
-
Realtek RTL8152/RTL8153 Based USB Ethernet Adapters (
r8152
)已更新至版本 v1.12.13(只在 64 位 ARM 架构、IBM Power Systems、Little Endian 和 AMD 和 Intel 64 位构架中)
以下驱动程序已更新至 4.18.0-513.5.1 内核版本 :
-
Intel® 10 Gigabit PCI Express Network Driver (
ixgbe
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架 -
Intel® 10 Gigabit Virtual Function Network Driver (
ixgbevf
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架 -
Intel® 2.5G Ethernet Linux Driver (
igc
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架 -
Intel® Ethernet Adaptive Virtual Function Network Driver (
iavf
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架 -
Intel® Ethernet Connection XL710 Network Driver (
i40e
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架 -
Intel® Ethernet Switch Host Interface Driver (
fm10k
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、AMD 以及 Intel 64 位构架 -
Intel® Gigabit Ethernet Network Driver (
igb
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架 -
Intel® Gigabit Virtual Function Network Driver (
igbvf
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架 -
Intel® PRO/1000 网络驱动程序(
e1000e
),仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架 -
Mellanox 第 5 代网络适配器(ConnectX series) core 驱动程序 (
mlx5_core
) -
Netronome Flow Processor (NFP)驱动程序(
nfp
)
图形、存储和各种驱动程序更新
-
Broadcom MegaRAID SAS 驱动程序(
megaraid_sas
)已更新至版本 07.725.01.00-rc1(仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、 AMD 以及 Intel 64 位构架) -
Microchip Smart Family Controller 版本的驱动程序(
smartpqi
)已更新至版本 2.1.22-040(仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、AMD 以及 Intel 64 位构架) -
Emulex LightPulse Fibre Channel SCSI 驱动程序(
lpfc
)已更新至版本 0:14.0.0.21 (仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、AMD 以及 Intel 64 位构架) -
MPI3 Storage Controller Device Driver (
mpi3mr
)已更新至版本 8.4.1.0.0(只适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、AMD 以及 Intel 64 位构架中) -
QLogic Fibre Channel HBA 驱动程序(
qla2xxx
)已更新至版本 10.02.08.200-k(仅适用于 64 位 ARM 架构、IBM Power Systems、Little Endian 、AMD 以及 Intel 64 位构架)
第 7 章 可用的 BPF 功能
本章提供了这个 Red Hat Enterprise Linux 8 次版本的 kernel 中 Berkeley Packet Filter
(BPF
)功能的完整列表。表包括以下列表:
本章包含 bpftool feature
命令自动生成的输出。
选项 | 值 |
---|---|
unprivileged_bpf_disabled | 1 (bpf()系统调用限制为特权用户,无需恢复。) |
JIT 编译器 | 1(启用) |
JIT 编译器强化 | 1(为非特权用户启用) |
JIT 编译器 kallsyms 导出 | 1(为 root 用户启用) |
非特权用户的 JIT 的内存限制 | 264241152 |
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 | 否 |
第 8 章 程序错误修复
这部分论述了 Red Hat Enterprise Linux 8.9 中修复的对用户有严重影响的 bug。
8.1. 安装程序和镜像创建
liveimg
的 --noverifyssl
选项不再检查服务器的使用 HTTPS 下载的镜像的证书
在以前的版本中,安装程序忽略 liveimg
kickstart 命令的 --noverifyssl
选项。因此,如果无法验证服务器的使用 HTTPS 协议下载的镜像的证书,安装过程会失败。有了这个更新,这个问题已被解决,liveimg
kickstart 命令的 --noverifyssl
选项可以按预期工作。
8.2. 安全性
从 NFS 文件系统引导现在可以在 SELinux 设置为 enforcing 模式的情况下工作
在以前的版本中,当使用 NFS 作为 root 文件系统时,SELinux 标签不会从服务器转发,从而导致 SELinux 设置为 enforcing 模式时引导失败。
有了此修复,SELinux 已被修复为在初始 SELinux 策略作为支持安全标签加载前,正确标记创建的 NFS 挂载。因此,NFS 挂载现在可以在服务器和客户端之间转发 SELinux 标签,引导可以在 SELinux 设置为 enforcing 模式的情况下成功。
Bugzilla:1753646[1]
现在,自动屏幕锁定可以正常工作,即使删除了 USB 智能卡读卡器,
在 RHEL 8.9 之前,opensc
软件包不能正确处理删除 USB 智能卡读卡器。因此,即使 GNOME 显示管理器(GDM)被配置为在删除智能卡时锁定屏幕,系统仍保持解锁。另外,重新连接 USB 读卡器后,在删除智能卡后,屏幕也不会锁定。在本发行版本中,用于处理删除 USB 智能卡读卡器的代码已被修复。因此,屏幕被正确锁定,即使智能卡或 USB 智能卡读卡器被删除了。
SCAP enable_fips_mode
规则现在仅在 64 位 IBM Z 构架上检查 fips=1
在以前的版本中,SCAP 安全指南规则 enable_fips_mode
确实检查 /boot/grub2/grubenv
文件的内容。因此,64 位 IBM Z 架构没有对 FIPS 模式使用 /boot/grub2/grubenv
文件。有了此更新,OVAL 规则 enable_fips_mode
现在测试 Linux 内核的参数 fips=1
是否在 64 位 IBM Z 架构上的 /boot/loader/entries/rhcs.conf
文件中存在。
SCAP journald
规则不再修复无效的配置
在以前的版本中,SCAP 安全指南规则 journald_compress
、journald_forward_to_syslog
和 journald_storage
在补救脚本中包含一个 bug,其在 /etc/systemd/journald.conf
配置文件中向相应的选项添加了额外的引号。因此,journald
服务无法解析配置选项,并忽略它们。因此,配置选项无效,OpenSCAP 报告假的通过结果。有了此更新,规则和补救脚本已被修复,不会添加额外的引号。规则现在为 journald
创建了一个有效的配置。
现在可以使用安全配置文件配置镜像
配置挂载点选项的 SCAP 安全指南规则已重新制定,现在您还可以在镜像构建器中构建操作系统镜像时使用它们来强化镜像。因此,您现在可以使用与特定安全配置文件一致的分区配置来构建镜像。
从与 AIDE 配置相关的 SSG 规则中删除严格的要求
在以前的版本中,SCAP 安全指南(SSG)规则 aide_build_database
需要存在 /var/lib/aide/aide.db.new.gz
和 /var/lib/aide/aide.db.gz
文件才能通过。因为 AIDE
工具不需要 /var/lib/aide/aide.db.new.gz
文件,所以这个更新从 aide_build_database
规则中删除了相应的要求。因此,该规则只需要 /var/lib/aide/aide.db.gz
文件就能通过。
此外,SCAP 安全指南规则 aide_periodic_cron_checking
现在对 /etc/cron.daily
和 /etc/cron.weekly
文件中的条目不太严格。现在,您可以使用额外的包装程序调度 aide --check
命令,同时遵守规则。
与 pam_faillock
相关的 SCAP 规则有正确的描述
在以前的版本中,与 pam_faillock
相关的 SCAP 安全指南规则包含与一些配置文件值不一致的描述。因此,描述不正确。有了此更新,规则描述现在使用 XCCDF 变量。
这个更改会影响以下规则:
-
accounts_passwords_pam_faillock_deny
-
accounts_passwords_pam_faillock_interval
-
accounts_passwords_pam_faillock_dir
-
accounts_passwords_pam_faillock_unlock_time
当挂载 /boot/efi
时,file_permissions_efi_user_cfg
SCAP 规则不再失败
在以前的版本中,UEFI 文件的默认权限不被接受。因此,当 /boot/efi
分区使用虚拟文件分配表(VFAT)文件系统时,不可能使用 chmod
命令更改权限。因此,file_permissions_efi_user_cfg
规则失败。此更新将默认权限从 0600
改为 0700
。因为 CIS 也接受 0700
权限,所以评估和补救现在与 CIS 配置文件很好地保持一致。
SSG 补救现在与 configure_openssl_cryptopolicy
保持一致
在以前的版本中,SCAP 安全指南(SSG)补救向 opensslcnf.config
文件中添加了 =
字符。此语法与 configure_openssl_cryptopolicy
规则的描述不匹配。因此,在向 opensslcnf.config
插入 .include =
而不是 .include
的补救后,合规性检查可能会失败。有了这个版本,补救脚本与规则描述保持一致,使用 configure_openssl_cryptopolicy
的 SSG 补救不再因为额外的 =
而失败。
postfix_prevent_unrestricted_relay
规则现在接受 =
符号周围的空格
在以前的版本中,SCAP 规则 xccdf_org.ssgproject.content_rule_postfix_prevent_unrestricted_relay
的 OVAL 检查太严格,它不考虑在 =
符号周围包含空格的 postconf
配置赋值语句。因此,即使对技术上满足规则要求的配置,最终报告也将此规则报告为失败。有了此更新,规则被修改了,检查接受 =
符号周围有空格的语句。现在,对于正确的配置语句,最终的报告规则将此规则标记为通过。
SCAP 规则现在正确地评估 /var/log
和 /var/log/audit
分区是否存在
在以前的版本中,一些与 /var/log
和 /var/log/audit
分区相关的 SCAP 规则会被评估和修复,即使合适的磁盘分区不存在。这会影响以下规则:
-
mount_option_var_log_audit_nodev
-
mount_option_var_log_audit_noexec
-
mount_option_var_log_audit_nosuid
-
mount_option_var_log_nodev
-
mount_option_var_log_noexec
-
mount_option_var_log_nosuid
因此,这些规则会被评估,并在最终报告中被错误地报告为失败,即使目录 /var/log
或 /var/log/audit
不是单独分区的挂载点。此更新添加了一个适用性检查,来确定 /var/log
或 /var/log/audit
是否为单个分区的挂载点。因此,当目录不是单个分区的挂载点时,规则不会在配置中被评估,规则在最终报告中被标记为 notapplicable
。
SCAP 规则 accounts_passwords_pam_faillock_interval
现在涵盖新的 STIG ID
在以前的版本中,SCAP 安全指南规则 accounts_passwords_pam_faillock_interval
没有涵盖 RHEL-08-020012 和 RHEL-08-020013。因此,规则 accounts_passwords_pam_faillock_interval
检查所有这三个文件中的 faillock
配置:/etc/pam.d/password-auth
,/etc/pam.d/system-auth
和 /etc/security/faillock.conf
。有了此更新,规则现在涵盖 STIG ID RHEL-08-020012 和 RHEL-08-020013。
Red Hat CVE 源已更新
红帽常见漏洞和披露(CVE)源版本 1 (CVE) https://access.redhat.com/security/data/oval/ 已下架,并被 https://access.redhat.com/security/data/oval/v2/ 的 CVE 源版本 2 所替代。
因此,scap-security-guide
软件包提供的 SCAP 源数据流中的链接已更新为链接到 Red Hat CVE 源的新版本。
wget
工具在访问受限资源时不再使 TLS 握手失败
在以前的版本中,当在 TLS 中启用了基于票据的会话恢复时,wget
工具预期恢复一个 TLS 会话,即使服务器要求客户端重新验证以访问受限资源。这个行为会导致 wget
使第二个 TLS 握手失败。有了此更新,wget
可以正确发起一个新的握手,对受限资源的访问不再失败。
pam_cap
中的设置被正确地应用到 SELinux 的系统
在以前的版本中,SELinux 策略不包含用于 pam_cap
模块的规则。因此,当使用 ssh
或控制台登录时,在/etc/security/capability.conf
配置文件中将 pam_cap
控制的登录功能授予用户无法正常工作。此更新在策略中添加了一个新规则。因此,在 /etc/security/capability.conf
中授予能力现在可以正常工作,登录时会考虑使用 pam_cap
配置的用户能力。
systemd-fsck-root
服务现在在启用了 SELinux 的系统上可以被正确标记
在以前的版本中,/run/fsck
目录是由 systemd-fsck-root
服务或 fsck
命令创建的,但 SELinux 策略不包含用于正确标记目录的规则。因此,systemd-fsck-root
服务无法正常工作。有了此更新,/run/fsck
的正确标签和文件转换被添加到策略中。因此,systemd-fsck-root
服务可以正常工作,而不报告错误。
Bugzilla:2184348[1]
SELinux 策略现在允许 D-Bus 上的双向通信
在以前的版本中,SELinux 策略包含只允许 D-Bus 消息总线系统上两个域之间单向通信的规则。但是,此类通信在两个方向上都必须被允许。当 Pacemaker 高可用性集群资源管理器执行 hostnamectl
或 timedatectl
命令时也会发生这种情况。因此,Pacemaker 执行的这些命令会超时,而没有收到 D-Bus 上的响应,因为 SELinux 阻止了它。对 SELinux 策略的此更新允许 D-Bus 上的双向通信。因此,需要 D-Bus 上双向通信的由 Pacemaker 执行的命令可以成功完成。
tangd-keygen
现在可以正确地处理非默认 umask
在以前的版本中,tangd-keygen
脚本不会更改生成的密钥文件的文件权限。因此,在具有阻止其他用户读取密钥的默认用户文件创建模式掩码(umask
)的系统上,tang-show-keys
命令会返回错误消息 Internal Error 500
,而不是显示密钥。有了这个更新,tangd-keygen
为生成的密钥文件设置文件权限,因此脚本现在可以在具有非默认 umask
的系统上正常工作。
Clevis 现在处理 SHA-256 指纹
在此更新之前,Clevis 客户端无法识别通过 thp
配置选项指定的 SHA-256 指纹。因此,客户端没有绑定到使用 SHA-256 指纹的 Tang 服务器,每个对应的 clevis encrypt tang
命令都会报告一个错误。有了此更新,Clevis 使用 SHA-256 识别指纹,并正确处理它们。因此,Clevis 客户端不仅可以使用 SHA-1 绑定到 Tang 服务器,还可以使用 SHA-256 指纹绑定到 Tang 服务器。
Rsyslog 即使没有能力也可以启动
当 Rsyslog 以普通用户或在容器化环境中执行时,rsyslog
进程没有能力。因此,在这种情况下 Rsyslog 无法丢弃能力,并在启动时退出。有了此更新,如果没有能力,进程不再尝试丢弃能力。因此,Rsyslog 可以启动,即使它没有能力。
Jira:RHELPLAN-160541[1]
fapolicyd
服务不再运行从可信数据库中删除的程序
在以前的版本中,fapolicyd
服务错误地将一个程序作为可信程序处理,即使它已从可信数据库中删除了。因此,输入 fapolicyd-cli --update
命令无效,即使程序被删除了也可以执行。有了此更新,fapolicyd-cli --update
命令可以正确地更新可信程序数据库,删除的程序不再被执行。
fapolicyd
服务现在创建具有正确所有权的 RPM 数据库文件
在以前的版本中,fapolicyd
服务在 /var/lib/rpm/
目录中创建并拥有 RPM 数据库文件。因此,其他程序无法访问文件,这导致可用性控制错误。有了此更新,fapolicyd
创建具有正确所有权的文件,不再发生错误。
8.3. 软件管理
yum needs-restarting -s
命令现在可以正确地显示 systemd 服务的列表
在以前的版本中,当您使用带有 -s
或 --services
选项的 needs-restarting
命令时,当检测到非 systemd 或故障进程时会出现一个错误。有了此更新,yum needs-restarting -s
命令会忽略这样的进程,并显示警告信息,其中包含受影响的 systemd 服务的列表。
dnf-automatic
命令现在正确地报告交易的退出状态
在以前的版本中,dnf-automatic
命令返回交易的成功退出码,即使此交易过程中一些操作没有成功完成。这可能对使用 dnf-automatic
自动部署勘误的机器构成安全风险。有了此更新,这个问题已被解决,dnf-automatic
现在会在交易过程中报告软件包的每个问题。
YUM 现在可以正确地处理 proxy=_none_
您可以使用 YUM proxy=_none_
配置选项来禁止更改代理设置。在以前的版本中,如果您在主配置文件中设置了 proxy=_none_
,YUM 会检测到一个错误。此更新修复了这个 bug,YUM 现在可以正确处理 proxy=_none_
。
RHEL 8 YUM proxy=_none_
配置与 RHEL 7 中的 YUM 配置兼容。
现在,当 dbus
拥有的文件被 zlib
更新时,needs-restarting
插件现在可以正确地要求系统重启
在以前的版本中,当运行 YUM needs-restarting
插件时,当 dbus
软件包拥有的文件被依赖的 zlib
软件包更新时,它不会提示重启系统。有了此更新,这个问题已被解决,needs-restarting
插件现在会显示一个信息,即当 zlib
被更新时您必须重启 dbus
。
8.4. Shell 和命令行工具
对于长路径,which
命令不再失败
在以前的版本中,当您在路径超过 256 个字符的目录中执行 which
命令时,命令会失败,并显示 Can't get current working directory
错误信息。有了此修复,which
命令现在对路径长度限制使用 PATH_MAX
值。因此,命令不再失败。
ReaR 现在支持带有 OUTPUT=USB
的 UEFI 安全引导
在以前的版本中,OUTPUT=USB
ReaR 输出方法(其将救援镜像保存在可引导磁盘驱动器上)不尊重 SECURE_BOOT_BOOTLOADER
设置。因此,在启用了 UEFI 安全引导的系统上,带有救援镜像的磁盘不会引导,因为引导装载程序没有签名。
有了此修复,OUTPUT=USB
ReaR 输出方法使用您在创建救援磁盘时在 SECURE_BOOT_BOOTLOADER
设置中指定的引导装载程序。要使用签名的 UEFI shim 引导装载程序,请在 /etc/rear/local.conf
文件中更改以下设置:
SECURE_BOOT_BOOTLOADER=/boot/efi/EFI/redhat/shimx64.efi
因此,当启用了 UEFI 安全引导时,救援磁盘是可以启动的。在带有 UEFI 的所有系统上将变量设置为这个值是安全的,即使安全引导没有被启用。它甚至被推荐用于一致性。有关 UEFI 引导过程和 shim 引导装载程序的详情,请参考 UEFI:引导系统时会发生什么。
ipmievd
现在会在 SEL 请求超时时正确识别 SEL 响应
ipmievd
服务通过 /dev/ipmi0
设备发送系统事件日志(SEL)请求。在以前的版本中,由于返回的 IPMI 消息缺少 ID 检查,超时请求会导致下一个请求的不正确处理。例如,如果重置了 Baseboard Management Controller (BMC),来自 ipmievd
服务的 SEL 请求会因为没有 SEL 响应而超时。因此,因为没有相应的 SEL 响应,ipmievd
无法正常工作,。因此,您不能获得正确的硬件状态,大量错误的硬件信息被输出到 /var/log/messages
。有了此修复,ipmitool
和 ipmievd
会根据请求的 ID 检查返回的 IPMI 消息的 ID,并跳过非相应的 SEL 请求。ipmevd
不再记录不正确的硬件信息。
Bugzilla:2224567[1]
8.5. 网络
Intel Corporation I350 Gigabit Fiber Network Connection 现在在内核更新后提供一个链接
在以前的版本中,带有 Small Formfactor Pluggable (SFP) transceiver 模块而没有 External Thermal Sensor (ETS)的硬件配置导致 igb
驱动程序错误地初始化 Inter-Integrated Circuit (I2C)来读取 ETS。因此,连接无法获得链接。有了此 bug 修复,igb
驱动程序仅在带有 ETS 的 SFP 可用时初始化 I2C。因此,连接获得链接。
Bugzilla:2130727[1]
8.6. 引导加载程序
grubby
现在可以正确地将参数传给新内核
当您使用 grubby
工具添加新内核且不指定任何参数,或者将参数留空时,grubby
不会将任何参数传给新内核,也不会设置 root
。使用 --args
和 --copy-default
选项可确保新参数被追加到默认参数后面。
8.7. 文件系统和存储
multipathd
在所有路径中添加了持久保留注册密钥
在以前的版本中,当 multipathd
守护进程启动时,它识别现有多路径设备的一个路径上的持久保留的注册密钥,而不是该设备的所有路径都有注册密钥。因此,如果在 multipathd
停止时,带有持久保留的多路径设备出现新路径,则不会在那些路径上建立持久保留。这允许路径上的 IO 处理,即使它们应该被保留密钥禁止。
有了此修复,如果 multipathd
在任何设备路径上找到一个持久保留注册密钥,它会将密钥添加到所有活动的路径中。因此,多路径设备现在在所有路径上正确建立了持久保留,即使路径设备在 multipathd
未运行时第一次出现。
LUN 现在在操作系统安装过程中可见
在以前的版本中,系统没有使用固件源的身份验证信息,特别是在涉及带有存储在 iSCSI iBFT (Boot Firmware Table)中 CHAP (Challenge-Handshake Authentication Protocol) 的 iSCSI 硬件卸载的情况。因此,在安装过程中 iSCSI 登录失败。
有了udisks2-2.9.4-9.el9
固件身份验证中的修复,这个问题已被解决,LUN 在安装和初始引导过程中可见。
Bugzilla:2213193[1]
8.8. 高可用性和集群
在所有待处理的操作完成前,Pacemaker Designated Controller 选举不再完成
当集群选择一个新的 Designated Controller (DC)时,所有节点都将其当前历史记录发送给新的 DC,后者将其保存到 CIB。因此,如果在选择新 DC 时操作已在进行中,且节点将当前历史记录发送给新 DC 后的操作完成了,则操作的结果可能会丢失。有了此修复,在所有待处理的操作都完成前,DC 选举不会完成,且没有丢失操作结果。
fence_scsi
代理现在可以自动检测共享的 lvmlockd
设备
在以前的版本中,fence_scsi
代理没有自动检测共享的 lvmlockd
设备。有了此更新,当 devices
属性没有设置时,fence_scsi
可以自动检测 lvmlockd
设备。
资源粘性现在可以与托管分数正确进行比较
链式资源托管是指与被分配的资源托管的资源一起托管的资源。在以前的版本中,如果原始托管有一个有限的负分数,并且链式托管是强制的,则可以从其节点禁止被分配的原始资源,即使 resource-stickiness 被设置为 INFINITY
。有了此修复,链式托管现在被按比例考虑,粘性可以正确地与托管分数进行比较。
Bugzilla:1632951[1]
crm_resource
命令现在允许禁止或移动只有一个活跃副本的捆绑包
在以前的版本中,当 crm_resource
命令检查带有单个副本的捆绑包是否处于活跃状态时,命令会计算容器处于活跃状态的节点,以及为容器本身创建的客户机节点。因此,crm_resource
命令不会禁止或移动具有单个活跃副本的捆绑包。有了此修复,crm_resource
命令在在决定活跃副本数时,仅计算捆绑包容器处于活跃状态的节点。
mysql
资源代理现在可以与可升级的克隆资源一起正常工作
在以前的版本中,由于提升分数在提升的和非提升的值之间发生了变化,mysql
资源代理会移动在节点间 Master 角色中操作的克隆资源。有了此修复,已提升的节点保持已提升状态。
未提升的克隆实例不再不必要重启
在以前的版本中,按数字顺序分配可升级的克隆实例,已提升的实例排第一。因此,如果需要启动已提升的克隆实例,在某些情况下会意外重启未提升的实例,因为实例号更改了。有了此修复,当为节点分配实例号时,角色会被考虑,因此不会发生不必要的重启。
将隔离 watchdog 配置为第二个隔离设备,现在在第一个设备超时时会隔离节点
在以前的版本中,当将 watchdog 隔离设备配置为隔离拓扑中的第二个设备时,在计算隔离操作时不会考虑 watchdog 超时。因此,如果第一个设备超时了,隔离操也会超时作,即使 watchdog 会隔离节点。有了此修复,watchdog 超时包含在隔离操作超时中,如果第一个设备超时,则隔离操作成功。
当列表按节点分组时,带有规则的位置约束不再显示
不会给带有规则的位置约束分配节点。在以前的版本中,当您按节点分组列表时,带有规则的位置约束会在空节点下显示。有了此修复,不再显示带有规则的位置约束,并给出一条警告信息,表示带有规则的约束没有显示。
更新多路径 SCSI 设备的 pcs
命令现在可以正常工作
由于 Pacemaker CIB 文件中的变化,pcs stonith update-scsi-devices
命令会按设计停止工作,从而导致一些集群资源不需要的重启。有了此修复,这个命令可以正常工作,并更新 SCSI 设备,而无需重启在同一节点上运行的其他集群资源。
当打开 pscd
Web UI 时,pcsd-ruby
守护进程的内存占用量现在减少了
在以前的版本中,当 pcsd
Web UI 打开时,pcsd-ruby
守护进程的内存用量会在几个小时内稳步增加。有了此修复,在 pcsd-ruby
守护进程中运行的 web 服务器现在定期执行安全重启。这会释放分配的内存,并减少内存占用。
Bugzilla:2189958[1]
azure-events-az
资源代理不再对 Pacemaker 2.1 及之后的版本产生错误
azure-events-az
资源代理执行 crm_simulate -Ls
命令,并解析输出。使用 Pacemaker 2.1 及更高版本,crm_simulate
命令的输出不再包含文本 Transition Summary:
,这会导致一个错误。有了此修复,当缺失此文本时,代理不再会产生错误。
8.9. 编译器和开发工具
使用 guru 模式的 systemtap
脚本现在可以更快地编译
systemtap
guru 模式存活度分析使用 dyninst
库来解析二进制文件。较新的内核通过 CONFIG_RETPOLINE=y
启用缓解代码,替换传统的 RET 指令,并跳转到到一个 thunk。因此,二进制分析需要很长时间,因为存活度分析需要检查跳到 thunk 所导致的控制流图的所有额外的边缘。
有了此更新,当内核代码使用 thunks 时,systemtap
会禁用存活度分析,因此使用 guru 模式的 systemtap
脚本可以更快地编译。
eu-addr2line -C
现在可以正确地识别其他参数
在以前的版本中,当您在来自 elfutils
的 eu-addr2line
命令中使用 -C
参数时,以下单个字符参数会消失。因此,eu-addr2line -Ci
命令的行为方式与 eu-addr2line -C
相同,而 eu-addr2line -iC
可以按预期正常工作。这个bug 已被修复,eu-addr2line -Ci
现在可以识别这两个参数。
eu-addr2line -i
现在可以正确地处理使用 GCC 链接时间优化编译的代码
在以前的版本中,elfutils
中包含的 libdw
库中的 dwarf_getscopes
函数无法找到使用 GCC link-time 优化编译的函数的抽象原始定义。因此,当您在 eu-addr2line
命令中使用 -i
参数时,eu-addr2line
无法显示使用 gcc -flto
编译的代码的内联函数。有了此更新,libdw dwarf_getscopes
函数在内联范围的正确编译单元中查找,eu-addr2line -i
可以按预期正常工作。
8.10. 身份管理
SSSD 现在在评估基于 GPO 的访问控制时使用 sAMAccountName
在以前的版本中,如果 ldap_user_name
在 AD 客户端上被设置为 sAMAccountName
以外的值,则基于 GPO 的访问控制失败。有了此更新,在评估基于 GPO 的访问控制时,SSSD 总是使用 sAMAccountName
。即使 ldap_user_name
在 AD 客户端上被设置为与 sAMAccountName
不同的值,基于 GPO 的访问控制现在也可以正常工作。
SSSD 现在在检索用户时可以处理 user_attributes
选项中的重复属性
在以前的版本中,如果 sssd.conf
在 user_attributes
选项中包含重复属性,则 SSSD 无法正确处理这些重复。因此,无法检索具有这些属性的用户。有了此更新,SSSD 可以正确处理重复。因此,现在可以检索具有重复属性的用户。
更改安全参数现在可以正常工作
在以前的版本中,当使用 dsconf instance_name security set
命令更改安全参数时,操作会失败并显示错误:
Name 'log' is not defined
有了此更新,security 参数更改可以正常工作。
目录服务器现在根据打开的描述符的最大数计算 dtablesize
在以前的版本中,管理员可以使用 nsslapd-conntablesize
配置参数手动设置连接表大小。因此,当连接表大小设置的太低时,它会影响服务器可以支持的连接数。有了这个更新,目录服务器现在可以动态计算连接表的大小,从而有效地解决了连接表大小太小的问题。另外,您不再需要手动更改连接表大小。
dsctl healthcheck
命令现在默认使用密码存储模式 PBKDF2-SHA512
在以前的版本中,dsctl healthcheck
命令默认使用 SSHA512
密码存储模式。因此,命令会报一个警告,因为它不能检测新的密码存储模式 PBKDF2-SHA512
。有了此更新,dsctl healthcheck
命令现在默认使用 PBKDF2-SHA512
密码存储模式,且不会发生警告。
现在,常规用户的分页搜索不会影响性能
在以前的版本中,当目录服务器位于搜索负载下时,常规用户的分页搜索可能会影响服务器性能,因为锁与轮询网络事件的线程发生冲突。另外,如果在发送页搜索时发生网络问题,则整个服务器都没有响应,直到 nsslapd-iotimeout
参数过期为止。有了此更新,锁被分成几个部分,以避免与网络事件争用。因此,在常规用户的分页搜索过程中不会影响性能。
现在,您可以如预期在目录服务器中启用和禁用密码
在以前的版本中,当您试图使用 Web 控制台启用或禁用默认密码之外启用或禁用特定密码时,服务器只启用或禁用特定的密码,并记录类似如下的错误:
Security Initialization - SSL alert: Failed to set SSL cipher preference information: invalid ciphers <default,+cipher_name>: format is +cipher1,-cipher2... (Netscape Portable Runtime error 0 - no error)
目前,网络安全服务(NSS)不支持同时处理默认密码和特定密码。因此,目录服务器可以启用或禁用特定的密码或默认密码。有了此更新,当您设置默认密码时,web 控制台现在提示 Allow Specific Ciphers 和 Deny Specific Ciphers 字段将被清除。
现在不再允许删除 IdM admin
用户
在以前的版本中,如果您是 admins
组的成员,则无法阻止您删除身份管理(IdM) admin
用户。缺少 admin
用户会导致 IdM 和活动目录 (AD)之间的信任停止正常工作。有了此更新,您不再可以删除 admin
用户。因此,IdM-AD 信任可以正常工作。
当可信 AD 用户的名称包含混合问题单字符时,IdM 客户端可以正确地检索它们的信息
在以前的版本中,如果您尝试用户查找或用户的身份验证,并且可信活动目录(AD)用户在其名称中包含混合大小写字符,且在 IdM 中使用覆盖进行了配置,则会返回一个错误,阻止用户访问 IdM 资源。
随着 RHBA-2023:4525 的发布,不区分大小写的比较将被忽略字符大小写的不区分大小写比较所替代。因此,IdM 客户端现在可以查找 AD 可信域的用户,即使其用户名包含混合大小写字符,且它们在 IdM 中使用覆盖进行了配置。
JIRA:SSSD-6096
8.11. 图形基础结构
安装程序不再在具有 ASPEED 2600 的服务器上冻结
在以前的版本中,当您在具有 ASPEED 2600 On System Management Chipset 的服务器上启动安装程序时,图形 RHEL 8.8 安装程序会出现黑屏,无响应。因此,您无法在服务器上安装 RHEL 8.8。
有了此版本,这个问题已被解决。现在,对 ASPEED 2600 的安装会按预期进行。
Bugzilla:2189645[1]
8.12. Web 控制台
Web 控制台 NBDE 绑定步骤现在也适用于带有根文件系统的卷组
在 RHEL 8.8 中,由于确定用户是否向 root 文件系统添加 Tang 密钥的代码中有一个 bug,当 LUKS 容器上根本没有文件系统时,web 控制台中的绑定过程会崩溃。因为在点击了 Verify key
对话框中的 Trust key
按钮后, web 控制台会显示出错信息 TypeError: Qe (…) is undefined
,所以您必须在上述场景中的命令行界面中执行所有必要的步骤。
有了此更新,web 控制台可以正确地处理在根文件系统中添加 Tang 密钥。因此,web 控制台完成了在不同场景中使用 Network-Bound Disk Encryption (NBDE)自动解锁 LUKS 加密卷所需的所有绑定步骤。
VNC 控制台现在可以在大多数分辨率下正常工作
在以前的版本中,当在某些显示分辨率下使用虚拟网络计算(VNC)控制台时,会出现鼠标偏移问题,或者只有接口的一部分可见。因此,无法使用 VNC 控制台。
有了这个更新,这个问题已被解决,VNC 控制台可以在大多数分辨率下正常工作,但非常高的分辨率除外,如 3840x2160。
请注意,记录的和显示的光标位置之间的小偏移可能仍然存在。但是,这不会影响 VNC 控制台的可用性。
8.13. Red Hat Enterprise Linux 系统角色
storage
角色现在可以在不卸载的情况下调整挂载的文件系统的大小
在以前的版本中,storage
角色无法调整挂载的设备的大小,即使文件系统支持在线调整大小。因此,storage
角色在调整大小前卸载所有文件系统,例如,对于正在使用的文件系统,调整大小会失败,例如,在调整正在运行的系统的 /
目录的大小时。
有了此更新,storage
角色现在支持调整支持在线调整大小的挂载的文件系统(如 XFS 和 Ext4)的大小。因此,挂载的文件系统现在可以调整大小,而不用卸载它们。
certificate
RHEL 系统角色现在在确定是否执行新证书请求时检查证书密钥大小
在以前的版本中,在评估是否请求新证书时,certificate
RHEL 系统角色不会检查证书的密钥大小。因此,角色有时在应该发布新证书请求时没有发布新证书请求。有了此更新,certificate
现在检查 key_size
参数,以确定是否应执行一个新证书请求。
使用 rhc
角色创建的 Insights 标签现在可以正确应用
在以前的版本中,当使用 rhc
角色创建 Insights 标签时,标签没有存储在正确的文件中。因此,标签没有发送给 Insights,因此它们没有应用到 Insights 清单中的系统。
有了此修复,标签会被正确存储,并应用到 Insights 清单中存在的系统。
RHEL 7 上的 firewall
RHEL 系统角色不再尝试安装不存在的 Python 软件包
在以前的版本中,当从另一个角色调用 RHEL 7 上的 firewall
角色,且该角色在使用 python3
时,firewall
角色会尝试为该 Python 版本安装 python3-firewall
库。但是,该库在 RHEL 7 中不提供。因此,python3-firewall
库没有找到,您会收到以下出错信息:
No package matching 'python3-firewall' found available, installed or updated
有了此更新,firewall
角色不会尝试安装 python-firewall
或 python3-firewall
库。因此,当python3
已在受管节点上安装了,firewall
角色不会在 RHEL 7 上失败。
在创建前无法从成员磁盘中删除数据的问题不再存在
在以前的版本中,当创建 RAID 卷时,在组成 RAID 卷前,系统不能有效地从成员磁盘中删除现有的数据。有了此更新,RAID 卷可以根据需要从成员磁盘中删除任何已存在的数据。
podman_registries_conf
变量现在可以正确地配置 unqualified-search-registries
字段
在以前的版本中,配置了 podman_registries_conf
变量后,podman
RHEL 系统角色失败。因此,在 /etc/containers/registries.conf.d/50-systemroles.conf
文件中不会生成 unqualified-search-registries = ["registry.access.redhat.com"]
设置。有了此更新,这个问题已被解决。
raid_chunk_size
参数不再返回一个错误信息
在以前的版本中,RAID 池和卷不允许用于 raid_chunk_size
属性。有了此更新,您现在可以为 RAID 池和卷配置 raid_chunk_size
属性,而不会遇到任何限制。
在有不存在服务的检查模式下运行 firewall
RHEL 系统角色不再失败
在以前的版本中,在检查模式下将 firewall
角色与不存在的服务一起运行会失败。此修复实现了对检查模式的 Ansible 最佳实践的最好遵守。因此,启用或禁用不存在的服务不再在检查模式下使角色失败。相反,会显示一个警告提示您确认服务是否已在之前的 playbook 中定义了。
kdump
角色以幂等方式添加 authorized_keys
在以前的版本中,添加 authorized_key
的任务每次都添加一个额外的换行符。因此,该角色不是幂等的。有了此修复,添加新的 authorized_key
可以正常工作,并智能以幂等方式添加单个密钥值。
如果缺少 authorized_keys
,kdump
系统角色不会失败
在以前的版本中,如果 kdump_ssh_user
变量中定义的用户无法访问 主
目录中的 .ssh
目录或空的.ssh/authorized_keys
文件,kdump
系统角色将无法添加 SSH
授权密钥。有了此修复,kdump
系统角色可以正确地将授权密钥添加到 SSH
配置中。因此,基于密钥的身份验证可以在上述场景中可靠地工作。
在检查模式下使用 previous: replaced
时,firewall
RHEL 系统角色可以正确地报告变化
在以前的版本中,当在检查模式中使用 previous: replaced
参数时,firewall
角色不会检查是否有文件更改了。因此,该角色会给出一个有关未定义变量的错误。此修复在检查模式中添加了新的检查变量,以评估是否 previous: replaced
参数了更改任何文件。检查 firewalld.conf
文件会评估 rpm
数据库,以确定同软件包中提供的版本相比,文件是否已更改了。因此,在使用 previous: replaced
参数时,firewall
角色现在可以正确地报告更改。
Jira:RHEL-899[1]
为系统角色启用 kdump
需要在 RHEL 9 及更新的版本上使用 failure_action
配置参数
在以前的版本中,在 kdump
配置过程中使用default
选项不成功,并在日志中打印以下警告:
kdump: warning: option 'default' was renamed 'failure_action' and will be removed in the future. please update /etc/kdump.conf to use option 'failure_action' instead.
因此,如果使用了 default
选项,角色无法成功启用 kdump
。此更新解决了这个问题,您可以使用 failure_action
参数在多个系统上配置内核转储参数。因此,在上述场景中启用 kdump
可以正常工作。
Jira:RHEL-907[1]
在将区域分配给网络管理器接口时,firewall
RHEL 系统角色可以正确地报告更改
在以前的版本中,当不存在任何更改时,网络管理器接口分配会报告更改。有了此修复,文件 library/firewall_lib.py
中的 try_set_zone_of_interface
模块返回第二个值,它表示接口的区是否已更改。当向 Network Manager 处理的接口分配区域时,模块现在可以正确地报告更改。
Jira:RHEL-918[1]
kdump
角色成功为 kdump_ssh_server
身份验证更新了 .ssh/authorized_keys
在以前的版本中,kdump
角色无法访问 .ssh
目录,来安全地验证用户,以登录到 kdump_ssh_server
。因此,kdump
角色没有更新 .ssh/authorized_keys
文件和 SSH 机制,来验证kdump_ssh_server
是否失败。在这个版本中解决了这个问题。因此,kdump_ssh_server
上的 kdump_ssh_user
身份验证可以可靠地工作。
Jira:RHEL-1398[1]
firewall
系统角色的 previous: replaced
参数现在覆盖以前的配置,而不删除它
在以前的版本中,如果您将 previous: replaced
参数添加到变量列表中,firewall
系统角色会删除所有现有用户定义的设置,并将 firewalld
重置为默认设置。此修复在 firewalld
中使用 EL7 版本中引入的回退配置来保留之前的配置。因此,当您在变量列表中使用 previous: replaced
参数时,在重置时不会删除 firewall.conf
配置文件,但文件中的文件和注释被保留。
Jira:RHEL-1496[1]
kdump
角色以等幂方式向 authorized_keys
添加多个密钥
在以前的版本中,同时向 authorized_keys
文件中添加多个 SSH 密钥会将一个主机的密钥值替换为另一个主机的密钥值。此更新通过使用 lineinfile
模块来管理 authorized_keys
文件解决了这个问题。lineinfile
按顺序迭代任务,检查现有的密钥,并一次在一台主机上的一个原子操作中写入新密钥。因此,在多个主机上添加 SSH 密钥可以正常工作,不会替换另一个主机的密钥值。
注意:在 play 级别使用 serial: 1
play serial 关键字来控制一次执行的主机的数量。
Jira:RHEL-1500[1]
8.14. 虚拟化
向虚拟机热插一块 Watchdog 卡不再失败
在以前的版本中,如果没有 PCI 插槽可用,向正在运行的虚拟机(VM)添加一块 Watchdog 卡会失败,并显示以下错误:
Failed to configure watchdog ERROR Error attempting device hotplug: internal error: No more available PCI slots
有了此更新,这个问题已被解决,向正在运行的虚拟机中添加一块 Watchdog 卡现在可以按预期正常工作。
第 9 章 技术预览
这部分列出了 Red Hat Enterprise Linux 8.9 中提供的所有技术预览的列表。
如需有关红帽对技术预览功能支持范围的信息,请参阅 技术预览功能支持范围。
9.1. 基础架构服务
TuneD 的套接字 API 作为技术预览提供
通过 UNIX 域套接字控制 TuneD 的套接字 API 现在作为技术预览提供。套接字 API 将一对一与 D-Bus API 映射,并为 D-Bus 不可用的情况提供替代通信方法。通过使用套接字 API,您可以控制 TuneD 守护进程来优化性能,并更改各种调优参数的值。套接字 API 默认被禁用,您可以在 tuned-main.conf
文件中启用它。
9.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
,这个服务仍是一个不受支持的技术预览。
9.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 及更新的版本中提供有限的支持范围。
用于内核的 Intel 数据流加速器驱动程序作为技术预览提供
内核的 Intel 数据流加速器驱动程序(IDXD)目前作为技术预览提供。它是一个 Intel CPU 集成加速器,包括一个带有处理地址空间 ID(pasid)提交和共享虚拟内存(SVM)的共享工作队列。
Bugzilla:1837187[1]
accel-config
软件包作为技术预览提供
accel-config
软件包现在作为技术预览在 Intel EM64T
和 AMD64
构架上提供。这个软件包有助于控制并配置 Linux 内核中的数据流化器(DSA)子系统。另外,它还通过 sysfs
(pseudo-文件系统)配置设备,以 json
格式保存并载入配置。
Bugzilla:1843266[1]
SGX 作为技术预览
软件扩展(SGX)是一个 Intel® 技术,用于保护软件代码和数据不受公开和修改的影响。RHEL 内核部分提供 SGX v1 和 v1.5 功能。版本 1 使用 Flexible Launch Control 机制启用平台,以使用 SGX 技术。版本 2 添加了 Enclave Dynamic Memory Management (EDMM)。主要特性包括:
- 修改属于初始化 enclave 的常规 enclave 页的 EPCM 权限。
- 动态将常规 enclave 页添加到初始化的 enclave。
- 扩展初始化的 enclave ,以容纳更多线程。
- 从初始化的 enclave 中删除常规的 enclave 页和 TCS 页。
Bugzilla:1660337[1]
9.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]
9.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]
9.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 服务器。
RHEL IdM 允许将用户身份验证委派给外部身份提供程序作为技术预览
作为 RHEL IdM 中的技术预览,您现在可以将用户与支持 OAuth 2 设备授权流的外部身份提供者(IdP)关联。当这些用户使用 RHEL 8.7 或更高版本中提供的 SSSD 版本进行身份验证时,它们会在执行身份验证和在外部 IdP 授权后得到带有 Kerberos 票据的 RHEL IdM 单点登录功能。
主要特性包括:
-
使用
ipa idp-*
命令为外部 IdP 添加、修改和删除引用 -
使用
ipa user-mod --user-auth-type=idp
命令为用户启用 IdP 验证
如需更多信息,请参阅 使用外部身份提供程序向 IdM 进行身份验证。
9.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:1667225, Bugzilla:1724302, Bugzilla:1667516
用于 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]
9.8. 图形基础结构
VNC 远程控制台作为 64 位 ARM 架构的一个技术预览提供
在 64 位 ARM 架构中,虚拟网络计算(VNC)远程控制台可作为技术预览使用。请注意,在 64 位 ARM 架构中,目前图形堆栈的其它部分没有被验证。
Bugzilla:1698565[1]
9.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], JIRA:RHELPLAN-7677, Bugzilla:1501607
Intel vGPU 作为技术预览提供
作为技术预览,可以将物理 Intel GPU 设备分为多个虚拟设备,称为 介质设备
。然后可将这些 mediated devices 分配给多个虚拟机(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]
9.10. 云环境中的 RHEL
RHEL 机密虚拟机现在在 Azure 上作为技术预览提供
有了更新的 RHEL 内核,现在您可以在 Microsoft Azure 上创建并运行机密虚拟机(VM)作为技术预览。但是,在 Azure 上引导时无法加密 RHEL 机密虚拟机镜像。
Jira:RHELPLAN-122316[1]
9.11. 容器
Podman 的 SQLite 数据库后端作为技术预览提供
从 Podman v4.6 开始,Podman 的 SQLite 数据库后端作为技术预览提供。要将数据库后端设置为 SQLite,请在 /etc/containers/containers.conf
配置文件中添加 database_backend = "sqlite"
选项。在切换到 SQLite 数据库后端前,请运行 podman system reset
命令,来将存储重置回初始状态。请注意,您必须重新创建所有容器和 pod。SQLite 数据库保证好的稳定性和一致性。容器堆栈中的其他数据库也会被移到 SQLite。BoltDB 保留默认的数据库后端。
Jira:RHELPLAN-154428[1]
podman-machine
命令不被支持
用于管理虚拟机的 podman-machine
命令仅作为技术预览提供。相反,可以直接从命令行运行 Podman。
Jira:RHELDOCS-16861[1]
第 10 章 过时的功能
这部分提供在 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 的注意事项。
10.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]
10.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]
NTLM 和 Krb4 已在 Cyrus SASL 中弃用
NTLM 和 Kerberos 4 验证协议已弃用,并可能在以后的 RHEL 主版本中删除。这些协议不再被视为安全的,已从上游实现中删除。
Jira:RHELDOCS-17380[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)
手册页。
10.3. 订阅管理
subscription-manager
命令的 --token
选项已弃用
subscription-manager register
命令的 --token=<TOKEN>
选项是一种身份验证方法,可帮助将您的系统注册到红帽。这个选项取决于授权服务器提供的功能。默认授权服务器 subscription.rhsm.redhat.com
计划关闭此功能。因此,尝试使用 subscription-manager register --token=<TOKEN>
可能会失败,并显示以下错误消息:
Token authentication not supported by the entitlement server
您可以使用其他授权方法继续注册您的系统,例如包括 subscription-manager register
命令的成对的选项 --username / --password
和 --org / --activationkey
。
10.4. 软件管理
rpmbuild --sign
已弃用
从 RHEL 8.1 开始,rpmbuild --sign
命令被弃用。在以后的 Red Hat Enterprise Linux 版本中使用这个命令可能会导致错误。建议您使用 rpmsign
命令替代。
10.5. Shell 和命令行工具
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]
10.6. 网络
PF_KEYv2
内核 API 已弃用
应用程序可以使用 PV_KEYv2
和较新的 netlink
API 配置内核的 IPsec 实现。PV_KEYv2
不是在上游主动维护的,且缺少重要的安全功能,如现代密码、卸载和扩展的序列号支持。因此,从 RHEL 8.9 开始,PV_KEYv2
API 被弃用。如果您在应用程序中使用此内核 API,请迁移它,以使用现代 netlink
API 作为替代。
Jira:RHEL-1257[1]
在 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)
手册页中 原始有效负载表达式
部分。
术语 slave
在 nmstate
API 中被弃用
红帽承诺使用适当的语言。因此,slaves
术语在 Nmstate API 中被弃用。使用 nmstatectl
时使用术语 port
。
Jira:RHELDOCS-17641
10.7. 内核
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 的更新中,无盘引导功能将不再被支持。
内核实时补丁现在涵盖所有 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]
10.8. 引导加载程序
kernelopts
环境变量已被弃用
在 RHEL 8 中,使用 GRUB 引导装载程序的系统的内核命令行参数在 kernelopts
环境变量中定义。变量保存在每个内核引导条目的 /boot/grub2/grubenv
文件中。但是,使用 kernelopts
存储内核命令行参数并不可靠。因此,在以后的 RHEL 主更新中,kernelopts
将被删除,且内核命令行参数会存储在 Boot Loader Specification(BLS)片断中。
10.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]
10.10. 高可用性和集群
支持 clufter
工具的 pcs
命令已被弃用
支持 clufter
工具来分析群集配置格式的 pcs
命令已被弃用。现在,这些命令会显示一个警告信息,提示该命令已弃用,并且与这些命令相关的部分已从 pcs
帮助显示和pcs(8)
手册页中删除。
以下命令已被弃用:
-
用于导入 CMAN / RHEL6 HA 群集配置的
pcs config import-cman
-
pcs config export
用于将集群配置导出到可重新创建同一集群的pcs
命令列表中
Bugzilla:1851335[1]
10.11. 动态编程语言、网页和数据库服务器
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 服务器一起使用。
10.12. 编译器和开发工具
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
标志来使用。
10.13. 身份管理
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]
通过 WinSync 与 IdM 的间接 AD 集成已弃用
由于一些功能的限制,不会在 RHEL 8 中对 WinSync 进行积极的开发:
- WinSync 只支持一个活动目录(AD)域。
- 密码同步需要在 AD 域控制器上安装额外的软件。
对于具有更好的资源和安全分离的更健壮的解决方案,红帽建议对于与活动目录的间接集成使用 跨林信任 。请参阅 间接集成 文档。
Jira:RHELPLAN-100400[1]
以 PDC 或 BDC 的形式运行 Samba 已被弃用
传统的域控制器模式使管理员能够作为类似 NT4 的主域控制器(PDC)和备份域控制器(BDC)运行 Samba。用于配置这些模式的代码和设置将在以后的 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)协议已弃用,并将在以后的发行版本中删除。
为提高安全性,在 Samba 服务器和客户端工具中默认禁用 SMB1。
Jira:RHELDOCS-16612[1]
对 FreeRADIUS 的有限支持
在 RHEL 8 中,以下外部身份验证模块作为 FreeRADIUS 产品的一部分被弃用:
- MySQL、PostgreSQL、SQlite 和 unixODBC 数据库连接器
-
Perl
语言模块 - REST API 模块
PAM 身份验证模块以及其它作为基础软件包的一部分提供的身份验证模块不受影响。
您可以在社区支持的软件包中找到已弃用模块的替代品,例如在 Fedora 项目中。
另外,在以后的 RHEL 版本中,对 freeradius
软件包的支持范围将限制为以下用例:
-
将 FreeRADIUS 用作身份管理(IdM)的身份验证提供者,作为身份验证的后端源。身份验证通过
krb5
和 LDAP 身份验证软件包或作为主 FreeRADIUS 软件包中的 PAM 身份验证发生。 - 使用 FreeRADIUS ,通过 Python 3 身份验证软件包为 IdM 中的身份验证提供真相来源。
与这些弃用相反,红帽将通过 FreeRADIUS 增强对以下外部身份验证模块的支持:
-
基于
krb5
和 LDAP 的身份验证 -
Python 3
身份验证
这些集成选项的重点在于与红帽 IdM 的战略方向紧密一致。
Jira:RHELDOCS-17573[1]
10.14. 桌面
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]
10.15. 图形基础结构
不再支持 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]
10.16. Web 控制台
Web 控制台不再支持不完整翻译
RHEL web 控制台不再提供翻译少于 50% 的语言支持。如果浏览器要求转换成这种语言,用户界面将为英语。
remotectl
命令已弃用
remotectl
命令已弃用,并将在以后的 RHEL 版本中不可用。您可以使用 cockpit-certificate-ensure
命令作为替代。但请注意,cockpit-certificate-ensure
没有与 remotectl
相同的功能。它不支持捆绑的证书和密钥 keychain 文件,并要求将它们拆分。
Jira:RHELPLAN-147538[1]
10.17. Red Hat Enterprise Linux 系统角色
geoipupdate
软件包已弃用
geoipupdate
软件包需要第三方订阅,同时下载专有内容。因此,geoipupdate
软件包已被弃用,并将在下一个主要 RHEL 版本中删除。
Bugzilla:1874892[1]
在 RHEL 9 节点上配置 team 时,network
系统角色显示一条弃用警告
RHEL 9 中弃用了网络协作功能。因此,在 RHEL 8 控制节点上使用 network
RHEL 系统角色在 RHEL 9 节点上配置网络团队,会显示有关弃用的警告。
Ansible Engine 已被弃用
以前的 RHEL 8 版本提供对 Ansible Engine 存储库的访问(有限范围的支持),以启用支持的 RHEL Automation 用例,如 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。
10.18. 虚拟化
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 等第三方工具。
请注意,SPICE 使用的 QXL 图形设备也已被弃用。
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 镜像验证已过时。反之,红帽建议使用基于 SHA2 算法或更新版本的签名。
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]
10.19. 容器
基于 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]
Inkscape 和 LibreOffice Flatpak 镜像已弃用
作为技术预览提供的 rhel9/inkscape-flatpak
和 rhel9/libreoffice-flatpak
Flatpak 镜像已被弃用。
红帽建议对这些镜像使用以下替代方案:
-
要替换
rhel9/inkscape-flatpak
,请使用inkscape
RPM 软件包。 -
要替换
rhel9/libreoffice-flatpak
,请参阅 LibreOffice 弃用发行注记。
Jira:RHELDOCS-17102[1]
10.20. 已弃用的软件包
本节列出了已弃用的软件包,可能不会包括在 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
- 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
- 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
- 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
- custodia
- cyrus-imapd-vzic
- dbus-c++
- dbus-c++-devel
- dbus-c++-glib
- dbxtool
- 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-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
- 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
- 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-gson
- google-noto-sans-syriac-eastern-fonts
- google-noto-sans-syriac-estrangela-fonts
- google-noto-sans-syriac-western-fonts
- google-noto-sans-tibetan-fonts
- google-noto-sans-ui-fonts
- gphoto2
- 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
- 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
- ksc
- kurdit-unikurd-web-fonts
- kyotocabinet-libs
- ldapjdk-javadoc
- lensfun
- lensfun-devel
- lftp-scripts
- libaec
- libaec-devel
- libappindicator-gtk3
- libappindicator-gtk3-devel
- libatomic-static
- libavc1394
- libblocksruntime
- libcacard
- libcacard-devel
- libcgroup
- 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
- 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
- liboauth
- liboauth-devel
- libpfm-static
- libpng12
- 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-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
- pakchois
- pandoc
- paps-libs
- paranamer
- 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
- 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
- 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
- shrinkwrap
- 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
- tcl-brlapi
- testng
- tibetan-machine-uni-fonts
- timedatex
- 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
- 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
10.21. 弃用和不维护的设备
本节列出了继续被支持的设备(驱动程序、适配器)
- ,直到 RHEL 8 生命周期结束,但可能在这个产品以后的主要发行本中不被支持,不建议在新的部署中使用。对列出的设备的支持不会改变。这些是 弃用的 设备。
- 可用,但不再在 RHEL 8 中进行常规测试或更新。红帽可自行决定修复严重的 bug,包括安全性 bug。这些设备不应再在生产环境中使用,很可能会在下一个主发行版本中被禁用。这些是 不维护的 设备。
PCI 设备 ID 采用 vendor:device:subvendor:subdevice 的格式。如果没有列出设备 ID,则与相应驱动程序关联的所有设备都会被弃用。要在您的系统中检查硬件的 PCI ID,请运行 lspci -nn
命令。
设备 ID | 驱动 | 设备名称 |
---|---|---|
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 | 驱动 | 设备名称 |
---|---|---|
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 中被重新启用了。
|
第 11 章 已知问题
这部分论述了 Red Hat Enterprise Linux 8.9 中的已知问题。
11.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。
11.2. 安全性
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 配置文件时,OSCAP Anaconda Add-on 可将系统强化为 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 在 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]
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 可能无法正确检测 CardOS V5.3 卡对象
OpenSC 工具包没有正确地从某些 CardOS V5.3 卡中使用的不同的 PKCS #15 文件偏移中读取缓存。因此,OpenSC 可能无法列出卡对象,并防止从不同的应用程序使用它们。
要临时解决这个问题,请在 /etc/opensc.conf
文件中设置 use_file_caching = false
选项来关闭文件缓存。
通过 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 配置文件后,审计守护进程也可以启动。
在 kickstart 安装过程中修复与服务相关的规则可能会失败
在 kickstart 安装过程中,OpenSCAP 工具有时会错误地显示服务的 enable
或disable
状态补救不需要。因此,OpenSCAP 可能会将安装的系统上的服务设置为不合规的状态。作为临时解决方案,您可以在 kickstart 安装后扫描并修复该系统。这可以解决与服务相关的问题。
11.3. 订阅管理
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
参数设置值的用户不会观察到对自动附加的订阅有任何影响。
11.4. 软件管理
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 中的任何问题都应在软件包层面上解决。
11.5. 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
上的分区擦除元数据,然后是分区表本身。
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 % ?
11.6. 基础架构服务
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 位版本。
11.7. 网络
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]
11.8. 内核
内核 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]
11.9. 文件系统和存储
保存一个 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:1808012, Bugzilla:1798631
使用 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]
11.10. 动态编程语言、网页和数据库服务器
当使用 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
库被加载并在单个进程中使用时,这些库之间可能会发生符号冲突。因此,如果 mod_security
或 mod_auth_openidc
模块也由 httpd
配置加载,则使用 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
手动安装缺少的软件包。
11.11. 身份管理
将 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 哈希。
IdM Vault 加密和解密在 FIPS 模式下失败
如果启用了 FIPS 模式,则 OpenSSL RSA-PKCS1v15 填充加密会被阻止。因此,身份管理(IdM) Vault 无法正常工作,因为 IdM 目前正在使用 PKCS1v15 填充来用传输证书包装会话密钥。
Jira:RHEL-12153[1]
为 Kerberos 主体设置过期日期时不正确的警告
如果您为 Kerberos 主体设置了密码过期日期,则使用 32 位签名的整数变量将当前的时间戳与过期时间戳进行比较。如果过期日期在将来超过 68 年,则会导致整数变量溢出,从而导致显示以下警告信息:
Warning: Your password will expire in less than one hour on [expiration date]
您可以忽略此消息,密码将在配置的日期和时间正确过期。
如果组大小超过 1500 个成员,则 SSSD 会检索不完整的成员列表
在 SSSD 与活动目录集成过程中,当组大小超过 1500 个成员时,SSSD 会检索不完整的组成员列表。出现这个问题的原因是活动目录的 MaxValRange 策略(其限制单个查询中可以检索的成员数)默认被设置为 1500。
要临时解决这个问题,请更改活动目录中的 MaxValRange 设置,以适应更大的组大小。
Jira:RHELDOCS-19603[1]
11.12. 桌面
无法从软件仓库中禁用 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 帮助应用程序
11.13. 图形基础结构
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
集线器(如笔记本电脑基座),该集线器上插有多个支持HDR的显示器,可能会导致其无法打开。这是因为系统错误地认为 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]
11.14. 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 文件时不要指定激活密钥。
11.15. 虚拟化
使用大量队列可能会导致 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 和 SGID 权限。因此,不能清除权限可能会导致潜在的安全威胁。要临时解决这个问题,请输入以下命令禁用 killpriv_v2
功能:
# virtiofsd -o no_killpriv_v2
Bugzilla:1966475[1]
在主机上重启 OVS 服务可能会阻止在其上运行的虚拟机的网络连接
当 Open vSwitch (OVS)服务在主机上重启时或崩溃时,在此主机上运行的虚拟机(VM)无法恢复网络设备的状态。因此,虚拟机可能无法完全接收数据包。
此问题只会影响在 virtio
网络堆栈中使用压缩 virtqueue 格式的系统。
要临时解决这个问题,使用 virtio
网络设备定义中的 packed=off
参数来禁用压缩的 virtqueue。当禁用压缩的 virtqueue 时,网络设备的状态在某些情况下可以从 RAM 中恢复。
虚拟机迁移过程中的 NFS 故障会导致迁移失败和源虚拟机 coredump
目前,如果 NFS 服务或服务器在虚拟机(VM)迁移过程中关闭,则源虚拟机的 QEMU 在重新开始运行时无法重新连接到 NFS 服务器。因此,迁移会失败,并在源虚拟机上发起 coredump。目前,还没有可用的临时解决方案。
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]
11.16. 云环境中的 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]
11.17. 支持性
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]
11.18. 容器
在较旧的容器镜像中运行 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]
第 12 章 国际化
12.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 |
12.2. RHEL 8 中国际化的显著变化
RHEL 8 与 RHEL 7 相比,对国际化进行了以下更改:
- 添加了对 Unicode 11 计算行业标准的支持。
- 国际化发布在多个软件包中,这样就可以进行较小的内存占用安装。如需更多信息,请参阅 使用 langpacks。
-
很多
glibc
区域已经与 Unicode Common Locale Data Repository(CLDR)同步。
附录 A. 按组件划分的问题单列表
在本文档中列出了 Bugzilla 和 JIRA 问题单以供参考。这些链接会指向本文档中描述问题单的发行注记。
附录 B. 修改历史记录
0.1-5
2025 年 1 月 30 日星期四, Gabriela Fialová (gfialova@redhat.com)
- 添加了一个已知问题 JIRA:RHELDOCS-19603 (IdM SSSD)
0.1-4
Wed Dec 4 2024, Gabriela Fialová(gfialova@redhat.com)
- 更新了客户门户网站实验室部分
- 更新了安装部分
0.1-3
2024 年 8 月 9 日星期五,Brian Angelica (bangelic@redhat.com)
- 添加了一个已知问题 RHEL-11397 (安装程序和镜像创建)
0.1-2
2024 年 6 月 7 日星期五,Brian Angelica (bangelic@redhat.com)
- 更新了 JIRA:RHELDOCS-17954 (Red Hat Enterprise Linux 系统角色)中的已知问题。
0.1-1
2024 年 5 月 10 日星期五,Brian Angelica (bangelic@redhat.com)
0.1-0
2024 年 5 月 9 日星期四,Gabriela Fialova (gfialova@redhat.com)
- 更新了一个已知问题 BZcriu0502 ( Storage)。
0.0-9
2024 年 4 月 29 日星期一,Gabriela Fialova (gfialova@redhat.com)
- 添加了一个增强 BZ#2093355(安全)。
0.0-8
2024 年 3 月 4 日星期一, Lucie Vařáková (lvarakova@redhat.com)
- 添加了一个 bug 修复 JIRA:SSSD-6096(身份管理)。
0.0-7
2024 年 2 月 29 日星期四, Lucie Vařáková (lvarakova@redhat.com)
- 添加了一个已弃用的功能 JIRA:RHELDOCS-17641(网络)。
0.0-6
2024 年 2 月 13 日星期二, Lucie Vařáková (lvarakova@redhat.com)
- 添加了一个已弃用的功能 JIRA:RHELDOCS-17573 (身份管理)。
0.0-5
2024 年 2 月 2 日星期五, Lucie Vařáková(lvarakova@redhat.com)
- 添加了一个已知问题 BZ#1834716(安全)。
- 更新了 JIRA:RHELDOCS-16755 弃用的功能备注(容器)。
0.0-4
2024 年 1 月 19 日星期五, Lucie Vařáková(lvarakova@redhat.com)
- 添加了一个与 Python JIRA:RHELDOCS-17369 (动态编程语言、Web 和数据库服务器)相关的增强。
- 添加了一个增强 JIRA:RHELDOCS-16367 ( web 控制台)。
0.0-3
2024 年 1 月 10 日星期三, Lucie Vařáková(lvarakova@redhat.com)
- 添加了一个 rebase BZ#2196425(身份管理)。
- 更新了 JIRA:RHELPLAN-156196 新功能描述(可支持性)。
- 添加了已弃用的功能 JIRA:RHELDOCS-17380(安全)。
- 其他小更新。
0.0-2
2023 年 11 月 16 日星期四,Lenka Špačková (lspackova@redhat.com)
-
Node.js 20
现在被完全支持(BZ#2186718)。
-
0.0-1
2023 年 11 月 15 日星期三, Lucie Vaááková(lvarakova@redhat.com)
- Red Hat Enterprise Linux 8.9 发行注记发布 。
0.0-0
2023 年 9 月 27 日星期三, Lucie Vaááková(lvarakova@redhat.com)
- 发布 Red Hat Enterprise Linux 8.9 Beta 发行注记。