9.4 发行注记

Red Hat Enterprise Linux 9.4

Red Hat Enterprise Linux 9.4 发行注记

Red Hat Customer Content Services

摘要

发行注记提供了已在 Red Hat Enterprise Linux 9.4 中实现的改进和添加的高级信息,并在本版本中记录了已知的问题,以及重要的 bug 修复、技术预览、弃用的功能和其他详情。
有关安装 Red Hat Enterprise Linux 的详情,请参考 第 3.1 节 “安装”

使开源包含更多

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息

对红帽文档提供反馈

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

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

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

第 1 章 概述

1.1. RHEL 9.4 中的主要变化

安装程序和镜像创建

RHEL 镜像构建器的主要亮点:

  • 从 RHEL 9.4 发行版本开始,您可以指定任意自定义挂载点,除了为操作系统保留的特定路径。
  • 您可以创建不同的分区模式,如 auto-lvmlvmraw
  • 您可以使用选择和取消选择选项来为配置文件自定义定制选项,并将其添加到蓝图自定义中,以添加和删除规则。

如需更多信息,请参阅 新功能 - 安装程序和镜像创建

RHEL for Edge

RHEL for Edge 的主要亮点:

  • 现在,您可以创建符合 FIPS 的 RHEL for Edge 镜像。
  • 使用这个技术预览,您现在可以通过从 Sqlite 或 Postgresql 数据库存储和查询所有者凭证来使用 FDO 登录过程。

如需更多信息,请参阅 新功能 - RHEL for Edge

安全性

SELinux 用户空间版本 3.6 引入了拒绝进一步自定义 SELinux 策略的规则。

Keylime 服务器组件,验证器和注册器作为容器提供。

Rsyslog 日志处理系统引入了可自定义的 TLS/SSL 加密设置,以及与功能删除相关的附加选项。

OpenSSL TLS 工具包为特定于供应商的配置文件添加了一个补充目录。

Linux 内核加密 API (libkcapi) 1.4.0 引入了新的工具和选项。值得注意的是,使用新的 -T 选项,您可以在哈希和计算中指定目标文件名。

stunnel TLS/SSL 隧道服务 5.71 改变了 FIPS 模式下 OpenSSL 1.1 及更新版本的行为。除了这个更改外,版本 5.71 还提供了许多新功能,如支持现代 PostgreSQL 客户端。

如需更多信息,请参阅 新功能 - 安全性

动态编程语言、网页和数据库服务器

以下应用程序流的后续版本现在可用:

  • Python 3.12
  • Ruby 3.3
  • PHP 8.2
  • nginx 1.24
  • MariaDB 10.11
  • PostgreSQL 16

以下组件已升级:

  • Git 升级到版本 2.43.0
  • Git LFS 升级到版本 3.4.1

如需更多信息,请参阅 新功能 - 动态编程语言、Web 和数据库服务器

容器

主要变更包括:

  • 用于创建多架构容器镜像的 podman build farm 命令作为技术预览提供。
  • Podman 现在支持 containers.conf 模块来加载预定的一组配置。
  • Container Tools 软件包已更新。
  • Podman v4.9 RESTful API 现在会在镜像拉取或将镜像推送到注册中心时显示进度数据。
  • SQLite 现在作为 Podman 的默认数据库后端被完全支持。
  • Containerfile 现在支持多行 HereDoc 指令。
  • 作为网络名称的 pasta 已弃用。
  • BoltDB 数据库后端已弃用。
  • container-tools:4.0 模块已弃用。
  • Container Network Interface (CNI)网络堆栈已弃用,并将在以后的发行版本中删除。

如需更多信息,请参阅 新功能 - 容器

1.2. 其他资源

与其他版本系统相比, Red Hat Enterprise Linux 9 的能力和限制可在知识库文章Red Hat Enterprise Linux 技术能力和限制中获得。

有关 Red Hat Enterprise Linux 生命周期 的详情请查看 Red Hat Enterprise Linux 生命周期文档

软件包清单文档为 RHEL 9 提供软件包列表,包括许可证和应用程序兼容性等级。

Red Hat Enterprise Linux 9: Application Compatibility Guide 文档中的解释应用程序兼容性等级

RHEL 8 和 RHEL 9 的主要区别 (包括删除的功能)包括在使用 RHEL 9 时的注意事项

有关如何执行从 RHEL 8 到 RHEL 9 的原位升级的说明,请参考从 RHEL 8 升级到 RHEL 9 的文档。

Red Hat Insights 服务可让您主动发现、检查并解决已知的技术问题,所有 RHEL 订阅都可以使用它。有关如何安装 Red Hat Insights 客户端并将您的系统注册到该服务的说明,请查看 Red Hat Insights 入门页面。

注意

公共发行注记包括访问原始跟踪票据的链接,但私有发行注记无法查看,因此不包括链接。[1]



[1] 公共发行注记包括访问原始跟踪票据的链接,但私有发行注记无法查看,因此不包括链接。

第 2 章 构架

Red Hat Enterprise Linux 9.4 与内核版本 5.14.0-427.11.1 一起分发,它支持以下构架(在括号中状态):

  • AMD 和 Intel 64 位体系架构 (x86-64-v2)
  • 64 位 ARM 架构(ARMv8.0-A)
  • IBM Power Systems, Little Endian(POWER9)
  • 64 位 IBM Z (z14)

请确定为每个构架购买正确的订阅。如需更多信息,请参阅 Red Hat Enterprise Linux 入门 - 附加构架

第 3 章 RHEL 9 发布的内容

3.1. 安装

Red Hat Enterprise Linux 9 使用 ISO 镜像安装。AMD64、Intel 64 位、64 位 ARM、IBM Power Systems 和 IBM Z 架构有两种类型的 ISO 镜像:

  • 安装 ISO:包含 BaseOS 和 AppStream 软件仓库的完整安装镜像,并允许您在没有附加软件仓库的情况下完成安装。在产品下载页面中,安装 ISO 被称为 Binary DVD

    注意

    安装 ISO 镜像的大小为几个 GB,因此可能不适用于光盘介质格式。当使用安装 ISO 镜像时,建议使用 USB 盘或 USB 硬盘驱动器创建可引导安装介质。您还可以使用 Image Builder 工具创建自定义的 RHEL 镜像。有关镜像构建器的更多信息,请参阅编写自定义的 RHEL 系统镜像文档。

  • 引导 ISO:用来引导到安装程序的最小引导 ISO 镜像。这个选项需要访问 BaseOS 和 AppStream 软件仓库来安装软件包。软件仓库是安装 ISO 镜像的一部分。您还可以在安装过程中注册红帽 CDN 或 Satellite,以使用来自红帽 CDN 或 Satellite 的最新 BaseOS 和 AppStream 内容。

有关下载 ISO 镜像、创建安装介质以及完成 RHEL 安装的说明,请参阅 执行标准的 RHEL 9 安装 文档。有关自动 Kickstart 安装和其他高级主题,请参阅 执行高级 RHEL 9 安装 文档。

3.2. 软件仓库

Red Hat Enterprise Linux 9 由两个主要软件仓库发布:

  • BaseOS
  • AppStream

两个软件仓库都需要一个基本的 RHEL 安装,所有 RHEL 订阅都包括它们。

BaseOS 存储库中的内容旨在提供底层操作系统功能的核心集合,其为所有安装提供基础。这部分内容采用 RPM 格式,它的支持条款与之前的 RHEL 版本相似。如需更多信息,请参阅覆盖范围详情文档。

AppStream 仓库的内容包括额外的用户空间应用程序、运行时语言和数据库来支持各种工作负载和使用案例。

另外,所有 RHEL 订阅都可以使用 CodeReady Linux Builder 软件仓库。它为开发人员提供了额外的软件包。不支持包括在 CodeReady Linux Builder 存储库中的软件包。

有关 RHEL 9 软件仓库及其提供的软件包的更多信息,请参阅软件包清单

3.3. 应用程序流

用户空间组件的多个版本会以 Application Streams(应用程序流)的形式提供,其更新频率会比核心操作系统软件包的更新频率更快。这为自定义 RHEL 提供了更大的灵活性,而不影响平台或特定部署的基本稳定性。

应用程序流以 RPM 格式提供,可以是一个模块(RPM 格式的一个扩展),软件集合(Software Collections,),或 Flatpaks。

每个 Application Stream 组件都有其特定的生命周期,可能和 RHEL 9 的生命周期相同或更短。有关 RHEL 生命周期信息,请查看 Red Hat Enterprise Linux 生命周期

RHEL 9 改进了应用程序流的使用体验,它提供了初始的应用程序流版本,可以使用传统的 dnf install 命令作为 RPM 软件包进行安装。

注意

某些 RPM 格式的初始应用程序流的生命周期比 Red Hat Enterprise Linux 9 要短。

一些额外的 Application Stream 版本将作为模块发布,并在以后的 RHEL 9 次要发行本中带有较短的生命周期。模块是代表逻辑单元的软件包集合: 应用程序、语言堆栈、数据库或一组工具。这些软件包被一同构建、测试并发布。

始终决定要安装哪个版本的应用程序流,并确保首先查看 Red Hat Enterprise Linux 应用程序流生命周期

需要快速更新的内容(例如备用编译器和容器工具)会在滚动流中提供,且不会并行提供替代版本。滚动流可以打包为 RPM 或模块。

有关 RHEL 9 中可用的 Application Streams 及其应用程序兼容性级别的详情,请查看软件包清单Red Hat Enterprise Linux 9: Application Compatibility Guide 文档中的解释应用程序兼容性等级。

3.4. 使用 YUM/DNF 的软件包管理

在 Red Hat Enterprise Linux 9 中,使用 DNF 确保软件安装 。红帽继续支持使用 yum 术语,以便与以前的 RHEL 主版本保持一致。如果您键入 dnf 而不是 yum,则命令按预期运行,因为它们都是兼容性的别名。

虽然 RHEL 8 和 RHEL 9 基于 DNF,但它们与 RHEL 7 中使用的 YUM 兼容。

如需更多信息,请参阅使用 DNF 工具管理软件

第 4 章 新功能

这部分论述了 Red Hat Enterprise Linux 9.4 中引入的新功能和主要改进。

4.1. 安装程序和镜像创建

支持在蓝图中添加 SCAP 安全配置文件的自定义文件

有了此增强,您可以使用以下选项将配置文件的自定义定制选项添加到 osbuild-composer 蓝图自定义中:

  • selected 用于您要添加的规则的列表
  • unselected 用于您要删除的规则的列表

使用默认的 org.ssgproject.content 规则命名空间,您可以在此命名空间下省略规则的前缀。例如:org.ssgproject.content_grub2_passwordgrub2_password 的功能相同。

当您从该蓝图构建镜像时,它会使用新的定制配置文件 ID 创建一个定制文件,并将其保存为 /usr/share/xml/osbuild-oscap-tailoring/tailoring.xml 镜像。新配置文件 ID 将 _osbuild_tailoring 作为后缀附加到基本配置文件。例如,如果您使用 cis 基本配置文件,则为 xccdf_org.ssgproject.content_profile_cis_osbuild_tailoring

Jira:RHELDOCS-17792[1]

最小 RHEL 安装现在只安装 s390utils-core 软件包

在 RHEL 8.4 及之后的版本中,s390utils-base 软件包被分成 s390utils-core 软件包,以及一个辅助 s390utils-base 软件包。因此,将 RHEL 安装设置为 minimal-environment 只安装必要的 s390utils-core 软件包,而不是辅助 s390utils-base 软件包。如果要在最小 RHEL 安装中使用 s390utils-base 软件包,您必须在完成 RHEL 安装后手动安装软件包,或使用 Kickstart 文件显式安装 s390utils-base

Bugzilla:1932480[1]

4.2. 安全性

提供了 Keylime 验证器和注册器容器

现在,您可以将 Keylime 服务器组件,验证器和注册器配置为容器。当配置为在容器内运行时,Keylime 注册器监控容器中的租户系统,而主机上无需有任何二进制文件。容器部署提供更好的隔离、模块化和 Keylime 组件的可重复性。

Jira:RHELDOCS-16721[1]

libkcapi 现在提供了一个选项,用来在哈希和计算中指定目标文件名

这个 libkcapi (Linux 内核加密 API)软件包的更新引进了新选项 -T,用来在哈希和计算中指定目标文件名。这个选项的值覆盖了处理的 HMAC 文件中指定的文件名。您只能通过 -c 选项来使用这个选项,例如:

$ sha256hmac -c <hmac_file> -T <target_file>

Jira:RHEL-15298[1]

使用 crypto-policies 对 SSH 中的 MAC 进行精细控制

现在,您可以在系统范围的加密策略(crypto-policies)中为 SSH 协议的消息验证代码(MAC)设置其它选项。有了此更新,crypto-policies 选项 ssh_etm 已转换为三状态 etm@SSH 选项。之前的 ssh_etm 选项已弃用。

现在,您可以将 ssh_etm 设置为以下值之一:

ANY
允许 encrypt-then-macencrypt-and-mac MAC。
DISABLE_ETM
不允许 encrypt-then-mac MAC。
DISABLE_NON_ETM
不允许不使用 encrypt-then-mac 的 MAC。

请注意,始终允许使用隐式 MAC 的密码,因为它们使用经过身份验证的加密。

Jira:RHEL-15925

semanage fcontext 命令不再对本地修改进行重新排序

semanage fcontext -l -C 命令列出存储在 file_contexts.local 文件中的本地文件上下文修改。restorecon 工具处理 file_contexts.local 中从最新到最旧的条目。以前,semanage fcontext -l -C 以不正确的顺序列出条目。处理顺序和列表顺序之间的不匹配导致管理 SELinux 规则时出现问题。有了此更新,semanage fcontext -l -C 以正确和预期的顺序,显示从最旧到最新的规则。

Jira:RHEL-24462[1]

SELinux 策略中限制的其他服务

此更新将额外的规则添加到限制以下 systemd 服务的 SELinux 策略中:

  • nvme-stas
  • realmd
  • rust-afterburn
  • rust-coreos-installer

因此,这些服务不会再使用 unconfined_service_t SELinux 标签运行,并可在 SELinux enforcing 模式下成功运行。

Jira:RHEL-12591[1]

OpenSSL 的 fips.so 库作为单独的软件包提供

OpenSSL 使用 fips.so 共享库作为 FIPS 提供者。有了此更新,提交给美国国家标准与技术研究所(NIST)进行认证的 fips.so 的最新版本在单独的软件包中,以确保 OpenSSL 的未来版本使用经过认证的代码或正在进行认证的代码。

Jira:RHEL-23474[1]

OpenSSL 为提供者配置添加了一个补充目录

OpenSSL TLS 工具包为提供加密算法的模块的安装和配置支持提供者 API 。有了此更新,您可以将特定于提供者的配置放在 /etc/pki/tls/openssl.d 目录下的单独 .conf 中,而无需不修改主 OpenSSL 配置文件。

Jira:RHEL-17193

p11-kit 软件包 rebase 到 0.25.3

p11-kit 软件包已更新至上游版本 0.25.3。软件包包含用来管理 PKCS#11 模块的 p11-kit 工具、用来对信任策略存储进行操作的 trust 工具,以及 p11-kit 库。主要改进包括:

  • 添加了对 PKCS#11 版本 3.0 的支持
  • pkcs11.h 头文件:

    • 添加了 ChaCha20/Salsa20、Poly1305 和特定于 IBM 的机制和属性
    • 为基于消息的加密添加了 AES-GCM 机制参数
  • p11-kit 工具:

    • 添加了列出和管理令牌的对象(list-tokenslist-mechanismslist-objectsimport-objectexport-objectdelete-objectgenerate-keypair)的工具命令
    • 添加了管理令牌的 PKCS#11 配置文件(list-profilesadd-profiledelete-profile)的工具命令
    • 添加了打印合并配置的 print-config 命令
  • trust 工具:

    • 添加了验证 .p11-kit 文件格式的 check-format 命令

Jira:RHEL-14834[1]

libkcapi rebase 到 1.4.0

libkcapi 库,其提供对 Linux 内核加密 API 的访问,已 rebase 到上游版本 1.4.0。这个更新包括各种改进和 bug 修复,最重要的是:

  • 添加了 sm3sumsm3hmac 工具。
  • 添加了 kcapi_md_sm3kcapi_md_hmac_sm3 API。
  • 添加了 SM4 便利功能。
  • 修复了对链接时间优化(LTO)的支持。
  • 修复了 LTO 回归测试。
  • 修复了使用 kcapi-enc 对任意大小的 AEAD 加密的支持。

Jira:RHEL-5367[1]

OpenSSH 中的用户和组创建使用 sysusers.d 格式

之前,OpenSSH 使用静态 useradd 脚本。有了此更新,OpenSSH 使用 sysusers.d 格式来声明系统用户,这使得反省系统用户成为可能。

Jira:RHEL-5222

OpenSSH 在身份验证中限制人工延迟

OpenSSH 在登录失败后的响应是人工延迟,以防止用户枚举攻击。在这个版本中,在远程身份验证用时(例如在特权访问管理(PAM)处理中)时,对此类延迟引入了一个上限。

Jira:RHEL-2469[1]

Stunnel rebase 到 5.71

stunnel TLS/SSL 隧道服务已 rebase 到上游版本 5.71。

主要新功能包括:

  • 添加了对现代 PostgreSQL 客户端的支持。
  • 您可以使用 protocolHeader 服务级别选项插入自定义连接协议 协商 标头。
  • 您可以使用 protocolHost 选项控制客户端 SMTP 协议协商 HELO/EHLO 值。
  • 添加了对客户端 协议的客户端支持 = ldap
  • 现在,您可以使用服务级别的 sessionResume 选项配置会话恢复。
  • 添加了对使用 CApath 在服务器模式中请求客户端证书的支持(以前,只支持 CAfile )。
  • 改进了文件读取和日志记录性能。
  • 添加了对 重试 选项可配置延迟的支持。
  • 在客户端模式中,在设置 verifyChain 时请求和验证 OCSP 错误。
  • 在服务器模式中,会始终提供 OCSP stapling。
  • 不预期的 OCSP 验证会破坏 TLS 协商。您可以通过设置 OCSPrequire = no 来禁用此功能。

Jira:RHEL-2468[1]

Rsyslog 中丢弃功能的新选项

现在,您可以使用以下全局选项在丢弃功能时配置 Rsyslog 的行为:

libcapng.default
决定在丢弃功能时遇到错误时的 Rsyslog 的操作。默认值为 on,如果与 libcapng 相关的 错误发生,则会导致 Rsyslog 退出。
libcapng.enable
决定在启动过程中 Rsyslog 丢弃功能。如果禁用了这个选项,libcapng.default 不会影响。

Jira:RHEL-943[1]

audit rebase 到 3.1.2

Linux Audit 系统已更新至版本 3.1.2,与之前发布的版本 3.0.7 相比,它提供了 bug 修复、功能增强和性能改进。主要改进包括:

  • auparse 库现在解释未命名和匿名套接字。
  • 您可以在 ausearchaureport 工具的 startend 选项中使用新关键字 this-hour
  • 添加了对 io_uring 异步 I/O API 的支持。
  • auditctl 程序中添加了用户友好的信号关键字。
  • 改进了处理 auparse 中的损坏日志。
  • 现在,在 auditd 服务中默认禁用 ProtectControlGroups 选项。
  • 修复了对 exclude 过滤器的规则检查。
  • OPENAT2 字段的解释已被改进。
  • audispd af_unix 插件已移到独立程序。
  • Python 绑定已被修改,以防止从 Python API 设置审计规则。这个更改是由 Simplified Wrapper 和 Interface Generator (SWIG)中的一个错误造成的。

Jira:RHEL-14896[1]

rsyslog rebase 到 8.2310

Rsyslog 日志处理系统已 rebase 到上游版本 8.2310。这个版本引入了重要的改进和程序错误修复。最显著的改进包括:

可自定义的 TLS/SSL 加密设置
在以前的版本中,为单独的连接配置 TLS/SSL 加密设置仅限于全局设置。使用最新版本,您可以在 Rsyslog 中为每个连接定义唯一的 TLS/SSL 设置。这包括指定不同的 CA 证书、私钥、公钥和 CRL 文件,以提高安全性和灵活性。有关详细信息和用法,请参阅 rsyslog-doc 软件包中提供的文档。
优化的能力丢弃功能
现在,您可以设置与功能丢弃相关的附加选项。您可以通过将 libcapng.enable 全局选项设置为 off 来禁用功能丢弃。如需更多信息,请参阅 RHEL-943

Jira:RHEL-937, Jira:RHEL-943

SCAP 安全指南 rebase 到 0.1.72

SCAP 安全指南(SSG)软件包已更新到上游版本 0.1.72。此版本提供程序错误修正和各种改进,最重要的是:

  • CIS 配置文件已更新,使其与最新的基准一致。
  • PCI DSS 配置集与 PCI DSS 策略版本 4.0 一致。
  • STIG 配置文件与最新的 DISA STIG 策略一致。

如需更多信息,请参阅 SCAP 安全指南发行注记

Jira:RHEL-21425

4.3. RHEL for Edge

支持构建启用了 FIPS 的 RHEL for Edge 镜像

此功能增强添加了对为以下镜像类型构建启用了 FIPS 的 RHEL for Edge 镜像的支持:

  • edge-installer
  • edge-simplified-installer
  • edge-raw-image
  • edge-ami
  • edge-vsphere
重要

您只能在镜像置备过程中启用 FIPS 模式。在非FIPS 镜像构建启动后,您无法切换到 FIPS 模式。

Jira:RHELDOCS-17263[1]

4.4. Shell 和命令行工具

opencryptoki rebase 到版本 3.22.0

opencryptoki 软件包已更新至版本 3.22.0。主要变更包括:

  • 使用 CPACF 保护的密钥添加了对 AES-XTS 密钥类型的支持。
  • 添加了对管理证书对象的支持。
  • 添加了对使用 no-login 选项的公共会话的支持。
  • 添加了对作为 Security Officer (SO)登录的支持。
  • 添加了对导入和导出 Edwards 和 Mont gomery 密钥的支持
  • 添加了对导入 RSA-PSS 密钥和证书的支持。
  • 为安全起见,AES-XTS 键的 2 个关键部分不应相同。在这个版本中,增加了对密钥生成和导入过程的检查,以确保这一点。
  • 实现了各种 bug 修复。

Jira:RHEL-11412[1]

4.5. 基础架构服务

sysnce4l rebase 到版本 1.0.0

synce4l 协议已更新至版本 1.0.0。这个版本添加了对内核数字阶段锁定(DPLL)接口的支持。

Jira:RHEL-10089[1]

chrony rebase 到版本 4.5

chrony 套件已更新至版本 4.5。主要变更包括:

  • 添加了对 AES-GCM-SIV 密码的支持,以缩短网络时间协议(NTS) Cookie 以提高 NTS 的可靠性,其中一些供应商块或限制网络时间协议(NTP)消息的速度。
  • 添加了主机名指定的 NTP 源的定期刷新 IP 地址。默认间隔为两周,可以通过向 chrony.conf 文件中添加 refresh 0 参数来禁用它。
  • 改进了自动替换无法访问的 NTP 源。
  • 改进了 chronyc 工具所做的更改的日志记录。
  • 改进了源选择失败的日志记录和 falsetickers。
  • 添加了 hwtstimeout 指令,以配置更新的硬件传输时间戳的超时时间。
  • 添加了对 Precision Time Protocol (PTP)透明时钟提供的修正的实验性支持,以访问具有硬件时间戳的 PTP 的准确性。
  • 添加了 chronyd-restricted 服务,作为仅在没有 root 特权的情况下启动 chronyd 服务的最小客户端配置的替代服务。
  • 修复了 交错模式 中的 presend 选项。
  • 修复了从 sourcedir 目录中重新载入由 IP 地址指定的修改源。

Jira:RHEL-6522

linuxptp rebase 到版本 4.2

linuxptp 协议已更新至版本 4.2。主要变更包括:

  • 添加了对 phc2sys 工具中多个域的支持。
  • 添加了对时钟更新以及 Precision Time Protocol (PTP)父数据集中的通知的支持,如 clock 类。
  • 添加了对 PTP Power Profile 的支持,即 IEEE C37.238-2011 和 IEEE C37.238-2017。

Jira:RHEL-2026

4.6. 网络

nmstate 现在支持 优先级 绑定属性

在这个版本中,nmstate 框架的用户可以通过其配置文件的 port -config 部分中的 priority 属性设置绑定端口的优先级。YAML 文件示例类似如下:

---
interfaces:
- name: bond99
  type: bond
  state: up
  link-aggregation:
    mode: active-backup
    ports-config:
    - name: eth2
      **priority: 15**

当绑定接口中的一些活跃端口停机时,RHEL 内核必须从所有备份端口的池重新检查 优先级 属性中具有最高数字值的下一个活动端口。

priority 属性与绑定接口的以下模式相关:

  • active-backup
  • balance-tlb
  • balance-alb

Jira:RHEL-1438[1]

NetworkManager wifi 连接支持基于 MAC 地址的新隐私选项

在这个版本中,您可以将 NetworkManager 配置为将随机生成的 MAC 地址与 wifi 网络的 Service Set Identifier (SSID)关联。这可让您为 wifi 网络永久使用随机但一致的 MAC 地址,即使您删除连接配置集并重新创建。要使用这个新功能,请将 wifi 连接配置集的 802-11-wireless.cloned-mac-address 属性设置为 stable-ssid

Jira:RHEL-16470

为 VLAN 接口引进新的 nmstate 属性

在这个版本中 引进了以下 VLAN 属性:

  • registration-protocol: VLAN 注册协议.有效值为 gvrp (GARP VLAN Registration Protocol), mvrp (Multiple VLAN Registration Protocol)和 none
  • reorder-headers :重新排序输出数据包标头。有效值为 truefalse
  • loose-binding :将接口绑定到其主要设备的操作状态。有效值为 truefalse

您的 YAML 配置文件类似以下示例:

---
interfaces:
  - name: eth1.101
    type: vlan
    state: up
    vlan:
      base-iface: eth1
      id: 101
      registration-protocol: mvrp
      loose-binding: true
      reorder-headers: true

Jira:RHEL-19142

nmstate 现在支持创建 MACsec 接口

在这个版本中,nmstate 框架的用户可以配置 MACsec 接口来保护其在 Open Systems Interconnection (OSI)模型的第 2 层上的通信。因此,在第 7 层之后不需要加密单独的服务。另外,该功能消除了相关的挑战,如为每个端点管理大量证书。

如需更多信息,请参阅使用 nmstatectl 配置 MACsec 连接

Jira:RHEL-1420

Netfilter 更新

在 RHEL 9 中,内核软件包 已升级至版本 5.14.0-405。因此,在 RHEL 内核的 netfilter 组件中还提供了多个改进和程序错误修复。最显著的变化包括:

  • nftables 子系统可以匹配隧道数据包的各种内部标头字段。这可实现对网络流量的更精细、有效的控制,特别是在使用隧道协议的环境中。

Jira:RHEL-16630[1]

firewalld 现在避免不必要的防火墙规则刷新

如果满足这两个条件,firewalld 服务不会从 iptables 配置中删除所有现有的规则:

  • firewalld 使用 nftables 后端。
  • 没有使用 --direct 选项创建的防火墙规则。

这个变化旨在减少不必要的操作(防火墙规则刷新),并改进了与其他软件的集成。

Jira:RHEL-427[1]

4.7. 内核

RHEL 9.4 中的内核版本

Red Hat Enterprise Linux 9.4 带有内核版本 5.14.0-427.11.1。

rteval 现在支持从默认测量 CPU 列表中添加和删除任意 CPU

使用 rteval 工具,您可以在使用 --measurement-cpulist 参数时将(使用 + 符号)或减去(使用 - 符号)到默认测量 CPU 列表中,而不必指定整个新列表。过去,引入了 --measurement-run-on-isolcpus,仅用于将隔离 CPU 添加到默认测量 CPU 列表中。但是,有些用例需要更通用的功能。例如,一些实时应用程序使用一个隔离 CPU 进行内务处理,需要它从默认的测量 CPU 列表中排除。现在,您可以不仅能够添加,还可以以灵活的方式从默认测量 CPU 列表中删除任意 CPU。删除的优先级高于添加的优先级。此规则适用于使用 +/- 符号指定的 CPU,以及通过 --measurement-run-on-isolcpus 定义的 CPU。

Jira:RHEL-9912[1]

rtla rebase 到 上游内核 源代码的 6.6 版本

rtla 工具已升级到最新的上游版本,提供多个程序错误修复和增强。主要变更包括:

  • 添加了 -C 选项,为 rtla 线程指定要运行的其他控制组,除了主 rtla 线程外。
  • 添加了 --house-keeping 选项,将 rtla 线程放在内务 CPU 上,并将测量线程放在不同的 CPU 上。
  • 添加了对 timerlat 追踪器的支持,以便您可以在用户空间中运行 timerlat histtimerlat 顶部 线程。

Jira:RHEL-10079[1]

cyclicdeadline 现在支持生成延迟直方图

在这个版本中,cyclicdeadline 工具支持生成延迟直方图。您可以使用此功能深入了解不同大小的延迟高峰频率,而不是只获得一个最糟糕的问题单号。

Jira:RHEL-9910[1]

SGX 现在被完全支持

软件扩展(SGX)是一个 Intel® 技术,用于保护软件代码和数据不受公开和修改的影响。

RHEL 内核提供 SGX 版本 1 和 2 功能。版本 1 使用 Flexible Launch Control 机制启用平台,以使用 SGX 技术。版本 2 添加了 Enclave Dynamic Memory Management (EDMM)。主要特性包括:

  • 修改属于初始化 enclave 的常规 enclave 页的 EPCM 权限。
  • 动态将常规 enclave 页添加到初始化的 enclave。
  • 扩展初始化的 enclave ,以容纳更多线程。
  • 从初始化的 enclave 中删除常规的 enclave 页和 TCS 页。

在本发行版本中,SGX 从技术预览变为完全支持的功能。

Bugzilla:2041883[1]

现在完全支持 Intel 数据流加速器驱动程序

Intel 数据流加速器驱动程序(IDXD)是一个提供 Intel CPU 集成加速器的内核驱动程序。它包括一个带有进程地址空间 ID (pasid)提交和共享虚拟内存(SVM)的共享工作队列。

在本发行版本中,IDXD 从技术预览变为完全支持的功能。

Jira:RHEL-10097[1]

4.8. 引导加载程序

在预引导阶段支持 DEP/NX

内存保护功能称为 Data Execution Prevention (DEP)、No Execute (NX)或 Execute Disable (XD),阻止执行标记为不可执行的代码。DEP/NX 在操作系统级别的 RHEL 中提供。

此发行版本在 GRUB 和 shim 引导装载程序中添加了 DEP/NX 支持。这可以防止在预引导阶段的某些漏洞,如恶意 EFI 驱动程序,这些驱动程序可能会在没有 DEP/NX 保护的情况下执行某些攻击。

Jira:RHEL-10288[1]

4.9. 文件系统和存储

记录在 https://issues.redhat.com/browse/RHEL-16813

Jira:RHEL-8278[1]

现在,可以使用 lvconvert 将标准 LV 转换为精简 LV

通过将标准逻辑卷(LV)指定为精简池数据,您现在可以使用 lvconvert 命令将标准 LV 转换为精简 LV。在这个版本中,您可以将现有 LV 转换为使用精简配置工具。

Jira:RHEL-8357

multipathd 现在支持为 NVMe 设备检测 FPIN-Li 事件

在以前的版本中,multipathd 命令只会监控 SCSI 设备中的完整性 Fabric 性能影响通知(PFIN-Li)事件。multipathd 可以侦听由光纤通道光纤发送的 Link Integrity 事件,并使用它来将路径标记为边缘。这个功能只支持 SCSI 设备上的多路径设备,multipathd 无法将 Non-volatile Memory Express (NVMe)设备路径标记为 marginal。

在这个版本中,multipathd 支持为 SCSI 和 NVMe 设备检测 FPIN-Li 事件。因此,多路径在没有良好的光纤连接的情况下不使用路径,而其它路径可用。这有助于在这种情况下避免 IO 延迟。

Jira:RHEL-6678

max_retries 选项现在添加到 multipath.confdefaults 部分

此增强将 max_retries 选项添加到 multipath.conf 文件的 defaults 部分。默认情况下,这个选项未设置,并使用 SCSI 层的默认值 5 次。此选项的有效值从 05。当设定这个选项时,它会覆盖 SCSI 设备的 max_retries sysfs 属性的默认值。此属性控制 SCSI 层在返回失败时重试 I/O 命令的次数。

如果用户遇到多路径的路径检查程序返回成功但 I/O 到设备挂起的问题,他们可以设置这个选项,以便在 I/O 重试另一个路径前缩短时间。

Jira:RHEL-1729[1]

auto_resize 选项现在添加到 multipath.confdefaults 部分

在以前的版本中,要重新定义您需要手动执行 multipathd resize map <name> 命令的多路径设备大小。在这个版本中,auto_resize 选项被添加到 multipath.conf 文件的 defaults 部分。这个选项控制 multipathd 命令何时可以自动调整多路径设备的大小。以下是 auto_resize 的不同值:

  • 默认情况下,auto_resize 设置为 never。在这种情况下,multipathd 可以在没有任何更改的情况下正常工作。
  • 如果将 auto_resize 设置为 grow_only,则当设备的路径大小增大时,multipathd 会自动调整多路径设备的大小。
  • 如果将 auto_resize 设置为 grow_shrink,则multipathd 会在设备的路径大小减少时自动缩小多路径设备。

因此,当启用这个选项时,您不再需要手动重新定义多路径设备的大小。

Jira:RHEL-986[1]

现在在内核中包含对 绕过 NVMeoFC multipath.conf 设置的更改

device-mapper-multipath 现在为 HPE Alletra 9000 NVMeFC 阵列有一个内置配置。Arcus 添加了对 NVMeoFC 的 ANA (Asymmetric Namespace Access)的支持。这和 SCSI 的 ALUA 类似。RHEL 主机需要更改 multipath.conf 来使用此功能,并在可用时仅将 I/O 发送到 ANA 优化的路径。如果没有此更改,设备映射器会将 I/O 发送到 ANA 优化,以及 ANA 非优化路径。

注意

这个更改只适用于 NVMeoFC。FCP multipath.conf 内容已经有这个设置来支持之前 ALUA。

Jira:RHEL-1830

Stratis-cli rebase 到版本 3.6.0

stratis-cli 软件包已升级到 3.6.0 版本。重要的程序错误修复和增强包括:

  • stratis-cli 命令行界面支持附加选项来设置创建的文件系统大小限制。set-size-limitunset-size-limit 是两个新的文件系统命令,该命令在创建文件系统后设置或取消设置文件系统大小限制。
  • 现在,当使用手动条目在内核密钥环中设置密钥时,stratis-cli 包含了密码验证。
  • Stratis-cli 现在支持在停止池时按名称或 UUID 指定池。
  • Stratis-cli 还获得各种内部改进的更新,现在强制实施其软件包配置中至少对 python 3.9 版本的要求。

Jira:RHEL-2265[1]

boom rebase 到版本 1.6.0

boom 软件包已升级到版本 3.6.0。主要改进包括:

  • 支持 systemd 命令支持的多卷快照引导语法。
  • 添加了新的 --mount--no-fstab 选项,以指定要在引导条目中挂载的额外卷。

Jira:RHEL-16813

现在完全支持 SAN 中的 NVMe-FC 引导

现在完全支持在 Red Hat Enterprise Linux 9.2 中引进的通过光纤通道(NVMe/FC)引导的 Non-volatile Memory Express (NVMe/FC)。有些 NVMe/FC 主机总线适配器支持 NVMe/FC 引导功能。有关编程主机总线适配器(HBA)来启用 NVMe/FC 引导功能的更多信息,请参阅 NVMe/FC 主机总线适配器制造商文档。

Jira:RHEL-1492[1]

4.10. 高可用性和集群

用于时间属性的 pcs 支持 ISO 8601 持续时间规格

pcs 命令行界面现在允许您根据 ISO 8601 持续时间规格标准为 Pacemaker 时间属性指定值。

Jira:RHEL-7672

支持新的 pscd Web UI 功能

pscd Web UI 现在支持以下功能:

  • 将集群资源从当前运行的节点中移动
  • 从节点上运行的资源
  • 显示集群状态的集群状态,显示集群状态的年龄以及正在重新载入集群状态的时间
  • 请求重新载入集群状态显示

Jira:RHEL-7582, Jira:RHEL-7739

TLS 密码列表现在默认为系统范围的加密策略

在以前的版本中,pcsd TLS 密码列表默认设置为 DEFAULT:!RC4:!3DES:@STRENGTH。在这个版本中,密码列表默认由系统范围的加密策略定义。pcsd 守护进程接受的 TLS 密码可能会使用这个升级更改,具体取决于当前设置的加密策略。有关加密策略框架的更多信息,请参阅 crypto-policies(7)手册页。

Jira:RHEL-7724

4.11. 动态编程语言、网页和数据库服务器

RHEL 9 中的 Python 3.12 可用

RHEL 9.4 引入了 Python 3.12,由新软件包 python3.12 提供,以及为它构建的软件包套件,以及 ubi9/python-312 容器镜像。

与之前发布的 Python 3.11 相比,显著改进包括:

  • Python 引入了用于通用类和函数的新 type 语句和新类型参数语法。
  • 格式化的字符串字面(f-string)已在 grammar 中正式化,现在可以直接集成到解析器中。
  • Python 现在提供唯一的 per-interpreter 全局解释器锁定(GIL)。
  • 现在,您可以使用 Python 代码中的缓冲协议。
  • 为提高安全性,SHA1、SHA3、SHA2-384、SHA2-512 和 MD5 加密算法的内置 hashlib 实现已被替换为 HACL* 项目中的正式验证代码。如果 OpenSSL 不提供它们,内置的实现仍保持可用。
  • CPython 中的字典、列出和设置复杂度现在被内联。这可显著提高理解执行速度。
  • CPython 现在支持 Linux perf profiler。
  • CPython 现在提供对支持的平台的堆栈溢出保护。

Python 3.12 和为它构建的软件包可以在同一个系统中与 Python 3.9 和 Python 3.11 并行安装。

要从 python3.12 堆栈安装软件包,请使用:

# dnf install python3.12
# dnf install python3.12-pip

要运行解释器,例如:

$ python3.12
$ python3.12 -m pip --help

如需更多信息,请参阅 安装和使用 Python

有关 Python 3.12 支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Jira:RHEL-14941

Python 中的一个控制电子邮件地址解析的新环境变量

为缓解 CVE-2023-27043,一个向后兼容的更改,以确保在 Python 3 中引入了更严格的电子邮件地址的解析。

这个版本引入了一个新的 PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING 环境变量。当您将此变量设置为 true 时,以前的、不太严格的解析行为是整个系统的默认设置:

export PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING=true

但是,对受影响函数的单个调用可能仍然启用更严格的行为。

您可以通过使用以下内容创建 /etc/python/email.cfg 配置文件来取得相同的结果:

[email_addr_parsing]
PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING = true

如需更多信息,请参阅知识库文章 缓解 Python 中引入更严格的电子邮件地址解析的 CVE-2023-27043

Jira:RHELDOCS-17369[1]

新模块流: ruby:3.3

RHEL 9.4 在新的 ruby:3.3 模块流中引入了 Ruby 3.3.0。与 RHEL 9.1 一起提供的 Ruby 3.1 相比,这个版本提供了很多性能改进、程序错误和安全修复以及新功能。

主要改进包括:

  • 您可以使用新的 Prism parser 而不是 RipperPrism 是可移植、错误容错和可维护的递归解析程序,用于 Ruby 语言。
  • YJIT 是 Ruby 即时(JIT)编译器实现,不再是实验性的,它提供了主要的性能改进。
  • 改进了 Regexp 匹配算法,以减少潜在的正则表达式拒绝服务(ReDoS)漏洞的影响。
  • 新的实验性 RJIT (纯 Ruby JIT)编译器取代了 MJIT。在生产环境中使用 YJIT。
  • 现在提供了一个新的 M:N 线程调度程序。

其他显著变化:

  • 现在,您必须使用 Lrama LALR 解析器生成器而不是 Bison
  • 删除了几个已弃用的方法和常量。
  • Racc gem 已从默认 gem 提升到捆绑的 gem。

要安装 ruby:3.3 模块流,请使用:

# dnf module install ruby:3.3

如果要从以前的 ruby 模块流升级,请参阅 切换到后期的流

有关 Ruby 3.3 支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Jira:RHEL-17089[1]

新模块流: php:8.2

RHEL 9.4 将 PHP 8.2 添加为新的 php:8.2 模块流。

这个版本的改进包括:

  • readonly 类
  • 几个新的独立类型
  • 新的 随机 扩展
  • 特征中的限制

要安装 php:8.2 模块流,请使用以下命令:

# dnf module install php:8.2

如果要从 php:8.1 流升级,请参阅 切换到更新的流

有关 RHEL 9 上 PHP 用法的详情,请参阅 使用 PHP 脚本语言

有关 php 模块流支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Jira:RHEL-14699[1]

新模块流: nginx:1.24

nginx 1.24 web 和代理服务器现在作为 nginx:1.24 模块流提供。与之前发布的 1.22 版本相比,这个版本提供了很多 bug 修复、安全修复、新功能和增强。

与传输层安全(TLS)相关的新功能和更改:

  • 现在,在 ssl_session_cache 指令中使用共享内存时,加密密钥会自动轮转 TLS 会话票据。
  • 内存用量在带有安全套接字层(SSL)代理的配置中优化。
  • 现在,您可以使用 resolver 指令的 ipv4=off 参数在解析时禁用查找 IPv4 地址。
  • nginx 现在支持 $proxy_protocol_tlv TOTP 变量,这些变量存储 PROXY v2 TLV 协议中 Type-Length-Value (TLV)字段的值。
  • ngx_http_gzip_static_module 模块现在支持字节范围。

其他更改:

  • 标头行现在作为内部 API 中的链接列表表示。
  • nginx 现在会在 ngx_http_perl_module 的 $r->header_in ()方法中的 $r->header_in () 方法中与 FastCGI、SCGI 和 uwsgi 后端连接相同,并在查找 $http_.... , $sent_http_... $sent_trailer_..., $upstream_http_..., 和 $upstream_trailer_.. 变量.
  • 现在,如果重新定义侦听套接字的协议参数,nginx 会显示一个警告。
  • 现在,如果客户端使用了 pipelining,则 nginx 现在关闭带有 lingering 的连接。
  • 各种 SSL 错误的日志记录级别较低,例如从 Critical信息

要安装 nginx:1.24 流,请使用:

# dnf module install nginx:1.24

要从 nginx 1.22 流升级 ,请切换到更新的流

如需更多信息,请参阅设置和配置 NGINX

有关支持的 nginx 模块流长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Jira:RHEL-14713[1]

新模块流: mariadb:10.11

MariaDB 10.11 现在作为新的模块流 mariadb:10.11 提供。与之前可用的版本 10.5 相比,显著改进包括:

  • 新的 sys_schema 功能。
  • Atomic 数据定义语言(DDL)声明.
  • 新的 GRANT ...TO PUBLIC 权限。
  • 单独的 SUPERREAD ONLY ADMIN 权限。
  • 新的 UUID 数据库数据类型。
  • 支持安全套接字层(SSL)协议版本 3;MariaDB 服务器现在需要正确配置 SSL 才能启动。
  • 通过 natural_sort_key () 函数支持自然排序顺序。
  • 新的 SFORMAT 功能,用于任意文本格式。
  • 对 UTF-8 charset 和 UCA-14 冲突的更改。
  • /usr/share/ 目录中的 systemd 套接字激活文件。请注意,它们不是 RHEL 中默认配置的一部分,而不是上游。
  • 包含 MariaDB 字符串而不是 MySQL 的错误消息。
  • 中文语言提供的错误消息。
  • 更改默认 logrotate 文件。
  • 对于 MariaDB 和 MySQL 客户端,命令行中指定的连接属性(如 --port=3306)现在强制客户端和服务器间的协议通信类型,如 tcp套接字管道 或内存

有关 MariaDB 的更多信息,请参阅使用 MariaDB

要安装 mariadb:10.11 流,请使用:

# dnf module install mariadb:10.11

有关 mariadb 模块流支持长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Jira:RHEL-3638

新模块流: postgresql:16

RHEL 9.4 引入了 PostgreSQL 16,作为 postgresql:16 模块流。与版本 15 相比,PostgreSQL 16 提供了很多新功能和增强。

主要改进包括:

  • 增强的批量加载提高了性能。
  • libpq 库现在支持连接级别的负载均衡。您可以使用新的 load_balance_hosts 选项更有效地负载平衡。
  • 现在,您可以创建自定义配置文件,并将其包含在 pg_hba.confpg_ident.conf 文件中。
  • PostgreSQL 现在支持与 pg_hba.conf 文件中的 database 和 role 条目匹配的正则表达式。

其他更改包括:

  • PostgreSQL 不再与 postmaster 二进制文件一起发布。使用提供的 systemd 单元文件( systemctl start postgres 命令)启动 postgresql 服务器的用户不受这个更改的影响。如果您通过 postmaster 二进制文件直接启动 postgresql 服务器,则现在必须使用 postgres 二进制文件。
  • PostgreSQL 不再提供软件包中的 PDF 格式文档。改为使用 在线文档

另请参阅 使用 PostgreSQL

要安装 postgresql:16 流,请使用以下命令:

# dnf module install postgresql:16

如果要从 RHEL 9 中的早期 postgresql 流升级,请按照 切换到更新的流中介绍的步骤进行,然后迁移 PostgreSQL 数据,如 迁移到 PostgreSQL 的 RHEL 9 版本 中所述。

有关支持的 postgresql 模块流长度的详情,请查看 Red Hat Enterprise Linux 应用程序流生命周期

Jira:RHEL-3635

git rebase 到版本 2.43.0

Git 版本控制系统已更新至版本 2.43.0,与之前发布的版本 2.39 相比,它提供了 bug 修复、功能增强和性能改进。

主要改进包括:

  • 现在,您可以将新的 --source 选项与 git check-attr 命令一起使用,从提供的 tree-ish 对象而不是当前工作目录中读取 .gitattributes 文件。
  • Git 现在可以将 WWW-Authenticate response-type 标头的信息传递给凭证帮助程序。
  • 如果提交为空,git format-patch 命令现在会写入一个输出文件,其中包含提交头,而不是创建空文件。
  • 现在,您可以使用 git blame --contents= <file> &lt ;revision&gt; -- <path > 命令,通过导致 < revision > 的历史记录查找从 <file > 内容开始的行源
  • git log --format 命令现在接受 %(decorate) 占位符来进一步自定义,以扩展 --decorate 选项提供的功能。

Jira:RHEL-17100[1]

Git LFS rebase 到版本 3.4.1

Git 大文件存储(LFS)扩展已更新至版本 3.4.1,与之前发布的版本 3.2.0 相比,它提供了 bug 修复、增强和性能改进。

主要变更包括:

  • git lfs push 命令现在可以从标准输入中读取引用和对象 ID。
  • Git LFS 现在在不依赖 Git 的情况下处理替代远程。
  • Git LFS 现在支持 WWW-Authenticate response-type 标头作为凭证帮助程序。

Jira:RHEL-17101[1]

4.12. 编译器和开发工具

clang 资源目录已移动

Clang 资源目录,其中 Clang 存储其内部标头和库,已从 /usr/lib64/clang/17 移到 /usr/lib/clang/17

Jira:RHEL-9346

elfutils rebase 到版本 0.190

elfutils 软件包已更新至版本 0.190。主要改进包括:

  • libelf 库现在支持相对重定位(RELR)。
  • libdw 库现在识别 .debug_[ct]u_index 部分。
  • eu-readelf 工具现在支持新的 -Ds,--use-dynamic --symbol 选项,来显示通过动态片段(而不使用 ELF 部分)的符号。
  • eu-readelf 工具现在可以显示 .gdb_index 版本 9。
  • 新的 eu-scrlines 工具编译与指定 DWARF 或 ELF 文件关联的源文件列表。
  • debuginfod 服务器模式在文件名表示中更改了 60% 的压缩(这需要重新索引)。

Jira:RHEL-12489

SystemTap rebase 到版本 5.0

systemtap 软件包已更新至版本 5.0。主要改进包括:

  • 更快、更可靠的内核用户传输。
  • 扩展 DWARF5 debuginfo 格式支持。

Jira:RHEL-12488

新的 grafana-selinux 软件包

在以前的版本中,grafana-server 的默认安装作为 unconfined_service_t SELinux 类型运行。这个更新添加了新的 grafana-selinux 软件包,其中包含 grafana-server 的 SELinux 策略,默认使用 grafana-server 安装。因此,grafana-server 现在作为 grafana_t SELinux 类型运行。

Jira:RHEL-7505

新软件包: maven-openjdk21

maven:3.8 模块流现在包含 maven-openjdk21 子软件包,它为 OpenJDK 21 提供 Maven JDK 绑定,并将 Maven 配置为使用系统 OpenJDK 21。

Jira:RHEL-13046[1]

新软件包: libzip-tools

RHEL 9.4 引入了 libzip-tools 软件包,它提供了 zipcmpzipmergeziptool 等工具。

Jira:RHEL-17567

cmake rebase 到版本 3.26

cmake 软件包已更新至版本 3.26。主要改进包括:

  • 添加了对 C17 和 C18 语言标准的支持。
  • C make 现在可以查询 /etc/os-release 文件以获取操作系统识别信息。
  • 添加了对 CUDA 20 和 nvtx3 库的支持。
  • 添加了对 Python stable 应用程序二进制接口的支持。
  • 在 Simplified Wrapper 和 Interface Generator (SWIG)工具中添加了对 Perl 5 的支持。

Jira:RHEL-7393

4.13. 身份管理

ipa rebase 到版本 4.11

ipa 软件包已从版本 4.10 更新至 4.11。主要变更包括:

  • 支持基于 FIDO2 的 passkeys。
  • Kerberos 服务的基于资源的受限委托(RBCD)的初始实施。
  • ipalib.api 的上下文管理器,用于自动配置、连接和断开连接。
  • 现在,IdM 副本的安装针对所选服务器进行,不仅针对 Kerberos 身份验证,也只适用于所有 IPA API 和 CA 请求。
  • ansible-freeipa 软件包已从 1.11 版本 rebase 到 1.12.1。
  • ipa-healthcheck 软件包已从 0.12 版本 rebase 到 0.16。

如需更多信息,请参阅 上游发行注记

Jira:RHEL-11652

删除过期的 KCM Kerberos 票据

在以前的版本中,如果您试图向 Kerberos 凭证管理器(KCM)添加新凭证,且您已达到存储空间限制,新凭证将被拒绝。用户存储空间受 max_uid_ccaches 配置选项的限制,该选项的默认值为 64。在这个版本中,如果您已达到存储空间限制,您的最旧的过期凭证会被删除,并将新凭证添加到 KCM 中。如果没有过期的凭证,操作会失败并返回错误。要防止这个问题,您可以使用 kdestroy 命令删除凭证来释放一些空间。

Jira:SSSD-6216

IdM 现在支持 idoverrideuseridoverridegroupidview Ansible 模块

在这个版本中,ansible-freeipa 软件包包含以下模块:

idoverrideuser
允许您覆盖存储在身份管理(IdM) LDAP 服务器中的用户属性,例如用户登录名称、主目录、证书或 SSH 密钥。
idoverridegroup
允许您覆盖存储在 IdM LDAP 服务器中的组的属性,例如:组的名称、其 GID 或描述。
idview
允许您组织用户和组 ID 覆盖,并将其应用到特定的 IdM 主机。

未来,您将能够使用这些模块使 AD 用户使用智能卡登录到 IdM。

Jira:RHEL-16934

idp Ansible 模块允许将 IdM 用户与外部 IdP 关联

在这个版本中,您可以使用 idp ansible-freeipa 模块将身份管理(IdM)用户与支持 OAuth 2 设备授权流的外部身份提供程序(IdP)关联。如果 IdM 中存在 IdP 引用和关联的 IdP 用户 ID,您可以使用它们为 IdM 用户启用 IdP 身份验证。 

在外部 IdP 执行身份验证和授权后,IdM 用户会收到具有单点登录功能的 Kerberos 票据。用户必须与 RHEL 8.7 或更高版本中提供的 SSSD 版本进行身份验证。

Jira:RHEL-16939

getcert add-ca 如果证书已存在或跟踪,则返回新的返回代码

在这个版本中,如果尝试添加或跟踪已存在的证书,getcert 命令会返回特定的返回代码 2。在以前的版本中,命令会在任何错误条件中返回返回码 1

Jira:RHEL-22302

现在 ansible-freeipa中启用了 DNS 区域管理的委派

现在,您可以使用 dnszone ansible-freeipa 模块委派 DNS 区域管理。使用 dnszone 模块的 permissionmanagedby 变量来配置每个区访问委托权限。

Jira:RHEL-19134

现在,对于 ns-slapd 进程,默认禁用透明巨页

当使用大型数据库缓存时,透明巨页(THP)可能会对目录服务器性能造成负面影响,例如高内存占用量、高 CPU 使用量和延迟激增。在这个版本中,在 /usr/lib/ systemd /system/ dirsrv @.service.d/custom.conf drop-in 配置文件中添加了一个新的 THP_DISABLE=1 配置选项,以便为 ns-slapd 进程禁用 THP。

另外,Directory 服务器健康检查工具现在检测到 THP 设置。如果您启用了 THP 系统范围以及 Directory Server 实例,健康检查工具会告知您启用的 THP,并打印有关如何禁用它们的建议。

Jira:RHEL-5142

samba rebase 到版本 4.19.4

samba 软件包已升级到上游版本 4.19.4,它提供程序错误修复和增强。最显著的更改有:

  • smbget 工具中的命令行选项已被重命名和删除,以获得一致的用户体验。但是,这可能会破坏使用 实用程序的现有脚本或作业。有关新选项的详情,请查看 smbget --help 命令和 smbget (1) 手册页。
  • 如果启用了 winbind debug traceid 选项,winbind 服务现在记录日志,另外,以下字段:

    • traceid :跟踪属于同一请求的记录。
    • 深度 :跟踪请求嵌套级别。
  • Samba 不再使用自己的加密实现,现在完全使用 GnuTLS 库提供的加密功能。
  • 目录名称缓存大小 选项已被删除。

请注意,从 Samba 4.11 开始,服务器消息块块版本 1 (SMB1)协议已被弃用,并将在以后的发行版本中删除。

在启动 Samba 前备份数据库文件。当 smbdnmbdwinbind 服务启动时,Samba 会自动更新其 tdb 数据库文件。红帽不支持降级 tdb 数据库文件。

更新 Samba 后,使用 testparm 工具来验证 /etc/samba/smb.conf 文件。

Jira:RHEL-16476

SSSD 中提供了一个新的免密码验证方法

在这个版本中,您可以在 SSSD 中启用和配置免密码身份验证,以使用与 FIDO2 规范兼容的 biometric 设备,如 YubiKey。您必须提前注册 FIDO2 令牌,并将此注册信息存储在 RHEL IdM、Active Directory 或 LDAP 存储的用户帐户中。RHEL 实现 FIDO2 与 libfido2 库的兼容性,该库目前仅支持基于 USB 的令牌。

Jira:RHELDOCS-17841[1]

IdM 支持选项来控制用于为 PAC 签名的加密类型

默认情况下,Kerberos 密钥分发中心(KDC)为 Privilege Attribute 证书(PAC)生成 AES HMAC-SHA2 签名。但是,活动目录(AD)不支持此加密类型。因此,AD 跨领域约束的委托请求无法被正确处理。

有了这个增强,您现在可以通过在 TGS 主体,krbtgt/[realm]@[realm] 上设置 pac_privsvr_entype 属性,来将用于为 PAC 签名的加密类型控制为目标域所需的加密类型。在 IdM 中,当 AD 信任存在时,会自动配置此字符串属性。

WARNING: This update is about standalone MIT realms. Do not change the Kerberos Distribution Center (KDC) configuration in RHEL Identity Management.

例如,对于 MIT 领域和 AD 领域,以确保跨域票据授予票据(TGT)使用 AD 兼容的加密类型,管理员必须配置跨领域 TGS 主体,如在 MIT 端如下所示。这会使使用 AES 256 HMAC-SHA1 加密类型和受限委托请求的跨领域 TGT 被正确处理。

kadmin.local <<EOF
setstr krbtgt/AD@IPA pac_privsvr_enctype aes256-cts-hmac-sha1-96
setstr krbtgt/IPA@AD pac_privsvr_enctype aes256-cts-hmac-sha1-96
EOF

Bugzilla:2060421

4.14. Web 控制台

RHEL web 控制台现在可以生成 Ansible 和 shell 脚本

在 web 控制台中,您可以在 kdump 配置页面中轻松访问和复制自动化脚本。然后,您可以使用生成的脚本在多个系统中实现特定的 kdump 配置。

Jira:RHELDOCS-17060[1]

简化了在存储上管理存储和重新定义分区大小

Web 控制台的 Storage 部分现已重新设计。新的设计提高了所有视图的可见性。概述页面现在显示全面的表中的所有存储对象,这有助于直接执行操作。您可以点击任何行来查看详细信息以及任何补充组。另外,您现在可以从 Storage 部分中重新定义分区大小。

Jira:RHELDOCS-17056[1]

4.15. Red Hat Enterprise Linux 系统角色

ad_integration RHEL 系统角色现在支持配置动态 DNS 更新选项

在这个版本中,ad_integration RHEL 系统角色支持在与 Active Directory (AD)集成时使用 SSSD 配置动态 DNS 更新选项。默认情况下,SSSD 会尝试自动刷新 DNS 记录:

  • 当身份提供程序上线时(始终)。
  • 在指定间隔(可选配置)中;默认情况下,AD 供应商每 24 小时更新 DNS 记录。

您可以使用 ad_integration 系统角色中的新变量更改这些设置和其他设置。例如,您可以将 ad_dyndns_refresh_interval 设置为 172800,将 DNS 记录刷新间隔更改为 48 小时。

Jira:RHELDOCS-17372[1]

Storage RHEL 系统角色现在支持共享 LVM 设备管理

RHEL 系统角色现在支持创建和管理共享逻辑卷和卷组。

Jira:RHEL-1535

rhc 系统角色现在支持 RHEL 7 系统

现在,您可以使用 rhc 系统角色管理 RHEL 7 系统。将 RHEL 7 系统注册到 Red Hat Subscription Management (RHSM)和 Insights,并开始使用 rhc 系统角色管理系统。

使用 rhc_insights.remediation 参数不会影响 RHEL 7 系统,因为 Insights Remediation 功能目前在 RHEL 7 上不可用。

Jira:RHEL-16976

Storage RHEL 系统角色现在支持 LVM 快照管理

RHEL 系统角色现在支持 LVM 快照的创建、配置和管理。

Jira:RHEL-16552

network RHEL 系统角色现在支持新的路由类型

在这个版本中,您可以在 network RHEL 系统角色中使用以下路由类型:

  • blackhole
  • prohibit
  • unreachable

Jira:RHEL-19579[1]

rhc 角色中的新的 rhc_insights.display_name 选项来设置显示名称

现在,您可以使用新的 rhc_insights.display_name 参数配置或更新注册到 Red Hat Insights 的显示名称。参数允许您根据您偏好在 Insights 清单中轻松管理系统来命名系统。如果您的系统已经连接到 Red Hat Insights,请使用 参数更新现有的显示名称。如果在注册中没有明确设置显示名称,则默认将其设置为主机名。无法自动将显示名称恢复到主机名,但可以手动设置。

Jira:RHEL-16964

postgresql RHEL 系统角色现在支持 PostgreSQL 16

postgresql RHEL 系统角色,它安装、配置、管理和启动 PostgreSQL 服务器,现在支持 PostgreSQL 16。

有关此系统角色的更多信息,请参阅使用 postgresql RHEL 系统角色安装和配置 PostgreSQL

Jira:RHEL-18962

支持在不创建文件系统的情况下创建卷

在这个版本中,您可以通过指定 fs_type=un format 选项来创建新卷,而无需创建文件系统。

同样,可以通过确保禁用安全模式来使用相同的方法删除现有文件系统。

Jira:RHEL-16212

支持新的 ha_cluster 系统角色功能

ha_cluster 系统角色现在支持以下功能:

  • 启用包含弹性存储软件包的存储库,如 dlmgfs2。需要弹性存储订阅才能访问存储库。
  • 配置隔离级别,允许集群使用多个设备来隔离节点。
  • 配置节点属性。

有关为实现这些功能配置的参数的详情,请参考 使用 ha_cluster RHEL 系统角色配置高可用性集群

Jira:RHEL-15876[1], Jira:RHEL-15910, Jira:RHEL-22106

rhc 角色中的新的 rhc_insights.ansible_host 选项来设置 Ansible 主机名

现在,您可以使用新的 rhc_insights.ansible_host 参数为注册到 Red Hat Insights 的系统配置或更新 Ansible 主机名。设置后,参数会将 /etc/insights-client/insights-client.conf 文件中的 ansible_host 配置改为您的所选 Ansible 主机名。如果您的系统已经与 Red Hat Insights 连接,此参数将更新现有的 Ansible 主机名。

Jira:RHEL-16974

4.16. 虚拟化

现在 ARM 64 支持虚拟化

这个版本引进了在使用 ARM 64 CPU 的系统中创建 KVM 虚拟机的支持。但请注意,某些在 AMD64 和 Intel 64 系统中可用的虚拟化功能可能会不同,或者在 ARM 64 中不被支持。

详情请参阅 ARM 64 上的虚拟化与 AMD 64 和 Intel 64 的不同

Jira:RHEL-14097

4.17. 容器

Podman 现在支持 containers.conf 模块

您可以使用 Podman 模块来加载预定的一组配置。Podman 模块是 Tom 的 Obvious Minimal Language (TOML)格式的 containers.conf 文件。

这些模块位于以下目录或其子目录中:

  • 对于无根用户: $HOME/.config/containers/containers.conf.modules
  • 对于 root 用户: /etc/containers/containers.conf.modules,或 /usr/share/containers/containers.conf.modules

您可以使用 podman --module <your_module_name > 命令按需加载模块,以覆盖系统和用户配置文件。使用模块涉及以下事实:

  • 您可以使用 --module 选项多次指定模块。
  • 如果 <your_module_name > 是绝对路径,则配置文件将直接加载。
  • 相对路径相对于前面提到的三个模块目录解析。
  • $HOME 中的模块覆盖 /etc//usr/share/ 目录中的模块。

如需更多信息,请参阅 上游文档

Jira:RHELPLAN-167829[1]

Container Tools 软件包已更新

更新的 Container Tools RPM 元软件包现已正式发布,其包括 Podman、Buildah、Skopeo、crun 和 runc 工具,现在可用。与之前版本相比,重要的程序错误修复和增强包括:

Podman v4.9 中的显著变化:

  • 现在,您可以使用 podman --module <your_module_name > 命令来按需加载模块,并覆盖系统和用户配置文件。
  • 添加了一个新的 podman farm 命令,其中包含一组 create,set,remove, 和 update 子命令。使用这些命令,您可以将构建到为不同架构运行 podman 的机器。
  • 添加了一个新的 podman-compose 命令,它使用 Docker compose 等外部 compose 提供者运行组合工作负载。
  • podman build 命令现在支持 --layer-label--cw 选项。
  • podman generate systemd 命令已弃用。使用 Quadlet 在 systemd 下运行容器和 pod。
  • podman build 命令现在支持带有 HereDoc 语法的 Containerfiles
  • podman machine initpodman machine set 命令现在支持一个新的 --usb 选项。使用这个选项允许 QEMU 提供商的 USB 透传。
  • podman kube play 命令现在支持新的 --publish-all 选项。使用此选项公开主机上的所有 containerPorts。

有关显著变化的更多信息,请参阅 上游发行注记

Jira:RHELPLAN-167796[1]

Podman v4.9 RESTful API 现在显示进度数据

在这个版本中,Podman v4.9 RESTful API 现在会在拉取镜像或将镜像推送到 registry 时显示进度数据。

Jira:RHELPLAN-167823[1]

SQLite 现在作为 Podman 的默认数据库后端被完全支持

在 Podman v4.9 中,Podman 的 SQLite 数据库后端(以前作为技术预览提供)现已获得全面支持。SQLite 数据库在使用容器元数据时提供更高的稳定性、性能和一致性。SQLite 数据库后端是 RHEL 9.4 的新安装的默认后端。如果您从以前的 RHEL 版本升级,则默认后端为 BoltDB。

如果您使用 containers.conf 文件中的 database_backend 选项显式配置了数据库后端,则 Podman 将继续使用指定的后端。

Jira:RHELPLAN-168180[1]

Containerfile 现在支持多行说明

您可以使用 Containerfile 文件中的多行 HereDoc 指令(Here Document 表示法)来简化此文件,并减少执行多个 RUN 指令导致的镜像层数。

例如,原始 Containerfile 可以包含以下 RUN 指令:

RUN dnf update
RUN dnf -y install golang
RUN dnf -y install java

您可以使用 HereDoc 表示法,而不是多个 RUN 指令:

RUN <<EOF
dnf update
dnf -y install golang
dnf -y install java
EOF

Jira:RHELPLAN-168185[1]

Podman 现在支持从主机分配 USB 设备到 QEMU 虚拟机

使用 podman machine 命令,您现在可以通过 USB 透传将主机中的 USB 设备分配给 QEMU 虚拟机(VM)。

在将 USB 设备连接到计算机之前,USB 设备需要属于您的用户组。如果多个 USB 设备具有相同的供应商和产品 ID,则会分配第一个可用的设备。请注意,这个功能只支持基于 QEMU 技术的虚拟机。

  • 要将 USB 设备从主机分配给 QEMU 虚拟机,请运行:

    $ podman machine init --usb vendor=13d3,product=5406
  • 要使用总线和设备号从主机分配 USB 设备到 QEMU 虚拟机,请运行:

    $ podman machine init --usb bus=1,devnum=3

    请注意,如果您使用总线和设备号指定 USB 设备,则这些值每次重新引导时可能会更改。

Jira:RHELPLAN-168183[1]

gvisor-tap-vsock 软件包现在可用

gvisor-tap-vsock 软件包是 libslirp 用户模式网络库和 VPNKit 工具和服务的替代选择。它使用 Go 编写,基于 gVisor 的网络堆栈。与 libslirp 相比,gvisor-tap-vsock 库支持可配置的 DNS 服务器和动态端口转发。您可以将 gvisor-tap-vsock 网络库用于 podman-machine 虚拟机。目前,Red Hat Enterprise Linux 不支持用于管理虚拟机的 podman machine 命令。

Jira:RHELPLAN-167396[1]

第 5 章 可用的 BPF 功能

本章提供了这个 Red Hat Enterprise Linux 9 次版本的 kernel 中 Berkeley Packet Filter (BPF)功能的完整列表。表包括:

本章包含 bpftool feature 命令自动生成的输出。

表 5.1. 系统配置和其他选项

选项

unprivileged_bpf_disabled

2 (bpf() 系统调用限制为特权用户,管理员可以改变。)

JIT 编译器

1(启用)

JIT 编译器强化

1(为非特权用户启用)

JIT 编译器 kallsyms 导出

1(为 root 用户启用)

非特权用户的 JIT 的内存限制

528482304

CONFIG_BPF

y

CONFIG_BPF_SYSCALL

y

CONFIG_HAVE_EBPF_JIT

y

CONFIG_BPF_JIT

y

CONFIG_BPF_JIT_ALWAYS_ON

y

CONFIG_DEBUG_INFO_BTF

y

CONFIG_DEBUG_INFO_BTF_MODULES

y

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

n

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

y

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

可用

大型程序大小限制

可用

绑定的循环支持

可用

ISA 扩展 v2

可用

ISA 扩展 v3

可用

表 5.2. 可用的程序类型和支持的帮助程序

程序类型可用的帮助程序

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_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_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_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_skc_to_unix_sock, bpf_loop, bpf_strncmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_skc_to_mptcp_sock, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

kprobe

bpf_map_lookup_elem, bpf_map_update_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_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_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, 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_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_get_task_stack, bpf_copy_from_user, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_task_storage_get, bpf_task_storage_delete, bpf_get_current_task_btf, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_get_func_ip, bpf_get_attach_cookie, bpf_task_pt_regs, bpf_get_branch_snapshot, bpf_find_vma, bpf_loop, bpf_strncmp, bpf_copy_from_user_task, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

sched_cls

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_skb_store_bytes, bpf_l3_csum_replace, bpf_l4_csum_replace, bpf_tail_call, bpf_tail_call, bpf_clone_redirect, bpf_get_cgroup_classid, bpf_skb_vlan_push, bpf_skb_vlan_pop, bpf_skb_get_tunnel_key, bpf_skb_set_tunnel_key, bpf_redirect, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_skb_load_bytes, bpf_skb_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_skb_change_tail, bpf_skb_pull_data, 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_lock, bpf_spin_unlock, bpf_sk_fullsock, bpf_tcp_sock, bpf_skb_ecn_set_ce, bpf_get_listener_sock, bpf_PROFILE_lookup_tcp, bpf_tcp_check_syncookie, bpf_strtol, bpf_strtoul, bpf_sk_storage_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_latencies64, bpf_sk_assign, bpf_ktime_get_boot_ns, bpf_xxxx_output, bpf_zFCP_reserve, bpf_numpy_reserve, bpf_wagon_submit, bpf_ iwl_discard, bpf_ iwl_query, bpf_csum_level, bpf_categories_to_tcp6_sock, bpf_PROFILE_to_tcp_sock, bpf_wagon_to_tcp_timewait_sock, bpf_PROFILE_to_tcp_request_sock, bpf_categories_to_udp6_sock, bpf_categories_to_udp6_sock, bpf_wagon_wagon, bpf_skb_cgroup_classid, bpf_redirect_neigh, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_redirect_peer, bpf_get_current_task_ iwl, bpf_ktime_get_MAPPING_ns, bpf_check_mtu, bpf_for_each_map_elem, bpf_for_each_map_elem, bpf_ProductShortName, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_PROFILE_to_unix_sock, bpf_loop, bpf_PROFILEmp, bpf_skb_set_tstamp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_PROFILE_to_mptcp_sock, bpf_PROFILE_from_mem, bpf_PROFILE_reserve_PROFILE, bpf_PROFILE_submit_PROFILE, bpf_PROFILE_discard_criu, bpf_PROFILE_read, bpf_PROFILE_write, bpf_PROFILE_data, bpf_tcp_raw_gen_syncookie_ipv4, bpf_tcp_raw_gen_syncookie_ipv6, bpf_tcp_raw_check_syncookie_ipv4, bpf_tcp_raw_check_syncookie_ipv6, bpf_ktime_get_tai_ns, bpf_user_PROFILE_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

sched_act

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_skb_store_bytes, bpf_l3_csum_replace, bpf_l4_csum_replace, bpf_tail_call, bpf_tail_call, bpf_clone_redirect, bpf_get_cgroup_classid, bpf_skb_vlan_push, bpf_skb_vlan_pop, bpf_skb_get_tunnel_key, bpf_skb_set_tunnel_key, bpf_redirect, bpf_get_route_realm, bpf_perf_event_output, bpf_skb_load_bytes, bpf_skb_load_bytes, bpf_skb_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_skb_change_tail, bpf_skb_pull_data, 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_lock, bpf_spin_unlock, bpf_sk_fullsock, bpf_tcp_sock, bpf_skb_ecn_set_ce, bpf_get_listener_sock, bpf_PROFILE_lookup_tcp, bpf_tcp_check_syncookie, bpf_strtol, bpf_strtoul, bpf_sk_storage_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_latencies64, bpf_sk_assign, bpf_ktime_get_boot_ns, bpf_xxxx_output, bpf_zFCP_reserve, bpf_numpy_reserve, bpf_wagon_submit, bpf_ iwl_discard, bpf_ iwl_query, bpf_csum_level, bpf_categories_to_tcp6_sock, bpf_PROFILE_to_tcp_sock, bpf_wagon_to_tcp_timewait_sock, bpf_PROFILE_to_tcp_request_sock, bpf_categories_to_udp6_sock, bpf_categories_to_udp6_sock, bpf_wagon_wagon, bpf_skb_cgroup_classid, bpf_redirect_neigh, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_redirect_peer, bpf_get_current_task_ iwl, bpf_ktime_get_MAPPING_ns, bpf_check_mtu, bpf_for_each_map_elem, bpf_for_each_map_elem, bpf_ProductShortName, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_PROFILE_to_unix_sock, bpf_loop, bpf_PROFILEmp, bpf_skb_set_tstamp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_PROFILE_to_mptcp_sock, bpf_PROFILE_from_mem, bpf_PROFILE_reserve_PROFILE, bpf_PROFILE_submit_PROFILE, bpf_PROFILE_discard_criu, bpf_PROFILE_read, bpf_PROFILE_write, bpf_PROFILE_data, bpf_tcp_raw_gen_syncookie_ipv4, bpf_tcp_raw_gen_syncookie_ipv6, bpf_tcp_raw_check_syncookie_ipv4, bpf_tcp_raw_check_syncookie_ipv6, bpf_ktime_get_tai_ns, bpf_user_PROFILE_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

tracepoint

bpf_map_lookup_elem, bpf_map_update_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_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_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, 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_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_get_task_stack, bpf_copy_from_user, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_task_storage_get, bpf_task_storage_delete, bpf_get_current_task_btf, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_get_func_ip, bpf_get_attach_cookie, bpf_task_pt_regs, bpf_get_branch_snapshot, bpf_find_vma, bpf_loop, bpf_strncmp, bpf_copy_from_user_task, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

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_strtol, bpf_strtoul, 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_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_check_mtu, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_skc_to_unix_sock, bpf_loop, bpf_strncmp, bpf_xdp_get_buff_len, bpf_xdp_load_bytes, bpf_xdp_store_bytes, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_skc_to_mptcp_sock, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_tcp_raw_gen_syncookie_ipv4, bpf_tcp_raw_gen_syncookie_ipv6, bpf_tcp_raw_check_syncookie_ipv4, bpf_tcp_raw_check_syncookie_ipv6, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

perf_event

bpf_map_lookup_elem, bpf_map_update_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_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_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, 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_pid_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_copy_from_user, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_task_storage_get, bpf_task_storage_delete, bpf_get_current_task_btf, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_get_func_ip, bpf_get_attach_cookie, bpf_task_pt_regs, bpf_get_branch_snapshot, bpf_find_vma, bpf_loop, bpf_strncmp, bpf_copy_from_user_task, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

cgroup_skb

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_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_strtol, bpf_strtoul, 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_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_skc_to_unix_sock, bpf_loop, bpf_strncmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_skc_to_mptcp_sock, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

cgroup_sock

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_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_node_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_strtol, bpf_strtoul, 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_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_loop, bpf_strncmp, bpf_get_retval, bpf_set_retval, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

lwt_in

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_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_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_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_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_skc_to_unix_sock, bpf_loop, bpf_strncmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_skc_to_mptcp_sock, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

lwt_out

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_get_cgroup_classid, bpf_get_route_realm, bpf_perf_event_output, bpf_perf_event_output, bpf_skb_load_bytes, bpf_skb_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_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_ 0.11.0-64, bpf_ktime_boot_ns, bpf_probe_read_output, bpf_probe_read_output, bpf_categories_reserve, bpf_wagon_submit, bpf_ iwl_discard, bpf_categories_query, bpf_categories_to_tcp6_sock, bpf_PROFILE_to_tcp_sock, bpf_wagon_to_tcp_timewait_sock, bpf_PROFILE_to_tcp_sock, bpf_categories_to_udp6_sock, bpf_categories_to_udp6_sock, bpf_unmarshal_wagon, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_get_current_task_PROFILE, bpf_ktime_get_PROFILE_ns, bpf_for_each_map_elem, bpf_PROFILE, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_ iwl_to_unix_sock, bpf_loop, bpf_loopmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_criu_to_mptcp_sock, bpf_PROFILE_from_mem, bpf_PROFILE_reserve_numpy, bpf_zFCP_submit_numpy, bpf_criu_submit_numpy, bpf_wagon_discard_criu, bpf_ProductShortName_read, bpf_ iwl_write, bpf_unmarshal_data, bpf_ktime_get_tai_ns, bpf_user_PROFILE_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

lwt_xmit

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_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_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_tunnel_opt, 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_lwt_push_encap, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, 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_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_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, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_skc_to_unix_sock, bpf_loop, bpf_strncmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_skc_to_mptcp_sock, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

sock_ops

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_get_current_task, bpf_get_numa_node_id, bpf_get_socket_cookie, bpf_setsockopt, bpf_sock_map_update, bpf_getsockopt, bpf_sock_ops_cb_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_strtol, bpf_strtoul, 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_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_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_skc_to_unix_sock, bpf_loop, bpf_strncmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_skc_to_mptcp_sock, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

sk_skb

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_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_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_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_get_current_task_btf, bpf_ktime_get_coarse_ns, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_skc_to_unix_sock, bpf_loop, bpf_strncmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_skc_to_mptcp_sock, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

cgroup_device

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_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_node_id, bpf_get_current_cgroup_id, bpf_get_local_storage, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_csum64, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_categories_output, bpf_categories_reserve, bpf_numpy_submit, bpf_PROFILE_discard, bpf_PROFILE_query, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_get_current_task_frequency, bpf_for_each_map_elem, bpf_for_each_map_elem, bpf_ bpf_PROFILE, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_loop, bpf_loopmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_csum_from_mem, bpf_criu_reserve_PROFILE, bpf_unmarshal_submit_criu, bpf_numpy_discard_criu, bpf_categories_read, bpf_unmarshal_write, bpf_unmarshal_data, bpf_ktime_get_tai_ns, bpf_user_criu_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

sk_msg

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_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_elem, bpf_msg_push_data, bpf_msg_pop_data, bpf_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, bpf_sk_storage_get, bpf_sk_storage_delete, bpf_sk_storage_delete, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_criu64, bpf_get_netns_cookie, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_ktime_output, bpf_numpy_reserve, bpf_wagon_submit, bpf_ iwl_discard, bpf_ iwl_query, bpf_categories_to_tcp6_sock, bpf_PROFILE_to_tcp_sock, bpf_PROFILE_to_tcp_timewait_sock, bpf_ iwl_to_tcp_request_sock, bpf_categories_to_udp6_sock, bpf_PROFILE_to_tcp_sock, bpf_criu_to_tcp_sock, bpf_ iwl_to_tcp_sock bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_get_current_task_PROFILE, bpf_ktime_get_PROFILE_ns, bpf_for_each_map_elem, bpf_numpy, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs,, bpf_PROFILE_to_unix_sock, bpf_loop, bpf_ iwlmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_PROFILE_to_mptcp_sock, bpf_criu_from_mem, bpf_PROFILE_reserve_zFCP, bpf_PROFILE_submit_numpy, bpf_PROFILE_discard_numpy, bpf_criu_discard_numpy, bpf_wagon_read, bpf_ProductShortName_write, bpf_unmarshal_data, bpf_ktime_get_tai_ns, bpf_user_PROFILE_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

raw_tracepoint

bpf_map_lookup_elem, bpf_map_update_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_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_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, 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_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_get_task_stack, bpf_copy_from_user, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_task_storage_get, bpf_task_storage_delete, bpf_get_current_task_btf, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_get_func_ip, bpf_task_pt_regs, bpf_get_branch_snapshot, bpf_find_vma, bpf_loop, bpf_strncmp, bpf_copy_from_user_task, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

cgroup_sock_addr

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_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_node_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_ CephFS_lookup_tcp, bpf_strtol, bpf_strtol, bpf_strtoul, 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_ PlacementRule64, bpf_get_netns_cookie, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_categories_output, bpf_categories_reserve, bpf_numpy_submit, bpf_PROFILE_discard, bpf_PROFILE_to_tcp6_sock, bpf_ iwl_to_tcp_sock, bpf_PROFILE_to_tcp_timewait_sock, bpf_PROFILE_to_tcp_sock, bpf_PROFILE_to_tcp_sock, bpf_ iwl_to_tcp_sock, bpf_ , bpf_PROFILE_to_udp6_sock, bpf_PROFILE_setuptools, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_get_current_task_PROFILE, bpf_ktime_get_MAPPING_ns, bpf_for_each_map_elem, bpf_zFCP, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_PROFILE_to_unix_sock, bpf_loop, bpf_loopmp, bpf_get_retval, bpf_set_retval, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_2023_to_mptcp_sock, bpf_set_retval, bpf_kptr_xchg, bpf_map_lookup_percpu_elem bpf_wagon_from_mem, bpf_numpy_reserve_criu, bpf_setuptools_submit_criu, bpf_categories_discard_criu, bpf_PROFILE_read, bpf_criu_write, bpf_wagon_data, bpf_ktime_get_tai_ns, bpf_user_mvapich_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

lwt_seg6local

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_get_cgroup_classid, bpf_get_route_realm, bpf_perf_event_output, bpf_perf_event_output, bpf_skb_load_bytes, bpf_skb_diff, bpf_skb_under_cgroup, bpf_get_hash_recalc, bpf_get_current_task, bpf_skb_pull_data, bpf_get_numa_node_id, bpf_lwt_seg6_store_bytes, bpf_lwt_seg6_adjust_srh, bpf_lwt_seg6_action, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_wagon64, bpf_ktime_get_boot_ns, bpf_categories_output, bpf_PROFILE_reserve, bpf_PROFILE_discard, bpf_categories_query, bpf_categories_to_tcp6_sock, bpf_PROFILE_to_tcp_sock, bpf_2023_to_tcp_sock, bpf_criu_to_tcp_timewait_sock, bpf_ProductShortName_to_tcp_request_sock, bpf_PROFILE_to_udp6_sock, bpf_PROFILE_PROFILE, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_get_current_task_xxxx, bpf_ktime_get_PROFILE_ns, bpf_for_each_map_elem, bpf_per_cpu_ptr, bpf_get_current_task_xxxx, bpf_ktime_get_ptr, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_PROFILE_to_unix_sock, bpf_loop, bpf_netnsmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_2023_to_mptcp_sock, bpf_wagon_from_mem, bpf_numpy_reserve_criu, bpf_setuptools_submit_criu, bpf_categories_discard_criu, bpf_PROFILE_read, bpf_criu_write, bpf_wagon_data, bpf_ktime_get_tai_ns, bpf_user_mvapich_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

lirc_mode2

不支持

sk_reuseport

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_skb_load_bytes, bpf_get_current_task, bpf_get_numa_node_id, bpf_get_socket_cookie, bpf_skb_load_bytes_relative, bpf_sk_select_reuseport, bpf_map_push_elem, bpf_map_pop_elem, bpf_map_peek_elem, bpf_spin_lock, bpf_spin_unlock, 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_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, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_loop, bpf_strncmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

flow_dissector

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_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_strtoul, bpf_strtoul, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_categories64, bpf_ktime_get_boot_ns, bpf_categories_output, bpf_categories_reserve, bpf_categories_submit, bpf_PROFILE_discard, bpf_PROFILE_to_tcp6_sock, bpf_PROFILE_to_tcp_sock, bpf_PROFILE_to_tcp_sock, bpf_PROFILE_to_tcp_timewait_sock, bpf_ProductShortName_to_tcp_request_sock, bpf_PROFILE_to_udp6_sock, bpf_PROFILE_PROFILE, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_get_current_task_xxxx, bpf_ktime_get_PROFILE_ns, bpf_for_each_map_elem, bpf_per_cpu_ptr, bpf_get_current_task_xxxx, bpf_ktime_get_ptr, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_PROFILE_to_unix_sock, bpf_loop, bpf_netnsmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_2023_to_mptcp_sock, bpf_wagon_from_mem, bpf_numpy_reserve_criu, bpf_setuptools_submit_criu, bpf_categories_discard_criu, bpf_PROFILE_read, bpf_criu_write, bpf_wagon_data, bpf_ktime_get_tai_ns, bpf_user_mvapich_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

cgroup_sysctl

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_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_node_id, bpf_get_current_cgroup_id, bpf_get_local_storage, bpf_map_push_elem, bpf_map_pop_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_MAPPING64, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_PROFILE_output, bpf_numpy_reserve, bpf_PROFILE_submit, bpf_PROFILE_discard, bpf_ktime_discard, bpf_unmarshal_query, bpf_ iwl_numpy, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_get_current_task_PROFILE, bpf_ktime_get_categories_ns, bpf_for_each_map_elem, bpf_PROFILE, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_loop, bpf_loopmp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_wagon_from_mem, bpf_PROFILE_reserve_PROFILE, bpf_ 0.11.0-_submit_PROFILE, bpf_criu_discard_PROFILE, bpf_criu_read, bpf_unmarshal_write, bpf_unmarshal_data, bpf_ktime_get_tai_ns, bpf_user_categories_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

raw_tracepoint_writable

bpf_map_lookup_elem, bpf_map_update_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_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_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, 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_reserve, bpf_ringbuf_submit, bpf_ringbuf_discard, bpf_ringbuf_query, bpf_get_task_stack, bpf_copy_from_user, bpf_snprintf_btf, bpf_per_cpu_ptr, bpf_this_cpu_ptr, bpf_task_storage_get, bpf_task_storage_delete, bpf_get_current_task_btf, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_get_func_ip, bpf_task_pt_regs, bpf_get_branch_snapshot, bpf_find_vma, bpf_loop, bpf_strncmp, bpf_copy_from_user_task, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

cgroup_sockopt

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_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_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_strtol, bpf_strtoul, 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_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_get_current_task_btf, bpf_for_each_map_elem, bpf_snprintf, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_loop, bpf_strncmp, bpf_get_retval, bpf_set_retval, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_dynptr_from_mem, bpf_ringbuf_reserve_dynptr, bpf_ringbuf_submit_dynptr, bpf_ringbuf_discard_dynptr, bpf_dynptr_read, bpf_dynptr_write, bpf_dynptr_data, bpf_ktime_get_tai_ns, bpf_user_ringbuf_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

tracing

不支持

struct_ops

不支持

ext

不支持

lsm

不支持

sk_lookup

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_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_strtoul, bpf_strtoul, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_categories64, bpf_sk_assign, bpf_ktime_get_boot_ns, bpf_PROFILE_output, bpf_criu_reserve, bpf_categories_submit, bpf_categories_discard, bpf_PROFILE_query, bpf_numpy_to_tcp6_sock, bpf_categories_to_tcp_sock, bpf_PROFILE_to_tcp_timewait_sock, bpf_ iwl_to_tcp_request_sock, bpf_categories_to_udp6_sock, bpf_PROFILE_criu, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_get_current_task_PROFILE, bpf_ktime_get_categories_ns, bpf_for_each_map_elem, bpf_ProductShortName, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_task_pt_regs, bpf_ iwl_to_unix_sock, bpf_loop, bpf_framemp, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_categories_to_mptcp_sock, bpf_PROFILE_from_mem, bpf_PROFILE_reserve_PROFILE, bpf_criu_submit_PROFILE, bpf_PROFILE_discard_criu, bpf_PROFILE_read, bpf_PROFILE_write, bpf_PROFILE_data, bpf_ktime_get_tai_ns, bpf_user_PROFILE_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

syscall

bpf_map_lookup_elem, bpf_map_update_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_task, bpf_current_task_under_cgroup, bpf_get_numa_node_id, bpf_probe_read_str, bpf_get_socket_cookie, 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_spin_lock, bpf_spin_unlock, bpf_strtol, bpf_strtoul, bpf_sk_storage_get, bpf_sk_storage_delete, bpf_sk_storage_delete, bpf_send_signal, bpf_skb_output, bpf_probe_read_user, bpf_probe_read_kernel, bpf_probe_read_user_str, bpf_probe_read_kernel_str, bpf_send_signal_thread, bpf_ netobserv64, bpf_get_ns_current_pid_tgid, bpf_xdp_output, bpf_xdp_output, bpf_get_current_ancestor_cgroup_id, bpf_ktime_get_boot_ns, bpf_unmarshal_output, bpf_PROFILE_reserve, bpf_PROFILE_discard, bpf_ netobserv_query, bpf_PROFILE_to_tcp6_sock, bpf_zFCP_to_tcp_sock, bpf_PROFILE_to_tcp_sock, bpf_PROFILE_to_tcp_timewait_sock, bpf_PROFILE_to_tcp_request_sock, bpf_PROFILE_to_udp6_sock, bpf_get_task_stack, bpf_d_path, bpf_copy_from_user, bpf_PROFILE_numpy, bpf_per_cpu_ptr, bpf_ this_cpu_ptr, bpf_task_storage_get, bpf_task_storage_delete, bpf_get_current_task_criu, bpf_sock_from_file, bpf_for_each_map_elem, bpf_categories, bpf_sys_bpf, bpf_criu_find_by_name_kind, bpf_sys_close, bpf_timer_init, bpf_timer_set_callback, bpf_timer_start, bpf_timer_cancel, bpf_get_func_ip, bpf_task_pt_regs, bpf_get_branch_snapshot, bpf_categories_to_unix_sock, bpf_kallsyms_lookup_name, bpf_find_vma, bpf_loop, bpf_mvapichmp, bpf_xdp_get_buff_len, bpf_copy_from_user_task, bpf_copy_from_user_task, bpf_kptr_xchg, bpf_map_lookup_percpu_elem, bpf_PROFILE_to_mptcp_sock, bpf_PROFILE_from_mem, bpf_criu_reserve_categories, bpf_numpy_submit_criu, bpf_PROFILE_discard_PROFILE, bpf_zFCP_read, bpf_csum_write, bpf_criu_data, bpf_criu_submit_data, bpf_ktime_get_tai_ns, bpf_user_PROFILE_drain, bpf_cgrp_storage_get, bpf_cgrp_storage_delete

表 5.3. 可用的映射类型

映射类型可用

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

bloom_filter

user_ringbuf

cgrp_storage

第 6 章 程序错误修复

这部分论述了 Red Hat Enterprise Linux 9.4 中修复的、对用户有严重影响的错误。

6.1. 安装程序和镜像创建

Anaconda 在 Installation Destination 屏幕中显示多路径存储设备的 WWID 标识符

在以前的版本中,Anaconda 没有显示任何详情,如多路径存储设备的设备号、WWPN 或 LUN。因此,很难从 Installation Destination > Add a disk 屏幕中选择正确的安装目的地。在这个版本中,Anaconda 会显示多路径存储设备的 WWID 标识符。现在,您可以在高级存储设备屏幕中轻松识别并选择所需的安装目的地。

Jira:RHEL-11384[1]

安装程序现在在 Kickstart 文件中接受额外的时区定义

Anaconda 切换到了不同的、更严格的验证时区选择的方法。这会导致一些时区定义(如日本)不再有效,尽管之前版本中被接受。需要更新具有这些定义的传统 Kickstart 文件。否则,它们将默认为 Americas/New_York 时区

有效时区列表以前来自 pytz.common_timezones 中的 pytz.common_timezones。这个版本更改了 timezone Kickstart 命令的验证设置,以使用 pytz.all_timezones,它是 common_timezones 列表的超集,并允许指定大量时区。这个更改可确保为 Red Hat Enterprise Linux 6 创建的旧 Kickstart 文件仍然指定有效的时区。

注意:此更改仅适用于 timezone Kickstart 命令。图形和基于文本的互动界面中的时区选择保持不变。具有有效时区选择的 Red Hat Enterprise Linux 9 的现有 Kickstart 文件不需要任何更新。

Jira:RHEL-13150[1]

安装程序现在可以正确地使用多个端口和 BOOTIF 选项创建绑定设备

在以前的版本中,当安装使用带有多个端口的绑定网络设备以及 BOOTIF 引导选项时,安装程序会创建不正确的连接配置集。因此,如果将 BOOTIF 选项配置为其端口之一,则不会将 BOOTIF 选项使用的设备添加到绑定设备中。

在这个版本中,在使用 BOOTIF 引导选项时,安装程序会在 initramfs 中正确创建配置集。因此,所有指定的端口现在都添加到安装的系统的绑定设备中。

Jira:RHEL-4766

在引导安装镜像时,Anaconda 会替换误导的错误消息

在以前的版本中,当安装程序无法引导安装镜像时,例如因为 inst. stage2 inst.repo 中指定的 stage2 源丢失,Anaconda 会显示以下误导错误消息:

/run/anaconda/initrd_errors.txt: No such file or directory

在这个版本中,Anaconda 会发出正确的警告信息来最小化混淆。

Jira:RHEL-5638

Anaconda 现在验证 FIPS 要求的 LUKS 密码短语

在以前的版本中,Anaconda 不检查 LUKS 密码短语的长度是否满足 FIPS 要求,即使底层工具执行了这个检查。因此,使用小于 8 个字符的密码短语在 FIPS 模式下安装会导致安装程序过早停止。

有了此更新,安装程序已得到了改进,可以验证并强制执行密码短语的最小长度。因此,如果在 FIPS 模式下使用的 LUKS 密码短语太短,安装程序会通知,并防止意外停止。

Bugzilla:2163497

xfsprogs 的新版本不再缩小 /boot的大小

在以前的版本中,RHEL 9.3 中 5.19 版本的 xfsprogs 软件包会导致 /boot 的大小缩小。因此,与 RHEL 9.2 版本相比,它会导致 /boot 分区上可用空间的不同。此修复为所有镜像将 /boot 分区增加到 600 MiB,而不是 500 MiB,/boot 分区不再受到空间问题的影响。

Jira:RHEL-7999

6.2. 安全性

使用 ip vrf 管理虚拟路由的规则被添加到 SELinux 策略中

您可以使用 ip vrf 命令管理其他网络服务的虚拟路由。在以前的版本中,selinux-policy 不包含支持这个使用的规则。有了这个更新,SELinux 策略规则允许从 ip 域明确过渡到 httpdsshdnamed 域。当 ip 命令使用 setexeccon 库调用时,这些转换会应用。

Jira:RHEL-14246[1]

rsyslog 可以通过 omprog执行特权命令

在以前的版本中,Rsyslog 的 omprog 模块无法执行某些外部程序,特别是包含特权命令的程序。因此,通过 omprog 使用涉及特权命令的脚本受到限制。在这个版本中,SELinux 策略已被调整。将您的脚本放在 /usr/libexec/rsyslog 目录中,以确保与调整的 SELinux 策略兼容。现在,Rsyslog 可以通过 omprog 模块来执行包括带有特权命令的脚本。

Jira:RHEL-5196

带有偏移的 CardOS 5.3 卡不再会在 OpenSC 中造成问题

在以前的版本中,对于将证书存储在单个 PKCS 380 文件的不同偏移上的一些 CardOS 5.3 卡中,文件缓存无法正常工作。这是因为文件缓存会忽略文件的偏移部分,这会导致缓存重复覆盖,并从文件缓存中读取无效数据。这个问题已被识别并修复上游,在更新后,CardOS 5.3 卡可以与文件缓存正常工作。

Jira:RHEL-4079[1]

6.3. 订阅管理

subscription-manager 不再在终端中保留非必要的文本

从 RHEL 9.1 开始,subscription-manager 在处理任何操作时会显示进度信息。在以前的版本中,对于某些语言(通常为非拉丁语言),在操作完成后不会清除进度消息。有了这个更新,在操作完成后,所有信息都会被正确清除。

如果您之前禁用了进度信息,您可以输入以下命令重新启用它们:

# subscription-manager config --rhsm.progress_messages=1

Bugzilla:2136694[1]

6.4. 软件管理

现在,如果 librhsm 在容器中运行,librhsm 库会返回正确的 /etc/rhsm-host 前缀

如果 librhsm 在容器中运行 librhsm,则 librhsm 库将路径前缀从 /etc/rhsm 重写到 /etc/rhsm-host 路径。在以前的版本中,因为字符串操作错误,librhsm 会返回错误的 /etc/rhsm-host-host 前缀。在这个版本中,这个问题已被解决,librhsm 库现在返回正确的 /etc/rhsm-host 前缀。

Jira:RHEL-14224

systemd 现在可以正确地管理 librepo创建的 /run/user/0 目录

在以前的版本中,如果在 root 用户登录前从 Insights 客户端调用 librepo 功能,/run/user/0 目录可能会创建并带有错误的 SELinux 上下文类型。这导致 systemd 在从 root 注销后清理目录。

在这个版本中,librepo 软件包会根据 SELinux 策略中定义的默认文件系统标记规则设置默认创建类型。现在,systemd 可以正确地管理由 librepo 创建的 /run/user/0 目录。

Jira:RHEL-11240

systemd 现在可以正确地管理 libdnf创建的 /run/user/0 目录

在以前的版本中,如果在 root 用户登录前从 Insights 客户端调用 libdnf 功能,/run/user/0 目录可能会创建并带有错误的 SELinux 上下文类型。这导致 systemd 在从 root 注销后清理目录。

在这个版本中,libdnf 软件包会根据 SELinux 策略中定义的默认文件系统标记规则设置默认创建类型。现在,systemd 可以正确地管理 libdnf 创建的 /run/user/0 目录。

Jira:RHEL-11238

dnf need-restarting --reboothint 命令现在建议重启来更新 CPU microcode

要完全更新 CPU microcode,您必须重启系统。在以前的版本中,当安装了包含更新的 CPU microcode 的 microcode_ctl 软件包时,dnf needs-restarting --reboothint 命令不推荐重启。在这个版本中,这个问题已被解决,dnf needs-restarting --reboothint 现在建议重启来更新 CPU microcode。

Jira:RHEL-4600

6.5. Shell 和命令行工具

现在,当按内存对进程排序时,top -u 命令至少会显示一个进程

在以前的版本中,当使用 -u &lt ; user > 参数执行 top 命令时,用户与运行命令的不同时,所有进程都会按内存排序时消失。在这个版本中,当按内存对进程排序时,top 命令至少会显示一个进程。

注意

要保留光标的位置,不会显示所有进程。您可以向上滚动结果来显示剩余的进程。

Jira:RHEL-16278

ReaR 现在会在安装 BIOS 和 UEFI 引导装载程序时决定存在 BIOS 引导装载程序

在以前的版本中,在混合引导装载程序设置(UEFIBIOS)中,当 UEFI 被用来引导时,Relax-and-Recover (ReaR)只恢复 UEFI 引导装载程序而不是 BIOS 引导装载程序。这会导致系统具有 GUID 分区表 (GPT)、BIOS 引导分区,而不是 BIOS 引导装载程序。在这种情况下,ReaR 无法创建救援镜像,尝试使用 rear mkbackuprear mkrescue 命令生成备份或救援镜像会失败,并显示以下错误消息:

ERROR: Cannot autodetect what is used as bootloader, see default.conf about 'BOOTLOADER'.

有了这个更新,ReaR 决定存在 UEFIBIOS 引导装载程序,恢复它们,且不会在 GPT 中带有 BIOS 引导分区的系统上遇到 BIOS 引导装载程序时失败。因此,可以备份并多次恢复具有混合 UEFIBIOS 引导装载程序设置的系统。

Jira:RHEL-16864[1]

ReaR 在恢复过程中不再使用 logbsize,sunitswidth 挂载选项

在以前的版本中,当使用 MKFS_ XFS _OPTIONS 配置设置恢复带有与原始参数的 XFS 文件系统时,Relax-and-Recover (ReaR)使用适用于原始文件系统的挂载选项挂载这个文件系统,但不适用于恢复的文件系统。因此,当 ReaR 运行 mount 命令时,磁盘布局重新创建会失败,并显示以下错误消息:

wrong fs type, bad option, bad superblock on and missing codepage or helper program, or other error.

内核日志显示以下信息之一:

 logbuf size must be greater than or equal to log stripe size
alignment check failed: sunit/swidth vs. agsize

有了这个更新,ReaR 在挂载重新创建的 XFS 文件系统时避免使用 logbsizesunitswidth 挂载选项。因此,当使用 MKFS_XFS_OPTIONS 配置设置时,磁盘布局会成功重新创建。

Jira:RHEL-10478[1]

在有小的精简池元数据大小的系统上,ReaR 恢复不再会失败

在以前的版本中,当使用精简池保存 LVM 卷组布局时,ReaR 不会保存池元数据卷的大小。在恢复过程中,ReaR 会使用默认大小重新创建池,即使系统使用了非默认池元数据大小。

因此,当原始池元数据大小小于默认大小,且卷组中没有可用空间时,系统恢复过程中的布局重新创建会失败,并显示类似这些示例的信息:

Insufficient free space: 230210 extents needed, but only 230026 available

或者

Volume group "vg" has insufficient free space (16219 extents): 16226 required.

在这个版本中,恢复的系统有一个与原始系统大小相同的元数据卷。因此,恢复具有小的精简池元数据大小的系统,且卷组中没有额外的可用空间成功完成。

Jira:RHEL-6984

ReaR 现在在救援系统中保留 NetBackup 的 bprestore 命令的日志以及恢复的系统

在以前的版本中,当使用 NetBackup 集成(BACKUP=NBU)时,ReaR 会在恢复过程中将日志从 bprestore 命令添加到退出时删除的目录。另外,ReaR 没有将命令生成的更多日志保存到恢复的系统上的 /usr/openv/netbackup/logs/bprestore/ 目录下。

因此,如果 bprestore 命令在恢复过程中失败,日志会被删除,除非使用 -d-D 选项运行 rear restore 命令。此外,即使恢复成功完成,/usr/openv/netbackup/logs/bprestore/ 目录下的日志也会在重启后丢失,且无法检查。

在这个版本中,ReaR 在救援系统中的 /var/lib/rear/restore 目录中保留来自 bprestore 命令的日志,它在 rear restore 命令完成后保留它,直到救援系统重启为止。如果系统被恢复,则 /usr/openv/netbackup/logs/bprestore/ 中的所有日志都会复制到 /var/log/rear/recover/restore 目录中,以及 /var/lib/rear/restore 中的日志。

Jira:RHEL-17393

如果在配置文件中设置了 TMPDIR 变量,ReaR 在恢复过程中不再失败

在以前的版本中,ReaR 默认配置文件 /usr/share/rear/conf/default.conf 包含以下说明:

# To have a specific working area directory prefix for Relax-and-Recover
# specify in /etc/rear/local.conf something like
#
#   export TMPDIR="/prefix/for/rear/working/directory"
#
# where /prefix/for/rear/working/directory must already exist.
# This is useful for example when there is not sufficient free space
# in /tmp or $TMPDIR for the ISO image or even the backup archive.

以上提到的指令无法正常工作,因为救援环境中 TMPDIR 变量的值相同,如果救援镜像中指定的目录不存在,则这不正确。

因此,当救援镜像引导时,在 /etc/rear/local.conf 文件中设置并导出 TMPDIR 会导致以下错误:

mktemp: failed to create file via template '/prefix/for/rear/working/directory/tmp.XXXXXXXXXX': No such file or directory
cp: missing destination file operand after '/etc/rear/mappings/mac'
Try 'cp --help' for more information.
No network interface mapping is specified in /etc/rear/mappings/mac

或者,在运行 rear 恢复 时运行以下命令,并稍后中止:

ERROR: Could not create build area

在这个版本中,ReaR 在救援环境中取消设置 TMPDIR 变量。ReaR 还会在 /etc/rear/local.conf 中设置变量,并在设置了变量时打印警告。/usr/share/rear/conf/default.conf 中的注释已被修改为指示在环境中设置和导出 TMPDIR,然后再执行它,而不是在 /etc/rear/local.conf 中设置它。

如果在 /etc/rear/local.conf 中使用了命令 export TMPDIR=…​,ReaR 现在打印以下警告:

Warning: Setting TMPDIR in a configuration file is deprecated. To specify a working area directory prefix, export TMPDIR before executing 'rear'

因此,在上述配置中,恢复可以成功。

/etc/rear/local.conf 等配置文件中设置 TMPDIR 现已弃用,功能将在以后的版本中删除。建议您从 /etc/rear/local.conf 中删除此类设置,并在调用 ReaR 前在环境中设置和导出 TMPDIR

Jira:RHEL-24847

6.6. 网络

wwan_hwsim 现在在 kernel-modules-internal 软件包中

wwan_hwsim 内核模块提供了一个框架,用于模拟和测试使用无线广域网络(WWAN)设备的各种网络场景。在以前的版本中,wwan_hwsimkernel-modules-extra 软件包的一部分。但是,在这个发行版本中,它被移到 kernel-modules-internal 软件包中,该软件包包含其他面向类似的工具。请注意,PCI 模式的 WWAN 功能仍是一个技术预览。

Jira:RHEL-24618[1]

xdp-loader features 命令现在可以正常工作

xdp-loader 工具根据之前的 libbpf 版本编译。因此,xdp-loader 功能 会失败,并显示错误:

Cannot display features, because xdp-loader was compiled against an old version of libbpf without support for querying features.

现在,这个工具会根据正确的 libbpf 版本编译。因此,命令现在可以正常工作。

Jira:RHEL-3382

6.7. 内核

crash 被 rebase 到版本 8.0.4

crash 工具已升级至 8.0.4 版本,提供多个 bugfixes。主要修复包括:

  • 修复了在内核 panic 期间非 panicking CPU 无法停止时的分段错误。
  • 当禁用 panic_on_oops 内核参数时,严重错误不会导致内核 panic。
  • crash 工具没有正确解析使用 CONFIG_SLAB_FREELIST_HARDENED=y 配置选项编译的内核的散列 freelist 指针。
  • 内核模块内存布局术语的变化。更改被替换的 module_layout 带有 module_memory,以更好地指示 crash 实用程序的内存相关方面。如果没有此更改,crash 无法启动带有类似如下的错误消息的会话:

     crash: invalid structure member offset: module_core_size
                 FILE: kernel.c  LINE: 3787  FUNCTION: module_init()

Jira:RHEL-9009

tuna 根据需要启动 GUI

在以前的版本中,如果您在没有任何子命令的情况下运行 tuna 工具,它将启动 GUI。如果您有显示,则需要此行为。相反,在没有显示的情况下,机器中的 tuna 不会正常退出。在这个版本中,tuna 会检测您是否已显示,GUI 会被启动,并相应地启动 GUI。

Jira:RHEL-8859[1]

在启用了 VMD 时,RHEL 之前无法识别 NVMe 磁盘

当您重置或重新附加驱动程序时,卷管理设备(VMD)域之前没有软重置。因此,硬件无法正确检测并枚举其设备。有了此更新,启用了 VMD 的操作系统可以正确地识别 NVMe 磁盘,特别是在重置服务器或使用虚拟机时。

Bugzilla:2128610[1]

6.8. 文件系统和存储

multipathd 现在成功删除带有未排队的 I/O 的设备

在以前的版本中,multipathd 命令在删除设备前不会禁用 queue_if_no_path 参数。这只有在多路径设备本身有未完成的 I/O 且不是分区设备时,才能实现。因此,multipathd 会挂起,且无法维护多路径设备。在这个版本中,multipathd 在执行 remove 命令前禁用排队,如 multipath -F,multipath -f <device> , multipathd remove map , 或 multipathd remove map <device>。现在,multipathd 可以成功删除带有未排队的 I/O 的设备。

Jira:RHEL-4998[1]

dm-cryptdm-verity 设备的 no_read_workqueueno_write_workqueuetry_verify_in_taskle 选项会被临时禁用

在以前的版本中,使用 no_read_workqueueno_write_workqueue 选项和 dm-verity 设备创建的 dm-crypt 设备以及使用 try_verify_in_tasklet 选项创建的 dm-verity 设备会导致内存崩溃。因此,随机内核内存被破坏,这会导致各种系统问题。在这个版本中,这些选项会被临时禁用。请注意,这个修复可能会导致 dm-veritydm-crypt 在某些工作负载中执行较慢。

Jira:RHEL-23572[1]

multipathd 现在检查设备是否错误地排队 I/O

在以前的版本中,多路径设备会在以下条件下重启排队 I/O,即使它被配置为失败:

  • 多路径设备配置了 queue_if_no_paths 参数,设置为重试次数。
  • 路径设备已从没有工作路径的多路径设备中删除,不再排队 I/O。

在这个版本中,这个问题已被解决。因此,如果禁用了排队,且在没有可用路径时删除路径,则多路径设备不再重启排队 I/O。

Jira:RHEL-17234[1]

nvmf_log_connect_error中删除重复条目

在以前的版本中,由于重复的提交合并错误,在 nvmf_log_connect_error 内核功能中重复日志消息。因此,当内核无法连接到光纤附加的 Non-volatile Memory Express (NVMe)设备时,Connect 命令会失败 消息两次。在这个版本中,重复日志消息已从内核中删除,从而导致每个错误都只有一个日志消息可用。

Jira:RHEL-21545[1]

在添加和删除命名空间时,内核不再崩溃

在以前的版本中,当快速添加和删除 NVMe 命名空间时,命名空间会在用于探测命名空间的连续命令间消失。在特定情况下,存储阵列不会返回 无效的命名空间 错误,而是返回一个带有零的缓冲区。因此,内核会因为 divide-by-zero 错误而崩溃。在这个版本中,内核会从向存储发布的 Identify 命名空间数据结构的响应验证数据。因此,内核不再崩溃。

Jira:RHEL-14751[1]

现在,数据设备的新分配的部分已被正确对齐

在以前的版本中,当扩展 Stratis 池时,可以分配池的新区域。但是新分配的区域没有与之前分配的区域正确一致。因此,可能会导致性能下降,以及 sysfs 中 Stratis 精简池的 alignment_offset 文件中的非零条目。在这个版本中,当池扩展时,数据设备的新分配的区域与之前分配的区域正确一致。因此,在 sysfs 中,性能没有降级,在 Stratis 精简池的 alignment_offset 文件中没有非零条目。

Jira:RHEL-16736

当在 /etc/fstab中将 NVMe-FC 设备添加为挂载点时,系统可以正确启动

在以前的版本中,由于 nvme-cli nvmf-autoconnect systemd 服务中的一个已知问题,在将光纤通道上的 Non-volatile Memory Express (NVMe-FC)设备添加为 /etc/fstab 文件中的挂载点时,系统无法引导。因此,系统进入紧急模式。有了此更新,当挂载 NVMe-FC 设备时,系统可以引导,而没有任何问题。

Jira:RHEL-8171[1]

LUN 现在在操作系统安装过程中可见

在以前的版本中,系统没有使用固件源的身份验证信息,特别是在涉及带有存储在 iSCSI iBFT (Boot Firmware Table)中 CHAP (Challenge-Handshake Authentication Protocol) 的 iSCSI 硬件卸载的情况。因此,在安装过程中 iSCSI 登录失败。

有了udisks2-2.9.4-9.el9 固件身份验证中的修复,这个问题已被解决,LUN 在安装和初始引导过程中可见。

Bugzilla:2213769[1]

6.9. 高可用性和集群

配置 tlskeep_active_partition_tie_breaker 仲裁设备选项,而不指定 --force

在以前的版本中,当配置仲裁设备时,用户无法在不指定 --force 选项的情况下为仲裁设备模型 net 配置 tlskeep_active_partition_tie_breaker 选项。在这个版本中,配置这些选项不再需要指定 --force

Jira:RHEL-7746

现在修正了移动和禁止克隆和捆绑包资源的问题

此程序错误修复解决了移动捆绑和克隆资源的两个限制:

  • 当用户试图将捆绑的资源移出其捆绑包或将其从其捆绑包中运行的时,pcs 会创建一个约束,但约束无效。这会导致移动失败,并显示出错信息。在这个版本中,pcs 不允许从捆绑包中移动和禁止捆绑的资源,并打印一个错误消息,表示捆绑的资源无法从捆绑包中移出。
  • 当用户尝试移动捆绑包或克隆资源时,pcs exited with an error message noting that bundle or clone resources cannot be move.在这个版本中,Relaxes 验证 move 命令。现在,可以移动克隆和捆绑包资源。在移动克隆资源时,如果多个克隆实例正在运行,您必须指定一个目标节点。只能移动一个副本捆绑包。

Jira:RHEL-7744

pcs status 命令的输出不再显示已过期限制的警告

在以前的版本中,当移动集群资源创建临时位置约束时,pcs status 命令会在约束过期后显示警告。在这个版本中,pcs status 命令会过滤掉过期的限制,它们不再在命令输出中生成警告信息。

Jira:RHEL-7669

当 SBD 隔离需要它时,禁用 auto_tie_breaker 仲裁选项不再被允许

在以前的版本中,pcs 允许用户禁用 auto_tie_breaker 仲裁选项,即使集群配置需要这个选项才能正常工作。在这个版本中,当用户试图在 SBD 隔离需要启用 auto_tie_breaker 的系统上禁用 auto_tie_breaker 时,pcs 会生成错误消息。

Jira:RHEL-7730

6.10. 动态编程语言、网页和数据库服务器

如果使用正则表达式匹配配置了 DAV 存储库位置,则 httpd 可以正常工作

在以前的版本中,如果使用正则表达式匹配项(如 LocationMatch)在 Apache HTTP 服务器中配置了分布式 Authoring 和 Versioning (DAV)存储库,则 mod_dav httpd 模块无法从路径名称确定存储库的根目录。因此,httpd 无法处理来自第三方供应商的请求(例如,Subversion 的 mod_dav_svn 模块)。

在这个版本中,您可以使用 httpd.conf 文件中的新的 DevBasePath 指令来指定存储库根路径。例如:

<LocationMatch "^/repos/">
    DAV svn
    DavBasePath /repos
    SVNParentPath /var/www/svn
</LocationMatch>

因此,如果使用正则表达式匹配配置了 DAV 存储库位置,则 httpd 可以正确处理请求。

Jira:RHEL-6600

6.11. 编译器和开发工具

ldconfig 在系统升级后不再崩溃

在以前的版本中,当中断系统升级后,ldconfig 工具会在 /usr/lib64 目录中处理不完整的共享对象时意外终止,并显示分段错误。在这个版本中,ldconfig 会忽略在系统升级过程中编写的临时文件。因此,ldconfig 在系统升级后不再崩溃。

Jira:RHEL-14383

改进了 glibc 与应用程序的兼容性,使用 dlclose 在依赖项周期中涉及的共享对象

在以前的版本中,当使用 glibc 中的 dlclose 函数卸载共享对象时,在卸载所有其他对象前,对象的 ELF destructor 可能没有被调用。由于此后期的 ELF 破坏性执行,应用程序会因为初始共享对象的依赖项已重新初始化而造成崩溃和其他错误。

在这个版本中,glibc 已被解决,在执行任何其他 ELF 破坏性程序前,首先调用正在卸载的即时对象的 ELF 破坏性程序。因此,改进了对涉及依赖项周期的共享对象使用 dlclose 的应用程序的兼容性,并不会再崩溃。

Jira:RHEL-2491[1]

6.12. 身份管理

现在,当一个操作完成时释放的内存

在以前的版本中,在连接关闭前,每个操作分配的 KCM 内存不会被释放。因此,对于打开连接并在同一个连接上运行许多操作的客户端应用程序,可能会导致内存增加,因为分配的内存在连接关闭前没有被释放。在这个版本中,在操作完成后,为操作分配的内存会马上发布。

JIRA:SSSD-7015

当可信 AD 用户的名称包含混合问题单字符时,IdM 客户端可以正确地检索它们的信息

在以前的版本中,如果您尝试用户查找或用户的身份验证,并且可信活动目录(AD)用户在其名称中包含混合大小写字符,且在 IdM 中使用覆盖进行了配置,则会返回一个错误,阻止用户访问 IdM 资源。

在这个版本中,区分大小写的比较被替换为忽略字符大小写的不区分大小写比较。因此,IdM 客户端现在可以查找 AD 可信域的用户,即使其用户名包含混合大小写字符,且它们在 IdM 中使用覆盖进行了配置。

JIRA:SSSD-6096

如果在更改密码时没有保留宽限期,SSSD 会正确返回错误

在以前的版本中,如果用户的 LDAP 密码已过期,SSSD 会在用户的初始绑定失败后尝试更改密码,因为没有更多宽限期。但是,返回到用户的错误没有指示失败的原因。在这个版本中,如果绑定失败,对更改密码的请求会被中止,SSSD 会返回一条错误消息,指示没有更多安全登录,且密码必须被另一个方式更改。

Jira:SSSD-6184

使用 realm leave 命令从域中删除系统

在以前的版本中,如果为 sssd.conf 文件中的 ad_server 选项设置了多个名称,运行 realm leave 命令会导致解析错误,系统也不会从域中删除。在这个版本中,会正确评估 ad_server 选项,并使用正确的域控制器名称,并且系统从域中正确删除。

Jira:SSSD-6081

现在,当处理常规受限委托请求时,KDC 会运行额外的检查

在以前的版本中,在 Red Hat Enterprise Linux 8 上运行的 KDC 发布的 Kerberos 票据中的 正向 标记存在安全漏洞,允许在不检测的情况下进行未经授权的修改。此漏洞可能会导致模拟攻击,即使没有特定权限的用户也是如此。在这个版本中,KDC 会在处理常规受限委托请求时运行额外的检查,确保检测并拒绝未授权标记修改,从而删除漏洞。

Jira:RHEL-9984[1]

在为域生成 SID 时,对 forwardable 标记进行检查已被禁用

在以前的版本中,为 CVE-2020-17049 提供修复的更新依赖于 Kerberos PAC,以便在 KDC 处理常规受限委托请求时对 ticket forwardable 标记运行某些检查。但是,PAC 仅在过去执行 SID 生成任务的域中生成。虽然此任务会自动对在 Red Hat Enterprise Linux (RHEL) 8.5 及更新版本上创建的所有 IdM 域自动执行,但在旧版本上初始化的域需要手动执行此任务。

如果 SID 生成任务不是为 RHEL 8.4 和更早版本上初始化的 IdM 域手动执行,则 PAC 将缺少在 Kerberos 票据上,从而导致所有常规的委托请求都拒绝。这包括 IdM 的 HTTP API,它依赖于一般受限委托。

在这个版本中,如果没有为域生成 SID,则对 forwardable 标记的检查被禁用。依赖于一般受限委托的服务(包括 IdM HTTP API)继续工作。但是,红帽建议尽快在域中运行 SID 生成任务,特别是当域配置了自定义常规委派规则时。在完成此操作前,域仍然容易受到 CVE-2020-17049 的影响。

Jira:RHEL-22313

IdM Vault 加密和解密不再在 FIPS 模式下失败

在以前的版本中,IdM Vault 使用 OpenSSL RSA-PKCS1v15 作为默认的 padding wrapping 算法。但是,RHEL 中没有支持 PKCS#1 v1.5 作为 FIPS 批准算法中的 FIPS 认证模块,从而导致 IdM Vault 在 FIPS 模式下失败。在这个版本中,IdM Vault 支持 RSA-OAEP padding wrapping 算法作为回退。因此,IdM Vault 加密和解密现在可以在 FIPS 模式下正常工作。

Jira:RHEL-12143[1]

IdM 客户端安装程序不再在 ldap.conf 文件中指定 TLS CA 配置

在以前的版本中,IdM 客户端安装程序在 ldap.conf 文件中指定 TLS CA 配置。有了此更新,OpenSSH 使用默认的信任存储,IdM 客户端安装程序不会在 ldap.conf 文件中设置 TLS CA 配置。

Bugzilla:2094673

6.13. Web 控制台

VNC 控制台现在可以在大多数分辨率下正常工作

在以前的版本中,当在某些显示分辨率下使用虚拟网络计算(VNC)控制台时,会出现鼠标偏移问题,或者只有接口的一部分可见。因此,无法使用 VNC 控制台。

有了这个更新,这个问题已被解决,VNC 控制台可以在大多数分辨率下正常工作,但非常高的分辨率除外,如 3840x2160。

请注意,记录的和显示的光标位置之间的小偏移可能仍然存在。但是,这不会影响 VNC 控制台的可用性。

Bugzilla:2030836

6.14. Red Hat Enterprise Linux 系统角色

当 SBD delay-start 值高时,集群启动不再超时

在以前的版本中,当用户使用 ha_cluster 系统角色在集群中配置 SBD 隔离,并将 delay-start 选项设置为接近 90 秒或大于 90 秒的值时,集群会启动超时。这是因为默认的 systemd 启动超时为 90 秒,系统在 SBD 启动延迟值前达到。在这个版本中,ha_cluster 系统角色会覆盖 systemd 中的 sbd.service start 超时,使其高于 delay-start 的值。这允许系统使用 delay-start 选项的高值成功启动。

Jira:RHEL-18026[1]

rhc_auth 包含激活码时,rhc 系统角色不会在注册的系统上失败

在以前的版本中,当使用 rhc_auth 参数中指定的激活码在注册的系统上执行 playbook 文件时,会出现失败。这个问题已解决。现在,可以在已经注册的系统上执行 playbook 文件,即使在 rhc_auth 参数中提供了激活码。

Bugzilla:2186218

6.15. 虚拟化

现在,故障转移 virtio NIC 在 Windows 虚拟机上被正确分配了 IP 地址

在以前的版本中,当启动带有故障转移 virtio NIC Windows 虚拟机(VM)时,虚拟机无法为 NIC 分配 IP 地址。因此,NIC 无法建立网络连接。这个问题已被解决,VM NIC 现在可以在上述场景中按预期建立网络连接。

Bugzilla:1969724

安装程序显示要在虚拟机上安装 RHEL 的预期的系统磁盘

在以前的版本中,当使用 virtio-scsi 设备在虚拟机上安装 RHEL 时,这些设备可能会因为 device-mapper-multipath bug 而不在安装程序中出现。因此,在安装过程中,如果某些设备设置了串口,而有些设备没有,则 multipath 命令会声明所有具有串口的设备。因此,安装程序无法在虚拟机中找到要安装 RHEL 的预期的系统磁盘。

有了这个更新,multipath 可以正确地将没有串口的设备设置为没有全局识别符(WWID),并忽略它们。在安装时,multipath 只声明 multipathd 用来绑定多路径设备的设备,安装程序会在虚拟机中显示要安装 RHEL 的预期的系统磁盘。

Bugzilla:1926147[1]

实时迁移后,Broadcom 网络适配器现在可以在 Windows 虚拟机上正常工作

在以前的版本中,Broadcom 系列设备的网络适配器(如 Broadcom、Qlogic 或 Marvell)无法在 Windows 虚拟机实时迁移过程中进行热拔。因此,迁移完成后,适配器不能正常工作。此问题只会影响使用单根 I/O 虚拟化(SR-IOV)附加到 Windows 虚拟机的适配器。有了此更新,底层代码已被修复,这个问题不再发生。

Jira:RHEL-910, Bugzilla:2111319, Bugzilla:2091528

nodedev-dumpxml 可以正确列出某些介质设备的属性

在此更新前,nodedev-dumpxml 工具无法正确列出使用 nodedev-create 命令创建的介质设备的属性。这个问题已被解决,nodedev-dumpxml 现在可以正确地显示受影响的介质设备的属性。

Bugzilla:2143158

重启 virtqemudlibvirtd后,无法附加 virtiofs 设备

在以前的版本中,重启 virtqemudlibvirtd 服务会阻止 virtiofs 存储设备附加到主机上的虚拟机(VM)。这个 bug 已被解决,您现在可以在上述场景中附加 virtiofs 设备。

Bugzilla:2078693

向虚拟机热插一块 Watchdog 卡不再失败

在以前的版本中,如果没有 PCI 插槽可用,向正在运行的虚拟机(VM)添加一块 Watchdog 卡会失败,并显示以下错误:

Failed to configure watchdog
ERROR Error attempting device hotplug: internal error: No more available PCI slots

有了此更新,这个问题已被解决,向正在运行的虚拟机中添加一块 Watchdog 卡现在可以按预期正常工作。

Bugzilla:2173584

对于 IBM Z 上的 virtio-gpublob 资源无法正常工作

virtio-gpu 设备目前与 IBM Z 系统上的 blob 内存资源不兼容。因此,如果您在 IBM Z 主机上配置带有 virtio-gpu 的虚拟机(VM),以使用 blob 资源,则虚拟机没有任何图形输出。

Jira:RHEL-7135

重新安装 virtio-win 驱动程序不再会导致 DNS 配置在客户机上重置

在使用 Windows 客户机操作系统的虚拟机(VM)中,为网络接口卡(NIC)重新安装或升级 virtio-win 驱动程序之前会导致客户机中的 DNS 设置重置。因此,在某些情况下您的 Windows 客户机丢失网络连接。

在这个版本中,描述的问题已被修复。因此,如果您从最新版本的 virtio-win 重新安装或升级,则问题将不再发生。但请注意,从 virtio-win 的早期版本升级将不会解决这个问题,并且您的 Windows 客户端中可能仍会发生 DNS 重置。

Jira:RHEL-1860[1]

第 7 章 技术预览

这部分列出了 Red Hat Enterprise Linux 9 中的所有技术预览。

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

7.1. 安装程序和镜像创建

光纤通道设备上的 NVMe 现在在 RHEL 安装程序中作为一个技术预览提供

现在,您可以将光纤通道设备上的 NVMe 作为技术预览添加到 RHEL 安装中。在 RHEL 安装程序中,您可以在 Installation Destination 屏幕中添加磁盘时,在 NVMe Fabrics Devices 部分中选择这些设备。

Bugzilla:2107346

RHEL 安装的 NVMe over TCP 现在作为技术预览提供

在这个技术预览中,您现在可以在配置固件后使用 NVMe over TCP 卷来安装 RHEL。从 Installation Destination 屏幕添加磁盘时,您可以在 NVMe Fabrics Devices 部分选择 NVMe 命名空间。

Jira:RHEL-10216[1]

安装可引导 OSTree 原生容器现在作为技术预览提供

ostreecontainer Kickstart 命令现在作为技术预览在 Anaconda 中提供。您可以使用此命令从封装在 OCI 镜像中的 OSTree 提交安装操作系统。在执行 Kickstart 安装时,与 ostreecontainer 一起提供以下命令:

  • graphical、text 或 cmdline
  • ostreecontainer
  • clearpart, zerombr
  • autopart
  • 部分
  • LogVol, volgroup
  • 重启和关闭
  • lang
  • rootpw
  • sshkey
  • bootloader - 仅适用于 --append 可选参数。
  • user

当您在 user 命令中指定组时,用户帐户只能分配给容器镜像中已存在的组。不在此处列出的 Kickstart 命令允许与 ostreecontainer 命令一起使用,但无法保证使用基于软件包的安装按预期工作。

但是,以下 Kickstart 命令与 ostreecontainer 不支持:

  • %packages (容器镜像中必须已经提供任何必要的软件包)
  • URL (如果需要获取 stage2 镜像以进行安装,例如 PXE 安装,请在内核中使用 inst.stage2=,而不是为 Kickstart 文件中的 stage2 提供 url)
  • liveimg
  • vnc
  • authconfig 和 authselect (提供容器镜像中的相关配置)
  • module
  • repo
  • zipl
  • zfcp

使用部分 Kickstart 文件的交互式安装中不支持安装可引导 OSTree 原生容器。

注意: 在自定义挂载点时,您必须在 /mnt 目录中定义挂载点,并确保容器镜像中的 /var/mnt 中存在挂载点目录。

Jira:RHEL-2250[1]

通过 Anaconda 中的 bootupd / bootupctl 进行引导装载程序安装和配置现在作为技术预览提供

因为 ostreecontainer Kickstart 命令现在作为技术预览提供,因此您可以使用它来从封装在 OCI 镜像中的 OSTree 提交安装操作系统。Anaconda 通过容器镜像中包含的 bootupd/bootupctl 工具自动排列引导装载程序安装和配置,即使 Kickstart 中没有显式引导装载程序配置。

Jira:RHEL-17205[1]

7.2. 安全性

gnutls 现在使用 kTLS 作为技术预览

更新的 gnutls 软件包可以将内核 TLS (kTLS)作为技术预览,来在加密通道上加速数据传输。要启用 kTLS,请使用 modprobe 命令添加 tls.ko 内核模块,并使用以下内容为系统范围的加密策略创建一个新的配置文件 /etc/crypto-policies/local.d/gnutls-ktls.txt

[global]
ktls = true

请注意,当前版本不支持通过 TLS KeyUpdate 消息更新流量密钥,这会影响 AES-GCM passwordsuites 的安全性。如需更多信息,请参阅 RFC 7841 - TLS 1.3 文档。

Bugzilla:2108532[1]

7.3. Shell 和命令行工具

GIMP 在 RHEL 9 中作为技术预览提供

GNU Image Manipulation Program(GIMP)2.99.8 现在作为技术预览在 RHEL 9 中提供。gimp 软件包版本 2.99.8 是一个预发行版本,它有一组改进,但只能保证稳定性。发布官方 GIMP 3 后,将作为此预发布版本的更新,在 RHEL 9 中引入。

在 RHEL 9 中,您可以作为 RPM 软件包轻松安装 gimp

Bugzilla:2047161[1]

7.4. 基础架构服务

TuneD 的套接字 API 作为技术预览提供

通过 UNIX 域套接字控制 TuneD 的套接字 API 现在作为技术预览提供。套接字 API 将一对一与 D-Bus API 映射,并为 D-Bus 不可用的情况提供替代通信方法。通过使用套接字 API,您可以控制 TuneD 守护进程来优化性能,并更改各种调优参数的值。套接字 API 默认被禁用,您可以在 tuned-main.conf 文件中启用它。

Bugzilla:2113900

7.5. 网络

WireGuard VPN 作为技术预览提供

WireGuard(红帽作为技术预览提供)是一个在 Linux 内核中运行的高性能 VPN 解决方案。它使用现代加密,比其他 VPN 解决方案更容易配置。此外,因为 WireGuard 较小的代码基础,减少了受攻击的风险,因此提高了安全性。

详情请查看设置 WireGuard VPN

Bugzilla:1613522[1]

KTLS 作为技术预览提供

RHEL 将内核传输层安全(KTLS)作为技术预览提供。kTLS 使用内核中的对称加密或解密算法为 AES-GCM 密码处理 TLS 记录。kTLS 还包括用来将 TLS 记录加密卸载到提供此功能的网络接口控制器(NIC)的接口。

Bugzilla:1570255[1]

systemd-resolved 服务作为技术预览提供

systemd-resolved 为本地应用程序提供名字解析。该服务实现了缓存和验证 DNS stub 解析器、链接本地多播名称解析(LLMNR)和多播 DNS 解析器和响应程序。

请注意, systemd-resolved 是一个不受支持的技术预览。

Bugzilla:2020529

PRP 和 HSR 协议现在作为技术预览提供

这个更新添加了提供以下协议的 hsr 内核模块:

  • Parallel Redundancy Protocol (PRP)
  • 高可用性无缝冗余(HSR)

IEC 62439-3 标准定义了这些协议,您可以使用此功能在以太网网络中配置零损失冗余。

Bugzilla:2177256[1]

NetworkManager 和 Nmstate API 支持 MACsec 硬件卸载

如果硬件支持此功能,您可以使用 NetworkManager 和 Nmstate API 启用 MACsec 硬件卸载。因此,您可以将 MACsec 操作(如加密)从 CPU 卸载到网络接口卡。

请注意,这个功能是一个不受支持的技术预览。

Jira:RHEL-24337

NetworkManager 启用配置 HSR 和 PRP 接口

高可用性 Seam 无冗余(HSR)和 Parallel Redundancy 协议(PRP)是网络协议,可为任何单个网络组件故障提供无缝故障转移。这两个协议对应用程序层是透明的,这意味着用户不会遇到通信或丢失数据中断,因为主路径和冗余路径之间的切换会非常快且不知道用户。现在,可以通过 nmcli 实用程序和 DBus 消息系统使用 NetworkManager 服务启用和配置 HSR 和 PRP 接口。

Jira:RHEL-5852

将 IPsec 封装卸载到 NIC 现在作为技术预览提供

此更新向内核添加了 IPsec 数据包卸载功能。在以前的版本中,只能将加密卸载到网络接口控制器(NIC)。有了此增强,内核现在可将整个 IPsec 封装过程卸载到 NIC,以减少工作负载。

请注意,将 IPsec 封装过程卸载到 NIC 也会减少内核监控和过滤此类数据包的能力。

Bugzilla:2178699[1]

RHEL 中 modems 的网络驱动程序作为技术预览提供

设备制造商支持将联邦通信委托(FCC)锁定作为默认设置。FCC 提供了一个锁,来将 WWAN 驱动程序绑定到特定的系统,其中 WWAN 驱动程序提供了一个与调制解调器进行通信的通道。根据调制解调器 PCI ID,制造商在 Red Hat Enterprise Linux 上为 ModemManager 集成了解锁工具。但是,如果之前未解锁,调制解调器仍不可用,即使 WWAN 驱动程序兼容并可以正常工作。Red Hat Enterprise Linux 为以下带有有限功能的调制解调器提供了驱动程序,来作为技术预览:

  • Qualcomm MHI WWAM MBIM - Telit FN990Axx
  • Intel IPC over Shared Memory (IOSM)- Intel XMM 7360 LTE Advanced
  • MediaTek t7xx (WWAN)- Fibocom FM350GL
  • Intel IPC over Shared Memory (IOSM)- Fibocom L860GL modem

JIRA:RHELDOCS-16760[1], Bugzilla:2222914, Bugzilla:2110561, Bugzilla:2123542, JIRA:RHEL-6564

IPv6 上的段路由(SRv6)作为技术预览提供

RHEL 内核将 IPv6 (SRv6)上的段路由作为技术预览提供。您可以使用此功能来优化边缘计算中的流量流,或提高数据中心中的网络可编程性。但是,最重要的用例是在 5G 部署场景中的端到端(E2E)网络分片。在这个领域中,SRv6 协议为您提供了可编程自定义网络分片和资源保留,以解决特定应用程序或服务的网络要求。同时,解决方案可以部署到单一用途设备上,其满足较小计算占用的需求。

Bugzilla:2186375[1]

KTLS rebase 到版本 6.3

内核传输层安全(KTLS)功能是一个技术预览。在 RHEL 9.3 中,kTLS 被 rebase 到 6.3 上游版本,重要的更改包括:

  • 添加了对带有 TX 设备卸载的 256 位密钥的支持
  • 提供各种程序错误修复

Bugzilla:2183538[1]

7.6. 内核

Soft-iWARP 驱动程序作为技术预览提供

软硬件硬件(siw)是一种软件,互联网是 RDMA 协议(iWARP),适用于 Linux 的内核驱动程序。soft-iWARP 通过 TCP/IP 网络堆栈实施 iWARP 协议套件。这个协议套件在软件中完全实现,不需要特定的远程直接内存访问(RDMA)硬件。Soft-iWARP 使具有标准以太网适配器的系统连接到 iWARP 适配器或安装了 Soft-iWARP 的其他系统。

Bugzilla:2023416[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]

rvu_af,rvu_nicpfrvu_nicvf 作为技术预览提供

对于 Marvell OCTEON TX2 Infrastructure Processor 系列,以下内核模块作为技术预览提供:

rvu_nicpf
Marvell OcteonTX2 NIC 物理功能驱动程序
rvu_nicvf
Marvell OcteonTX2 NIC 虚拟功能驱动程序
rvu_nicvf
Marvell OcteonTX2 RVU Admin Function 驱动程序

Bugzilla:2040643[1]

python-drgn 作为技术预览提供

python-drgn 软件包提供了一个高级调试工具,它加深了 programmability。您可以使用其 Python 命令行界面调试实时内核和内核转储。另外,python-drgn 提供脚本功能,供您自动执行调试任务并对 Linux 内核进行强制分析。

Jira:RHEL-6973[1]

IAA 加密驱动程序现在作为技术预览提供

Intel® 内存中分析加速器(Intel® IAA)是一个硬件加速器,提供非常高吞吐量的压缩和解压缩以及原语分析功能。

iaa_crypto 驱动程序在 RHEL 9.4 中作为技术预览引进了从 CPU 卸载压缩和解压缩操作的 iaa_crypto 驱动程序。它支持压缩和解压缩与 RFC 1951 中描述的 DEFLATE 压缩标准兼容。iaa_crypto 驱动程序设计为充当更高级别压缩设备(如 zswap )下的层。

有关 IAA 加密驱动程序的详情,请参考:

Jira:RHEL-20145[1]

7.7. 文件系统和存储

DAX 现在作为技术预览供 ext4 和 XFS 使用

在 RHEL 9 中,DAX 文件系统作为技术预览提供。DAX 提供了将持久内存直接映射到其地址空间的方法。要使用 DAX,系统必须有某种可用的持久性内存,通常使用一个或多个非线性内存模块(NVDIMM),必须在 NVDIMM 上创建 DAX 兼容文件系统。另外,该文件系统必须使用 dax 挂载选项挂载。然后,在 dax 挂载的文件系统中的一个文件 mmap 会导致存储直接映射到应用程序的地址空间中。

Bugzilla:1995338[1]

NVMe-oF Discovery Service 功能作为技术预览

NVMe-oF Discovery Service 功能(在 NVMexpress.org 技术 Proposals(TP)8013 和 8014 中)作为技术预览提供。要预览这些功能,请使用 nvme-cli 2.0 软件包,并将主机附加到实现 TP-8013 或 TP-8014 的 NVMe-oF 目标设备。有关 TP-8013 和 TP-8014 的更多信息,请参阅 https://nvmexpress.org/specifications/ 网站中的 NVM Express 2.0 Ratified TPs。

Bugzilla:2021672[1]

NVMe-stas 软件包作为技术预览

nvme-stas 软件包,它是 Linux 的中央 Discovery Controller (CDC) 客户端,现在作为技术预览提供。它处理异步事件通知 (AEN)、自动化的 NVMe 子系统连接控制、错误处理和报告以及自动 (zeroconf) 和手动配置。

这个软件包由两个守护进程组成,分别是 Storage Appliance Finder (stafd) 和存储设备连接器 (stacd)。

Bugzilla:1893841[1]

NVMe TP 8006 in-band 身份验证作为技术预览提供

实现 Non-Volatile Memory Express (NVMe) TP 8006,它是一种针对 NVMe over Fabrics (NVMe-oF) 的带内验证,现在作为不支持的技术预览提供。NVMe Technical Proposal 8006 为 NVMe-oF 定义了 DH-HMAC-CHAP 带内验证协议,该协议由这个增强提供。

如需更多信息,请参阅 nvme-connect (1) 手册页中的 dhchap-secretdhchap-ctrl-secret 选项描述。

Bugzilla:2027304[1]

io_uring 接口作为技术预览提供

io_uring 是一个新的有效的异步 I/O 接口,现在作为技术预览提供。默认情况下禁用此功能。您可以通过将 kernel.io_uring_disabled sysctl 变量设置为以下值之一来启用这个接口:

0
所有进程都可以正常创建 io_uring 实例。
1
对非特权进程,io_uring 创建被禁用。io_uring_setup 失败并显示 -EPERM 错误,除非调用过程具有 CAP_SYS_ADMIN 功能的特权。仍可使用现有的 io_uring 实例。
2
对所有进程,io_uring 创建被禁用。io_uring_setup 使用 -EPERM 总是失败。仍可使用现有的 io_uring 实例。这是默认设置。

使用此功能也需要 SELinux 策略的更新版本,来在匿名内节点上启用 mmap 系统调用。

通过使用 io_uring 命令直通,应用程序可以直接向底层硬件发出命令,如 nvme。使用 io_uring 命令直通目前需要自定义 SELinux 策略模块。创建一个自定义 SELinux 策略模块:

  1. 将以下行保存为 io_uring_cmd_passthrough.cil 文件:

    ---cut here---
    ( allow unconfined_domain_type device_node ( io_uring ( cmd )))
    ( allow unconfined_domain_type file_type ( io_uring ( cmd )))
    ---cut here---
  2. 加载策略模块:

    # semodule -i io_uring_cmd_passthrough.cil

Bugzilla:2068237[1]

7.8. 编译器和开发工具

jmc-coreowasp-java-encoder 作为技术预览

RHEL 9 与 jmc-coreowasp-java-encoder 软件包一起分发,作为 AMD 和 Intel 64 位架构的技术预览功能提供。

jmc-core 是一个为 Java Development Kit (JDK) Mission Control 提供核心 API 的库,包括用于解析和编写 JDK Flight Recording 文件的库,以及用于通过 Java 发现协议(JDP)的 Java 虚拟机(JVM)发现的库。

owasp-java-encoder 软件包提供了 Java 的高性能低后台上下文组。

请注意,自 RHEL 9.2 开始,jmc-coreowasp-java-encoder 在 CodeReady Linux Builder (CRB)存储库中提供,您必须明确启用。如需更多信息,请参阅 如何在 CodeReady Linux Builder 中启用和使用内容

Bugzilla:1980981

7.9. 身份管理

DNSSEC 在 IdM 中作为技术预览提供

带有集成 DNS 的身份管理(IdM)服务器现在实现了 DNS 安全扩展(DNSSEC),这是一组增强 DNS 协议安全的 DNS 扩展。托管在 IdM 服务器上的 DNS 区可以使用 DNSSEC 自动签名。加密密钥是自动生成和轮转的。

建议那些决定使用 DNSSEC 保护 DNS 区的用户读取并遵循这些文档:

请注意,集成了 DNSSEC 的 IdM 服务器验证从其他 DNS 服务器获取的 DNS 答案。这可能会影响未按照推荐的命名方法配置的 DNS 区域可用性。

Bugzilla:2084180

身份管理 JSON-RPC API 作为技术预览

一个 API 可用于 Identity Management(IdM)。要查看 API,IdM 还提供了一个 API 浏览器作为技术预览。

在以前的版本中,IdM API 被改进来启用多个 API 命令版本。这些增强可能会以不兼容的方式改变命令的行为。用户现在可以继续使用已有的工具和脚本,即使 IdM API 发生了变化。这可启用:

  • 管理员要在服务器中使用之前或更高版本的 IdM,而不是在管理客户端中使用。
  • 开发人员可以使用 IdM 调用的特定版本,即使 IdM 版本在服务器上发生了变化。

在所有情况下,与服务器进行通信是可能的,无论是否一方使用,例如,一个新的版本会为这个功能引进新的选项。

有关使用 API 的详细信息,请参阅使用身份管理 API 与 IdM 服务器通信(TECHNOLOGY PREVIEW)

Bugzilla:2084166

sssd-idp 子软件包作为技术预览提供

SSSD 的 sssd-idp 子软件包包含 oidc_child 和 krb5 idp 插件,它们是对身份管理(IdM)服务器执行 OAuth2 身份验证的客户端组件。此功能仅适用于 RHEL 9.1 及更高版本上的 IdM 服务器。

Bugzilla:2065693

SSSD 内部 krb5 idp 插件作为技术预览提供

SSSD krb5 idp 插件允许您使用 OAuth2 协议对外部身份提供者(IdP)进行身份验证。此功能仅适用于 RHEL 9.1 及更高版本上的 IdM 服务器。

Bugzilla:2056482

RHEL IdM 允许将用户身份验证委派给外部身份提供程序作为技术预览

在 RHEL IdM 中,您可以把用户与支持 OAuth 2 设备授权流的外部身份提供程序(IdP)关联。当这些用户使用 RHEL 9.1 或更高版本中的 SSSD 版本进行身份验证时,它们会在执行身份验证和在外部 IdP 授权后接收到带有 Kerberos 票据的 RHEL IdM 单点登录功能。

主要特性包括:

  • 使用 ipa idp-* 命令为外部 IdP 添加、修改和删除引用
  • 使用 ipa user-mod --user-auth-type=idp 命令为用户启用 IdP 验证

如需更多信息,请参阅使用外部身份提供程序向 IdM 进行身份验证

Bugzilla:2069202

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:2084181[1]

7.10. 桌面

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]

用于 IBM Z 架构的 GNOME 作为技术预览提供

对于 IBM Z 架构,GNOME 桌面环境作为技术预览。

现在,您可以使用 VNC 连接到 IBM Z 服务器上的桌面会话。因此,您可以使用图形应用程序管理服务器。

IBM Z 上提供了一组有限的图形应用程序。例如:

  • Firefox Web 浏览器
  • Red Hat 订阅管理器 (subscription-manager-cockpit)
  • 防火墙配置(firewall-config)
  • 磁盘用量分析器(baobab)

使用 Firefox,您可以连接到服务器上的 Cockpit 服务。

某些应用程序,如 LibreOffice ,只提供命令行界面,其图形界面被禁用。

Jira:RHELPLAN-27737[1]

7.11. 虚拟化

创建嵌套虚拟机

对于运行在 Intel、AMD64 和 IBM Z 主机上的 RHEL 9 KVM 虚拟机,嵌套的 KVM 虚拟化作为技术预览提供。有了这个功能,运行在物理 RHEL 9 主机上的 RHEL 7、RHEL 8 或 RHEL 9 虚拟机可以充当 hypervisor,并托管自己的虚拟机。

Jira:RHELDOCS-17040[1]

用于 KVM 虚拟机的 AMD SEV 和 SEV-ES

作为技术预览,RHEL 9 为使用 KVM 管理程序的 AMD EPYC 主机提供安全加密虚拟化(SEV)功能。如果在虚拟机(VM)上启用,SEV 会加密虚拟机的内存来保护虚拟机被主机访问。这提高了虚拟机的安全性。

另外,增强的 Encrypted State 版本 SEV-ES)也作为技术预览提供。SEV-ES 在虚拟机停止运行时加密所有 CPU 注册内容。这可防止主机修改虚拟机的 CPU 注册或读取它们中的任何信息。

请注意,SEV 和 SEV-ES 仅适用于第 2 代 AMD EPYC CPU(代号 Rome)或更新版本。另请注意,RHEL 9 包括 SEV 和 SEV-ES 加密,但不包括 SEV 和 SEV-ES 安全测试。

Jira:RHELPLAN-65217[1]

虚拟化现在在 ARM 64 上可用

作为技术预览,现在可以使用 ARM 64 CPU 在系统中创建 KVM 虚拟机。

Jira:RHELPLAN-103993[1]

virtio-mem 现在包括在 AMD64、Intel 64 和 ARM 64 中

作为技术预览,RHEL 9 在 AMD64、Intel 64 和 ARM 64 系统中引入了 virtio-mem 功能。使用 virtio-mem 可让虚拟机(VM)动态添加或删除主机内存。

要使用 virtio-mem,请在虚拟机 XML 配置中定义 virtio-mem 内存设备,并使用 virsh update-memory-device 命令请求 VM 运行期间内存设备大小更改。要查看此类内存设备向正在运行的虚拟机公开的当前内存大小,请查看虚拟机的 XML 配置。

但请注意,virtio-mem 目前无法在使用 Windows 操作系统的虚拟机上工作。

Bugzilla:2014487, Bugzilla:2044162, Bugzilla:2044172

RHEL 客户机中的 Intel TDX

作为技术预览,Intel Trust Domain Extension (TDX)功能现在可以在 RHEL 9.2 及之后的版本中使用。如果主机系统支持 TDX,您可以部署硬件隔离的 RHEL 9 虚拟机(VM),称为信任域(TD)。但请注意,TDX 目前无法与 kdump 一起工作,启用 TDX 会导致 kdump 在虚拟机上失败。

Bugzilla:1955275[1]

RHEL 的统一内核镜像现在作为技术预览提供

作为技术预览,您现在可以获取 RHEL 内核作为虚拟机(VM)的统一内核镜像(UKI)。统一内核镜像将 kernel、initramfs 和内核命令行合并成一个签名的二进制文件。

UKI 可用于虚拟和云环境中,特别是在需要强大的 SecureBoot 功能的机密虚拟机中。UKI 作为 RHEL 9 存储库中的 kernel-uki-virt 软件包提供。

目前,RHEL UKI 只能在 UEFI 引导配置中使用。

Bugzilla:2142102[1]

Intel vGPU 作为技术预览提供

作为技术预览,可以将物理 Intel GPU 设备分为多个虚拟设备,称为 介质设备。然后可将这些介质设备分配给多个虚拟机(VM)作为虚拟 GPU。因此,这些虚拟机共享单个物理 Intel GPU 的性能。

请注意,这个功能已弃用,并完全在 RHEL 9.3 发行版本中删除。

Jira:RHELDOCS-17050[1]

7.12. 云环境中的 RHEL

RHEL 现在在 Azure 机密虚拟机上作为技术预览提供

使用更新的 RHEL 内核,您现在可以在 Microsoft Azure 上作为技术预览创建并运行 RHEL 机密虚拟机(VM)。新添加的统一内核镜像(UKI)现在在 Azure 上可以引导加密的机密虚拟机镜像。UKI 作为 RHEL 9 存储库中的 kernel-uki-virt 软件包提供。

目前,RHEL UKI 只能在 UEFI 引导配置中使用。

Jira:RHELPLAN-139800[1]

7.13. 容器

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-154429[1]

podman-machine 命令不被支持

用于管理虚拟机的 podman-machine 命令仅作为技术预览提供。相反,请直接从命令行运行 Podman。

Jira:RHELDOCS-16861[1]

构建多架构镜像作为技术预览提供

podman farm build 命令可用于创建多架构容器镜像,作为技术预览提供。

farm 是在其中运行 unix podman socket 的机器组。场中的节点可以具有不同的架构的机器。podman farm build 命令比 podman build --arch --platform 命令更快。

您可以使用 podman farm build 来执行以下操作:

  • 在场的所有节点上构建镜像。
  • 将节点捆绑到清单列表中。
  • 在所有场节点上执行 podman build 命令。
  • 使用 --tag 选项将镜像推送到指定的 registry。
  • 本地创建清单列表。
  • 将清单列表推送到 registry。

    清单列表包含每个原生架构类型的镜像,该类型存在于场中。

Jira:RHELPLAN-154436[1]

第 8 章 过时的功能

这部分提供在 Red Hat Enterprise Linux 9 中弃用 的功能概述。

弃用的功能可能在以后的主要发行本中不被支持,因此不建议在新的部署中使用。有关特定主要发行本中已弃用功能的最新列表,请参考最新版本的发行文档。

在 Red Hat Enterprise Linux 9 中,已弃用的功能的支持状态不会改变。有关支持长度的详情,请查看 Red Hat Enterprise Linux 生命周期Red Hat Enterprise Linux 应用程序流生命周期

对于当前或将来的主发行版本中的新部署,我们不推荐使用已弃用的硬件组件。硬件驱动程序更新仅限于安全和关键修复。红帽建议尽快替换这个硬件。

一个软件包可以被弃用,我们不推荐在以后使用。在某些情况下,软件包可从产品中删除。然后,产品文档可识别提供类似、完全相同或者更高级功能的最新软件包,并提供进一步建议。

有关 RHEL 8 中存在但已在 RHEL 9 中 删除 的功能的详情,请参阅 采用 RHEL 9 时的注意事项

8.1. 安装程序和镜像创建

弃用的 Kickstart 命令

以下 Kickstart 命令已弃用:

  • timezone --ntpservers
  • timezone --nontp
  • logging --level
  • %packages --excludeWeakdeps
  • %packages --instLangs
  • %anaconda
  • pwpolicy

请注意,当只列出具体选项时,基础命令及其其它选项仍可用且未被弃用。在 Kickstart 文件中使用已弃用的命令会在日志中显示警告信息。您可以使用 inst.ksstrict 引导选项将已弃用的命令警告转换为错误。

Bugzilla:1899167[1]

edge-commitedge-container 蓝图中的用户和组自定义已弃用

在蓝图中指定用户或组自定义对于 edge-commitedge-container 镜像类型已弃用,因为在升级镜像时用户自定义会消失,且不能在蓝图中再次指定用户。

请注意,在用于部署现有的 OSTree 提交的蓝图中指定用户或组自定义,如 edge-raw-imageedge-installeredge-simplified-installer 镜像类型继续被支持。

Bugzilla:2173928

initial-setup 软件包现已弃用

initial-setup 软件包已在 Red Hat Enterprise Linux 9.3 中被弃用,并将在下一个主 RHEL 发行版本中删除。作为替换,对图形用户界面,使用 gnome-initial-setup

Jira:RHELDOCS-16393[1]

inst.geoloc 引导选项的 provider_hostipprovider_fedora_geoip 值已弃用

inst.geoloc= 引导选项指定 GeoIP API 的 provider_hostipprovider_fedora_geoip 值已弃用。作为替换,您可以使用 geolocation_provider=URL 选项在安装程序配置文件中设置所需的地理位置。您仍然可以使用 inst.geoloc=0 选项禁用地理位置。

Bugzilla:2127473

使用全局热键从 Anaconda GUI 捕获截图已弃用

在以前的版本中,用户可以使用全局热键捕获 Anaconda GUI 的截图。这意味着用户可以从安装环境中手动提取屏幕截图,以供进一步使用。这个功能已弃用。

Jira:RHELDOCS-17166[1]

Anaconda 内置帮助已弃用

所有 Anaconda 用户界面的 spoke 和 hub 的内置文档(在 Anaconda 安装过程中可用)已被弃用。作为替换,Anaconda 用户界面将进行自我处理,用户可以参考未来的主 RHEL 发行版本中的官方 RHEL 文档

Jira:RHELDOCS-17309[1]

对 NVDIMM 设备的支持已弃用

在以前的版本中,安装程序允许在安装过程中重新配置 NVDIMM 设备。这个对 Kickstart 和 GUI 安装过程中 NVDIMM 设备的支持已弃用,并将在下一个主 RHEL 发行版本中弃用。扇区模式中的 NVDIMM 设备仍然在安装程序中可见并可用。

Jira:RHELDOCS-17702

无法从安装环境中的驱动程序更新磁盘载入更新的驱动程序

如果已加载了安装初始 ramdisk 中同样的驱动程序,则驱动程序更新磁盘中的驱动程序的新版本可能无法加载。因此,驱动程序的更新版本无法应用到安装环境。

作为临时解决方案,请将 modprobe.blacklist= 内核命令行选项与 inst.dd 选项一起使用。例如,要确保是否加载了驱动程序更新磁盘中的 virtio_blk 驱动程序的更新版本,请使用 modprobe.blacklist=virtio_blk,然后继续通常的流程来应用驱动程序更新磁盘中的驱动程序。因此,系统会加载驱动程序的更新版本,并在安装环境中使用它。

Jira:RHEL-4762

8.2. 安全性

对于加密目的,SHA-1 已被弃用

使用 SHA-1 消息摘要用于加密目的在 RHEL 9 中已被弃用。SHA-1 生成的摘要不被视为是安全的,因为已发现多个基于哈希进行的安全攻击。RHEL 核心加密组件不再默认使用 SHA-1 创建签名。RHEL 9 中的应用程序已更新,以避免在与安全相关的用例中使用 SHA-1。

其中一个例外是,仍然可以使用 SHA-1 创建 HMAC-SHA1 消息验证代码和 Universal Unique Identifier(UUID)值,因为这些用例目前不存在安全风险。另外,为了保持一些重要的互操作性和兼容性,SHA-1 还会在一些有限的情况下使用,例如 Kerberos 和 WPA-2。详情请查看 RHEL 9 安全强化文档中的使用与 FIPS 140-3 不兼容的加密系统的 RHEL 应用程序列表

如果您需要使用 SHA-1 来验证现有或第三方加密签名,您可以输入以下命令启用它:

# update-crypto-policies --set DEFAULT:SHA1

或者,您可以将系统范围的加密策略切换到 LEGACY 策略。请注意,LEGACY 也启用了其他一些不安全的算法。

Jira:RHELPLAN-110763[1]

fapolicyd.rules 已被弃用

包含允许和拒绝执行规则的文件的 /etc/fapolicyd/rules.d/ 目录替代了 /etc/fapolicyd/fapolicyd.rules 文件。fagenrules 脚本现在将此目录中的所有组件规则文件合并到 /etc/fapolicyd/compiled.rules 文件。/etc/fapolicyd/fapolicyd 中的规则仍由 fapolicyd 框架处理,但只是为了保证向后兼容。

Bugzilla:2054740

在 RHEL 9 中弃用 SCP

安全复制协议(SCP)已弃用,因为它有已知的安全漏洞。SCP API 仍可用于 RHEL 9 生命周期,但使用它可以降低系统安全性。

  • scp 实用程序中,默认情况下,SCP 被 SSH 文件传输协议(SFTP)替代。
  • OpenSSH 套件在 RHEL 9 中不使用 SCP。
  • SCP 在 libssh 库中已弃用。

Jira:RHELPLAN-99136[1]

OpenSSL 需要在 FIPS 模式下对 RSA 加密进行填充

OpenSSL 在 FIPS 模式下不再支持没有填充的 RSA 加密。没有填充的 RSA 加密不常见,很少使用。请注意,带有 RSA (RSASVE)的密钥封装不使用填充,但仍支持。

Bugzilla:2168665

SASL 中的 digest-MD5 已被弃用

Simple Authentication Security Layer(SASL)框架中的 Digest-MD5 身份验证机制已弃用,并可能在以后的主发行版本中从 cyrus-sasl 软件包中删除。

Bugzilla:1995600[1]

OpenSSL 弃用了 MD2, MD4, MDC2, Whirlpool, Blowfish, CAST, DES, IDEA, RC2, RC4, RC5, SEED, 和 PBKDF1

OpenSSL 项目已弃用了一组加密算法,因为它们不安全,不常用,或两者都不安全。红帽还不建议使用这些算法,RHEL 9 则为其提供迁移加密数据以使用新的算法。对于系统的安全性,用户不得依赖于这些算法。

以下算法的实现已移到 OpenSSL 中的旧提供者:MD2、MD4、MD4、MDC2、Mlpool、Blowfish、CAST、DES、IDEA、RC2、RC4、RC5、SEED 和 PBKDF1。

有关如何载入旧供应商的说明,请参阅 /etc/pki/tls/openssl.cnf 配置文件,并启用对已弃用算法的支持。

Bugzilla:1975836

/etc/system-fips 现已弃用

支持通过 /etc/system-fips 文件指定 FIPS 模式,该文件将不会包含在将来的 RHEL 版本中。要在 FIPS 模式中安装 RHEL,请在系统安装过程中将 fips=1 参数添加到内核命令行。您可以使用 fips-mode-setup --check 命令检查 RHEL 是否以 FIPS 模式运行。

Jira:RHELPLAN-103232[1]

libcrypt.so.1 现已弃用

libcrypt.so.1 库现已弃用,它可能会在以后的 RHEL 版本中删除。

Bugzilla:2034569

8.3. 订阅管理

subscription-manager 注册的 --token 选项将 停止在 2024 年 11 月结束时工作

subscription-manager register 命令的已弃用的 --token=<TOKEN > 选项将不再是 2024 年 11 月结束的一个受支持的身份验证方法。默认授权服务器 subscription.rhsm.redhat.com 不再允许基于令牌的身份验证。因此,如果您使用 subscription-manager register --token=<TOKEN >,则注册会失败并显示以下错误消息:

Token authentication not supported by the entitlement server

要注册您的系统,请使用其他支持的授权方法,如包括带有 subscription-manager register 命令的对选项 --username / --password OR --org / --activationkey

Bugzilla:2163716

8.4. Shell 和命令行工具

dump 软件包中的 dump 工具已弃用

用于文件系统备份的 dump 工具已弃用,在 RHEL 9 中将不再提供。

在 RHEL 9 中,红帽建议根据使用情况使用 tarddbacula 、备份工具,对 ext2、ext3 和 ext4 文件系统提供了完整和安全的备份。

请注意,dump 软件包中的 restore 工具仍可用,在 RHEL 9 中也被支持,并作为 restore 软件包提供。

Bugzilla:1997366[1]

Bacula 中的 SQLite 数据库后端已被弃用

Bacula 备份系统支持多个数据库后端:PostgreSQL、MySQL 和 SQLite。SQLite 后端已被弃用,并将在以后的 RHEL 版本中不被支持。作为一种替代,迁移到其他一种后端(PostgreSQL 或 MySQL),且在新部署中不使用 SQLite 后端。

Jira:RHEL-6856

sysstat 软件包中的 %vmeff 指标已弃用

sysstat 软件包中的 %vmeff 指标测量页面重新声明效率将在以后的 RHEL 主版本中不再被支持。sar -B 命令返回的 %vmeff 列的值不正确,因为 sysstat 不会解析后续内核版本提供的所有相关的 /proc/vmstat 值。

您可以从 /proc/vmstat 文件手动计算 %vmeff 值。详情请查看 为什么在 RHEL 8 和 RHEL 9 中 sar (1) 工具报告 %vmeff 值超过 100 % ?

Jira:RHELDOCS-17015[1]

cgroupsv1 现在在 RHEL 9 中弃用

cgroups 是一个内核子系统,用于处理跟踪、系统资源分配和分区。systemd 服务管理器支持在 cgroups v1 模式以及 cgroup v2 模式中引导。在 Red Hat Enterprise Linux 9 中,默认模式是 v2。在 Red Hat Enterprise Linux 10 中,systemd 不支持在 cgroups v1 模式下引导,且只有 cgroup v2 模式可用。

Jira:RHELDOCS-17545[1]

8.5. 基础架构服务

客户端侧和服务器端 DHCP 软件包已弃用

Internet Systems Consortium (ISC)宣布从 2022 年结束 ISC DHCP 维护结束。因此,红帽决定弃用 RHEL 9 中的客户端和服务器端 DHCP 软件包,而不是在以后的 RHEL 主发行版本中发布它们。客户必须准备过渡到可用替代方案,如 dhcpcdISC Kea

Jira:RHELDOCS-17135[1]

sendmail,libotr,mod_security, 和 spamassassin 软件包现已弃用

以下软件包在 RHEL 9 中已弃用,且不会在以后的 RHEL 主版本中发布:

  • Sendmail - 红帽建议迁移到 postfix 邮件守护进程,该守护进程被支持。
  • libotr
  • mod_security
  • spamassassin

Jira:RHEL-22385[1]

8.6. 网络

RHEL 9 中已弃用网络团队(Network teams)

teamd 服务和 libteam 库在 Red Hat Enterprise Linux 9 中已弃用,并将在下一个主发行版本中删除。作为替换,配置绑定而不是网络组。

红帽注重于基于内核的绑定操作,以避免维护具有类似功能的两个功能:绑定和团队(team)。绑定代码具有较高的客户采用率,非常可靠,具有活跃的社区开发。因此,绑定代码会收到功能增强和更新。

有关如何将团队迁移到绑定的详情,请参阅将网络组配置迁移到网络绑定

Bugzilla:1935544[1]

ifcfg 格式的 NetworkManager 连接配置文件已弃用

在 RHEL 9.0 及更高版本中,ifcfg 格式的连接配置文件已弃用。下一个主要 RHEL 发行版本将删除对这个格式的支持。但是,在 RHEL 9 中,如果修改了配置文件,NetworkManager 仍然会使用这个格式处理和更新现有的配置文件。

默认情况下,NetworkManager 现在在 /etc/NetworkManager/system-connections/ 目录中以 keyfile 格式存储连接配置文件。与 ifcfg 格式不同,keyfile 格式支持 NetworkManager 提供的所有连接设置。有关 keyfile 格式以及如何迁移配置集的详情,请参考 keyfile 格式的 NetworkManager 连接配置文件

Bugzilla:1894877[1]

firewalld 中的 iptables 后端已弃用

在 RHEL 9 中,iptables 框架已弃用。因此,firewalld 中的 iptables 后端和 direct interface 也被弃用。您可以使用 firewalld 中的原生功能,而不是 direct interface 来配置所需的规则。

Bugzilla:2089200

firewalld 锁定功能已弃用。

firewalld 中的锁定功能已弃用,因为它无法阻止以 root 身份运行的进程将自身添加到允许列表中。在以后的主 RHEL 发行版本中可能会删除锁定功能。

Jira:RHEL-17708

PF_KEYv2 内核 API 已弃用

应用程序可以使用 PV_KEYv2 和较新的 netlink API 配置内核的 IPsec 实现。PV_KEYv2 没有在上游进行主动维护,并且缺少重要的安全功能,如现代密码、卸载和扩展的序列号支持。因此,从 RHEL 9.3 开始,PV_KEYv2 API 已被弃用,并将在下一个主 RHEL 发行版本中删除。如果您在应用程序中使用此内核 API,请迁移它,以使用现代 netlink API 作为替代。

Jira:RHEL-1015[1]

8.7. 内核

在 RHEL 9 中弃用 ATM 封装

异步传输模式(ATM)封装为 ATM Adaptation Layer 5(AAL-5)提供第 2 层(Point-to-Point 协议、以太网)或第 3 层(IP)连接。从 RHEL 7 开始,红帽尚未为 ATM NIC 驱动程序提供支持。RHEL 9 中丢弃对 ATM 实施的支持。这些协议目前仅在芯片组中使用,该协议支持 ADSL 技术,并由制造商逐步淘汰。因此,Red Hat Enterprise Linux 9 中已弃用 ATM 封装。

如需更多信息,请参阅 PPP Over AAL5, Multiprotocol Encapsulation over ATM Adaptation Layer 5, 和 Classical IP and ARP over ATM

Bugzilla:2058153

kexec-toolskexec_load 系统调用已弃用

在以后的 RHEL 版本中将不支持 kexec_load 系统调用(其载入第二个内核)。kexec_file_load 系统调用替换了 kexec_load,它现在是所有架构上的默认系统调用。

如需更多信息,请参阅 RHEL9 中是否支持 kexec_load?

Bugzilla:2113873[1]

RHEL 9 中已弃用网络团队(Network teams)

teamd 服务和 libteam 库在 Red Hat Enterprise Linux 9 中已弃用,并将在下一个主发行版本中删除。作为替换,配置绑定而不是网络组。

红帽注重于基于内核的绑定操作,以避免维护具有类似功能的两个功能:绑定和团队(team)。绑定代码具有较高的客户采用率,非常可靠,具有活跃的社区开发。因此,绑定代码会收到功能增强和更新。

有关如何将团队迁移到绑定的详情,请参阅将网络组配置迁移到网络绑定

Bugzilla:2013884[1]

8.8. 文件系统和存储

lvm2-activation-generator 及其生成的服务在 RHEL 9.0 中删除

lvm2-activation-generator 程序及其生成的服务 lvm2-activationlvm2-activation-earlylvm2-activation-net 已在 RHEL 9.0 中删除。lvm.conf event_activation 设置用于激活服务将不再起作用。自动激活卷组的唯一方法是基于事件激活。

Bugzilla:2038183

在 RHEL 9 中已弃用了持久性内存开发套件(pmdk)和支持库

pmdk 是用于系统管理员和应用程序开发者的库和工具集合,以简化管理和访问持久内存设备。RHEL 9 中已弃用了 pmdk 和支持库。这还包括 -debuginfo 软件包。

pmdk 产生的以下二进制软件包列表,包括 nvml 源软件包,已被弃用:

  • libpmem
  • libpmem-devel
  • libpmem-debug
  • libpmem2
  • libpmem2-devel
  • libpmem2-debug
  • libpmemblk
  • libpmemblk-devel
  • libpmemblk-debug
  • libpmemlog
  • libpmemlog-devel
  • libpmemlog-debug
  • libpmemobj
  • libpmemobj-devel
  • libpmemobj-debug
  • libpmempool
  • libpmempool-devel
  • libpmempool-debug
  • pmempool
  • daxio
  • pmreorder
  • pmdk-convert
  • libpmemobj++
  • libpmemobj++-devel
  • libpmemobj++-doc

Jira:RHELDOCS-16432[1]

8.9. 动态编程语言、网页和数据库服务器

libdb 已被弃用

RHEL 8 和 RHEL 9 目前提供 Berkeley DB(libdb)版本 5.3.28,该版本根据 LGPLv2 许可证发布。上游 Berkeley DB 版本 6 在 AGPLv3 许可证下提供,该许可证更严格。

从 RHEL 9 开始,libdb 软件包已弃用,可能不会在以后的 RHEL 版本中可用。

另外,在 RHEL 9 中,加密算法已从 libdb 中删除,从 RHEL 9 中删除了多个 libdb 依赖项。

建议 libdb 用户迁移到其他键值数据库。如需更多信息,请参阅 RHEL 中已弃用的 Berkeley DB(libdb) 的知识库文章。

Bugzilla:1927780[1], Bugzilla:1974657, JIRA:RHELPLAN-80695

8.10. 编译器和开发工具

Go 的 FIPS 模式下,比 2048 小的密钥已被 openssl 3.0 弃用

openssl 3.0 弃用了小于 2048 位的密钥,在 Go 的 FIPS 模式中无法正常工作。

Bugzilla:2111072

有些 PKCS1 v1.5 模式现在在 Go 的 FIPS 模式下被弃用

一些 PKCS1 v1.5 模式在 FIPS-140-3 中未被批准用于加密,并被禁用。它们将不再在 Go 的 FIPS 模式下工作。

Bugzilla:2092016[1]

8.11. 身份管理

OpenDNSSec 中的 SHA-1 现已弃用

OpenDNSSEC 支持使用 SHA-1 算法导出数字签名和身份验证记录。不再支持使用 SHA-1 算法。在 RHEL 9 发行版本中,OpenDNSSec 中的 SHA-1 已被弃用,并可能在以后的次版本中删除。另外,OpenDNSSec 支持仅限于与红帽身份管理的集成。OpenDNSSEC 不支持独立。

Bugzilla:1979521

SSSD 隐式文件供应商域默认禁用

SSSD 隐式 文件 供应商域,从 /etc/shadow/etc/ groups 等本地文件检索用户信息,现已默认禁用。

使用 SSSD 从本地文件检索用户和组信息:

  1. 配置 SSSD.选择以下选项之一:

    1. 使用 sssd.conf 配置文件中的 id_provider=files 选项明确配置本地域。

      [domain/local]
      id_provider=files
      ...
    2. 通过在 sssd.conf 配置文件中设置 enable_files_domain=true 来启用 文件 供应商。

      [sssd]
      enable_files_domain = true
  2. 配置名称服务切换。

    # authselect enable-feature with-files-provider

Jira:RHELPLAN-100639[1]

SSSD 文件 提供者已弃用

SSSD 文件 提供者已在 Red Hat Enterprise Linux (RHEL) 9 中弃用。文件 提供者可能会从以后的版本中删除。

Jira:RHELPLAN-139805[1]

AD 和 IdM 的 enumeration 功能已弃用

Enumeration 功能允许您使用 getent passwdgetent group 命令(没有活动目录(AD)、身份管理(IdM)和 LDAP 供应商的参数)列出所有用户或组。在 Red Hat Enterprise Linux (RHEL) 9 中弃用了 AD 和 IdM 的 enumeration 功能。在 RHEL 10 中,AD 和 IdM 将删除 enumeration 功能。

Jira:SSSD-6596

libsss_simpleifp 子软件包已弃用

在 Red Hat Enterprise Linux (RHEL) 9 中弃用了提供 libsss_simpleifp.so 库的 libsss_simpleifp 子软件包。libsss_simpleifp 子软件包可能会在以后的 RHEL 发行版本中删除。

Jira:SSSD-6601

nsslapd-ldapimaprootdn 参数已弃用

在目录服务器中,nsslapd-ldapimaprootdn 配置参数用于将系统根条目映射到根 DN 条目。通常,nsslapd-ldapimaprootdn 参数具有与 nsslapd-rootdn 参数相同的值。另外,更改一个属性但不更改其它属性会导致一个无法正常工作的自动绑定配置,其会破坏 dsconf 工具及对 Web 控制台的访问。

有了此更新,目录服务器只使用 nsslapd-rootdn 参数将系统根条目映射到根 DN 条目。因此,nsslapd-ldapimaprootdn 参数被弃用,根 DN 更改不会破坏 dsconf 工具以及对 web 控制台的访问。

Bugzilla:2170494

nsslapd-conntablesize 配置参数已从 389-ds-base中删除

nsslapd-conntablesize 配置参数已从 RHEL 9.3 中的 389-ds-base 软件包中删除。在以前的版本中,nsslapd-conntablesize 配置属性指定管理建立的连接的连接表的大小。随着多监听器功能的引入,它改进了已建立连接的管理,目录服务器现在可以动态计算连接表的大小。这也解决了这类问题,当连接表大小被设置得太小时,它会影响服务器能够支持的连接的数量。从 RHEL 9.3 开始,只使用 nsslapd-maxdescriptorsnsslapd-reservedescriptors 属性来管理目录服务器可以支持的 TCP/IP 连接的数量。

Bugzilla:2098236

SMB1 协议在 Samba 中已弃用

从 Samba 4.11 开始,不安全的服务器消息块版本 1 (SMB1)协议已弃用,并将在以后的发行版本中删除。

为提高安全性,SMB1 默认在 Samba 服务器和客户端工具中被禁用。

Jira:RHELDOCS-16612[1]

8.12. 桌面

GTK 2 现已弃用

旧的 GTK 2 工具包及以下相关软件包已弃用:

  • adwaita-gtk2-theme
  • gnome-common
  • gtk2
  • gtk2-immodules
  • hexchat

其它几个软件包目前依赖于 GTK 2。这些已被修改,以便它们不再依赖于未来的主 RHEL 发行版本中已弃用的软件包。

如果您维护使用 GTK 2 的应用程序,红帽建议您将应用移植到 GTK 4。

Jira:RHELPLAN-131882[1]

libreoffice 已被弃用

LibreOffice RPM 软件包现已弃用,并将在以后的主 RHEL 发行版本中删除。LibreOffice 在 RHEL 7、8 和 9 的整个生命周期中仍然被完全支持。

作为 RPM 软件包的替代,红帽建议您从 Document Foundation 提供的以下源中安装 LibreOffice:

Jira:RHELDOCS-16300[1]

8.13. 图形基础结构

Motif 已被弃用

Motif 小部件工具包已在 RHEL 中被弃用,因为上游 Motif 社区的开发不活跃。

以下 Motif 软件包已被弃用,包括其开发和调试变体:

  • motif
  • openmotif
  • openmotif21
  • openmotif22

另外,motif-static 软件包已删除。

红帽建议使用 GTK 工具包作为替代品。与 Motif 相比,GTK更易于维护,并提供了新功能。

JIRA:RHELPLAN-98983[1]

8.14. Red Hat Enterprise Linux 系统角色

在 RHEL 9 节点上配置团队时,network 系统角色会显示一条弃用警告

RHEL 9 中弃用了网络协作功能。因此,在 RHEL 8 控制节点上使用 network RHEL 系统角色在 RHEL 9 节点上配置网络团队,会显示有关弃用的警告。

Bugzilla:1999770

8.15. 虚拟化

使用基于 SHA1 的签名进行 SecureBoot 镜像验证已弃用

在 UEFI(PE/COFF)可执行文件中使用基于 SHA1 的签名执行 SecureBoot 镜像验证已过时。反之,红帽建议使用基于 SHA2 算法或更新版本的签名。

Bugzilla:1935497[1]

对虚拟机快照的支持有限

目前只对使用 UEFI 固件的虚拟机支持创建虚拟机(VM)的快照。另外,在快照操作过程中,QEMU 监控可能会被阻断,这会对某些工作负载的 hypervisor 性能造成负面影响。

另请注意,创建虚拟机快照的当前机制已被弃用,红帽不推荐在生产环境中使用虚拟机快照。但是,一个新的虚拟机快照机制正在开发中,计划在以后的 RHEL 9 次要发行本中完全实施。

JIRA:RHELDOCS-16948[1], Bugzilla:1621944

虚拟软盘驱动程序已弃用

用于控制虚拟软盘设备的 isa-fdc 驱动程序现已弃用,并将在以后的 RHEL 发行版本中不被支持。因此,为了确保与迁移的虚拟机(VM)兼容,红帽不建议在 RHEL 9 上托管的虚拟机中使用软盘磁盘设备。

Bugzilla:1965079

qcow2-v2 镜像格式已弃用

在 RHEL 9 中,虚拟磁盘镜像的 qcow2-v2 格式已弃用,并将在以后的 RHEL 主发行版本中不被支持。另外,RHEL 9 Image Builder 无法以 qcow2-v2 格式创建磁盘镜像。

红帽强烈建议您使用 qcow2-v3,而不是 qcow2-v2。要将 qcow2-v2 镜像转换为更新的格式版本,请使用 qemu-img amend 命令。

Bugzilla:1951814

virt-manager 已被弃用

虚拟机管理器(也称 virt-manager) 已弃用。RHEL web 控制台(也称为 Cockpit )旨在在以后的版本中成为其替代品。因此,建议您使用 web 控制台使用 GUI 管理虚拟化。但请注意,virt-manager 中的一些可用功能可能在 RHEL web 控制台中不可用。

Jira:RHELPLAN-10304[1]

libvirtd 已被弃用

单体 libvirt 守护进程 libvirtd 已在 RHEL 9 中弃用,并将在以后的 RHEL 主发行版本中删除。请注意,您仍然可以使用 libvirtd 在虚拟机监控程序上管理虚拟化,但红帽建议您切换到新引入的模块化 libvirt 守护进程。具体说明和详情,请参阅 RHEL 9 配置和管理虚拟化 文档。

Jira:RHELPLAN-113995[1]

旧的 CPU 型号现已弃用

大量 CPU 模型已被弃用,并将在以后的 RHEL 主发行版本中的虚拟机 (VM) 不被支持。弃用的模型如下:

  • 对于 Intel:Intel Xeon 55xx 和 75xx Processor 系列前的型号(也称为 Nehalem)
  • 对于 AMD:AMD Opteron G4 之前的型号
  • 对于 IBM Z:IBM z14 之前的型号

要检查您的虚拟机是否使用已弃用的 CPU 模型,请使用 virsh dominfo 工具,并在 Messages 部分查找类似如下的行:

tainted: use of deprecated configuration settings
deprecated configuration: CPU model 'i486'

Bugzilla:2060839

基于 RDMA 的实时迁移已弃用

有了这个更新,使用 Remote Direct Memory Access (RDMA)迁移正在运行的虚拟机已被弃用。因此,仍可以使用 rdma:// 迁移 URI 来通过 RDMA 请求迁移,但这个功能将在以后的 RHEL 主发行版本中不被支持。

Jira:RHELPLAN-153267[1]

Intel vGPU 功能已被删除

在以前的版本中,作为技术预览,可以将物理 Intel GPU 设备划分为多个虚拟设备,称为 介质设备。然后,这些介质设备可以分配给多个虚拟机(VM)作为虚拟 GPU。因此,这些虚拟机共享单个物理 Intel GPU 的性能,但只有所选的 Intel GPU 与此功能兼容。

从 RHEL 9.3 开始,Intel vGPU 功能已完全删除。

Bugzilla:2206599[1]

PMEM 设备透传已弃用

在这个版本中,非易失性内存库(nvml)软件包已弃用,并将在以后的 RHEL 主版本中删除。因此,当删除软件包时,将持久内存(pmem)设备传递给虚拟机(VM)。请注意,由易失性内存或文件支持的模拟 NVDIMM 设备仍然可用,但无法配置为持久的。

Jira:RHEL-23408

8.16. 容器

不支持在 RHEL 7 主机上运行 RHEL 9 容器

不支持在 RHEL 7 主机上运行 RHEL 9 容器。它可能可以正常工作,但却没有保证。

如需更多信息,请参阅 Red Hat Enterprise Linux Container Compatibility Matrix

Jira:RHELPLAN-100087[1]

Podman 中的 SHA1 哈希算法已弃用

Podman 不再支持用来生成无根网络命名空间的文件名的 SHA1 算法。因此,如果在使用 Podman 4.1.1 或更高版本之前启动无根容器,则必须重启它们(而不只是使用 slirp4netns),以确保它们可以在升级后启动容器。

Bugzilla:2069279[1]

rhel9/pause 已被弃用

rhel9/pause 容器镜像已被弃用。

Bugzilla:2106816

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-16756[1]

Inkscape 和 LibreOffice Flatpak 镜像已弃用

作为技术预览提供的 rhel9/inkscape-flatpakrhel9/libreoffice-flatpak Flatpak 镜像已被弃用。

红帽建议对这些镜像使用以下替代方案:

  • 要替换 rhel9/inkscape-flatpak,请使用 inkscape RPM 软件包。
  • 要替换 rhel9/libreoffice-flatpak,请参阅 LibreOffice 弃用发行注记

Jira:RHELDOCS-17102[1]

BoltDB 数据库后端已被弃用

从 RHEL 8.10 开始,BltDB 数据库后端已弃用。在以后的 RHEL 版本中,B BoltDB 数据库后端将被删除,并将不再提供给 Podman。对于 Podman,请使用 SQLite 数据库后端,这是 RHEL 8.10 的默认后端。

Jira:RHELDOCS-17461[1]

pasta 作为网络名称已弃用

pasta 作为网络名称值的支持已弃用,且在以后的 Podman 版本 5.0 主发行版本中不接受。您可以使用 podman run --networkpodman create --network 命令,使用 pasta 网络名称值在 Podman 中创建唯一的网络模式。

Jira:RHELDOCS-17038[1]

BoltDB 数据库后端已被弃用

从 RHEL 9.4 开始,BltDB 数据库后端已弃用。在以后的 RHEL 版本中,B BoltDB 数据库后端将被删除,并将不再提供给 Podman。对于 Podman,请使用 SQLite 数据库后端,这是 RHEL 9.4 的默认后端。

Jira:RHELDOCS-17495[1]

CNI 网络堆栈已弃用

Container Network Interface (CNI)网络堆栈已弃用,并将在以后的发行版本中删除。使用 Netavark 网络堆栈替代。如需更多信息,请参阅 将网络堆栈从 CNI 切换到 Netavark

Jira:RHELDOCS-17518[1]

8.17. 已弃用的软件包

本节列出了已弃用的软件包,可能不会包括在 Red Hat Enterprise Linux 未来的主发行版本中。

有关 RHEL 8 和 RHEL 9 之间软件包的更改,请参阅使用 RHEL 9 文档中的软件包的更改

重要

在 RHEL 9 中,已弃用软件包的支持状态保持不变。有关支持长度的更多信息,请参阅 Red Hat Enterprise Linux 生命周期Red Hat Enterprise Linux 应用程序流生命周期

以下软件包已在 RHEL 9 中弃用:

  • adwaita-gtk2-theme
  • anaconda-user-help
  • autocorr-af
  • autocorr-bg
  • autocorr-ca
  • autocorr-cs
  • autocorr-da
  • autocorr-de
  • autocorr-dsb
  • autocorr-el
  • autocorr-en
  • autocorr-es
  • autocorr-fa
  • autocorr-fi
  • autocorr-fr
  • autocorr-ga
  • autocorr-hr
  • autocorr-hsb
  • autocorr-hu
  • autocorr-is
  • autocorr-it
  • autocorr-ja
  • autocorr-ko
  • autocorr-lb
  • autocorr-lt
  • autocorr-mn
  • autocorr-nl
  • autocorr-pl
  • autocorr-pt
  • autocorr-ro
  • autocorr-ru
  • autocorr-sk
  • autocorr-sl
  • autocorr-sr
  • autocorr-sv
  • autocorr-tr
  • autocorr-vi
  • autocorr-vro
  • autocorr-zh
  • cheese
  • cheese-libs
  • clutter
  • clutter-gst3
  • clutter-gtk
  • cogl
  • daxio
  • dbus-glib
  • dbus-glib-devel
  • dhcp-client
  • dhcp-common
  • dhcp-relay
  • dhcp-server
  • enchant
  • enchant-devel
  • eog
  • evolution
  • evolution-bogofilter
  • evolution-devel
  • evolution-help
  • evolution-langpacks
  • evolution-mapi
  • evolution-mapi-langpacks
  • evolution-pst
  • evolution-spamassassin
  • festival
  • festival-data
  • festvox-slt-arctic-hts
  • flite
  • flite-devel
  • gedit
  • gedit-plugin-bookmarks
  • gedit-plugin-bracketcompletion
  • gedit-plugin-codecomment
  • gedit-plugin-colorpicker
  • gedit-plugin-colorschemer
  • gedit-plugin-commander
  • gedit-plugin-drawspaces
  • gedit-plugin-findinfiles
  • gedit-plugin-joinlines
  • gedit-plugin-multiedit
  • gedit-plugin-sessionsaver
  • gedit-plugin-smartspaces
  • gedit-plugin-synctex
  • gedit-plugin-terminal
  • gedit-plugin-textsize
  • gedit-plugin-translate
  • gedit-plugin-wordcompletion
  • gedit-plugins
  • gedit-plugins-data
  • ghostscript-x11
  • gnome-common
  • gnome-photos
  • gnome-photos-tests
  • gnome-screenshot
  • gnome-themes-extra
  • gtk2
  • gtk2-devel
  • gtk2-devel-docs
  • gtk2-immodule-xim
  • gtk2-immodules
  • highcontrast-icon-theme
  • Inkscape
  • inkscape-docs
  • inkscape-view
  • iptables-devel
  • iptables-libs
  • iptables-nft
  • iptables-nft-services
  • iptables-utils
  • libdb
  • libgdata
  • libgdata-devel
  • libpmem
  • libpmem-debug
  • libpmem-devel
  • libpmem2
  • libpmem2-debug
  • libpmem2-devel
  • libpmemblk
  • libpmemblk-debug
  • libpmemblk-devel
  • libpmemlog
  • libpmemlog-debug
  • libpmemlog-devel
  • libpmemobj
  • libpmemobj-debug
  • libpmemobj-devel
  • libpmempool
  • libpmempool-debug
  • libpmempool-devel
  • libreoffice
  • libreoffice-base
  • libreoffice-calc
  • libreoffice-core
  • libreoffice-data
  • libreoffice-draw
  • libreoffice-emailmerge
  • libreoffice-filters
  • libreoffice-gdb-debug-support
  • libreoffice-graphicfilter
  • libreoffice-gtk3
  • libreoffice-help-ar
  • libreoffice-help-bg
  • libreoffice-help-bn
  • libreoffice-help-ca
  • libreoffice-help-cs
  • libreoffice-help-da
  • libreoffice-help-de
  • libreoffice-help-dz
  • libreoffice-help-el
  • libreoffice-help-en
  • libreoffice-help-eo
  • libreoffice-help-es
  • libreoffice-help-et
  • libreoffice-help-eu
  • libreoffice-help-fi
  • libreoffice-help-fr
  • libreoffice-help-gl
  • libreoffice-help-gu
  • libreoffice-help-he
  • libreoffice-help-hi
  • libreoffice-help-hr
  • libreoffice-help-hu
  • libreoffice-help-id
  • libreoffice-help-it
  • libreoffice-help-ja
  • libreoffice-help-ko
  • libreoffice-help-lt
  • libreoffice-help-lv
  • libreoffice-help-nb
  • libreoffice-help-nl
  • libreoffice-help-nn
  • libreoffice-help-pl
  • libreoffice-help-pt-BR
  • libreoffice-help-pt-PT
  • libreoffice-help-ro
  • libreoffice-help-ru
  • libreoffice-help-si
  • libreoffice-help-sk
  • libreoffice-help-sl
  • libreoffice-help-sv
  • libreoffice-help-ta
  • libreoffice-help-tr
  • libreoffice-help-uk
  • libreoffice-help-zh-Hans
  • libreoffice-help-zh-Hant
  • libreoffice-impress
  • libreoffice-langpack-af
  • libreoffice-langpack-ar
  • libreoffice-langpack-as
  • libreoffice-langpack-bg
  • libreoffice-langpack-bn
  • libreoffice-langpack-br
  • libreoffice-langpack-ca
  • libreoffice-langpack-cs
  • libreoffice-langpack-cy
  • libreoffice-langpack-da
  • libreoffice-langpack-de
  • libreoffice-langpack-dz
  • libreoffice-langpack-el
  • libreoffice-langpack-en
  • libreoffice-langpack-eo
  • libreoffice-langpack-es
  • libreoffice-langpack-et
  • libreoffice-langpack-eu
  • libreoffice-langpack-fa
  • libreoffice-langpack-fi
  • libreoffice-langpack-fr
  • libreoffice-langpack-fy
  • libreoffice-langpack-ga
  • libreoffice-langpack-gl
  • libreoffice-langpack-gu
  • libreoffice-langpack-he
  • libreoffice-langpack-hi
  • libreoffice-langpack-hr
  • libreoffice-langpack-hu
  • libreoffice-langpack-id
  • libreoffice-langpack-it
  • libreoffice-langpack-ja
  • libreoffice-langpack-kk
  • libreoffice-langpack-kn
  • libreoffice-langpack-ko
  • libreoffice-langpack-lt
  • libreoffice-langpack-lv
  • libreoffice-langpack-mai
  • libreoffice-langpack-ml
  • libreoffice-langpack-mr
  • libreoffice-langpack-nb
  • libreoffice-langpack-nl
  • libreoffice-langpack-nn
  • libreoffice-langpack-nr
  • libreoffice-langpack-nso
  • libreoffice-langpack-or
  • libreoffice-langpack-pa
  • libreoffice-langpack-pl
  • libreoffice-langpack-pt-BR
  • libreoffice-langpack-pt-PT
  • libreoffice-langpack-ro
  • libreoffice-langpack-ru
  • libreoffice-langpack-si
  • libreoffice-langpack-sk
  • libreoffice-langpack-sl
  • libreoffice-langpack-sr
  • libreoffice-langpack-ss
  • libreoffice-langpack-st
  • libreoffice-langpack-sv
  • libreoffice-langpack-ta
  • libreoffice-langpack-te
  • libreoffice-langpack-th
  • libreoffice-langpack-tn
  • libreoffice-langpack-tr
  • libreoffice-langpack-ts
  • libreoffice-langpack-uk
  • libreoffice-langpack-ve
  • libreoffice-langpack-xh
  • libreoffice-langpack-zh-Hans
  • libreoffice-langpack-zh-Hant
  • libreoffice-langpack-zu
  • libreoffice-math
  • libreoffice-ogltrans
  • libreoffice-opensymbol-fonts
  • libreoffice-pdfimport
  • libreoffice-pyuno
  • libreoffice-sdk
  • libreoffice-sdk-doc
  • libreoffice-ure
  • libreoffice-ure-common
  • libreoffice-wiki-publisher
  • libreoffice-writer
  • libreoffice-x11
  • libreoffice-xsltfilter
  • libreofficekit
  • libsoup
  • libsoup-devel
  • libuser
  • libuser-devel
  • libwpe
  • libwpe-devel
  • mcpp
  • mod_auth_mellon
  • motif
  • motif-devel
  • pmdk-convert
  • pmempool
  • python3-pytz
  • qt5
  • qt5-assistant
  • qt5-designer
  • qt5-devel
  • qt5-doctools
  • qt5-linguist
  • qt5-qdbusviewer
  • qt5-qt3d
  • qt5-qt3d-devel
  • qt5-qt3d-doc
  • qt5-qt3d-examples
  • qt5-qtbase
  • qt5-qtbase-common
  • qt5-qtbase-devel
  • qt5-qtbase-doc
  • qt5-qtbase-examples
  • qt5-qtbase-gui
  • qt5-qtbase-mysql
  • qt5-qtbase-odbc
  • qt5-qtbase-postgresql
  • qt5-qtbase-private-devel
  • qt5-qtbase-static
  • qt5-qtconnectivity
  • qt5-qtconnectivity-devel
  • qt5-qtconnectivity-doc
  • qt5-qtconnectivity-examples
  • qt5-qtdeclarative
  • qt5-qtdeclarative-devel
  • qt5-qtdeclarative-doc
  • qt5-qtdeclarative-examples
  • qt5-qtdeclarative-static
  • qt5-qtdoc
  • qt5-qtgraphicaleffects
  • qt5-qtgraphicaleffects-doc
  • qt5-qtimageformats
  • qt5-qtimageformats-doc
  • qt5-qtlocation
  • qt5-qtlocation-devel
  • qt5-qtlocation-doc
  • qt5-qtlocation-examples
  • qt5-qtmultimedia
  • qt5-qtmultimedia-devel
  • qt5-qtmultimedia-doc
  • qt5-qtmultimedia-examples
  • qt5-qtquickcontrols
  • qt5-qtquickcontrols-doc
  • qt5-qtquickcontrols-examples
  • qt5-qtquickcontrols2
  • qt5-qtquickcontrols2-devel
  • qt5-qtquickcontrols2-doc
  • qt5-qtquickcontrols2-examples
  • qt5-qtscript
  • qt5-qtscript-devel
  • qt5-qtscript-doc
  • qt5-qtscript-examples
  • qt5-qtsensors
  • qt5-qtsensors-devel
  • qt5-qtsensors-doc
  • qt5-qtsensors-examples
  • qt5-qtserialbus
  • qt5-qtserialbus-devel
  • qt5-qtserialbus-doc
  • qt5-qtserialbus-examples
  • qt5-qtserialport
  • qt5-qtserialport-devel
  • qt5-qtserialport-doc
  • qt5-qtserialport-examples
  • qt5-qtsvg
  • qt5-qtsvg-devel
  • qt5-qtsvg-doc
  • qt5-qtsvg-examples
  • qt5-qttools
  • qt5-qttools-common
  • qt5-qttools-devel
  • qt5-qttools-doc
  • qt5-qttools-examples
  • qt5-qttools-libs-designer
  • qt5-qttools-libs-designercomponents
  • qt5-qttools-libs-help
  • qt5-qttools-static
  • qt5-qttranslations
  • qt5-qtwayland
  • qt5-qtwayland-devel
  • qt5-qtwayland-doc
  • qt5-qtwayland-examples
  • qt5-qtwebchannel
  • qt5-qtwebchannel-devel
  • qt5-qtwebchannel-doc
  • qt5-qtwebchannel-examples
  • qt5-qtwebsockets
  • qt5-qtwebsockets-devel
  • qt5-qtwebsockets-doc
  • qt5-qtwebsockets-examples
  • qt5-qtx11extras
  • qt5-qtx11extras-devel
  • qt5-qtx11extras-doc
  • qt5-qtxmlpatterns
  • qt5-qtxmlpatterns-devel
  • qt5-qtxmlpatterns-doc
  • qt5-qtxmlpatterns-examples
  • qt5-rpm-macros
  • qt5-srpm-macros
  • webkit2gtk3
  • webkit2gtk3-devel
  • webkit2gtk3-jsc
  • webkit2gtk3-jsc-devel
  • wpebackend-fdo
  • wpebackend-fdo-devel
  • xorg-x11-server-Xorg

第 9 章 已知问题

这部分论述了 Red Hat Enterprise Linux 9.4 中已知的问题。

9.1. 安装程序和镜像创建

authauthconfig Kickstart 命令需要 AppStream 软件仓库

authauthconfig Kickstart 命令在安装过程中需要 authselect-compat 软件包。如果没有这个软件包,如果使用了 authauthconfig,则安装会失败。但根据设计,authselect-compat 软件包只包括在 AppStream 仓库中。

要临时解决这个问题,请验证 BaseOS 和 AppStream 存储库是否对安装程序可用,或者在安装过程中使用 authselect Kickstart 命令。

Bugzilla:1640697[1]

reboot --kexecinst.kexec 命令不提供可预测的系统状态

使用 reboot --kexec Kickstart 命令或 inst.kexec 内核引导参数执行 RHEL 安装不会提供与完全重启相同的可预期系统状态。因此,在不重启的情况下切换安装的系统可能会导致无法预计的结果。

请注意,kexec 功能已弃用,并将在以后的 Red Hat Enterprise Linux 版本中删除。

Bugzilla:1697896[1]

在 Anaconda 作为应用程序运行的系统中意外 SELinux 策略

当 Anaconda 作为应用程序运行在已安装的系统上(例如,使用 -image anaconda 选项对镜像文件执行另一次安装)时,不禁止系统在安装过程中修改 SELinux 类型和属性。因此,某些 SELinux 策略的元素可能会在运行Anaconda 的系统上发生更改。

要临时解决这个问题,请不要在生产系统上运行 Anaconda。相反,在临时虚拟机中运行 Anaconda,以使 SELinux 策略在生产系统上保持不变。作为系统安装过程的一部分运行 anaconda,如从 boot.isodvd.iso 安装不会受此问题的影响。

Bugzilla:2050140

当使用使用第三方工具创建的 USB 引导安装时,不会检测 本地介质 安装源

当从使用第三方工具创建的 USB 引导 RHEL 安装时,安装程序无法检测 Local Media 安装源(只检测到 Red Hat CDN )。

出现这个问题的原因是,默认的引导选项 int.stage2= 会尝试搜索 iso9660 镜像格式。但是,第三方工具可能会创建具有不同格式的 ISO 镜像。

作为临时解决方案,请使用以下解决方案之一:

  • 当引导安装时,点击 Tab 键来编辑内核命令行,并将引导选项 inst.stage2= 改为 inst.repo=
  • 要在 Windows 中创建可引导 USB 设备,使用 Fedora Media Writer。
  • 当使用 Rufus 等第三方工具创建可引导的 USB 设备时,首先在 Linux 系统上重新生成 RHEL ISO 镜像,然后使用第三方工具创建可引导的 USB 设备。

有关执行任何指定的临时解决方案的步骤的更多信息,请参阅 安装介质在 RHEL 8.3 的安装过程中没有被自动探测到

Bugzilla:1877697[1]

USB CD-ROM 驱动器作为 Anaconda 中的安装源不可用

当源为 USB CD-ROM 驱动器,并且指定了 Kickstart ignoredisk --only-use= 命令时,安装会失败。在这种情况下,Anaconda 无法找到并使用这个源磁盘。

要临时解决这个问题,请使用 harddrive --partition=sdX --dir=/ 命令从 USB CD-ROM 驱动器安装。因此,安装不会失败。

Jira:RHEL-4707

带有 iso9660 文件系统的硬盘分区安装失败

您不能在使用 iso9660 文件系统进行分区的系统中安装 RHEL。这是因为将设置为忽略包含 iso9660 文件系统分区的硬盘的更新安装代码。即使在没有使用 DVD 的情况下安装 RHEL,也会发生这种情况。

要临时解决这个问题,请在 Kickstart 文件中添加以下脚本,以便在安装开始前格式化磁盘。

注:在执行临时解决方案前,请备份磁盘上的数据。erafs 命令对磁盘中的所有现有数据进行格式化。

%pre
wipefs -a /dev/sda
%end

因此,安装可以正常工作,且没有任何错误。

Jira:RHEL-4711

Anaconda 无法验证管理员用户帐户是否存在

在使用图形用户界面安装 RHEL 时,Anaconda 无法验证管理员帐户是否已创建。因此,用户可以在没有管理员用户帐户的情况下安装系统。

要临时解决这个问题,请确保配置管理员用户帐户或 root 密码已设置,且 root 帐户被解锁。因此,用户可以在安装的系统中执行管理任务。

Bugzilla:2047713

新的 XFS 功能可防止使用比版本 5.10 更早的固件引导 PowerNV IBM POWER 系统

PowerNV IBM POWER 系统使用 Linux 内核进行固件,并使用 Petitboot 作为 GRUB 的替代。这会导致固件内核挂载 /boot,Petitboot 读取 GRUB 配置和引导 RHEL。

RHEL 9 内核为 XFS 文件系统引入了 bigtime=1inobtcount=1 功能,而使用比版本 5.10 旧固件的内核不理解。

要临时解决这个问题,您可以为 /boot 使用另一个文件系统,例如 ext4。

Bugzilla:1997832[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

因此,安装过程成功完成。

Jira:RHEL-4741

当连接到网络但没有配置 DHCP 或静态 IP 地址时,NetworkManager 无法在安装后启动

从 RHEL 9.0 开始,当没有设置特定的 ip= 或 Kickstart 网络配置时,Anaconda 会自动激活网络设备。Anaconda 为每个以太网设备创建默认的持久配置文件。连接配置文件的 ONBOOTautoconnect 值设为 true。因此,在启动安装的系统的过程中,RHEL 会激活网络设备,networkManager-wait-online 服务会失败。

作为临时解决方案,请执行以下操作之一:

  • 使用 nmcli 工具删除所有连接,但您要使用的一个连接除外。例如:

    1. 列出所有连接配置文件:

      # nmcli connection show
    2. 删除您不需要的连接配置文件:

      # nmcli connection delete <connection_name>

      将 <connection_name> 替换为您要删除的连接的名称。

  • 如果没有设置特定的 ip= 或 Kickstart 网络配置,请在 Anaconda 中禁用自动连接网络功能。

    1. 在 Anaconda GUI 中,导航到 Network & Host Name
    2. 选择要禁用的网络设备。
    3. 单击 Configure
    4. General 选项卡中,取消 Connect automatically with priority 复选框。
    5. 点击 Save

Bugzilla:2115783[1]

Kickstart 安装无法配置网络连接

Anaconda 只能通过 NetworkManager API 执行 Kickstart 网络配置。Anaconda 在 %pre Kickstart 部分之后处理网络配置。因此,Kickstart %pre 部分中的一些任务被阻止。例如,因为网络配置不可用,从 %pre 部分中下载软件包会失败。

要临时解决这个问题:

  • 配置网络,例如使用 nmcli 工具作为 %pre 脚本的一部分。
  • 使用安装程序引导选项为 %pre 脚本配置网络。

因此,可以对 %pre 部分中的任务使用网络,Kickstart 安装过程完成。

Bugzilla:2173992

使用 RHEL 镜像构建器构建 rpm-ostree 镜像时,不支持启用 FIPS 模式

目前,在使用 RHEL 镜像构建器构建 rpm-ostree 镜像时,不支持启用 FIPS 模式。

Jira:RHEL-4655

使用 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。

Jira:RHEL-4649

驱动程序磁盘菜单无法在控制台上显示用户输入

当您在带有驱动程序磁盘的内核命令行上使用 inst.dd 选项启动 RHEL 安装时,控制台将无法显示用户输入。因此,应用程序似乎没有响应用户输入,并停止响应,但会显示使用户混淆的输出。但是,此行为不会影响功能,用户输入会在按 Enter 后被注册。

作为临时解决方案,要查看预期结果,请忽略控制台中缺少用户输入,并在完成添加输入后按 Enter 键。

Jira:RHEL-4737

因为 %packages 部分缺少 systemd 服务文件的软件包,Kickstart 安装会失败

如果 Kickstart 文件使用 services --enabled=…​ 指令启用 systemd 服务和包含指定 服务文件的软件包,则 RHEL 安装过程会失败并显示以下错误:

Error enabling service <name_of_the_service>

要临时解决这个问题,请在 Kickstart 的 %packages 部分包含服务文件的对应软件包。因此,RHEL 安装完成,在安装过程中启用预期的服务。

Jira:RHEL-9633[1]

9.2. 安全性

OpenSSL 不会检测 PKCS #11 令牌是否支持原始 RSA 或 RSA-PSS 签名的创建

TLS 1.3 协议需要支持 RSA-PSS 签名。如果 PKCS #11 令牌不支持原始 RSA 或 RSA-PSS 签名,如果密钥由 PKCS#11 令牌保存,则使用 OpenSSL 库的服务器应用程序将无法使用 RSA 密钥。因此,在上述场景中 TLS 通信会失败。

要临时解决这个问题,请配置服务器和客户端以使用 TLS 版本 1.2 作为可用最高 TLS 协议版本。

Bugzilla:1681178[1]

OpenSSL 错误处理 PKCS #11 tokens 不支持原始 RSA 或 RSA-PSS 签名

OpenSSL 库不会检测到 PKCS #11 令牌的与键相关的功能。因此,当使用不支持原始 RSA 或 RSA-PSS 签名的令牌创建签名时,建立 TLS 连接会失败。

要临时解决这个问题,请在 /etc/pki/tls/openssl.cnf 文件的 crypto_policy 部分的 .include 行后面添加以下行:

SignatureAlgorithms = RSA+SHA256:RSA+SHA512:RSA+SHA384:ECDSA+SHA256:ECDSA+SHA512:ECDSA+SHA384
MaxProtocol = TLSv1.2

因此,可以在描述的场景中建立 TLS 连接。

Bugzilla:1685470[1]

使用特定语法,scp 会清空复制到其自身的文件

scp 实用程序从安全复制协议 (SCP) 改为更安全的 SSH 文件传输协议 (SFTP)。因此,将文件从位置复制到同一位置,从而擦除文件内容。此问题会产生以下语法:

scp localhost:/myfile localhost:/myfile

要临时解决这个问题,请不要使用这个语法将文件复制到与源位置相同的目标。

这个问题已针对以下语法解决:

  • scp /myfile localhost:/myfile
  • scp localhost:~/myfile ~/myfile

Bugzilla:2056884

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 规格一起使用。

Jira:RHEL-1824

Ansible 补救需要额外的集合

ansible-core 软件包替换 Ansible Engine 时,RHEL 订阅提供的 Ansible 模块的列表会减少。因此,运行使用包含在 scap-security-guide 软件包中的 Ansible 内容的补救需要来自 rhc-worker-playbook 软件包的集合。

对于 Ansible 补救,请执行以下步骤:

  1. 安装所需的软件包:

    # dnf install -y ansible-core scap-security-guide rhc-worker-playbook
  2. 进到 /usr/share/scap-security-guide/ansible 目录:

    # cd /usr/share/scap-security-guide/ansible
  3. 运行使用环境变量的相关 Ansible playbook,这些变量定义了到额外 Ansible 集合的路径:

    # ANSIBLE_COLLECTIONS_PATH=/usr/share/rhc-worker-playbook/ansible/collections/ansible_collections/ ansible-playbook -c local -i localhost, rhel9-playbook-cis_server_l1.yml

    cis_server_l1 替换为您要修复系统的配置文件的 ID。

因此,Ansible 内容会被正确处理。

注意

rhc-worker-playbook 中提供的集合的支持仅限于启用 scap-security-guide 中提供的 Ansible 内容。

Jira:RHEL-1800

Keylime 不接受串联的 PEM 证书

当 Keylime 将证书链作为 PEM 格式的、串联在一个文件中的多个证书接收时,keylime-agent-rust Keylime 组件在签名验证过程中不能正确地使用所有提供的证书,导致 TLS 握手失败。因此,客户端组件(keylime_verifierkeylime_tenant)无法连接到 Keylime 代理。要临时解决这个问题,请只使用一个证书而不是多个证书。

Jira:RHELPLAN-157225[1]

Keylime 拒绝其摘要以反斜杠开头的运行时策略

生成运行时策略的当前脚本 create_runtime_policy.sh,使用 SHA 校验函数,如 sha256sum ,来计算文件摘要。但是,当输入的文件名包含反斜杠或 \n 时,校验和函数会在其输出中的摘要前添加一个反斜杠。在这种情况下,生成的策略文件的格式不正确。提供错误格式的策略文件时,Keylime 租户会产生以下或类似错误消息:me.tenant - ERROR - Response code 400: Runtime policy is malformat。要临时解决这个问题,请通过输入以下命令从错误格式的策略文件中手动删除反斜杠:sed -i 's/^\\//g' <malformed_file_name>

Jira:RHEL-11867[1]

更新后,Keylime 代理拒绝来自验证器的请求

当 Keylime 代理的 API 版本号(keylime-agent-rust)已更新时,代理会拒绝使用不同版本的请求。因此,如果 Keylime 代理被添加到验证器中,然后被更新,则验证器会尝试使用旧的 API 版本联系代理。代理拒绝此请求并使认证失败。要临时解决这个问题,请在更新代理(keylime-agent-rust)前更新验证器(keylime-verifier) 。因此,当代理被更新时,verifier 会检测 API 更改,并相应地更新其存储的数据。

Jira:RHEL-1518[1]

fapolicyd 工具错误地允许执行更改的文件

在对文件进行任何更改后,文件的 IMA 哈希应该正确更新,fapolicyd 应该阻止更改的文件的执行。但是,这不会因为 IMA 策略设置与通过 evctml 程序哈希的文件中的差异而发生。因此,IMA 哈希没有在更改的文件的扩展属性中被更新。因此,fapolicyd 错误地允许更改的文件的执行。

Jira:RHEL-520[1]

默认 SELinux 策略允许无限制的可执行文件使其堆栈可执行

SELinux 策略中的 selinuxuser_execstack 布尔值的默认状态是 on,这意味着无限制的可执行文件可以使其堆栈为可执行。可执行文件不应该使用这个选项,这通常代表开发的可执行代码的质量较差,或可能存在安全攻击的风险。但是,由于需要与其他工具、软件包和第三方产品保持兼容,红帽无法更改默认策略中的这个布尔值。如果您的环境没有此类兼容性问题,请使用 setsebool -P selinuxuser_execstack off 命令在您的本地策略中将这个布尔值设置为 off。

Bugzilla:2064274

STIG 配置文件中的 SSH 超时规则配置了不正确的选项

对 OpenSSH 的更新会影响以下 Defense Information Systems Agency Security Technical Implementation Guide (DISA STIG) 配置集中的规则:

  • DISA STIG for RHEL 9 (xccdf_org.ssgproject.content_profile_stig)
  • DISA STIG with GUI for RHEL 9 (xccdf_org.ssgproject.content_profile_stig_gui)

在每个配置集中,以下两条规则会受到影响:

Title: Set SSH Client Alive Count Max to zero
CCE Identifier: CCE-90271-8
Rule ID: xccdf_org.ssgproject.content_rule_sshd_set_keepalive_0

Title: Set SSH Idle Timeout Interval
CCE Identifier: CCE-90811-1
Rule ID: xccdf_org.ssgproject.content_rule_sshd_set_idle_timeout

当应用到 SSH 服务器时,每个规则都会配置一个选项(ClientAliveCountMaxClientAliveInterval),其行为不再像之前一样。因此,当 OpenSSH 达到这些规则配置的超时时,OpenSSH 不再断开空闲的 SSH 用户。作为临时解决方案,这些规则已从 DISA STIG for RHEL 9 和 DISA STIG with GUI for RHEL 9 配置集中临时删除,直到开发出解决方案为止。

Bugzilla:2038978

GnuPG 错误地允许使用 SHA-1 签名,即使通过 crypto-policies 禁止使用 SHA-1 签名

无论系统范围的加密策略中定义的设置如何,GNU Privacy Guard(GnuPG)加密软件可以创建和验证使用 SHA-1 算法的签名。因此,您可以在 DEFAULT 加密策略中将 SHA-1 用于加密目的,这与这个不安全算法的系统范围弃用没有一致的。

要临时解决这个问题,请不要使用涉及 SHA-1 的 GnuPG 选项。因此,您将使用不安全的 SHA-1 签名来防止 GnuPG 降低默认的系统安全性。

Bugzilla:2070722

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

如需了解更多详细信息和临时解决方案,请参阅相关的 知识库文章

Bugzilla:2161499

在 kickstart 安装过程中修复与服务相关的规则可能会失败

在 kickstart 安装过程中,OpenSCAP 工具有时会错误地显示服务的 enabledisable 状态补救不需要。因此,OpenSCAP 可能会将安装的系统上的服务设置为不合规的状态。作为临时解决方案,您可以在 kickstart 安装后扫描并修复该系统。这可以解决与服务相关的问题。

Jira:RHELPLAN-44202[1]

9.3. RHEL for Edge

edge-vsphere 镜像中没有 open-vm-tools 软件包

目前,在 edge-vsphere 镜像中不会默认安装 open-vm-tools 软件包。要临时解决这个问题,请在蓝图自定义中包含软件包。使用 edge-vsphere 镜像类型时,请在 RHEL for Edge 容器镜像或 RHEL for Edge 提交镜像的蓝图中添加 open-vm-tools

Jira:RHELDOCS-16574[1]

9.4. 软件管理

安装过程有时将变为无响应

安装 RHEL 时,安装过程有时会变得无响应。/tmp/packaging.log 文件在末尾显示以下消息:

10:20:56,416 DDEBUG dnf: RPM transaction over.

要解决这个问题,重启安装过程。

Bugzilla:2073510

在本地仓库上运行 createrepo_c 会产生重复的 repodata 文件

当您在本地存储库上运行 createrepo_c 命令时,它会产生 repodata 文件的重复副本,其中一个副本是压缩的,另一个副本不是。但是,没有可用的临时解决方案,您可以安全地忽略重复的文件。createrepo_c 命令会产生重复的副本,因为其他工具中的要求和差异依赖于使用 createrepo_c 创建的存储库。

Bugzilla:2056318

9.5. Shell 和命令行工具

使用 ifcfg 文件重命名网络接口失败

在 RHEL 9 中,默认情况下不会安装 initscripts 软件包。因此,使用 ifcfg 文件重命名网络接口会失败。要解决这个问题,红帽建议您使用 udev 规则或链接文件来重命名接口。详情请查看 Consistent 网络接口设备命名systemd.link(5) man page。

如果您无法使用推荐的解决方案之一,请安装 initscripts 软件包。

Bugzilla:2018112[1]

RHEL 9 中不默认安装 chkconfig 软件包

RHEL 9 中不默认安装 chkconfig 软件包(更新和查询系统服务运行级别信息)。

要管理服务,请使用 systemctl 命令或手动安装 chkconfig 软件包。

有关 systemd 的更多信息,请参阅 systemd 简介。有关如何使用 systemctl 实用程序的步骤,请参阅使用 systemctl 管理系统服务

Bugzilla:2053598[1]

设置控制台 keymap 在最小安装上需要 libxkbcommon

在 RHEL 9 中,某些 systemd 库依赖项已从动态链接转换为动态加载,以便您的系统在运行时打开并使用库(当它们可用时)。有了这个更改,除非您安装必要的库,否则无法使用依赖于此类库的功能。这也会影响在最小安装的系统上设置键盘布局。因此,localectl --no-convert set-x11-keymap gb 命令会失败。

要临时解决这个问题,请安装 libxkbcommon 库:

# dnf install libxkbcommon

Jira:RHEL-6105

sysstat 软件包中的 %vmeff 指标显示不正确的值

sysstat 软件包提供 %vmeff 指标来测量页面回收效率。sar -B 命令返回的 %vmeff 列的值不正确,因为 sysstat 不会解析后续内核版本提供的所有相关的 /proc/vmstat 值。要临时解决这个问题,您可以从 /proc/vmstat 文件中手动计算 %vmeff 值。详情请查看 为什么在 RHEL 8 和 RHEL 9 中 sar (1) 工具报告 %vmeff 值超过 100 % ?

Jira:RHEL-12009

服务位置协议(SLP)易受到通过 UDP 的攻击

OpenSLP 为本地区域网络中的应用程序提供动态配置机制,如打印机和文件服务器。但是,SLP 会受到通过连接到互联网的系统上的 UDP 的反射性拒绝服务放大攻击。SLP 允许未经身份验证的攻击者注册新服务,而不受由 SLP 实现设置的限制。通过使用 UDP 和欺骗源地址,攻击者可以请求服务列表,在欺骗地址上创建拒绝服务。

要防止外部攻击者访问 SLP 服务,请在不受信任的网络上运行的所有系统上禁用 SLP,比如那些直接连接到互联网的系统。另外,要解决这个问题,请配置防火墙以阻止或过滤 UDP 和 TCP 端口 427 上的流量。

Jira:RHEL-6995[1]

sariostat 实用程序生成的 %util 列无效

当您使用 sariostat 实用程序收集系统使用统计数据时,sariostat 生成的 %util 列可能包含无效数据。

Jira:RHEL-26275[1]

9.6. 基础架构服务

bindunbound 都禁用基于 SHA-1- 的签名验证

bindunbound 组件禁用所有 RSA/SHA1(算法 5)和 RSASHA1-NSEC3-SHA1(算法号 7)签名,且签名的 SHA-1 用法在 DEFAULT 系统范围的加密策略中受到限制。

因此,某些 DNSSEC 记录使用 SHA-1、RSA/SHA1 和 RSASHA1-NSEC3-SHA1 摘要算法无法验证在 Red Hat Enterprise Linux 9 中,受影响的域名会存在安全漏洞。

要临时解决这个问题,升级到不同的签名算法,如 RSA/SHA-256 或 elliptic curve 键。

有关受影响和存在安全漏洞的顶级域的信息和列表,请参阅使用 RSASHA1 签名的 DNSSEC 记录失败来验证 解决方案。

Bugzilla:2070495

如果在多个区域中使用相同的可写区域文件,named 无法启动

BIND 不允许在多个区域中具有相同的可写区域文件。因此,如果配置包含多个区域,它们共享到可由 named 服务修改的文件的路径,则 named 无法启动。要临时解决这个问题,请使用 in-view 子句在多个视图间共享一个区域,并确保为不同的区使用不同的路径。例如,在路径中包含视图名称。

请注意,可写的区域文件通常在带有允许的动态更新的区域、DNSSEC 维护的次要区域或区域中使用。

Bugzilla:1984982

libotr 与 FIPS 不兼容

libotr 库和非记录(OTR)消息的工具包为即时消息会话提供了端到端加密。但是,由于其使用了 gcry_pk_sign()gcry_pk_verify() 函数,libotr 库不符合联邦信息处理标准(FIPS)。因此,您无法在 FIPS 模式下使用 libotr 库。

Bugzilla:2086562

9.7. 网络

KTLS 不支持将 TLS 1.3 卸载到 NIC

内核传输层安全(kTLS)不支持将 TLS 1.3 卸载到 NIC。因此,即使 NIC 支持 TLS 卸载,软件加密也会与 TLS 1.3 一起使用。要临时解决这个问题,如果需要卸载,禁用 TLS 1.3。因此,您只能卸载 TLS 1.2。当使用 TLS 1.3 时,性能较低,因为无法卸载 TLS 1.3。

Bugzilla:2000616[1]

更新会话密钥失败会导致连接中断

内核传输层安全(kTLS)协议不支持更新会话密钥,这些密钥由对称密码使用。因此,用户无法更新密钥,从而导致连接中断。要临时解决这个问题,请禁用 kTLS。因此,解决这一问题,可以成功更新会话密钥。

Bugzilla:2013650[1]

默认情况下不安装 initscripts 软件包

默认情况下,不会安装 initscripts 软件包。因此,ifupifdown 工具不可用。一个替代的方法是,可以使用 nmcli connection upnmcli connection down 命令来启用和禁用连接。如果这个替代方法无法正常工作,请报告这个问题并安装 NetworkManager-initscripts-updown 软件包,该软件包为 ifupifdown 工具提供了一个 NetworkManager 解决方案。

Bugzilla:2082303

使用 Mellanox ConnectX-5 适配器时,mlx5 驱动程序会失败

在以太网交换机设备驱动程序型号(switchdev)模式下,当使用设备管理的流控制(DMFS)参数和 ConnectX-5 适配器支持的硬件配置时,mlx5 驱动程序会失败。因此,您可以看到以下错误信息:

BUG: Bad page cache in process umount pfn:142b4b

要临时解决这个问题,请使用软件管理的流控制 (SMFS)参数,而不是 DMFS。

Jira:RHEL-9897[1]

9.8. 内核

当从 4k 迁移到 64k 页大小内核时,依赖内核页大小的客户应用程序可能需要更新

RHEL 与 4k 和 64k 页大小内核都兼容。当从 4k 迁移到 64k 页大小内核时,依赖 4k 内核页大小的客户应用程序可能需要更新。已知的实例包括 jemalloc 和依赖的应用程序。

jemalloc 内存分配器库对系统运行时环境中使用的页大小敏感。库可以构建成与 4k 和 64k 页大小内核兼容,例如,当使用 --with-lg-page=16env JEMALLOC_SYS_WITH_LG_PAGE=16 配置时(用于 jemallocator Rust crate)。因此,运行时环境的页大小与编译依赖于 jemalloc 的二进制文件时出现的页大小之间可能会出现不匹配。因此,使用基于 jemalloc 的应用程序会触发以下错误:

<jemalloc>: Unsupported system page size

要避免这个问题,请使用以下方法之一:

  • 使用合适的构建配置或环境选项来创建 4k 和 64k 页大小兼容二进制文件。
  • 在引导到最后的 64k 内核和运行时环境后,构建任何使用 jemalloc 的用户空间软件包。

例如,您可以构建 fd-find 工具,该工具也通过 cargo Rust 软件包管理器使用 jemalloc。在最后的 64k 环境中,输入 cargo 命令触发所有依赖项的新构建,以解决页大小中的不匹配:

# cargo install fd-find --force

Bugzilla:2167783[1]

使用 dnf 升级到最新的实时内核不会并行安装多个内核版本

使用 dnf 软件包管理器安装最新的实时内核需要解决软件包依赖,来同时保留新的和当前的内核版本。默认情况下,dnf 在升级过程中删除旧的 kernel-rt 软件包。

作为临时解决方案,将当前的 kernel-rt 软件包添加到 /etc/yum.conf 配置文件中的 installonlypkgs 选项中,例如 installonlypkgs=kernel-rt

installonlypkgs 选项将 kernel-rt 附加到 dnf 使用的默认列表中。installonlypkgs 指令中列出的软件包不会被自动删除,因此支持多个内核版本来同时安装。

请注意,安装了多个内核是一种在使用新内核版本时具有回退选项的方法。

Bugzilla:2181571[1]

默认情况下,Delay Accounting 功能不会显示 SWAPINIO% 统计列

Delayed Accounting 功能与早期版本不同,它们会被默认禁用。因此,iotop 应用程序不显示 SWAPINIO% 统计列,并显示以下警告:

CONFIG_TASK_DELAY_ACCT not enabled in kernel, cannot determine SWAPIN and IO%

Delay Account 功能使用 taskstats 接口,为属于线程组的所有任务或线程提供延迟统计。当任务等待 kernel 资源可用时,会延迟执行,例如:等待空闲 CPU 运行的任务。统计有助于设置任务的 CPU 优先级、I/O 优先级和 rss 限制值。

作为临时解决方案,您可以在运行时或引导时启用 delayacct 引导选项。

  • 要在运行时启用 delayacct,请输入:

    echo 1 > /proc/sys/kernel/task_delayacct

    请注意,这个命令可启用系统范围功能,但只适用于您在运行此命令后启动的任务。

  • 要在引导时永久启用 delayacct,请使用以下步骤之一:

因此,iotop 应用程序会显示 SWAPINIO% 统计列。

Bugzilla:2132480[1]

具有大核数的系统上实时内核的硬件认证可能需要传递 skew-tick=1 引导参数

具有大量插槽和大核数的大型或中型系统可能会因为对 xtime_lock(其在计时系统中使用)的锁争用而遇到延迟峰值。因此,硬件认证中的延迟峰值和延迟可能会在多处理系统上发生。作为临时解决方案,您可以通过添加 skew_tick=1 引导参数,偏移每个 CPU 的计时器刻度,来在不同的时间启动。

要避免锁冲突,请启用 skew_tick=1

  1. 使用 grubby 启用 skew_tick=1 参数。

    # grubby --update-kernel=ALL --args="skew_tick=1"
  2. 重启以使更改生效。
  3. 通过显示您在启动过程中传递的内核参数来验证新设置。

    cat /proc/cmdline

请注意,启用 skew_tick=1 会导致功耗的大量增加,因此只有在运行延迟敏感实时工作负载时才必须启用它。

Jira:RHEL-9318[1]

kdump 机制无法捕获 LUKS 加密目标上的 vmcore 文件

当在使用 Linux Unified Key Setup(LUKS)加密分区的系统中运行 kdump 时,系统需要特定的可用内存。当可用内存小于所需内存量时,systemd-cryptsetup 服务将无法挂载分区。因此,第二个内核无法捕获 LUKS 加密目标上的崩溃转储文件。

作为临时解决方案,查询 推荐的 crashkernel 值 ,并逐渐将内存大小增加到合适的值。推荐的 crashkernel 值 可作为设置所需内存大小的参考。

  1. 打印估计的崩溃内核值。

    # kdumpctl estimate
  2. 通过增加 crashkernel 值来配置所需的内存量。

    # grubby --args=crashkernel=652M --update-kernel=ALL
  3. 重启系统以使更改生效。

    # reboot

因此,kdump 在带有 LUKS 加密分区的系统上可以正常工作。

Jira:RHEL-11196[1]

kdump 服务无法在 IBM Z 系统中构建 initrd 文件

在 64 位 IBM Z 系统中,当 znet 相关配置信息(如 s390-subchannels )位于不活跃 NetworkManager 连接配置集时,kdump 服务无法加载初始 RAM 磁盘 (initrd)。因此,kdump 机制会失败并显示以下错误:

dracut: Failed to set up znet
kdump: mkdumprd: failed to make kdump initrd

作为临时解决方案,请使用以下解决方案之一:

  • 通过重新使用具有 znet 配置信息的连接配置集来配置网络绑定或桥接:

    $ nmcli connection modify enc600 master bond0 slave-type bond
  • znet 配置信息从不活跃连接配置集复制到活跃连接配置集中:

    1. 运行 nmcli 命令查询 NetworkManager 连接配置集:

      # nmcli connection show
      
      NAME                       UUID               TYPE   Device
      
      bridge-br0           ed391a43-bdea-4170-b8a2 bridge   br0
      bridge-slave-enc600  caf7f770-1e55-4126-a2f4 ethernet enc600
      enc600               bc293b8d-ef1e-45f6-bad1 ethernet --
    2. 使用不活跃连接中的配置信息更新活跃的配置集:

      #!/bin/bash
       inactive_connection=enc600
       active_connection=bridge-slave-enc600
       for name in nettype subchannels options; do
       field=802-3-ethernet.s390-$name
       val=$(nmcli --get-values "$field"connection show "$inactive_connection")
       nmcli connection modify "$active_connection" "$field" $val"
       done
    3. 重启 kdump 服务以使更改生效:

      # kdumpctl restart

Bugzilla:2064708

iwl7260-firmware 破坏了 Intel Wi-Fi 6 AX200、AX210 和 Lenovo ThinkPad P1 Gen 4 上的 Wi-Fi

在将 iwl7260-firmwareiwl7260-wifi 驱动程序更新到 RHEL 9.1 及之后的版本提供的版本后,硬件会进入不正确的内部状态。错误地报告其状态。因此,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:2129288[1]

kmod 中的 weak-modules 不能与模块间依赖一起工作

kmod 软件包提供的 weak-modules 脚本决定了哪些模块与安装的内核 kABI 兼容。但是,在检查模块的内核兼容性时,weak-modules 按照构建它们的内核的从高到低版本来处理模块符号依赖项。因此,针对不同内核版本构建的具有相互依赖关系的模块可能会被解释为不兼容,因此 weak-modules 脚本不能在此场景下工作。

要临时解决这个问题,请在安装新内核前针对最新的库存内核构建或放置额外的模块。

Bugzilla:2103605[1]

Intel® i40e 适配器在 IBM Power10 上永久失败

i40e 适配器在 IBM Power10 系统上遇到 I/O 错误时,增强的 I/O 错误处理(EEH)内核服务会触发网络驱动程序的重置和恢复。 但是,EEH 重复报告 I/O 错误,直到 i40e 驱动程序达到预定义的最大 EEH 冻结为止。因此,EEH 会导致设备永久失败。 

Jira:RHEL-15404[1]

DKMS 在程序失败时提供不正确的警告,在 64 位 ARM CPU 中正确编译的驱动程序

动态内核模块支持(dkms)工具无法识别 64 位 ARM CPU 的内核标头可用于 4 KB 和 64 KB 页面大小的内核。因此,当执行内核更新且未安装 kernel-64k-devel 软件包时,dkms 会提供错误警告,为什么程序在正确编译的驱动程序中失败。要临时解决这个问题,请安装 kernel-headers 软件包,其中包含两种类型的 ARM CPU 架构的头文件,且不特定于 dkms 及其要求。

Jira:RHEL-25967[1]

9.9. 文件系统和存储

在出现不成功的 CHAP 验证尝试后,Anaconda 无法使用 no authentication 方法登录 iSCSI 服务器

当您使用 CHAP 身份验证添加 iSCSI 磁盘时,如果因为凭证不正确而导致登录失败,使用 no authentication 方法尝试重新登录也将失败。要解决这个问题,请先关闭当前会话,再使用 no authentication 方法登录。

Bugzilla:1983602[1]

NVMe/TCP 不支持设备映射器多路径

使用带有 nvme-tcp 驱动程序的设备映射器多路径可能会导致 Call Trace 警告和系统不稳定。要临时解决这个问题,NVMe/TCP 用户必须启用原生 NVMe 多路径,且不能在 NVMe 中使用 device-mapper-multipath 工具。

默认情况下,RHEL 9 中启用了原生 NVMe 多路径。如需更多信息,请参阅在 NVMe 设备 上启用多路径

Bugzilla:2033080[1]

blk-availability systemd 服务停用了复杂的设备堆栈

systemd 中,默认的块停用代码并不总是正确处理虚拟块设备的复杂堆栈。在一些配置中,虚拟设备在关闭过程中可能无法被删除,这会导致记录错误信息。要临时解决这个问题,请执行以下命令来停用复杂块设备堆栈:

# systemctl enable --now blk-availability.service

因此,复杂虚拟设备堆栈会在关闭过程中被正确停用,且不会生成错误消息。

Bugzilla:2011699[1]

对于启用了配额的情况下挂载的 XFS 文件系统,不再可能禁用配额记帐

从 RHEL 9.2 开始,无法在已挂载的启用了配额的 XFS 文件系统上禁用配额记帐。

要临时解决这个问题,请去掉配额选项,重新挂载文件系统来禁用配额记账。

Bugzilla:2160619[1]

对 NVMe 设备的 udev 规则更改

对 NVMe 设备有一个 udev 规则更改,即添加了 OPTIONS="string_escape=replace" 参数。如果您设备的序列号前面有空格,则这会导致某些厂商的对按 id 命名的磁盘进行更改。

Bugzilla:2185048

不能在 Kickstart 文件中可靠地使用 NVMe/FC 设备

在解析或执行 Kickstart 文件的预脚本时,NVMe/FC 设备可能不使用,这会导致 Kickstart 安装失败。要临时解决这个问题,将引导参数更新为 inst.wait_for_disks=30。这个选项会导致 30 秒的延迟,应为 NVMe/FC 设备提供充足的时间进行连接。使用这个临时解决方案以及及时连接的 NVMe/FC 设备,Kickstart 安装可以正常进行。

Jira:RHEL-8164[1]

在使用 qedi 驱动程序时内核 panic

在使用 qedi iSCSI 驱动程序时,操作系统引导后内核 panics。要临时解决这个问题,请向内核引导命令行中添加 kfence.sample_interval=0 来禁用 kfence 运行时内存错误检测器功能。

Jira:RHEL-8466[1]

安装 vdo 时,基于 ARM 的系统无法使用 64k 页大小内核进行更新

安装 vdo 软件包时,RHEL 安装 kmod-kvdo 软件包和一个内核,其页大小为 4k 页。因此,从 RHEL 9.3 更新至 9.x 会失败,因为 kmod-kvdo 与 64k 内核冲突。要临时解决这个问题,请在尝试更新前删除 vdo 软件包及其依赖项。

Jira:RHEL-8354

9.10. 动态编程语言、网页和数据库服务器

python3.11-lxml 不提供 lxml.isoschematron 子模块

python3.11-lxml 软件包不与 lxml.isoschematron 子模块一起分发,因为它不是开源许可证。子模块实现 ISO 架构支持。作为替代方案,lxml.etree.Schematron 类种提供了 pre-ISO-Schematron 验证。python3.11-lxml 软件包的其余内容不受影响。

Bugzilla:2157708

MySQLMariaDB 中的 --ssl-fips-mode 选项不会改变 FIPS 模式

RHEL 中 MySQLMariaDB 中的 --ssl-fips-mode 选项与上游中的工作方式不同。

在 RHEL 9 中,如果您使用 --ssl-fips-mode 作为 mysqldmariadbd 守护进程的参数,或者在 MySQLMariaDB 服务器配置文件中使用 ssl-fips-mode,则 --ssl-fips-mode 不会更改这些数据库服务器的 FIPS 模式。

相反:

  • 如果将 --ssl-fips-mode 设为 ON,则 mysqldmariadbd 服务器守护进程不会启动。
  • 如果您在启用了 FIPS 的系统上将 --ssl-fips-mode 设为 OFF,则 mysqldmariadbd 服务器守护进程仍然在 FIPS 模式下运行。

这是预期的,因为应该为整个 RHEL 系统启用或禁用 FIPS 模式,而不是为特定组件。

因此,不要在 RHEL 中的 MySQLMariaDB 中使用 --ssl-fips-mode 选项。相反,请确保在整个 RHEL 系统上启用 FIPS 模式:

  • 最好安装启用了 FIPS 模式的 RHEL。在安装过程中启用 FIPS 模式可确保系统使用 FIPS 批准的算法生成所有的密钥,并持续监控测试。有关在 FIPS 模式下安装 RHEL 的详情,请参考 在 FIPS 模式下安装系统
  • 或者,您可以按照 将系统切换成 FIPS 模式 中的流程,为整个 RHEL 系统切换 FIPS 模式。

Bugzilla:1991500

9.11. 身份管理

MIT Kerberos 不支持 PKINIT 的 ECC 证书

MIT Kerberos 不对评论文档实施 RFC5349 请求,它描述了公钥 Cryptography 中的 elliptic-curve 加密 (ECC) 支持。因此,RHEL 使用的 MIT krb5-pkinit 软件包不支持 ECC 证书。如需更多信息,请参阅 Kerberos (PKINIT)对公共密钥加密加密支持(ECC) 支持。

Jira:RHEL-4902

必须在 RHEL 9 客户端上设置 DEFAULT:SHA1 子策略,以使 PKINIT 能够针对 AD KDC 工作

RHEL 9 中已弃用了 SHA-1 摘要算法,对初始验证的公共密钥加密的 CMS 消息现在使用更强大的 SHA-256 算法进行签名。

但是,Active Directory (AD) Kerberos Distribution Center (KDC) 仍然使用 SHA-1 摘要算法为 CMS 信息签名。因此,RHEL 9 Kerberos 客户端无法通过对 AD KDC 使用 PKINIT 来验证用户。

要临时解决这个问题,使用以下命令在 RHEL 9 系统上启用对 SHA-1 算法的支持:

 # update-crypto-policies --set DEFAULT:SHA1

Bugzilla:2060798

如果 RHEL 9 Kerberos 代理与非 RHEL-9 和非AD Kerberos 代理通信,则用户的 PKINIT 身份验证会失败

如果 RHEL 9 Kerberos 代理(客户端或 Kerberos 分发中心(KDC) 与不是 Active Directory (AD) 代理的非 RHEL-9 Kerberos 代理交互,则用户的 PKINIT 身份验证会失败。要临时解决这个问题,请执行以下操作之一:

  • 将 RHEL 9 代理的 crypto-policy 设置为 DEFAULT:SHA1 以允许验证 SHA-1 签名:

    # update-crypto-policies --set DEFAULT:SHA1
  • 更新非 RHEL-9 和非 AD 代理,以确保它不使用 SHA-1 算法为 CMS 数据签名。因此,将您的 Kerberos 客户端或 KDC 软件包更新至使用 SHA-256 而不是 SHA-1 的版本:

    • CentOS 9 Stream: krb5-1.19.1-15
    • RHEL 8.7: krb5-1.18.2-17
    • RHEL 7.9: krb5-1.15.1-53
    • Fedora Rawhide/36: krb5-1.19.2-7
    • Fedora 35/34:krb5-1.19.2-3

因此,用户的 PKINIT 身份验证可以正常工作。

请注意,对于其他操作系统,这是 krb5-1.20 版本,可确保代理使用 SHA-256 而不是 SHA-1 为 CMS 数据进行签名。

另请参阅 必须在 RHEL 9 客户端上设置 DEFAULT:SHA1 子策略,以使 PKINIT 能够针对 AD KDC 工作

Jira:RHEL-4875

AD 信任的 FIPS 支持需要 AD-SUPPORT 加密子策略

Active Directory(AD)使用 AES SHA-1 HMAC 加密类型,默认情况下在 RHEL 9 上不允许 FIPS 模式。如果要使用带有 AD 信任的 RHEL 9 IdM 主机,请在安装 IdM 软件前支持 AES SHA-1 HMAC 加密类型。

由于 FIPS 合规性是一个涉及技术和机构协议的过程,因此,请在启用 AD-SUPPORT 子策略前咨询 FIPS 审核员,以允许采取技术措施支持 AES SHA-1 HMAC 加密类型,然后安装 RHEL IdM:

 # update-crypto-policies --set FIPS:AD-SUPPORT

Bugzilla:2057471

Heimdal 客户端无法针对 RHEL 9 KDC 使用 PKINIT 来验证用户

默认情况下,Heimdal Kerberos 客户端通过使用 Modular Exponential (MODP) Diffie-Hellman Group 2 用于互联网密钥交换 (IKE) 启动 IdM 用户的 PKINIT 身份验证。但是,RHEL 9 上的 MIT Kerberos 分配中心 (KDC) 仅支持 MODP 组 14 和 16。

因此,pre-autentication 请求会失败并显示 krb5_get_init_creds: PREAUTH_FAILED 错误,在 RHEL MIT KDC 中 不接受 Key 参数

要临时解决这个问题,请确保 Heimdal 客户端使用 MODP Group 14。将客户端配置文件的 libdefaults 部分中的 pkinit_dh_min_bits 参数设置为 1759:

[libdefaults]
pkinit_dh_min_bits = 1759

因此,Heimdal 客户端可以针对 RHEL MIT KDC 完成 PKINIT 预验证。

Jira:RHEL-4889

FIPS 模式下的 IdM 不支持使用 NTLMSSP 协议来建立双向跨林信任

在活动目录(AD)和启用了 FIPS 模式的身份管理(IdM)之间建立双向跨林信任会失败,因为新技术局域网管理器安全支持提供程序 (NTLMSSP)身份验证不符合 FIPS。FIPS 模式下的 IdM 不接受在尝试验证时 AD 域控制器使用的 RC4 NTLM 哈希。

Jira:RHEL-12154[1]

升级后,没有 SID 的用户无法登录到 IdM

将 IdM 副本升级到 RHEL 9.2 后,IdM Kerberos 分发中心(KDC)可能无法向没有分配给其帐户安全标识符(SID)的用户发出票据授予票(TGT)。因此,用户无法登录到其帐户。

要临时解决这个问题,请以 IdM 管理员身份在拓扑中的另一个 IdM 副本上运行以下命令来生成 SID:

# ipa config-mod --enable-sid --add-sids

之后,如果用户仍然无法登录,请检查目录服务器错误日志。您可能需要调整 ID 范围使其包含用户 POSIX 身份。

如需更多信息,请参阅 升级到 RHEL9 时,IDM 用户无法再登录 知识库解决方案。

Jira:RHELPLAN-157939[1]

迁移的 IdM 用户可能会因为不匹的域 SID 而无法登录

如果您使用 ipa migrate-ds 脚本将用户从一个 IdM 部署迁移到另一个,则这些用户可能会在使用 IdM 服务时有问题,因为它们之前存在的安全标识符(SID)没有当前 IdM 环境的域 SID。例如,这些用户可以使用 kinit 工具检索 Kerberos 票据,但不能登录。要临时解决这个问题,请参阅以下知识库文章: Migrated IdM 用户因为不匹配的域 SID 而无法登录

Jira:RHELPLAN-109613[1]

由于生成用户 PAC 的加密类型不兼容,MIT krb5 用户无法获取 AD TGT

在 MIT krb5 1.20 以及后续的软件包中,默认在所有 Kerberos 票据中都包括特权属性证书(PAC)。MIT Kerberos 分发中心(KDC)选择可用的最强的加密类型,来在 PAC 中生成 KDC 校验和,这目前是 RFC8009 中定义的 AES HMAC-SHA2 加密类型。但是,活动目录(AD)不支持这个 RFC。因此,在 AD-MIT 跨领域设置中,MIT krb5 用户无法获取 AD 票据授予票据(TGT),因为 MIT KDC 生成的跨领域 TGT 在 PAC 中包含不兼容的 KDC 校验和类型。

要临时解决这个问题,对于 /var/kerberos/krb5kdc/kdc.conf 配置文件的 [realms] 部分中的 MIT 领域,请将 disable_pac 参数设为 true。因此,MIT KDC 会生成没有 PAC 的票据,这意味着 AD 会跳过失败的校验和验证,MIT krb5 用户可以获取 AD TGT。

Bugzilla:2016312

ldap_id_use_start_tls 选项使用默认值时的潜在风险

当使用没有 TLS 的 ldap:// 进行身份查找时,可能会对攻击向量构成风险。特别是中间人(MITM)攻击,例如,攻击者可以通过更改 LDAP 搜索中返回的对象的 UID 或 GID 来冒充用户。

目前,强制 TLS 的 SSSD 配置选项 ldap_id_use_start_tls 默认为 false。确保您的设置在可信环境中操作,并决定对 id_provider = ldap 使用未加密的通信是否是安全的。注意 id_provider = adid_provider = ipa 不受影响,因为它们使用 SASL 和 GSSAPI 保护的加密连接。

如果使用未加密的通信不安全,请在 /etc/sssd/sssd.conf 文件中将 ldap_id_use_start_tls 选项设置为 true 来强制使用 TLS。计划在以后的 RHEL 版本中更改的默认行为。

Jira:RHELPLAN-155168[1]

将 FIPS 模式下的 RHEL 9 副本添加到用 RHEL 8.6 或更早版本初始化的 FIPS 模式下的 IdM 部署会失败

略旨在遵守 FIPS 140-3 的默认 RHEL 9 FIPS 加密策不允许使用 AES HMAC-SHA1 加密类型的密钥派生功能,如 5.1 章节 RFC3961 所定义的。

当在 FIPS 模式下将 RHEL 9 身份管理(IdM)副本添加到 FIPS 模式下的 RHEL 8 IdM 环境(其中,第一个服务器安装在 RHEL 8.6 系统或更早的版本上)中时,这个约束是一个阻止因素。这是因为在 RHEL 9 和之前的 RHEL 版本之间没有通用的加密类型,它们通常使用 AES HMAC-SHA1 加密类型,但不使用 AES HMAC-SHA2 加密类型。

您可以通过在服务器上输入以下命令来查看 IdM 主密钥的加密类型:

# kadmin.local getprinc K/M | grep -E '^Key:'

要临时解决这个问题,在 RHEL 9 副本上启用 AES HMAC-SHA1 :

update-crypto-policies --set FIPS:AD-SUPPORT
WARNING
这个临时解决方案可能会违反 FIPS 合规性。

因此,向 IdM 部署添加 RHEL 9 副本可以正确进行。

请注意,目前有一个正在进行的工作来提供一个在 RHEL 7 和 RHEL 8 服务器上生成缺少的 AES HMAC-SHA2 加密的 Kerberos 密钥的流程。这将在 RHEL 9 副本上取得 FIPS 140-3 合规性。但是,这个过程将无法完全自动化,因为 Kerberos 密钥加密的设计无法将现有的密钥转换为不同的加密类型。唯一的方法是要求用户更新其密码。

Jira:RHEL-4888

SSSD 可正确注册 DNS 名称

在以前的版本中,如果 DNS 被错误建立,第一次尝试注册 DNS 名称时,SSSD 总是失败。要临时解决这个问题,这个更新提供了一个新的参数 dns_resolver_use_search_list。设置 dns_resolver_use_search_list = false,以避免使用 DNS 搜索列表。

Bugzilla:1608496[1]

由于 EMS 强制,使用 RHEL 9.2 及更新的 IdM 服务器安装 RHEL 7 IdM 客户端会失败

对于启用了 FIPS 的 RHEL 9.2 及更新系统上的 TLS 1.2 连接,TLS Extended Master Secret (EMS)扩展(RFC 7627)现在是强制的。这符合 FIPS-140-3 要求。但是,RHEL 7.9 及较低版本中提供的 openssl 版本不支持 EMS。因此,使用在 RHEL 9.2 及更新版本上运行的启用了 FIPS 的 IdM 服务器安装 RHEL 7 身份管理(IdM)客户端会失败。

如果在安装 IdM 客户端前将主机升级到 RHEL 8 不是一个选项,请通过在 FIPS 加密策略之上应用 NO-ENFORCE-EMS 子策略,删除 RHEL 9 服务器上 EMS 使用的要求来临时解决此问题:

# update-crypto-policies --set FIPS:NO-ENFORCE-EMS

请注意,这个删除不符合 FIPS 140-3 要求。因此,您可以建立并接受不使用 EMS 的 TLS 1.2 连接,RHEL 7 IdM 客户端的安装可以成功。

Jira:RHEL-4955

nsslapd-numlisteners 属性值超过 2 时,目录服务器会失败

如果 nsslapd-numlisteners 属性值大于 2,则目录服务器可能会关闭侦听文件描述符,而不是接受的文件描述符。因此,在一段时间后,Directory 服务器会停止侦听某些端口并失败。

要临时解决这个问题,请将 nsslapd-numlisteners 属性值设置为 1

Jira:RHEL-17178[1]

9.12. 桌面

升级到 RHEL 9 后,VNC 没有运行

从 RHEL 8 升级到 RHEL 9 后,VNC 服务器无法启动,即使之前启用它。

要临时解决这个问题,在系统升级后手动启用 vncserver 服务:

# systemctl enable --now vncserver@:port-number

现在,每个系统引导后都会启用 VNC 并按预期启动。

Bugzilla:2060308

用户创建屏幕没有响应

当使用图形用户界面安装 RHEL 时,用户创建屏幕没有响应。因此,在安装过程中创建用户更为困难。

要临时解决这个问题,请使用以下解决方案之一创建用户:

  • 在 VNC 模式下运行安装并重新定义 VNC 窗口的大小。
  • 完成安装过程后创建用户。

Jira:RHEL-11924[1]

WebKitGTK 无法在 IBM Z 上显示网页

当尝试在 IBM Z 架构上显示网页时,WebKitGTK 网页浏览器引擎会失败。网页保持空白,WebKitGTK 进程意外终止。

因此,您无法使用那些使用 WebKitGTK 的应用程序的某些功能来显示网页,如下所示:

  • Evolution 邮件客户端
  • GNOME 在线帐户设置
  • GNOME 帮助应用程序

Jira:RHEL-4157

9.13. 图形基础结构

NVIDIA 驱动程序可能会恢复到 X.org

在某些情况下,专有 NVIDIA 驱动程序会禁用 Wayland 显示协议并恢复到 X.org 显示服务器:

  • 如果 NVIDIA 驱动程序的版本低于 470。
  • 如果系统是使用混合图形的笔记本电脑。
  • 如果您还没有启用所需的 NVIDIA 驱动程序选项。

另外,启用 Wayland,但如果 NVIDIA 驱动程序的版本低于 510,则桌面会话默认使用 X.org。

Jira:RHELPLAN-119001[1]

使用 NVIDIA 在 Wayland 上无法使用 night Light

当您的系统上启用了专有 NVIDIA 驱动程序时,Wayland 会话将无法使用 GNOME 的 Night Light 功能。NVIDIA 驱动程序目前不支持 Night Light

Jira:RHELPLAN-119852[1]

x.org 配置工具无法在 Wayland 下工作

用于操作屏幕的 x.org 实用程序无法在 Wayland 会话中工作。值得注意的是,xrandr 实用程序无法在 Wayland 下工作,因为其处理、解析、轮转和布局的不同方法。

Jira:RHELPLAN-121049[1]

9.14. Red Hat Enterprise Linux 系统角色

如果 firewalld.service 被屏蔽,使用 firewall RHEL 系统角色会失败

如果在 RHEL 系统上屏蔽了 firewalld.service,则 firewall RHEL 系统角色会失败。要临时解决这个问题,请对 firewalld.service 取消屏蔽:

systemctl unmask firewalld.service

Bugzilla:2123859

无法使用环境名称注册系统

当在 rhc_environment 中指定环境名称时,rhc 系统角色注册系统失败。作为临时解决方案,请在注册时使用环境 ID 而不是环境名称。

Jira:RHEL-1172

在高可用性模式下运行 Microsoft SQL Server 2022,作为 SELinux 保护的应用程序无法正常工作

RHEL 9.4 及更高版本上的 Microsoft SQL Server 2022 支持作为 SELinux 保护的应用程序运行。但是,由于 Microsoft SQL Server 中的限制,将服务作为 SELinux 保护的应用程序在高可用性模式下运行无法工作。要临时解决这个问题,如果您需要该服务高度可用,您可以将 Microsoft SQL Server 作为无限制的应用程序运行。

请注意,在使用 mssql RHEL 系统角色安装此服务时,这个限制也会影响安装 Microsoft SQL Server。

Jira:RHELDOCS-17719[1]

mssql RHEL 系统角色无法配置带有 AD 集成的 Microsoft SQL Server

Microsoft SQL Server 服务不提供服务与 Active Directory (AD)集成所需的 adutil 工具。因此,您无法使用 mssql RHEL 系统角色在 RHEL 9 受管节点上配置此场景。没有可用的临时解决方案,您可以使用 RHEL 系统角色在 RHEL 9 上在没有 AD 集成的情况下配置 Microsoft SQL Server。

Jira:RHELDOCS-17720[1]

9.15. 虚拟化

在某些情况下,通过 https 或 ssh 安装虚拟机会失败

目前,当尝试通过 https 或 ssh 连接从 ISO 源安装客户机操作系统时,virt-install 工具会失败 - 例如使用 virt-install --cdrom https://example/path/to/image.iso。上述操作意外中止,并显示 internal error: process exited while connecting to monitor 消息,而不是创建虚拟机(VM)。

同样,使用 RHEL 9 web 控制台安装客户机操作系统失败,如果使用了 https 或 ssh URL,或 Download OS 功能,则会显示 Unknown driver 'https' 错误。

要临时解决这个问题,请在主机上安装 qemu-kvm-block-curlqemu-kvm-block-ssh ,以启用 https 和 ssh 协议支持。或者,使用不同的连接协议或不同的安装源。

Bugzilla:2014229

在虚拟机中使用 NVIDIA 驱动程序会禁用 Wayland

目前,NVIDIA 驱动程序与 Wayland 图形会话不兼容。因此,使用 NVIDIA 驱动程序的 RHEL 客户机操作系统会自动禁用 Wayland 并加载 Xorg 会话。这主要在以下情况下发生:

  • 当您通过 NVIDIA GPU 设备传递给 RHEL 虚拟机(VM)
  • 当您为 RHEL 虚拟机分配 NVIDIA vGPU mediated 设备

Jira:RHELPLAN-117234[1]

在 AMD Milan 系统上有时无法提供 Milan VM CPU 类型

在某些 AMD Milan 系统上,默认在 BIOS 中禁用了增强 REP MOVSB(erms)和 Fast Short REP MOVSB(fsrm)功能标记。因此,在这些系统上可能无法使用 Milan CPU 类型。另外,在具有不同功能标志设置的 Milan 主机之间的虚拟机实时迁移可能会失败。要临时解决这个问题,在主机的 BIOS 中手动打开 ermsfsrm

Bugzilla:2077767[1]

带有故障切换设置的 hostdev 接口在热拔后无法进行热插

从正在运行的虚拟机(VM)中删除带有故障切换配置的 hostdev 网络接口后,该接口目前无法重新连接到同一正在运行的虚拟机。

Jira:RHEL-7337

带有故障切换 VF 的虚拟机实时复制迁移失败

目前,如果虚拟机使用启用了虚拟功能(VF)故障转移功能的设备,则试图对一个正在运行的虚拟机(VM)进行 post-copy 迁移会失败。要临时解决这个问题,请使用标准迁移类型,而不要使用 post-copy 迁移方式。

Jira:RHEL-7335

主机网络无法在实时迁移过程中 ping 使用 VF 的虚拟机

当使用配置的虚拟功能 (VF) 实时迁移虚拟机时,如使用虚拟 SR-IOV 软件的虚拟机,虚拟机的网络不对其它设备看到,如 ping 之类的命令无法访问虚拟机。完成迁移后,问题将不再发生。

Jira:RHEL-7336

禁用 AVX 会导致虚拟机无法引导

在使用具有高级向量扩展(AVX)支持的 CPU 的主机上,尝试引导明确禁用 AVX 的虚拟机当前会失败,并触发虚拟机中的内核 panic。

Bugzilla:2005173[1]

在网络接口重置后,Windows VM 无法获取 IP 地址

有时,Windows 虚拟机在自动网络接口重置后无法获取 IP 地址。因此,虚拟机无法连接到网络。要临时解决这个问题,在 Windows 设备管理器中禁用并重新启用网络适配器驱动程序。

Jira:RHEL-11366

Windows Server 2016 虚拟机有时会在热插拔 vCPU 后停止工作

目前,将 vCPU 分配给运行 Windows Server 2016 客户机操作系统的虚拟机(VM)可能会导致各种问题,如虚拟机意外终止、变得没有响应或重启。

Bugzilla:1915715

使用大量队列可能会导致虚拟机失败

当启用了虚拟可信平台模块(vTPM)设备并且 multi-queue virtio-net 功能被配置为使用超过 250 个队列时,虚拟机(VM)可能会失败。

这个问题是由 vTPM 设备的限制造成的。vTPM 设备对打开的文件描述符的最大数有一个硬编码的限制。因为会为每个新队列打开多个文件描述符,因此可能会超过内部 vTPM 的限值,从而导致虚拟机失败。

要临时解决这个问题,请选择以下两个选项之一:

  • 保持 vTPM 设备启用,但使用少于 250 个队列。
  • 禁用 vTPM 设备以使用超过 250 个队列。

Jira:RHEL-13335[1]

在具有 NVIDIA passthrough 设备的虚拟机上的冗余错误消息

使用带有 RHEL 9.2 及更新版本的操作系统的 Intel 主机机器时,带有直通 NVDIA GPU 设备的虚拟机(VM)会频繁地记录以下错误信息:

Spurious APIC interrupt (vector 0xFF) on CPU#2, should never happen.

但是,这个错误消息不会影响虚拟机的功能,可以忽略。详情请查看 红帽知识库

Bugzilla:2149989[1]

在带有 AMD EPYC CPU 的主机上进行 v2v 转换后,一些 Windows 客户机不能启动

在使用 virt-v2v 工具将使用 Windows 11 或 Windows Server 2022 的虚拟机(VM)转换为客户机操作系统后,虚拟机当前不能启动。这会在使用 AMD EPYC 系列 CPU 的主机上发生。

Bugzilla:2168082[1]

在主机上重启 OVS 服务可能会阻止在其上运行的虚拟机的网络连接

当 Open vSwitch (OVS)服务在主机上重启时或崩溃时,在此主机上运行的虚拟机(VM)无法恢复网络设备的状态。因此,虚拟机可能无法完全接收数据包。

此问题只会影响在 virtio 网络堆栈中使用压缩 virtqueue 格式的系统。

要临时解决这个问题,使用 virtio 网络设备定义中的 packed=off 参数来禁用压缩的 virtqueue。当禁用压缩的 virtqueue 时,网络设备的状态在某些情况下可以从 RAM 中恢复。

Jira:RHEL-333

恢复中断的复制后虚拟机迁移可能会失败

如果虚拟机(VM)的复制后迁移中断,然后在同一传入端口上立即恢复,则迁移可能会失败,并显示以下错误 Address already in use

要临时解决这个问题,请在恢复后复制迁移或切换到迁移恢复的另一个端口前至少等待 10 秒。

Jira:RHEL-7096

NUMA 节点映射在 AMD EPYC CPU 上无法正常工作

QEMU 无法正确处理 AMD EPYC CPU 上的 NUMA 节点映射。因此,如果使用 NUMA 节点配置,具有这些 CPU 的虚拟机(VM)的性能可能会受到负面影响。另外,虚拟机在启动过程中会显示类似如下的警告。

sched: CPU #4's llc-sibling CPU #3 is not on the same node! [node: 1 != 0]. Ignoring dependency.
WARNING: CPU: 4 PID: 0 at arch/x86/kernel/smpboot.c:415 topology_sane.isra.0+0x6b/0x80

要临时解决这个问题,请不要将 AMD EPYC CPU 用于 NUMA 节点配置。

Bugzilla:2176010

虚拟机迁移过程中的 NFS 故障会导致迁移失败和源虚拟机 coredump

目前,如果 NFS 服务或服务器在虚拟机(VM)迁移过程中关闭,则源虚拟机的 QEMU 在重新开始运行时无法重新连接到 NFS 服务器。因此,迁移会失败,并在源虚拟机上发起 coredump。目前,还没有可用的临时解决方案。

Bugzilla:2058982

PCIe ATS 设备无法在 Windows 虚拟机上工作

当您在带有 Windows 客户机操作系统的虚拟机的 XML 配置中配置 PCIe 地址转换服务(ATS)设备时,在引导虚拟机后,客户机不会启用 ATS 设备。这是因为 Windows 目前不支持 virtio 设备上的 ATS。

如需更多信息,请参阅 红帽知识库

Bugzilla:2073872

virsh blkiotune --weight 命令无法设置正确的 cgroup I/O 控制器值

目前,使用 virsh blkiotune --weight 命令设置 VM 权重无法按预期工作。该命令无法在 cgroup I/O 控制器接口文件中设置正确的 io.bfq.weight 值。目前还没有临时解决方案。

Bugzilla:1970830

启动带有 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-7212[1]

带有 FIFO 调度程序的 RT 虚拟机无法引导

目前,在将实时(RT)虚拟机(VM)设置为对 vCPU 调度程序使用 fifo 设置后,当您尝试引导它时,虚拟机变得无响应。相反,虚拟机显示 Guest has not initialized the display (yet) 错误。

Jira:RHEL-2815[1]

Windows 虚拟机可能会因为存储错误而变得无响应

在使用 Windows 客户机操作系统的虚拟机上,在高 I/O 负载下,系统在某些情况下会变得无响应。当发生这种情况时,系统会记录一个 viostor Reset to device, \Device\RaidPort3, was issued 错误。

Jira:RHEL-1609[1]

在引导时,带有某些 PCI 设备的 Windows 10 虚拟机可能会变得无响应

目前,如果将具有本地磁盘后端的 virtio-win-scsi PCI 设备被附加到虚拟机,则使用 Windows 10 客户机操作系统的虚拟机(VM)会在启动过程中变得无响应。要临时解决这个问题,请引导启用了 multi_queue 选项的虚拟机。

Jira:RHEL-1084[1]

virtio-win 驱动程序的 virtio-win-guest-tool 的修复功能无法工作

目前,当对 virtio-win 驱动程序使用 virtio-win-guest-toolRepair 按钮时,如 Virtio Balloon Driver,则按钮无效。因此,在从客户机上删除后,驱动程序无法重新安装。

Jira:RHEL-1517[1]

具有内存气球设备集的 Windows 11 虚拟机在重启过程中可能会意外关闭

目前,重新引导使用 Windows 11 客户机操作系统和内存 balloon 设备的虚拟机(VM)在某些情况下会失败,并显示 DRIVER POWER STAT FAILURE 蓝屏错误。

Jira:RHEL-935[1]

在高网络负载情况下迁移 Windows 11 或 Windows Server 2022 虚拟机有时会失败

当实时迁移使用 Windows Server 2022 或 Windows 11 作为客户机操作系统的虚拟机(VM)时,如果网络受到高打包损失的影响,迁移可能会变得无响应或意外终止。

Jira:RHEL-2316[1]

在某些情况下恢复复制后虚拟机迁移失败

目前,当执行虚拟机(VM)的复制后迁移时,如果在迁移的恢复阶段发生代理网络故障,则虚拟机会变得无响应,且迁移无法恢复。相反,恢复命令显示以下错误:

error: Requested operation is not valid: QEMU reports migration is still running

Jira:RHEL-7115

virtio balloon 驱动程序有时在 Windows 10 虚拟机上无法工作

在某些情况下,virtio-balloon 驱动程序无法在使用 Windows 10 客户机操作系统的虚拟机(VM)上正常工作。因此,此类虚拟机可能无法有效地使用其分配的内存。

Jira:RHEL-12118

virtio 文件系统在 Windows 虚拟机中性能不佳

目前,当在使用 Windows 客户机操作系统的虚拟机(VM)上配置了 virtio 文件系统(virtiofs)时,虚拟机中的 virtiofs 性能比使用 Linux 客户机的虚拟机中的性能要差的多。

Jira:RHEL-1212[1]

在 Windows 虚拟机上热拔存储设备可能会失败

在使用 Windows 客户机操作系统的虚拟机(VM)上,当虚拟机运行时删除存储设备(也称为设备热拔)在某些情况下会失败。因此,存储设备一直附加在虚拟机上,磁盘管理器服务可能会变得无响应。

Jira:RHEL-869

将 CPU 热插到 Windows 虚拟机可能会导致系统失败

当将最大数量的 CPU 热插到启用了巨页的 Windows 虚拟机(VM)时,客户机操作系统可能会崩溃,并显示以下 停止错误

PROCESSOR_START_TIMEOUT

Jira:RHEL-1220

在 Windows 虚拟机上更新 virtio 驱动程序可能会失败

当在 Windows 虚拟机(VM)上更新 KVM 半虚拟化(virtio)驱动程序时,更新可能会导致鼠标停止工作,可能无法对新安装的驱动程序签名。当通过从 virtio-win-guest-tools 软件包(其是 virtio-win.iso 文件的一部分)安装来更新 virtio 驱动程序时,此问题会发生。

要临时解决这个问题,请使用 Windows 设备管理器更新 virtio 驱动程序。

Jira:RHEL-574[1]

在使用 vhost-kernel的虚拟机中无法更改 TX 队列大小

目前,您无法使用 vhost-kernel 作为 virtio 网络驱动程序后端的 KVM 虚拟机(VM)设置 TX 队列大小。因此,您只能将默认值 256 用于 TX 队列,这可能会阻止您优化虚拟机网络吞吐量。

Jira:RHEL-1138[1]

9.16. 云环境中的 RHEL

在 Nutanix AHV 中使用 LVM 克隆或恢复 RHEL 9 虚拟机会导致非 root 分区消失

当在 Nutanix AHV 虚拟机监控程序上托管的虚拟机中运行 RHEL 9 客户机操作系统时,从快照中恢复虚拟机或克隆虚拟机目前会导致虚拟机中的非 root 分区在虚拟机中使用逻辑卷管理(LVM)时消失。因此,会出现以下问题:

  • 从快照恢复虚拟机后,虚拟机无法引导,而是进入紧急模式。
  • 通过克隆创建的虚拟机无法引导,而是进入紧急模式。

要临时解决这个问题,在虚拟机的紧急模式下执行以下操作:

  1. 删除 LVM 系统设备文件: rm /etc/lvm/devices/system.devices
  2. 重新创建 LVM 设备设置:vgimportdevices -a
  3. 重启虚拟机

这样,克隆或恢复的虚拟机可以正确引导。

另外,为了避免这个问题发生,请在克隆虚拟机或创建虚拟机快照前进行以下操作:

  1. /etc/lvm/lvm.conf 文件中取消注释 use_devicesfile = 0
  2. 重启虚拟机

Bugzilla:2059545[1]

在 ESXi 上自定义 RHEL 9 客户机有时会导致网络问题

目前,在 VMware ESXi hypervisor 中自定义 RHEL 9 客户机操作系统无法正常工作。因此,如果客户机使用这样的密钥文件,它有不正确的网络设置,如 IP 地址或网关。

有关详情和临时解决方案说明,请参阅 VMware 知识库

Bugzilla:2037657[1]

如果 RHEL 实例是由 cloud-init 提供的,且使用 NFSv3 挂载条目配置的,则其在 Azure 上无法引导

目前,如果 VM 是由 cloud-init 工具提供的,且虚拟机的客户机操作系统在 /etc/fstab 文件中有 NFSv3 挂载条目,则在 Microsoft Azure 云平台上引导 RHEL 虚拟机(VM)会失败。

Bugzilla:2081114[1]

在 VMware 主机上的 RHEL 虚拟机中设置静态 IP 无法正常工作

目前,当使用 RHEL 作为 VMware 主机上虚拟机(VM)的客户机操作系统时,DatasourceOVF 功能无法正常工作。因此,如果您使用 cloud-init 实用程序将虚拟机的网络设置为静态 IP,然后重启虚拟机,则虚拟机的网络将更改为 DHCP。

要临时解决这个问题,请参阅 VMware 知识库

Jira:RHEL-12122

当启用了 kmemleak 选项时,大型虚拟机可能无法引导到 debug 内核

当试图将 RHEL 9 虚拟机(VM)引导到 debug 内核时,如果机器内核使用 kmemleak=on 参数,则引导可能会失败,并显示以下错误。

Cannot open access to console, the root account is locked.
See sulogin(8) man page for more details.

Press Enter to continue.

这个问题主要影响大型虚拟机,因为它们在引导序列中花费了大量时间。

要临时解决这个问题,请编辑机器上的 /etc/fstab 文件,并向 /boot/boot/efi 挂载点添加额外的超时选项。例如:

UUID=e43ead51-b364-419e-92fc-b1f363f19e49 /boot xfs defaults,x-systemd.device-timeout=600,x-systemd.mount-timeout=600 0 0

UUID=7B77-95E7 /boot/efi vfat defaults,uid=0,gid=0,umask=077,shortname=winnt,x-systemd.device-timeout=600,x-systemd.mount-timeout=600 0 2

Jira:RHELDOCS-16979[1]

9.17. 支持性

在 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:1869561[1]

9.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]

附录 A. 按组件划分的问题单列表

在本文档中列出了 Bugzilla 和 JIRA 问题单以供参考。这些链接会指向本文档中描述问题单的发行注记。

组件票证

389-ds-base

JIRA:RHEL-5142, Bugzilla:2170494,Bugzilla:2098236,JIRA:RHEL-17178

NetworkManager

Jira:RHEL-16470, Jira:RHEL-24337, Jira:RHEL-5852, Bugzilla:1894877

发行注记

JIRA:RHELDOCS-17841,JIRA:RHELDOCS-16861,JIRA:RHELDOCS-16760,JIRA:RHELDOCS-16756 , JIRA:RHELDOCS -16612 , JIRA:RHELDOCS -17102 , JIRA:RHELDOCS -17166 , JIRA:RHELDOCS-17 309 ,JIRA:RHELDOCS-17309, JIRA:RHELDOCS-17545,JIRA:RHELDOCS-17518,JIRA:RHELDOCS-17702,JIRA:RHELDOCS-16979

anaconda

JIRA:RHEL-11384,JIRA:RHEL-13150,JIRA:RHEL-4766,JIRA:RHEL-5638, Bugzilla:2107346,JIRA:RHEL-10216,JIRA:RHEL-2250,JIRA:RHEL-17205,Bugzilla:2127473,Bugzilla:2050140, Bugzilla:1877697,JIRA:RHEL-4707,JIRA:RHEL-4711,Bugzilla:1997832,JIRA:RHEL-4741,Bugzilla:2115783,JIRA:RHEL-4762,Bugzilla:2163497,JIRA:RHEL-4737, jira:RHEL-9633

ansible-freeipa

Jira:RHEL-16934, Jira:RHEL-16939, Jira:RHEL-19134

audit

Jira:RHEL-14896

bacula

Jira:RHEL-6856

bind

Bugzilla:1984982

boom-boot

Jira:RHEL-8278, Jira:RHEL-16813

certmonger

Jira:RHEL-22302

chrony

Jira:RHEL-6522

clang

Jira:RHEL-9346

cloud-init

Jira:RHEL-12122

cmake

Jira:RHEL-7393

cockpit-appstream

Bugzilla:2030836

cockpit-machines

Bugzilla:2173584

crash

Jira:RHEL-9009

createrepo_c

Bugzilla:2056318

crypto-policies

Jira:RHEL-15925

cyrus-sasl

Bugzilla:1995600

device-mapper-multipath

JIRA:RHEL-6678,JIRA:RHEL-1729,JIRA:RHEL-4998,JIRA:RHEL-986,JIRA:RHEL-1830,JIRA:RHEL-17234,Bugzilla:2033080,Bugzilla:2011699,Bugzilla:1926147

distribution

Jira:RHEL-17089, Jira:RHEL-6973, Jira:RHEL-22385

dnf

Bugzilla:2073510

dnf-plugins-core

Jira:RHEL-4600

edk2

Bugzilla:1935497

elfutils

Jira:RHEL-12489

fapolicyd

Bugzilla:2054740, Jira:RHEL-520

firewalld

Jira:RHEL-427, Jira:RHEL-17708

gimp

Bugzilla:2047161

git

Jira:RHEL-17100

git-lfs

Jira:RHEL-17101

glibc

Jira:RHEL-14383, Jira:RHEL-2491

gnupg2

Bugzilla:2070722

gnutls

Bugzilla:2108532

golang

Bugzilla:2111072,Bugzilla:2092016

grafana

Jira:RHEL-7505

grub2

Jira:RHEL-10288

gtk3

Jira:RHEL-11924

httpd

Jira:RHEL-6600

ipa

JIRA:RHEL-11652,JIRA:RHEL-9984,JIRA:RHEL-22313,JIRA:RHEL-12143,Bugzilla:2084180,Bugzilla:2084166,Bugzilla:2069202,Bugzilla:2094673,Bugzilla:2057471,JIRA:RHEL-12154,JIRA:RHEL-4955

jmc-core

Bugzilla:1980981

kdump-anaconda-addon

Jira:RHEL-11196

kernel

Bugzilla:2041883,Bugzilla:1613522,Bugzilla:1995338,Bugzilla:1570255,Bugzilla:2177256,Bugzilla:2178699,Bugzilla:2023416,Bugzilla:2021672,Bugzilla:2027304,Bugzilla:1660337, Bugzilla:1955275,Bugzilla:2142102,Bugzilla:2068237,Bugzilla:2040643,Bugzilla:2186375,Bugzilla:2183538,Bugzilla:2206599,Bugzilla:2167783,Bugzilla:2000616, Bugzilla:2013650,Bugzilla:2132480,Bugzilla:2059545,Bugzilla:2005173,Bugzilla:2128610,Bugzilla:2129288,Bugzilla:2013884,Bugzilla:2149989

kernel / Crypto

Jira:RHEL-20145

内核/ DMA Engine

Jira:RHEL-10097

kernel / Debugging-Tracing / rtla

Jira:RHEL-10079

kernel / Kernel-Core

Jira:RHEL-25967

内核/网络/IPSec

Jira:RHEL-1015

内核/网络/NIC 驱动程序

Jira:RHEL-24618, Jira:RHEL-9897

内核/网络/ Netfilter

Jira:RHEL-16630

内核/平台启用/NVMe

Jira:RHEL-21545, Jira:RHEL-14751, Jira:RHEL-8171, Jira:RHEL-8164

内核/平台支持 / ppc64

Jira:RHEL-15404

内核/存储/设备映射器 / Crypt

Jira:RHEL-23572

内核/存储/存储驱动程序

Jira:RHEL-8466

内核/虚拟化

Jira:RHEL-1138

内核/虚拟化/KVM

Jira:RHEL-7212, Jira:RHEL-2815

kernel-rt

Bugzilla:2181571

kernel-rt/其它

Jira:RHEL-9318

kexec-tools

Bugzilla:2113873,Bugzilla:2064708

keylime

Jira:RHEL-11867, Jira:RHEL-1518

kmod

Bugzilla:2103605

kmod-kvdo

Jira:RHEL-8354

krb5

JIRA:RHEL-4902,Bugzilla:2060798,JIRA:RHEL-4875,JIRA:RHEL-4889,Bugzilla:2060421,Bugzilla:2016312,JIRA:RHEL-4888

libdnf

Jira:RHEL-11238

libkcapi

Jira:RHEL-15298, Jira:RHEL-5367

libotr

Bugzilla:2086562

librepo

Jira:RHEL-11240

librhsm

Jira:RHEL-14224

libvirt

Bugzilla:2014487, Bugzilla:2143158, Bugzilla:2078693

libxcrypt

Bugzilla:2034569

libzip

Jira:RHEL-17567

linuxptp

Jira:RHEL-2026

lvm2

Jira:RHEL-8357, Bugzilla:2038183

mariadb

Jira:RHEL-3638

maven

Jira:RHEL-13046

mysql

Bugzilla:1991500

nfs-utils

Bugzilla:2081114

nginx

Jira:RHEL-14713

nmstate

Jira:RHEL-1438, Jira:RHEL-19142, Jira:RHEL-1420

nvme-cli

Jira:RHEL-1492

nvme-stas

Bugzilla:1893841

open-vm-tools

Bugzilla:2037657

opencryptoki

Jira:RHEL-11412

opensc

Jira:RHEL-4079

openscap

Bugzilla:2161499

openslp

Jira:RHEL-6995

openssh

Jira:RHEL-5222, Jira:RHEL-2469, Bugzilla:2056884

openssl

JIRA:RHEL-23474,JIRA:RHEL-17193,Bugzilla:2168665,Bugzilla:1975836,Bugzilla:1681178,Bugzilla:1685470

osbuild

Jira:RHEL-4655

osbuild-composer

Bugzilla:2173928, Jira:RHEL-7999, Jira:RHEL-4649

oscap-anaconda-addon

Jira:RHEL-1824, Jira:RHELPLAN-44202

p11-kit

Jira:RHEL-14834

pause-container

Bugzilla:2106816

pcs

jira:RHEL-7672,JIRA:RHEL-7582,JIRA:RHEL-7724,JIRA:RHEL-7746,JIRA:RHEL-7744,JIRA:RHEL-7669,JIRA:RHEL-7730

php

Jira:RHEL-14699

pki-core

Bugzilla:2084181

podman

JIRA:RHELPLAN-167829,JIRA:RHELPLAN-167796,JIRA:RHELPLAN-167823,JIRA:RHELPLAN-168180,JIRA:RHELPLAN-168185,JIRA:RHELPLAN-168183,JIRA:RHELPLAN-154429,JIRA:RHELPLAN-154436,Bugzilla:2069279

policycoreutils

Jira:RHEL-24462

postgresql

Jira:RHEL-3635

procps-ng

Jira:RHEL-16278

python3.11-lxml

Bugzilla:2157708

qemu-kvm

Bugzilla:1965079,Bugzilla:1951814,Bugzilla:2060839,Bugzilla:2014229,JIRA:RHEL-7335,JIRA:RHEL-7336,Bugzilla:1915715,JIRA:RHEL-13335,JIRA:RHEL-333,Bugzilla:2176010,Bugzilla:2058982,Bugzilla:2073872

qemu-kvm / 设备

Jira:RHEL-1220

qemu-kvm / 图形

Jira:RHEL-7135

qemu-kvm/Live Migration

Jira:RHEL-7096, Jira:RHEL-2316, Jira:RHEL-7115

qemu-kvm/网络

Jira:RHEL-7337

realtime-tests

Jira:RHEL-9910

rear

jira:RHEL-16864, JIRA:RHEL-10478,JIRA:RHEL-6984,JIRA:RHEL-17393,JIRA:RHEL-24847

restore

Bugzilla:1997366

rhel-system-roles

JIRA:RHEL-1535,JIRA:RHEL-16976,JIRA:RHEL-16552,JIRA:RHEL-19579,JIRA:RHEL-16964,JIRA:RHEL-18962,JIRA:RHEL-16212,JIRA:RHEL-15876,JIRA:RHEL-16974, JIRA:RHEL-18026,Bugzilla:1999770,Bugzilla:2123859,JIRA:RHEL-1172,Bugzilla:2186218

rsyslog

Jira:RHEL-943, Jira:RHEL-937, Jira:RHEL-5196

rteval

Jira:RHEL-9912

s390utils

Bugzilla:1932480

samba

Jira:RHEL-16476

scap-security-guide

Jira:RHEL-21425, Jira:RHEL-1800, Bugzilla:2038978

selinux-policy

Jira:RHEL-12591, Jira:RHEL-14246, Bugzilla:2064274

scs

Bugzilla:1869561

sssd

JIRA:SSSD-7015,Bugzilla:2065693,Bugzilla:2056482,Bugzilla:1608496

sssd_kcm

JIRA:SSSD-7015

stratis-cli

Jira:RHEL-2265

stratisd

Jira:RHEL-16736

stunnel

Jira:RHEL-2468

subscription-manager

Bugzilla:2163716,Bugzilla:2136694

synce4l

Jira:RHEL-10089

sysstat

Jira:RHEL-12009, Jira:RHEL-26275

systemd

Bugzilla:2018112, Jira:RHEL-6105

systemtap

Jira:RHEL-12488

tigervnc

Bugzilla:2060308

tuna

Jira:RHEL-8859

tuned

Bugzilla:2113900

udisks2

Bugzilla:1983602,Bugzilla:2213769

unbound

Bugzilla:2070495

virt-v2v

Bugzilla:2168082

virtio-win

Bugzilla:1969724,JIRA:RHEL-11366,JIRA:RHEL-910,JIRA:RHEL-1609,JIRA:RHEL-869

virtio-win / distribution

Jira:RHEL-1517, Jira:RHEL-1860, Jira:RHEL-574

virtio-win / virtio-win-prewhql

Jira:RHEL-1084, Jira:RHEL-935, Jira:RHEL-12118, Jira:RHEL-1212

webkit2gtk3

Jira:RHEL-4157

xdp-tools

Jira:RHEL-3382

其他

JIRA:RHELDOCS-17369,JIRA:RHELDOCS-17263,JIRA:RHELDOCS-17060,JIRA:RHELDOCS-17056,JIRA:RHELDOCS-16721,JIRA:RHELDOCS-17372,JIRA:RHELDOCS-17792, JIRA:SSSD-6184,JIRA:RHELDOCS-17040,Bugzilla:2020529,JIRA:RHELPLAN-103993, JIRA:RHELPLAN-27394,JIRA:RHELPLAN-27737,JIRA:RHELDOCS-16861,JIRA:RHELDOCS-17050, Bugzilla:1927780,JIRA:RHELPLAN-110763,Bugzilla:1935544,Bugzilla:2089200,JIRA:RHELDOCS-16948,JIRA:RHELPLAN-99136,JIRA:RHELPLAN-103232,Bugzilla:1899167,Bugzilla:1979521, JIRA:RHELPLAN-100087,JIRA:RHELPLAN-100639,Bugzilla:2058153,JIRA:RHELPLAN-113995,JIRA:RHELPLAN-98983,JIRA:RHELPLAN-131882,JIRA:RHELPLAN-139805,JIRA:RHELDOCS-16756, JIRA:RHELPLAN-153267,JIRA:RHELDOCS-16300,JIRA:RHELDOCS-16432,JIRA:RHELDOCS-16393,JIRA:RHELDOCS-16612, JIRA:RHELDOCS-17102,JIRA:RHELDOCS-17015, JIRA:RHELDOCS-17135,JIRA:RHELDOCS-17545,JIRA:RHELDOCS-17461,JIRA:RHELDOCS-17038,JIRA:RHELDOCS-17495,JIRA:RHELDOCS-17518,JIRA:RHEL-23408, JIRA:RHELPLAN-157225,Bugzilla:1640697,Bugzilla:1697896,Bugzilla:2047713,JIRA:RHELPLAN-96940,JIRA:RHELPLAN-117234,JIRA:RHELPLAN-119001,JIRA:RHELPLAN-119852, Bugzilla:2077767,Bugzilla:2053598,Bugzilla:2082303,JIRA:RHELPLAN-121049,JIRA:RHELPLAN-157939,JIRA:RHELPLAN-109613,Bugzilla:2160619,Bugzilla:2173992,Bugzilla:2185048, Bugzilla:1970830,JIRA:RHELDOCS-16574,JIRA:RHELDOCS-17719,JIRA:RHELDOCS-17720

附录 B. 修订历史

0.0-0

2024 年 3 月 27 日星期三,Gabriela Fialová(gfialova@redhat.com)

  • 发布 Red Hat Enterprise Linux 9.4 Beta 发行注记。

法律通告

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.