4.9. 内核
RHEL 8.6 中的内核版本
Red Hat Enterprise Linux 8.6 与内核版本 4.18.0-372 一起发布。
另请参阅 外部内核参数的重要变化 以及 设备驱动程序。
RHEL 8.6 的扩展 Berkeley Packet 过滤器
Extended Berkeley Packet Filter(eBPF) 是一个内核中的虚拟机,允许在可访问有限功能的受限沙箱环境中在内核空间中执行代码。虚拟机执行类特殊的装配代码。
eBPF 字节码首先加载到内核,然后进行验证,通过即时编译到原生机器代码转换,然后虚拟机执行代码。
红帽提供大量使用 eBPF 虚拟机的组件。每个组件处于不同的开发阶段,因此目前并不完全支持所有组件。在 RHEL 8.6 中,支持以下 eBPF 组件:
- The BPF Compiler Collection (BCC)工具软件包,提供用于使用 eBPF 的 I/O 分析、联网和监控 Linux 操作系统的工具。
- BCC 库,它允许开发与 BCC 工具软件包中相似的工具。
- eBPF for Traffic Control(tc) 功能,可在内核网络数据路径中启用可编程数据包处理。
-
bpftrace
追踪语言 - eXpress Data Path(XDP)功能在内核网络堆栈处理它们前提供对接收的数据包的访问,在特定情况下被支持。如需更多信息,请参阅 XDP 被有条件支持 以及 RHEL 中网络 eBPF 功能概述。
-
libbpf
软件包对于 bpf 相关应用程序(如bpftrace
和bpf/xdp
开发)至关重要。 -
xdp-tools
软件包包含 XDP 特性的用户空间支持工具,现在在 AMD 和 Intel 64 位构架中被支持。这包括libxdp
库、加载 XDP 程序的xdp-loader
实用程序、用户数据包过滤的xdp-filter
示例程序、用于从启用了 XDP 的网络接口捕获数据包的xdpdump
工具程序。
请注意,所有其他 eBPF 组件都作为技术预览提供,除非有特定的组件被显示为受支持。
以下显著的 eBPF 组件当前作为技术预览提供:
-
用于连接eXpress Data Path (XDP) 路径到用户空间的
AF_XDP
套接字
如需有关技术预览组件的更多信息,请参阅 eBPF 作为技术预览。
默认情况下,Red Hat 在所有 RHEL 版本中为特权用户启用 eBPF
扩展的 Berkeley 数据包过滤器(eBPF)是一个复杂的技术,其允许用户在 Linux 内核中执行自定义代码。由于其性质,eBPF 代码需要通过验证器和其他安全机制。存在常见的漏洞和暴露(CVE)实例,其中代码中的 bug 可能会被误用于未经授权的操作。为了减少这种风险,红帽默认在所有 RHEL 版本中只为特权用户启用 eBPF。可以使用 kernel.command-line 参数 unprivileged_bpf_disabled=0
为非特权用户启用 eBPF。
但请注意:
-
应用
unprivileged_bpf_disabled=0
使您的内核不被红帽支持,并使您的系统面临安全风险。 -
红帽鼓励您使用
CAP_BPF
功能对待进程,就如同该功能等于CAP_SYS_ADMIN
一样。 -
设置
unprivileged_bpf_disabled=0
不足以由非特权用户执行许多 BPF 程序,因为大多数 BPF 程序类型的加载需要额外的功能(通常为CAP_SYS_ADMIN
或CAP_PERFMON
)。
有关如何应用内核命令行参数的详情,请参考 配置内核命令行参数。
(BZ#2089409)
在 RHEL 8 中添加了 osnoise
和 timerlat
追踪器
osnoise
追踪器测量操作系统噪声。也就是说,由操作系统和硬件中断而引起的应用程序中断。它还提供一组追踪点来帮助查找操作系统噪声的来源。timerlat
追踪器可测量偏离延迟,并帮助识别此类实时(RT)线程延迟的原因。在 RT 计算中,延迟绝对是至关重要的,即使是最小的延迟也可能是有害的。osnoise
和 timerlat
追踪器允许您调查和发现 OS 干扰应用程序和 RT 线程唤醒延迟的原因。
(BZ#1979382)
strace
工具现在可以显示实际 SELinux 上下文与从 SELinux 上下文数据库提取的定义之间的不匹配
strace
的现有 --secontext
选项已使用 mismatch
参数进行了扩展 。这个参数可让您只打印预期的上下文以及实际不匹配的上下文。输出用双感叹号(!!
)分隔,第一个是实际上下文,然后是预期上下文。在下面的示例中,full,mismatch
参数打印预期的完整上下文以及实际的上下文,因为上下文的用户部分不匹配。但是,在使用单独的 mismatch
时,它只检查上下文的类型部分。预期的上下文不会打印,因为上下文的类型部分匹配。
[...] $ strace --secontext=full,mismatch -e statx stat /home/user/file statx(AT_FDCWD, "/home/user/file" [system_u:object_r:user_home_t:s0!!unconfined_u:object_r:user_home_t:s0], ... $ strace --secontext=mismatch -e statx stat /home/user/file statx(AT_FDCWD, "/home/user/file" [user_home_t:s0], ...
SELinux 上下文不匹配通常会导致与 SELinux 相关的访问控制问题。系统调用 traces 中打印的不匹配可显著加快 SELinux 上下文正确性的检查。系统调用 traces 也可以解释有关访问控制检查的特定内核行为。
--cyclictest-threshold
选项已添加到 rteval
工具
有了这个增强,--cyclictest-threshold=USEC
选项已添加到 rteval
测试套件中。您可以使用这个选项指定阈值。如果任何延迟测量超过这个阈值,则 rteval
测试会立即结束。当不满足延迟预期时,则运行会以失败状态中止。