9.4 发行注记
Red Hat Enterprise Linux 9.4 发行注记
摘要
使开源包含更多
红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。我们从这四个术语开始:master、slave、黑名单和白名单。由于此项工作十分艰巨,这些更改将在即将推出的几个发行版本中逐步实施。详情请查看 CTO Chris Wright 的信息。
对红帽文档提供反馈
我们感谢您对我们文档的反馈。让我们了解如何改进它。
通过 Jira 提交反馈(需要帐户)
- 登录到 Jira 网站。
- 在顶部导航栏中点 Create
- 在 Summary 字段中输入描述性标题。
- 在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 点对话框底部的 Create。
第 1 章 概述
1.1. RHEL 9.4 中的主要变化
安装程序和镜像创建
RHEL 镜像构建器的主要亮点:
- 从 RHEL 9.4 发行版本开始,您可以指定任意自定义挂载点,除了为操作系统保留的特定路径。
-
您可以创建不同的分区模式,如
auto-lvm
、lvm
和raw
。 - 您可以使用选择和取消选择选项来为配置文件自定义定制选项,并将其添加到蓝图自定义中,以添加和删除规则。
如需更多信息,请参阅 新功能 - 安装程序和镜像创建。
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]
第 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_password
和 grub2_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-mac
和encrypt-and-mac
MAC。 DISABLE_ETM
-
不允许
encrypt-then-mac
MAC。 DISABLE_NON_ETM
-
不允许不使用
encrypt-then-mac
的 MAC。
请注意,始终允许使用隐式 MAC 的密码,因为它们使用经过身份验证的加密。
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 配置文件。
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-tokens
、list-mechanisms
、list-objects
、import-object
、export-object
、delete-object
和generate-keypair
)的工具命令 -
添加了管理令牌的 PKCS#11 配置文件(
list-profiles
、add-profile
和delete-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 修复,最重要的是:
-
添加了
sm3sum
和sm3hmac
工具。 -
添加了
kcapi_md_sm3
和kcapi_md_hmac_sm3
API。 - 添加了 SM4 便利功能。
- 修复了对链接时间优化(LTO)的支持。
- 修复了 LTO 回归测试。
-
修复了使用
kcapi-enc
对任意大小的 AEAD 加密的支持。
Jira:RHEL-5367[1]
OpenSSH 中的用户和组创建使用 sysusers.d
格式
之前,OpenSSH 使用静态 useradd
脚本。有了此更新,OpenSSH 使用 sysusers.d
格式来声明系统用户,这使得反省系统用户成为可能。
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
库现在解释未命名和匿名套接字。 -
您可以在
ausearch
和aureport
工具的start
和end
选项中使用新关键字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 安全指南发行注记。
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
和 Montgomery 密钥的支持
。 -
添加了对导入
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 地址指定的修改源。
linuxptp
rebase 到版本 4.2
linuxptp
协议已更新至版本 4.2。主要变更包括:
-
添加了对
phc2sys
工具中多个域的支持。 - 添加了对时钟更新以及 Precision Time Protocol (PTP)父数据集中的通知的支持,如 clock 类。
- 添加了对 PTP Power Profile 的支持,即 IEEE C37.238-2011 和 IEEE C37.238-2017。
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
。
为 VLAN 接口引进新的 nmstate
属性
在这个版本中 ,
引进了以下 VLAN 属性:
-
registration-protocol
: VLAN 注册协议.有效值为gvrp
(GARP VLAN Registration Protocol),mvrp
(Multiple VLAN Registration Protocol)和none
。 -
reorder-headers
:重新排序输出数据包标头。有效值为true
和false
。 -
loose-binding
:将接口绑定到其主要设备的操作状态。有效值为true
和false
。
您的 YAML 配置文件类似以下示例:
--- interfaces: - name: eth1.101 type: vlan state: up vlan: base-iface: eth1 id: 101 registration-protocol: mvrp loose-binding: true reorder-headers: true
nmstate
现在支持创建 MACsec 接口
在这个版本中,nmstate
框架的用户可以配置 MACsec 接口来保护其在 Open Systems Interconnection (OSI)模型的第 2 层上的通信。因此,在第 7 层之后不需要加密单独的服务。另外,该功能消除了相关的挑战,如为每个端点管理大量证书。
如需更多信息,请参阅使用 nmstatectl 配置 MACsec 连接。
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 hist
和timerlat 顶部
线程。
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 转换为使用精简配置工具。
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 延迟。
max_retries
选项现在添加到 multipath.conf
的 defaults
部分
此增强将 max_retries
选项添加到 multipath.conf
文件的 defaults
部分。默认情况下,这个选项未设置,并使用 SCSI 层的默认值 5 次。此选项的有效值从 0
到 5
。当设定这个选项时,它会覆盖 SCSI 设备的 max_retries
sysfs
属性的默认值。此属性控制 SCSI 层在返回失败时重试 I/O 命令的次数。
如果用户遇到多路径的路径检查程序返回成功但 I/O 到设备挂起的问题,他们可以设置这个选项,以便在 I/O 重试另一个路径前缩短时间。
Jira:RHEL-1729[1]
auto_resize
选项现在添加到 multipath.conf
的 defaults
部分
在以前的版本中,要重新定义您需要手动执行 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。
Stratis-cli
rebase 到版本 3.6.0
stratis-cli
软件包已升级到 3.6.0 版本。重要的程序错误修复和增强包括:
-
stratis-cli
命令行界面支持附加选项来设置创建的文件系统大小限制。set-size-limit
和unset-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
选项,以指定要在引导条目中挂载的额外卷。
现在完全支持 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 时间属性指定值。
支持新的 pscd
Web UI 功能
pscd
Web UI 现在支持以下功能:
- 将集群资源从当前运行的节点中移动
- 从节点上运行的资源
- 显示集群状态的集群状态,显示集群状态的年龄以及正在重新载入集群状态的时间
- 请求重新载入集群状态显示
Jira:RHEL-7582, Jira:RHEL-7739
TLS 密码列表现在默认为系统范围的加密策略
在以前的版本中,pcsd
TLS 密码列表默认设置为 DEFAULT:!RC4:!3DES:@STRENGTH
。在这个版本中,密码列表默认由系统范围的加密策略定义。pcsd
守护进程接受的 TLS 密码可能会使用这个升级更改,具体取决于当前设置的加密策略。有关加密策略框架的更多信息,请参阅 crypto-policies
(7)手册页。
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
现在支持 Linuxperf
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 应用程序流生命周期。
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 而不是Ripper
。Prism
是可移植、错误容错和可维护的递归解析程序,用于 Ruby 语言。 - YJIT 是 Ruby 即时(JIT)编译器实现,不再是实验性的,它提供了主要的性能改进。
-
改进了
Regexp
匹配算法,以减少潜在的正则表达式拒绝服务(ReDoS)漏洞的影响。 - 新的实验性 RJIT (纯 Ruby JIT)编译器取代了 MJIT。在生产环境中使用 YJIT。
- 现在提供了一个新的 M:N 线程调度程序。
其他显著变化:
-
现在,您必须使用
Lrama
LALR 解析器生成器而不是Bison
。 - 删除了几个已弃用的方法和常量。
-
Racc
gem 已从默认 gem 提升到捆绑的 gem。
要安装 ruby:3.3
模块流,请使用:
# 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
权限。 -
单独的
SUPER
和READ 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 应用程序流生命周期。
新模块流: postgresql:16
RHEL 9.4 引入了 PostgreSQL 16,作为 postgresql:16
模块流。与版本 15 相比,PostgreSQL 16 提供了很多新功能和增强。
主要改进包括:
- 增强的批量加载提高了性能。
-
libpq
库现在支持连接级别的负载均衡。您可以使用新的load_balance_hosts
选项更有效地负载平衡。 -
现在,您可以创建自定义配置文件,并将其包含在
pg_hba.conf
和pg_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 应用程序流生命周期。
git rebase 到版本 2.43.0
Git 版本控制系统已更新至版本 2.43.0,与之前发布的版本 2.39 相比,它提供了 bug 修复、功能增强和性能改进。
主要改进包括:
-
现在,您可以将新的
--source
选项与git check-attr
命令一起使用,从提供的 tree-ish 对象而不是当前工作目录中读取.gitattributes
文件。 -
Git 现在可以将
WWW-Authenticate
response-type 标头的信息传递给凭证帮助程序。 -
如果提交为空,
git format-patch
命令现在会写入一个输出文件,其中包含提交头,而不是创建空文件。 -
现在,您可以使用
git blame --contents= <file> < ;revision> -- <path
> 命令,通过导致 <revision
。> 的历史记录查找从 <file
> 内容开始的行源 -
git log --format
命令现在接受%(decorate)
占位符来进一步自定义,以扩展--decorate
选项提供的功能。
Jira:RHEL-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
。
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% 的压缩(这需要重新索引)。
SystemTap
rebase 到版本 5.0
systemtap
软件包已更新至版本 5.0。主要改进包括:
- 更快、更可靠的内核用户传输。
- 扩展 DWARF5 debuginfo 格式支持。
新的 grafana-selinux
软件包
在以前的版本中,grafana-server
的默认安装作为 unconfined_service_t
SELinux 类型运行。这个更新添加了新的 grafana-selinux
软件包,其中包含 grafana-server
的 SELinux 策略,默认使用 grafana-server
安装。因此,grafana-server
现在作为 grafana_t
SELinux 类型运行。
新软件包: 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
软件包,它提供了 zipcmp
、zipmerge
和 ziptool
等工具。
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 的支持。
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。
如需更多信息,请参阅 上游发行注记。
删除过期的 KCM Kerberos 票据
在以前的版本中,如果您试图向 Kerberos 凭证管理器(KCM)添加新凭证,且您已达到存储空间限制,新凭证将被拒绝。用户存储空间受 max_uid_ccaches
配置选项的限制,该选项的默认值为 64。在这个版本中,如果您已达到存储空间限制,您的最旧的过期凭证会被删除,并将新凭证添加到 KCM 中。如果没有过期的凭证,操作会失败并返回错误。要防止这个问题,您可以使用 kdestroy
命令删除凭证来释放一些空间。
IdM 现在支持 idoverrideuser
、idoverridegroup
和 idview
Ansible 模块
在这个版本中,ansible-freeipa
软件包包含以下模块:
idoverrideuser
- 允许您覆盖存储在身份管理(IdM) LDAP 服务器中的用户属性,例如用户登录名称、主目录、证书或 SSH 密钥。
idoverridegroup
- 允许您覆盖存储在 IdM LDAP 服务器中的组的属性,例如:组的名称、其 GID 或描述。
idview
- 允许您组织用户和组 ID 覆盖,并将其应用到特定的 IdM 主机。
未来,您将能够使用这些模块使 AD 用户使用智能卡登录到 IdM。
idp
Ansible 模块允许将 IdM 用户与外部 IdP 关联
在这个版本中,您可以使用 idp
ansible-freeipa
模块将身份管理(IdM)用户与支持 OAuth 2 设备授权流的外部身份提供程序(IdP)关联。如果 IdM 中存在 IdP 引用和关联的 IdP 用户 ID,您可以使用它们为 IdM 用户启用 IdP 身份验证。
在外部 IdP 执行身份验证和授权后,IdM 用户会收到具有单点登录功能的 Kerberos 票据。用户必须与 RHEL 8.7 或更高版本中提供的 SSSD 版本进行身份验证。
getcert add-ca
如果证书已存在或跟踪,则返回新的返回代码
在这个版本中,如果尝试添加或跟踪已存在的证书,getcert
命令会返回特定的返回代码 2
。在以前的版本中,命令会在任何错误条件中返回返回码 1
。
现在 ansible-freeipa
中启用了 DNS 区域管理的委派
现在,您可以使用 dnszone
ansible-freeipa
模块委派 DNS 区域管理。使用 dnszone
模块的 permission
或 managedby
变量来配置每个区访问委托权限。
现在,对于 ns-slapd
进程,默认禁用透明巨页
当使用大型数据库缓存时,透明巨页(THP)可能会对目录服务器性能造成负面影响,例如高内存占用量、高 CPU 使用量和延迟激增。在这个版本中,在 /usr/lib/
drop-in 配置文件中添加了一个新的 systemd
/system/ dirsrv
@.service.d/custom.confTHP_DISABLE=1
配置选项,以便为 ns-slapd
进程禁用 THP。
另外,Directory 服务器健康检查工具现在检测到 THP 设置。如果您启用了 THP 系统范围以及 Directory Server 实例,健康检查工具会告知您启用的 THP,并打印有关如何禁用它们的建议。
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 前备份数据库文件。当 smbd
、nmbd
或 winbind
服务启动时,Samba 会自动更新其 tdb
数据库文件。红帽不支持降级 tdb
数据库文件。
更新 Samba 后,使用 testparm
工具来验证 /etc/samba/smb.conf
文件。
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
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 系统角色现在支持创建和管理共享逻辑卷和卷组。
rhc
系统角色现在支持 RHEL 7 系统
现在,您可以使用 rhc
系统角色管理 RHEL 7 系统。将 RHEL 7 系统注册到 Red Hat Subscription Management (RHSM)和 Insights,并开始使用 rhc
系统角色管理系统。
使用 rhc_insights.remediation
参数不会影响 RHEL 7 系统,因为 Insights Remediation 功能目前在 RHEL 7 上不可用。
Storage RHEL 系统角色现在支持 LVM 快照管理
RHEL 系统角色现在支持 LVM 快照的创建、配置和管理。
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,请使用 参数更新现有的显示名称。如果在注册中没有明确设置显示名称,则默认将其设置为主机名。无法自动将显示名称恢复到主机名,但可以手动设置。
postgresql
RHEL 系统角色现在支持 PostgreSQL 16
postgresql
RHEL 系统角色,它安装、配置、管理和启动 PostgreSQL 服务器,现在支持 PostgreSQL 16。
有关此系统角色的更多信息,请参阅使用 postgresql RHEL 系统角色安装和配置 PostgreSQL。
支持在不创建文件系统的情况下创建卷
在这个版本中,您可以通过指定 fs_type=un
format 选项来创建新卷,而无需创建文件系统。
同样,可以通过确保禁用安全模式来使用相同的方法删除现有文件系统。
支持新的 ha_cluster
系统角色功能
ha_cluster
系统角色现在支持以下功能:
-
启用包含弹性存储软件包的存储库,如
dlm
或gfs2
。需要弹性存储订阅才能访问存储库。 - 配置隔离级别,允许集群使用多个设备来隔离节点。
- 配置节点属性。
有关为实现这些功能配置的参数的详情,请参考 使用 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 主机名。
4.16. 虚拟化
现在 ARM 64 支持虚拟化
这个版本引进了在使用 ARM 64 CPU 的系统中创建 KVM 虚拟机的支持。但请注意,某些在 AMD64 和 Intel 64 系统中可用的虚拟化功能可能会不同,或者在 ARM 64 中不被支持。
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 init
和podman 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
命令自动生成的输出。
选项 | 值 |
---|---|
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 | 可用 |
程序类型 | 可用的帮助程序 |
---|---|
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 |
映射类型 | 可用 |
---|---|
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
中正确创建配置集。因此,所有指定的端口现在都添加到安装的系统的绑定设备中。
在引导安装镜像时,Anaconda 会替换误导的错误消息
在以前的版本中,当安装程序无法引导安装镜像时,例如因为 inst.
或 stage2
inst.repo
中指定的 stage2 源丢失,Anaconda 会显示以下误导错误消息:
/run/anaconda/initrd_errors.txt: No such file or directory
在这个版本中,Anaconda 会发出正确的警告信息来最小化混淆。
Anaconda 现在验证 FIPS 要求的 LUKS 密码短语
在以前的版本中,Anaconda 不检查 LUKS 密码短语的长度是否满足 FIPS 要求,即使底层工具执行了这个检查。因此,使用小于 8 个字符的密码短语在 FIPS 模式下安装会导致安装程序过早停止。
有了此更新,安装程序已得到了改进,可以验证并强制执行密码短语的最小长度。因此,如果在 FIPS 模式下使用的 LUKS 密码短语太短,安装程序会通知,并防止意外停止。
xfsprogs
的新版本不再缩小 /boot
的大小
在以前的版本中,RHEL 9.3 中 5.19 版本的 xfsprogs
软件包会导致 /boot
的大小缩小。因此,与 RHEL 9.2 版本相比,它会导致 /boot
分区上可用空间的不同。此修复为所有镜像将 /boot
分区增加到 600 MiB,而不是 500 MiB,/boot
分区不再受到空间问题的影响。
6.2. 安全性
使用 ip vrf
管理虚拟路由的规则被添加到 SELinux 策略中
您可以使用 ip vrf
命令管理其他网络服务的虚拟路由。在以前的版本中,selinux-policy
不包含支持这个使用的规则。有了这个更新,SELinux 策略规则允许从 ip
域明确过渡到 httpd
、sshd
和 named
域。当 ip
命令使用 setexeccon
库调用时,这些转换会应用。
Jira:RHEL-14246[1]
rsyslog 可以通过 omprog
执行特权命令
在以前的版本中,Rsyslog 的 omprog
模块无法执行某些外部程序,特别是包含特权命令的程序。因此,通过 omprog
使用涉及特权命令的脚本受到限制。在这个版本中,SELinux 策略已被调整。将您的脚本放在 /usr/libexec/rsyslog
目录中,以确保与调整的 SELinux 策略兼容。现在,Rsyslog 可以通过 omprog
模块来执行包括带有特权命令的脚本。
带有偏移的 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
前缀。
systemd
现在可以正确地管理 librepo
创建的 /run/user/0
目录
在以前的版本中,如果在 root 用户登录前从 Insights 客户端调用 librepo
功能,/run/user/0
目录可能会创建并带有错误的 SELinux 上下文类型。这导致 systemd
在从 root 注销后清理目录。
在这个版本中,librepo
软件包会根据 SELinux 策略中定义的默认文件系统标记规则设置默认创建类型。现在,systemd
可以正确地管理由 librepo
创建的 /run/user/0
目录。
systemd
现在可以正确地管理 libdnf
创建的 /run/user/0
目录
在以前的版本中,如果在 root 用户登录前从 Insights 客户端调用 libdnf
功能,/run/user/0
目录可能会创建并带有错误的 SELinux 上下文类型。这导致 systemd
在从 root 注销后清理目录。
在这个版本中,libdnf
软件包会根据 SELinux 策略中定义的默认文件系统标记规则设置默认创建类型。现在,systemd
可以正确地管理 libdnf
创建的 /run/user/0
目录。
dnf need-restarting --reboothint
命令现在建议重启来更新 CPU microcode
要完全更新 CPU microcode,您必须重启系统。在以前的版本中,当安装了包含更新的 CPU microcode 的 microcode_ctl
软件包时,dnf needs-restarting --reboothint
命令不推荐重启。在这个版本中,这个问题已被解决,dnf needs-restarting --reboothint
现在建议重启来更新 CPU microcode。
6.5. Shell 和命令行工具
现在,当按内存对进程排序时,top -u
命令至少会显示一个进程
在以前的版本中,当使用 -u < ;
> 参数执行 user
top
命令时,用户与运行命令的不同时,所有进程都会按内存排序时消失。在这个版本中,当按内存对进程排序时,
top
命令至少会显示一个进程。
要保留光标的位置,不会显示所有进程。您可以向上滚动结果来显示剩余的进程。
ReaR 现在会在安装 BIOS 和 UEFI 引导装载程序时决定存在 BIOS 引导装载程序
在以前的版本中,在混合引导装载程序设置(UEFI
和 BIOS
)中,当 UEFI
被用来引导时,Relax-and-Recover (ReaR)只恢复 UEFI
引导装载程序而不是 BIOS
引导装载程序。这会导致系统具有 GUID 分区表
(GPT
)、BIOS 引导分区,而不是 BIOS 引导装载程序。在这种情况下,ReaR 无法创建救援镜像,尝试使用 rear mkbackup
或 rear mkrescue
命令生成备份或救援镜像会失败,并显示以下错误消息:
ERROR: Cannot autodetect what is used as bootloader, see default.conf about 'BOOTLOADER'.
有了这个更新,ReaR 决定存在 UEFI
和 BIOS
引导装载程序,恢复它们,且不会在 GPT
中带有 BIOS
引导分区的系统上遇到 BIOS
引导装载程序时失败。因此,可以备份并多次恢复具有混合 UEFI
和 BIOS
引导装载程序设置的系统。
Jira:RHEL-16864[1]
ReaR 在恢复过程中不再使用 logbsize
,sunit
和 swidth
挂载选项
在以前的版本中,当使用 MKFS_
配置设置恢复带有与原始参数的 XFS 文件系统时,Relax-and-Recover (ReaR)使用适用于原始文件系统的挂载选项挂载这个文件系统,但不适用于恢复的文件系统。因此,当 ReaR 运行 XFS
_OPTIONSmount
命令时,磁盘布局重新创建会失败,并显示以下错误消息:
wrong fs type, bad option, bad superblock on and missing codepage or helper program, or other error.
内核日志显示以下信息之一:
logbuf size must be greater than or equal to log stripe size
alignment check failed: sunit/swidth vs. agsize
有了这个更新,ReaR 在挂载重新创建的 XFS
文件系统时避免使用 logbsize
、sunit
和 swidth
挂载选项。因此,当使用 MKFS_XFS_OPTIONS
配置设置时,磁盘布局会成功重新创建。
Jira:RHEL-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.
在这个版本中,恢复的系统有一个与原始系统大小相同的元数据卷。因此,恢复具有小的精简池元数据大小的系统,且卷组中没有额外的可用空间成功完成。
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
中的日志。
如果在配置文件中设置了 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
。
6.6. 网络
wwan_hwsim
现在在 kernel-modules-internal
软件包中
wwan_hwsim
内核模块提供了一个框架,用于模拟和测试使用无线广域网络(WWAN)设备的各种网络场景。在以前的版本中,wwan_hwsim
是 kernel-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
版本编译。因此,命令现在可以正常工作。
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()
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-crypt
和 dm-verity
设备的 no_read_workqueue
、no_write_workqueue
和 try_verify_in_taskle
选项会被临时禁用
在以前的版本中,使用 no_read_workqueue
或 no_write_workqueue
选项和 dm-verity
设备创建的 dm-crypt
设备以及使用 try_verify_in_tasklet
选项创建的 dm-verity 设备会导致内存崩溃。因此,随机内核内存被破坏,这会导致各种系统问题。在这个版本中,这些选项会被临时禁用。请注意,这个修复可能会导致 dm-verity
和 dm-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
文件中没有非零条目。
当在 /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. 高可用性和集群
配置 tls
和 keep_active_partition_tie_breaker
仲裁设备选项,而不指定 --force
在以前的版本中,当配置仲裁设备时,用户无法在不指定 --force
选项的情况下为仲裁设备模型 net
配置 tls
和 keep_active_partition_tie_breaker
选项。在这个版本中,配置这些选项不再需要指定 --force
。
现在修正了移动和禁止克隆和捆绑包资源的问题
此程序错误修复解决了移动捆绑和克隆资源的两个限制:
-
当用户试图将捆绑的资源移出其捆绑包或将其从其捆绑包中运行的时,
pcs
会创建一个约束,但约束无效。这会导致移动失败,并显示出错信息。在这个版本中,pcs
不允许从捆绑包中移动和禁止捆绑的资源,并打印一个错误消息,表示捆绑的资源无法从捆绑包中移出。 -
当用户尝试移动捆绑包或克隆资源时,
pcs
exited with an error message noting that bundle or clone resources cannot be move.在这个版本中,Relaxes 验证 move 命令。现在,可以移动克隆和捆绑包资源。在移动克隆资源时,如果多个克隆实例正在运行,您必须指定一个目标节点。只能移动一个副本捆绑包。
pcs status
命令的输出不再显示已过期限制的警告
在以前的版本中,当移动集群资源创建临时位置约束时,pcs status
命令会在约束过期后显示警告。在这个版本中,pcs status
命令会过滤掉过期的限制,它们不再在命令输出中生成警告信息。
当 SBD 隔离需要它时,禁用 auto_tie_breaker
仲裁选项不再被允许
在以前的版本中,pcs
允许用户禁用 auto_tie_breaker
仲裁选项,即使集群配置需要这个选项才能正常工作。在这个版本中,当用户试图在 SBD 隔离需要启用 auto_tie_breaker
的系统上禁用 auto_tie_breaker
时,pcs
会生成错误消息。
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
可以正确处理请求。
6.11. 编译器和开发工具
ldconfig
在系统升级后不再崩溃
在以前的版本中,当中断系统升级后,ldconfig
工具会在 /usr/lib64
目录中处理不完整的共享对象时意外终止,并显示分段错误。在这个版本中,ldconfig
会忽略在系统升级过程中编写的临时文件。因此,ldconfig
在系统升级后不再崩溃。
改进了 glibc
与应用程序的兼容性,使用 dlclose
在依赖项周期中涉及的共享对象
在以前的版本中,当使用 glibc
中的 dlclose
函数卸载共享对象时,在卸载所有其他对象前,对象的 ELF destructor 可能没有被调用。由于此后期的 ELF 破坏性执行,应用程序会因为初始共享对象的依赖项已重新初始化而造成崩溃和其他错误。
在这个版本中,glibc
已被解决,在执行任何其他 ELF 破坏性程序前,首先调用正在卸载的即时对象的 ELF 破坏性程序。因此,改进了对涉及依赖项周期的共享对象使用 dlclose
的应用程序的兼容性,并不会再崩溃。
Jira:RHEL-2491[1]
6.12. 身份管理
现在,当一个操作完成时释放的内存
在以前的版本中,在连接关闭前,每个操作分配的 KCM 内存不会被释放。因此,对于打开连接并在同一个连接上运行许多操作的客户端应用程序,可能会导致内存增加,因为分配的内存在连接关闭前没有被释放。在这个版本中,在操作完成后,为操作分配的内存会马上发布。
当可信 AD 用户的名称包含混合问题单字符时,IdM 客户端可以正确地检索它们的信息
在以前的版本中,如果您尝试用户查找或用户的身份验证,并且可信活动目录(AD)用户在其名称中包含混合大小写字符,且在 IdM 中使用覆盖进行了配置,则会返回一个错误,阻止用户访问 IdM 资源。
在这个版本中,区分大小写的比较被替换为忽略字符大小写的不区分大小写比较。因此,IdM 客户端现在可以查找 AD 可信域的用户,即使其用户名包含混合大小写字符,且它们在 IdM 中使用覆盖进行了配置。
如果在更改密码时没有保留宽限期,SSSD 会正确返回错误
在以前的版本中,如果用户的 LDAP 密码已过期,SSSD 会在用户的初始绑定失败后尝试更改密码,因为没有更多宽限期。但是,返回到用户的错误没有指示失败的原因。在这个版本中,如果绑定失败,对更改密码的请求会被中止,SSSD 会返回一条错误消息,指示没有更多安全登录,且密码必须被另一个方式更改。
使用 realm leave
命令从域中删除系统
在以前的版本中,如果为 sssd.conf
文件中的 ad_server
选项设置了多个名称,运行 realm leave
命令会导致解析错误,系统也不会从域中删除。在这个版本中,会正确评估 ad_server
选项,并使用正确的域控制器名称,并且系统从域中正确删除。
现在,当处理常规受限委托请求时,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 的影响。
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 配置。
6.13. Web 控制台
VNC 控制台现在可以在大多数分辨率下正常工作
在以前的版本中,当在某些显示分辨率下使用虚拟网络计算(VNC)控制台时,会出现鼠标偏移问题,或者只有接口的一部分可见。因此,无法使用 VNC 控制台。
有了这个更新,这个问题已被解决,VNC 控制台可以在大多数分辨率下正常工作,但非常高的分辨率除外,如 3840x2160。
请注意,记录的和显示的光标位置之间的小偏移可能仍然存在。但是,这不会影响 VNC 控制台的可用性。
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
参数中提供了激活码。
6.15. 虚拟化
现在,故障转移 virtio NIC 在 Windows 虚拟机上被正确分配了 IP 地址
在以前的版本中,当启动带有故障转移 virtio NIC Windows 虚拟机(VM)时,虚拟机无法为 NIC 分配 IP 地址。因此,NIC 无法建立网络连接。这个问题已被解决,VM NIC 现在可以在上述场景中按预期建立网络连接。
安装程序显示要在虚拟机上安装 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
现在可以正确地显示受影响的介质设备的属性。
重启 virtqemud
或 libvirtd
后,无法附加 virtiofs
设备
在以前的版本中,重启 virtqemud
或 libvirtd
服务会阻止 virtiofs
存储设备附加到主机上的虚拟机(VM)。这个 bug 已被解决,您现在可以在上述场景中附加 virtiofs
设备。
向虚拟机热插一块 Watchdog 卡不再失败
在以前的版本中,如果没有 PCI 插槽可用,向正在运行的虚拟机(VM)添加一块 Watchdog 卡会失败,并显示以下错误:
Failed to configure watchdog ERROR Error attempting device hotplug: internal error: No more available PCI slots
有了此更新,这个问题已被解决,向正在运行的虚拟机中添加一块 Watchdog 卡现在可以按预期正常工作。
对于 IBM Z 上的 virtio-gpu
,blob
资源无法正常工作
virtio-gpu
设备目前与 IBM Z 系统上的 blob
内存资源不兼容。因此,如果您在 IBM Z 主机上配置带有 virtio-gpu
的虚拟机(VM),以使用 blob
资源,则虚拟机没有任何图形输出。
重新安装 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 部分中选择这些设备。
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
文件中启用它。
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
是一个不受支持的技术预览。
PRP 和 HSR 协议现在作为技术预览提供
这个更新添加了提供以下协议的 hsr
内核模块:
- Parallel Redundancy Protocol (PRP)
- 高可用性无缝冗余(HSR)
IEC 62439-3 标准定义了这些协议,您可以使用此功能在以太网网络中配置零损失冗余。
Bugzilla:2177256[1]
NetworkManager 和 Nmstate API 支持 MACsec 硬件卸载
如果硬件支持此功能,您可以使用 NetworkManager 和 Nmstate API 启用 MACsec 硬件卸载。因此,您可以将 MACsec 操作(如加密)从 CPU 卸载到网络接口卡。
请注意,这个功能是一个不受支持的技术预览。
NetworkManager
启用配置 HSR 和 PRP 接口
高可用性 Seam 无冗余(HSR)和 Parallel Redundancy 协议(PRP)是网络协议,可为任何单个网络组件故障提供无缝故障转移。这两个协议对应用程序层是透明的,这意味着用户不会遇到通信或丢失数据中断,因为主路径和冗余路径之间的切换会非常快且不知道用户。现在,可以通过 nmcli
实用程序和 DBus 消息系统使用 NetworkManager
服务启用和配置 HSR 和 PRP 接口。
将 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_nicpf
和 rvu_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-secret
和 dhchap-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 策略模块:
将以下行保存为
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---
加载策略模块:
# semodule -i io_uring_cmd_passthrough.cil
Bugzilla:2068237[1]
7.8. 编译器和开发工具
jmc-core
和 owasp-java-encoder
作为技术预览
RHEL 9 与 jmc-core
和 owasp-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-core
和 owasp-java-encoder
在 CodeReady Linux Builder (CRB)存储库中提供,您必须明确启用。如需更多信息,请参阅 如何在 CodeReady Linux Builder 中启用和使用内容。
7.9. 身份管理
DNSSEC 在 IdM 中作为技术预览提供
带有集成 DNS 的身份管理(IdM)服务器现在实现了 DNS 安全扩展(DNSSEC),这是一组增强 DNS 协议安全的 DNS 扩展。托管在 IdM 服务器上的 DNS 区可以使用 DNSSEC 自动签名。加密密钥是自动生成和轮转的。
建议那些决定使用 DNSSEC 保护 DNS 区的用户读取并遵循这些文档:
请注意,集成了 DNSSEC 的 IdM 服务器验证从其他 DNS 服务器获取的 DNS 答案。这可能会影响未按照推荐的命名方法配置的 DNS 区域可用性。
身份管理 JSON-RPC API 作为技术预览
一个 API 可用于 Identity Management(IdM)。要查看 API,IdM 还提供了一个 API 浏览器作为技术预览。
在以前的版本中,IdM API 被改进来启用多个 API 命令版本。这些增强可能会以不兼容的方式改变命令的行为。用户现在可以继续使用已有的工具和脚本,即使 IdM API 发生了变化。这可启用:
- 管理员要在服务器中使用之前或更高版本的 IdM,而不是在管理客户端中使用。
- 开发人员可以使用 IdM 调用的特定版本,即使 IdM 版本在服务器上发生了变化。
在所有情况下,与服务器进行通信是可能的,无论是否一方使用,例如,一个新的版本会为这个功能引进新的选项。
有关使用 API 的详细信息,请参阅使用身份管理 API 与 IdM 服务器通信(TECHNOLOGY PREVIEW)。
sssd-idp 子软件包作为技术预览提供
SSSD 的 sssd-idp
子软件包包含 oidc_child
和 krb5 idp
插件,它们是对身份管理(IdM)服务器执行 OAuth2 身份验证的客户端组件。此功能仅适用于 RHEL 9.1 及更高版本上的 IdM 服务器。
SSSD 内部 krb5 idp 插件作为技术预览提供
SSSD krb5 idp
插件允许您使用 OAuth2 协议对外部身份提供者(IdP)进行身份验证。此功能仅适用于 RHEL 9.1 及更高版本上的 IdM 服务器。
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 进行身份验证。
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-commit
和 edge-container
蓝图中的用户和组自定义已弃用
在蓝图中指定用户或组自定义对于 edge-commit
和 edge-container
镜像类型已弃用,因为在升级镜像时用户自定义会消失,且不能在蓝图中再次指定用户。
请注意,在用于部署现有的 OSTree 提交的蓝图中指定用户或组自定义,如 edge-raw-image
、edge-installer
和 edge-simplified-installer
镜像类型继续被支持。
initial-setup
软件包现已弃用
initial-setup
软件包已在 Red Hat Enterprise Linux 9.3 中被弃用,并将在下一个主 RHEL 发行版本中删除。作为替换,对图形用户界面,使用 gnome-initial-setup
。
Jira:RHELDOCS-16393[1]
inst.geoloc
引导选项的 provider_hostip
和 provider_fedora_geoip
值已弃用
为 inst.geoloc=
引导选项指定 GeoIP API 的 provider_hostip
和 provider_fedora_geoip
值已弃用。作为替换,您可以使用 geolocation_provider=URL
选项在安装程序配置文件中设置所需的地理位置。您仍然可以使用 inst.geoloc=0
选项禁用地理位置。
使用全局热键从 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 设备仍然在安装程序中可见并可用。
无法从安装环境中的驱动程序更新磁盘载入更新的驱动程序
如果已加载了安装初始 ramdisk 中同样的驱动程序,则驱动程序更新磁盘中的驱动程序的新版本可能无法加载。因此,驱动程序的更新版本无法应用到安装环境。
作为临时解决方案,请将 modprobe.blacklist=
内核命令行选项与 inst.dd
选项一起使用。例如,要确保是否加载了驱动程序更新磁盘中的 virtio_blk
驱动程序的更新版本,请使用 modprobe.blacklist=virtio_blk
,然后继续通常的流程来应用驱动程序更新磁盘中的驱动程序。因此,系统会加载驱动程序的更新版本,并在安装环境中使用它。
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
框架处理,但只是为了保证向后兼容。
在 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)的密钥封装不使用填充,但仍支持。
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
配置文件,并启用对已弃用算法的支持。
/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 版本中删除。
8.3. 订阅管理
subscription-manager 注册的
停止在 2024 年 11 月结束时工作--token
选项将
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
。
8.4. Shell 和命令行工具
dump
软件包中的 dump
工具已弃用
用于文件系统备份的 dump
工具已弃用,在 RHEL 9 中将不再提供。
在 RHEL 9 中,红帽建议根据使用情况使用 tar
、dd
或 bacula
、备份工具,对 ext2、ext3 和 ext4 文件系统提供了完整和安全的备份。
请注意,dump
软件包中的 restore
工具仍可用,在 RHEL 9 中也被支持,并作为 restore
软件包提供。
Bugzilla:1997366[1]
Bacula 中的 SQLite 数据库后端已被弃用
Bacula 备份系统支持多个数据库后端:PostgreSQL、MySQL 和 SQLite。SQLite 后端已被弃用,并将在以后的 RHEL 版本中不被支持。作为一种替代,迁移到其他一种后端(PostgreSQL 或 MySQL),且在新部署中不使用 SQLite 后端。
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 主发行版本中发布它们。客户必须准备过渡到可用替代方案,如 dhcpcd
和 ISC 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
来配置所需的规则。
firewalld
锁定功能已弃用。
firewalld
中的锁定功能已弃用,因为它无法阻止以 root
身份运行的进程将自身添加到允许列表中。在以后的主 RHEL 发行版本中可能会删除锁定功能。
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。
kexec-tools
的 kexec_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-activation
、lvm2-activation-early
、lvm2-activation-net
已在 RHEL 9.0 中删除。lvm.conf event_activation
设置用于激活服务将不再起作用。自动激活卷组的唯一方法是基于事件激活。
在 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 模式中无法正常工作。
有些 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 不支持独立。
SSSD 隐式文件供应商域默认禁用
SSSD 隐式 文件
供应商域,从 /etc/shadow
和 /etc/
groups 等本地文件检索用户信息,现已默认禁用。
使用 SSSD 从本地文件检索用户和组信息:
配置 SSSD.选择以下选项之一:
使用
sssd.conf
配置文件中的id_provider=files
选项明确配置本地域。[domain/local] id_provider=files ...
通过在
sssd.conf
配置文件中设置enable_files_domain=true
来启用文件
供应商。[sssd] enable_files_domain = true
配置名称服务切换。
# 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 passwd
或 getent group
命令(没有活动目录(AD)、身份管理(IdM)和 LDAP 供应商的参数)列出所有用户或组。在 Red Hat Enterprise Linux (RHEL) 9 中弃用了 AD 和 IdM 的
enumeration
功能。在 RHEL 10 中,AD 和 IdM 将删除 enumeration
功能。
libsss_simpleifp
子软件包已弃用
在 Red Hat Enterprise Linux (RHEL) 9 中弃用了提供
库的 libsss_simpleifp 子软件包。libsss_simpleifp
.solibsss_simpleifp
子软件包可能会在以后的 RHEL 发行版本中删除。
nsslapd-ldapimaprootdn
参数已弃用
在目录服务器中,nsslapd-ldapimaprootdn
配置参数用于将系统根条目映射到根 DN 条目。通常,nsslapd-ldapimaprootdn
参数具有与 nsslapd-rootdn
参数相同的值。另外,更改一个属性但不更改其它属性会导致一个无法正常工作的自动绑定配置,其会破坏 dsconf
工具及对 Web 控制台的访问。
有了此更新,目录服务器只使用 nsslapd-rootdn
参数将系统根条目映射到根 DN 条目。因此,nsslapd-ldapimaprootdn
参数被弃用,根 DN 更改不会破坏 dsconf
工具以及对 web 控制台的访问。
nsslapd-conntablesize
配置参数已从 389-ds-base
中删除
nsslapd-conntablesize
配置参数已从 RHEL 9.3 中的 389-ds-base
软件包中删除。在以前的版本中,nsslapd-conntablesize
配置属性指定管理建立的连接的连接表的大小。随着多监听器功能的引入,它改进了已建立连接的管理,目录服务器现在可以动态计算连接表的大小。这也解决了这类问题,当连接表大小被设置得太小时,它会影响服务器能够支持的连接的数量。从 RHEL 9.3 开始,只使用 nsslapd-maxdescriptors
和 nsslapd-reservedescriptors
属性来管理目录服务器可以支持的 TCP/IP 连接的数量。
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:
- Flathub 存储库中的官方 Flatpak 软件包:https://flathub.org/apps/org.libreoffice.LibreOffice。
- 官方 RPM 软件包::https://www.libreoffice.org/download/download-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 节点上配置网络团队,会显示有关弃用的警告。
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 上托管的虚拟机中使用软盘磁盘设备。
qcow2-v2 镜像格式已弃用
在 RHEL 9 中,虚拟磁盘镜像的 qcow2-v2 格式已弃用,并将在以后的 RHEL 主发行版本中不被支持。另外,RHEL 9 Image Builder 无法以 qcow2-v2 格式创建磁盘镜像。
红帽强烈建议您使用 qcow2-v3,而不是 qcow2-v2。要将 qcow2-v2 镜像转换为更新的格式版本,请使用 qemu-img amend
命令。
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'
基于 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 设备仍然可用,但无法配置为持久的。
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
容器镜像已被弃用。
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-flatpak
和 rhel9/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 --network
和 podman 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. 安装程序和镜像创建
auth
和 authconfig
Kickstart 命令需要 AppStream 软件仓库
auth
和 authconfig
Kickstart 命令在安装过程中需要 authselect-compat
软件包。如果没有这个软件包,如果使用了 auth
或 authconfig
,则安装会失败。但根据设计,authselect-compat
软件包只包括在 AppStream 仓库中。
要临时解决这个问题,请验证 BaseOS 和 AppStream 存储库是否对安装程序可用,或者在安装过程中使用 authselect
Kickstart 命令。
Bugzilla:1640697[1]
reboot --kexec
和 inst.kexec
命令不提供可预测的系统状态
使用 reboot --kexec Kickstart
命令或 inst.kexec
内核引导参数执行 RHEL 安装不会提供与完全重启相同的可预期系统状态。因此,在不重启的情况下切换安装的系统可能会导致无法预计的结果。
请注意,kexec
功能已弃用,并将在以后的 Red Hat Enterprise Linux 版本中删除。
Bugzilla:1697896[1]
在 Anaconda 作为应用程序运行的系统中意外 SELinux 策略
当 Anaconda 作为应用程序运行在已安装的系统上(例如,使用 -image
anaconda 选项对镜像文件执行另一次安装)时,不禁止系统在安装过程中修改 SELinux 类型和属性。因此,某些 SELinux 策略的元素可能会在运行Anaconda 的系统上发生更改。
要临时解决这个问题,请不要在生产系统上运行 Anaconda。相反,在临时虚拟机中运行 Anaconda,以使 SELinux 策略在生产系统上保持不变。作为系统安装过程的一部分运行 anaconda,如从 boot.iso
或 dvd.iso
安装不会受此问题的影响。
当使用使用第三方工具创建的 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 驱动器安装。因此,安装不会失败。
带有 iso9660 文件系统的硬盘分区安装失败
您不能在使用 iso9660
文件系统进行分区的系统中安装 RHEL。这是因为将设置为忽略包含 iso9660
文件系统分区的硬盘的更新安装代码。即使在没有使用 DVD 的情况下安装 RHEL,也会发生这种情况。
要临时解决这个问题,请在 Kickstart 文件中添加以下脚本,以便在安装开始前格式化磁盘。
注:在执行临时解决方案前,请备份磁盘上的数据。erafs
命令对磁盘中的所有现有数据进行格式化。
%pre
wipefs -a /dev/sda
%end
因此,安装可以正常工作,且没有任何错误。
Anaconda 无法验证管理员用户帐户是否存在
在使用图形用户界面安装 RHEL 时,Anaconda 无法验证管理员帐户是否已创建。因此,用户可以在没有管理员用户帐户的情况下安装系统。
要临时解决这个问题,请确保配置管理员用户帐户或 root 密码已设置,且 root 帐户被解锁。因此,用户可以在安装的系统中执行管理任务。
新的 XFS 功能可防止使用比版本 5.10 更早的固件引导 PowerNV IBM POWER 系统
PowerNV IBM POWER 系统使用 Linux 内核进行固件,并使用 Petitboot 作为 GRUB 的替代。这会导致固件内核挂载 /boot
,Petitboot 读取 GRUB 配置和引导 RHEL。
RHEL 9 内核为 XFS 文件系统引入了 bigtime=1
和 inobtcount=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
。
因此,安装过程成功完成。
当连接到网络但没有配置 DHCP 或静态 IP 地址时,NetworkManager 无法在安装后启动
从 RHEL 9.0 开始,当没有设置特定的 ip=
或 Kickstart 网络配置时,Anaconda 会自动激活网络设备。Anaconda 为每个以太网设备创建默认的持久配置文件。连接配置文件的 ONBOOT
和 autoconnect
值设为 true
。因此,在启动安装的系统的过程中,RHEL 会激活网络设备,networkManager-wait-online
服务会失败。
作为临时解决方案,请执行以下操作之一:
使用
nmcli
工具删除所有连接,但您要使用的一个连接除外。例如:列出所有连接配置文件:
# nmcli connection show
删除您不需要的连接配置文件:
# nmcli connection delete <connection_name>
将 <connection_name> 替换为您要删除的连接的名称。
如果没有设置特定的
ip=
或 Kickstart 网络配置,请在 Anaconda 中禁用自动连接网络功能。- 在 Anaconda GUI 中,导航到 Network & Host Name。
- 选择要禁用的网络设备。
- 单击 Configure。
- 在 General 选项卡中,取消 Connect automatically with priority 复选框。
- 点击 Save。
Bugzilla:2115783[1]
Kickstart 安装无法配置网络连接
Anaconda 只能通过 NetworkManager API 执行 Kickstart 网络配置。Anaconda 在 %pre
Kickstart 部分之后处理网络配置。因此,Kickstart %pre
部分中的一些任务被阻止。例如,因为网络配置不可用,从 %pre
部分中下载软件包会失败。
要临时解决这个问题:
-
配置网络,例如使用
nmcli
工具作为%pre
脚本的一部分。 -
使用安装程序引导选项为
%pre
脚本配置网络。
因此,可以对 %pre
部分中的任务使用网络,Kickstart 安装过程完成。
使用 RHEL 镜像构建器构建 rpm-ostree
镜像时,不支持启用 FIPS 模式
目前,在使用 RHEL 镜像构建器构建 rpm-ostree
镜像时,不支持启用 FIPS 模式。
使用 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。
驱动程序磁盘菜单无法在控制台上显示用户输入
当您在带有驱动程序磁盘的内核命令行上使用 inst.dd
选项启动 RHEL 安装时,控制台将无法显示用户输入。因此,应用程序似乎没有响应用户输入,并停止响应,但会显示使用户混淆的输出。但是,此行为不会影响功能,用户输入会在按 Enter
后被注册。
作为临时解决方案,要查看预期结果,请忽略控制台中缺少用户输入,并在完成添加输入后按 Enter
键。
因为 %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
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 规格一起使用。
Ansible 补救需要额外的集合
用 ansible-core
软件包替换 Ansible Engine 时,RHEL 订阅提供的 Ansible 模块的列表会减少。因此,运行使用包含在 scap-security-guide
软件包中的 Ansible 内容的补救需要来自 rhc-worker-playbook
软件包的集合。
对于 Ansible 补救,请执行以下步骤:
安装所需的软件包:
# dnf install -y ansible-core scap-security-guide rhc-worker-playbook
进到
/usr/share/scap-security-guide/ansible
目录:# cd /usr/share/scap-security-guide/ansible
运行使用环境变量的相关 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 内容。
Keylime 不接受串联的 PEM 证书
当 Keylime 将证书链作为 PEM 格式的、串联在一个文件中的多个证书接收时,keylime-agent-rust
Keylime 组件在签名验证过程中不能正确地使用所有提供的证书,导致 TLS 握手失败。因此,客户端组件(keylime_verifier
和 keylime_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。
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 服务器时,每个规则都会配置一个选项(ClientAliveCountMax
和 ClientAliveInterval
),其行为不再像之前一样。因此,当 OpenSSH 达到这些规则配置的超时时,OpenSSH 不再断开空闲的 SSH 用户。作为临时解决方案,这些规则已从 DISA STIG for RHEL 9 和 DISA STIG with GUI for RHEL 9 配置集中临时删除,直到开发出解决方案为止。
GnuPG 错误地允许使用 SHA-1 签名,即使通过 crypto-policies
禁止使用 SHA-1 签名
无论系统范围的加密策略中定义的设置如何,GNU Privacy Guard(GnuPG)加密软件可以创建和验证使用 SHA-1 算法的签名。因此,您可以在 DEFAULT
加密策略中将 SHA-1 用于加密目的,这与这个不安全算法的系统范围弃用没有一致的。
要临时解决这个问题,请不要使用涉及 SHA-1 的 GnuPG 选项。因此,您将使用不安全的 SHA-1 签名来防止 GnuPG 降低默认的系统安全性。
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
如需了解更多详细信息和临时解决方案,请参阅相关的 知识库文章。
在 kickstart 安装过程中修复与服务相关的规则可能会失败
在 kickstart 安装过程中,OpenSCAP 工具有时会错误地显示服务的 enable
或disable
状态补救不需要。因此,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.
要解决这个问题,重启安装过程。
在本地仓库上运行 createrepo_c
会产生重复的 repodata
文件
当您在本地存储库上运行 createrepo_c
命令时,它会产生 repodata
文件的重复副本,其中一个副本是压缩的,另一个副本不是。但是,没有可用的临时解决方案,您可以安全地忽略重复的文件。createrepo_c
命令会产生重复的副本,因为其他工具中的要求和差异依赖于使用 createrepo_c
创建的存储库。
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
sysstat
软件包中的 %vmeff
指标显示不正确的值
sysstat
软件包提供 %vmeff
指标来测量页面回收效率。sar -B
命令返回的 %vmeff
列的值不正确,因为 sysstat
不会解析后续内核版本提供的所有相关的 /proc/vmstat
值。要临时解决这个问题,您可以从 /proc/vmstat
文件中手动计算 %vmeff
值。详情请查看 为什么在 RHEL 8 和 RHEL 9 中 sar (1)
工具报告 %vmeff
值超过 100 % ?
服务位置协议(SLP)易受到通过 UDP 的攻击
OpenSLP 为本地区域网络中的应用程序提供动态配置机制,如打印机和文件服务器。但是,SLP 会受到通过连接到互联网的系统上的 UDP 的反射性拒绝服务放大攻击。SLP 允许未经身份验证的攻击者注册新服务,而不受由 SLP 实现设置的限制。通过使用 UDP 和欺骗源地址,攻击者可以请求服务列表,在欺骗地址上创建拒绝服务。
要防止外部攻击者访问 SLP 服务,请在不受信任的网络上运行的所有系统上禁用 SLP,比如那些直接连接到互联网的系统。另外,要解决这个问题,请配置防火墙以阻止或过滤 UDP 和 TCP 端口 427 上的流量。
Jira:RHEL-6995[1]
由 sar
和 iostat
实用程序生成的 %util
列无效
当您使用 sar
或 iostat
实用程序收集系统使用统计数据时,sar
或 iostat
生成的 %util
列可能包含无效数据。
Jira:RHEL-26275[1]
9.6. 基础架构服务
bind
和 unbound
都禁用基于 SHA-1- 的签名验证
bind
和 unbound
组件禁用所有 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 记录失败来验证 解决方案。
如果在多个区域中使用相同的可写区域文件,named
无法启动
BIND 不允许在多个区域中具有相同的可写区域文件。因此,如果配置包含多个区域,它们共享到可由 named
服务修改的文件的路径,则 named
无法启动。要临时解决这个问题,请使用 in-view
子句在多个视图间共享一个区域,并确保为不同的区使用不同的路径。例如,在路径中包含视图名称。
请注意,可写的区域文件通常在带有允许的动态更新的区域、DNSSEC 维护的次要区域或区域中使用。
libotr
与 FIPS 不兼容
libotr
库和非记录(OTR)消息的工具包为即时消息会话提供了端到端加密。但是,由于其使用了 gcry_pk_sign()
和 gcry_pk_verify()
函数,libotr
库不符合联邦信息处理标准(FIPS)。因此,您无法在 FIPS 模式下使用 libotr
库。
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
软件包。因此,ifup
和 ifdown
工具不可用。一个替代的方法是,可以使用 nmcli connection up
和 nmcli connection down
命令来启用和禁用连接。如果这个替代方法无法正常工作,请报告这个问题并安装 NetworkManager-initscripts-updown
软件包,该软件包为 ifup
和 ifdown
工具提供了一个 NetworkManager 解决方案。
使用 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=16
或 env 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
功能不会显示 SWAPIN
和 IO%
统计列
Delayed Accounting
功能与早期版本不同,它们会被默认禁用。因此,iotop
应用程序不显示 SWAPIN
和 IO%
统计列,并显示以下警告:
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
,请使用以下步骤之一:编辑
/etc/sysctl.conf
文件以覆盖默认参数:在
/etc/sysctl.conf
文件中添加以下条目:kernel.task_delayacct = 1
如需更多信息,请参阅 如何在 Red Hat Enterprise Linux 上设置 sysctl 变量。
- 重启系统以使更改生效。
在内核命令行中添加
delayacct
选项。如需更多信息,请参阅 配置内核命令行参数。
因此,iotop
应用程序会显示 SWAPIN
和 IO%
统计列。
Bugzilla:2132480[1]
具有大核数的系统上实时内核的硬件认证可能需要传递 skew-tick=1
引导参数
具有大量插槽和大核数的大型或中型系统可能会因为对 xtime_lock
(其在计时系统中使用)的锁争用而遇到延迟峰值。因此,硬件认证中的延迟峰值和延迟可能会在多处理系统上发生。作为临时解决方案,您可以通过添加 skew_tick=1
引导参数,偏移每个 CPU 的计时器刻度,来在不同的时间启动。
要避免锁冲突,请启用 skew_tick=1
:
使用
grubby
启用skew_tick=1
参数。# grubby --update-kernel=ALL --args="skew_tick=1"
- 重启以使更改生效。
通过显示您在启动过程中传递的内核参数来验证新设置。
cat /proc/cmdline
请注意,启用 skew_tick=1
会导致功耗的大量增加,因此只有在运行延迟敏感实时工作负载时才必须启用它。
Jira:RHEL-9318[1]
kdump
机制无法捕获 LUKS 加密目标上的 vmcore
文件
当在使用 Linux Unified Key Setup(LUKS)加密分区的系统中运行 kdump
时,系统需要特定的可用内存。当可用内存小于所需内存量时,systemd-cryptsetup
服务将无法挂载分区。因此,第二个内核无法捕获 LUKS 加密目标上的崩溃转储文件。
作为临时解决方案,查询 推荐的 crashkernel 值
,并逐渐将内存大小增加到合适的值。推荐的 crashkernel 值
可作为设置所需内存大小的参考。
打印估计的崩溃内核值。
# kdumpctl estimate
通过增加
crashkernel
值来配置所需的内存量。# grubby --args=crashkernel=652M --update-kernel=ALL
重启系统以使更改生效。
# 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
配置信息从不活跃连接配置集复制到活跃连接配置集中:运行
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 --
使用不活跃连接中的配置信息更新活跃的配置集:
#!/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
重启
kdump
服务以使更改生效:# kdumpctl restart
iwl7260-firmware
破坏了 Intel Wi-Fi 6 AX200、AX210 和 Lenovo ThinkPad P1 Gen 4 上的 Wi-Fi
在将 iwl7260-firmware
或 iwl7260-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 命名的磁盘进行更改。
不能在 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
软件包及其依赖项。
9.10. 动态编程语言、网页和数据库服务器
python3.11-lxml
不提供 lxml.isoschematron
子模块
python3.11-lxml
软件包不与 lxml.isoschematron
子模块一起分发,因为它不是开源许可证。子模块实现 ISO 架构支持。作为替代方案,lxml.etree.Schematron
类种提供了 pre-ISO-Schematron 验证。python3.11-lxml
软件包的其余内容不受影响。
MySQL
和 MariaDB
中的 --ssl-fips-mode
选项不会改变 FIPS 模式
RHEL 中 MySQL
和 MariaDB
中的 --ssl-fips-mode
选项与上游中的工作方式不同。
在 RHEL 9 中,如果您使用 --ssl-fips-mode
作为 mysqld
或 mariadbd
守护进程的参数,或者在 MySQL
或 MariaDB
服务器配置文件中使用 ssl-fips-mode
,则 --ssl-fips-mode
不会更改这些数据库服务器的 FIPS 模式。
相反:
-
如果将
--ssl-fips-mode
设为ON
,则mysqld
或mariadbd
服务器守护进程不会启动。 -
如果您在启用了 FIPS 的系统上将
--ssl-fips-mode
设为OFF
,则mysqld
或mariadbd
服务器守护进程仍然在 FIPS 模式下运行。
这是预期的,因为应该为整个 RHEL 系统启用或禁用 FIPS 模式,而不是为特定组件。
因此,不要在 RHEL 中的 MySQL
或 MariaDB
中使用 --ssl-fips-mode
选项。相反,请确保在整个 RHEL 系统上启用 FIPS 模式:
- 最好安装启用了 FIPS 模式的 RHEL。在安装过程中启用 FIPS 模式可确保系统使用 FIPS 批准的算法生成所有的密钥,并持续监控测试。有关在 FIPS 模式下安装 RHEL 的详情,请参考 在 FIPS 模式下安装系统。
- 或者,您可以按照 将系统切换成 FIPS 模式 中的流程,为整个 RHEL 系统切换 FIPS 模式。
9.11. 身份管理
MIT Kerberos 不支持 PKINIT 的 ECC 证书
MIT Kerberos 不对评论文档实施 RFC5349 请求,它描述了公钥 Cryptography 中的 elliptic-curve 加密 (ECC) 支持。因此,RHEL 使用的 MIT krb5-pkinit
软件包不支持 ECC 证书。如需更多信息,请参阅 Kerberos (PKINIT)对公共密钥加密加密支持(ECC) 支持。
必须在 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
如果 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 工作。
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
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 预验证。
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。
对 ldap_id_use_start_tls
选项使用默认值时的潜在风险
当使用没有 TLS 的 ldap://
进行身份查找时,可能会对攻击向量构成风险。特别是中间人(MITM)攻击,例如,攻击者可以通过更改 LDAP 搜索中返回的对象的 UID 或 GID 来冒充用户。
目前,强制 TLS 的 SSSD 配置选项 ldap_id_use_start_tls
默认为 false
。确保您的设置在可信环境中操作,并决定对 id_provider = ldap
使用未加密的通信是否是安全的。注意 id_provider = ad
和 id_provider = ipa
不受影响,因为它们使用 SASL 和 GSSAPI 保护的加密连接。
如果使用未加密的通信不安全,请在 /etc/sssd/sssd.conf
文件中将 ldap_id_use_start_tls
选项设置为 true
来强制使用 TLS。计划在以后的 RHEL 版本中更改的默认行为。
Jira:RHELPLAN-155168[1]
将 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 密钥加密的设计无法将现有的密钥转换为不同的加密类型。唯一的方法是要求用户更新其密码。
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 客户端的安装可以成功。
当 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 并按预期启动。
用户创建屏幕没有响应
当使用图形用户界面安装 RHEL 时,用户创建屏幕没有响应。因此,在安装过程中创建用户更为困难。
要临时解决这个问题,请使用以下解决方案之一创建用户:
- 在 VNC 模式下运行安装并重新定义 VNC 窗口的大小。
- 完成安装过程后创建用户。
Jira:RHEL-11924[1]
WebKitGTK 无法在 IBM Z 上显示网页
当尝试在 IBM Z 架构上显示网页时,WebKitGTK 网页浏览器引擎会失败。网页保持空白,WebKitGTK 进程意外终止。
因此,您无法使用那些使用 WebKitGTK 的应用程序的某些功能来显示网页,如下所示:
- Evolution 邮件客户端
- GNOME 在线帐户设置
- GNOME 帮助应用程序
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
无法使用环境名称注册系统
当在 rhc_environment
中指定环境名称时,rhc
系统角色注册系统失败。作为临时解决方案,请在注册时使用环境 ID 而不是环境名称。
在高可用性模式下运行 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-curl
和 qemu-kvm-block-ssh
,以启用 https 和 ssh 协议支持。或者,使用不同的连接协议或不同的安装源。
在虚拟机中使用 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 中手动打开 erms
和 fsrm
。
Bugzilla:2077767[1]
带有故障切换设置的 hostdev
接口在热拔后无法进行热插
从正在运行的虚拟机(VM)中删除带有故障切换配置的 hostdev
网络接口后,该接口目前无法重新连接到同一正在运行的虚拟机。
带有故障切换 VF 的虚拟机实时复制迁移失败
目前,如果虚拟机使用启用了虚拟功能(VF)故障转移功能的设备,则试图对一个正在运行的虚拟机(VM)进行 post-copy 迁移会失败。要临时解决这个问题,请使用标准迁移类型,而不要使用 post-copy 迁移方式。
主机网络无法在实时迁移过程中 ping 使用 VF 的虚拟机
当使用配置的虚拟功能 (VF) 实时迁移虚拟机时,如使用虚拟 SR-IOV 软件的虚拟机,虚拟机的网络不对其它设备看到,如 ping
之类的命令无法访问虚拟机。完成迁移后,问题将不再发生。
禁用 AVX 会导致虚拟机无法引导
在使用具有高级向量扩展(AVX)支持的 CPU 的主机上,尝试引导明确禁用 AVX 的虚拟机当前会失败,并触发虚拟机中的内核 panic。
Bugzilla:2005173[1]
在网络接口重置后,Windows VM 无法获取 IP 地址
有时,Windows 虚拟机在自动网络接口重置后无法获取 IP 地址。因此,虚拟机无法连接到网络。要临时解决这个问题,在 Windows 设备管理器中禁用并重新启用网络适配器驱动程序。
Windows Server 2016 虚拟机有时会在热插拔 vCPU 后停止工作
目前,将 vCPU 分配给运行 Windows Server 2016 客户机操作系统的虚拟机(VM)可能会导致各种问题,如虚拟机意外终止、变得没有响应或重启。
使用大量队列可能会导致虚拟机失败
当启用了虚拟可信平台模块(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 中恢复。
恢复中断的复制后虚拟机迁移可能会失败
如果虚拟机(VM)的复制后迁移中断,然后在同一传入端口上立即恢复,则迁移可能会失败,并显示以下错误 Address already in use
要临时解决这个问题,请在恢复后复制迁移或切换到迁移恢复的另一个端口前至少等待 10 秒。
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 节点配置。
虚拟机迁移过程中的 NFS 故障会导致迁移失败和源虚拟机 coredump
目前,如果 NFS 服务或服务器在虚拟机(VM)迁移过程中关闭,则源虚拟机的 QEMU 在重新开始运行时无法重新连接到 NFS 服务器。因此,迁移会失败,并在源虚拟机上发起 coredump。目前,还没有可用的临时解决方案。
PCIe ATS 设备无法在 Windows 虚拟机上工作
当您在带有 Windows 客户机操作系统的虚拟机的 XML 配置中配置 PCIe 地址转换服务(ATS)设备时,在引导虚拟机后,客户机不会启用 ATS 设备。这是因为 Windows 目前不支持 virtio
设备上的 ATS。
如需更多信息,请参阅 红帽知识库。
virsh blkiotune --weight
命令无法设置正确的 cgroup I/O 控制器值
目前,使用 virsh blkiotune --weight
命令设置 VM 权重无法按预期工作。该命令无法在 cgroup I/O 控制器接口文件中设置正确的 io.bfq.weight
值。目前还没有临时解决方案。
启动带有 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-tool
的 Repair
按钮时,如 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
virtio balloon 驱动程序有时在 Windows 10 虚拟机上无法工作
在某些情况下,virtio-balloon 驱动程序无法在使用 Windows 10 客户机操作系统的虚拟机(VM)上正常工作。因此,此类虚拟机可能无法有效地使用其分配的内存。
virtio 文件系统在 Windows 虚拟机中性能不佳
目前,当在使用 Windows 客户机操作系统的虚拟机(VM)上配置了 virtio 文件系统(virtiofs)时,虚拟机中的 virtiofs 性能比使用 Linux 客户机的虚拟机中的性能要差的多。
Jira:RHEL-1212[1]
在 Windows 虚拟机上热拔存储设备可能会失败
在使用 Windows 客户机操作系统的虚拟机(VM)上,当虚拟机运行时删除存储设备(也称为设备热拔)在某些情况下会失败。因此,存储设备一直附加在虚拟机上,磁盘管理器服务可能会变得无响应。
将 CPU 热插到 Windows 虚拟机可能会导致系统失败
当将最大数量的 CPU 热插到启用了巨页的 Windows 虚拟机(VM)时,客户机操作系统可能会崩溃,并显示以下 停止错误 :
PROCESSOR_START_TIMEOUT
在 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)时消失。因此,会出现以下问题:
- 从快照恢复虚拟机后,虚拟机无法引导,而是进入紧急模式。
- 通过克隆创建的虚拟机无法引导,而是进入紧急模式。
要临时解决这个问题,在虚拟机的紧急模式下执行以下操作:
-
删除 LVM 系统设备文件:
rm /etc/lvm/devices/system.devices
-
重新创建 LVM 设备设置:
vgimportdevices -a
- 重启虚拟机
这样,克隆或恢复的虚拟机可以正确引导。
另外,为了避免这个问题发生,请在克隆虚拟机或创建虚拟机快照前进行以下操作:
-
在
/etc/lvm/lvm.conf
文件中取消注释use_devicesfile = 0
行 - 重启虚拟机
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 知识库。
当启用了 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 问题单以供参考。这些链接会指向本文档中描述问题单的发行注记。
附录 B. 修订历史
0.0-0
2024 年 3 月 27 日星期三,Gabriela Fialová(gfialova@redhat.com)
- 发布 Red Hat Enterprise Linux 9.4 Beta 发行注记。