Menu Close

12.3. 内核的显著变化

RHEL 9 中默认启用 cgroup-v2

控制组版本 2(cgroup-v2)功能实施单一层次结构模型,以简化控制组的管理。此外,它确保一个进程一次只能是一个控制组的成员。与 systemd 的深度集成提高了在 RHEL 系统上配置资源控制时的最终用户体验。

新功能的开发主要针对 cgroup-v2,其具有 cgroup-v1 缺少的一些功能。类似地,cgroup-v1 还包含 cgroup-v2 中缺少的一些传统功能。此外,控制接口也不同。因此,直接依赖 cgroup-v1 的第三方软件在 cgroup-v2 环境中可能无法正常运行。

要使用 cgroup-v1,您需要在内核命令行中添加以下参数:

systemd.unified_cgroup_hierarchy=0
systemd.legacy_systemd_cgroup_controller
注意

内核中完全启用了 cgroup-v1cgroup-v2。从内核的角度来看,没有默认的控制组版本,并且由 systemd 决定在启动时挂载。

可能会影响第三方内核模块的内核更改

Linux 分发自 5.9 之前内核版本,支持导出 GPL 功能,作为非 GPL 功能。因此,用户可以通过 shim 机制将专有功能链接到 GPL 内核功能。在这个版本中,RHEL 内核融合了上游更改,这些更改提高了 RHEL 通过重新调整 shim 来强制实施 GPL 的能力。

重要

合作伙伴和独立软件供应商(ISV)应利用早期版本的 RHEL 9 测试他们的内核模块,以确保其符合 GPL。

RHEL 9 支持内核调度

借助内核调度功能,用户可以防止不应相互信任的任务共享相同的 CPU 内核。类似地,用户可以定义可共享 CPU 内核的任务组。

可以指定这些组:

  • 通过减少一些跨严重多线程(SMT)攻击来提高安全性
  • 隔离需要整个内核的任务。例如,对于实时环境中的任务,或依赖特定处理器功能的任务,如单指令、多数据(¢D)处理

如需更多信息,请参阅 Core Scheduling

kernelopts 环境变量已在 RHEL 9 中删除

在 RHEL 8 中,使用 GRUB2 引导装载程序的系统的内核命令行参数定义在 kernelopts 环境变量中。此变量存储在每个内核引导条目的 /boot/grub2/grubenv 文件中。但是,使用 kernelopts 存储内核命令行参数并不可靠。因此,Red Hat 删除了 kernelopts,且内核命令行参数保存在 Boot Loader Specification(BLS)片断中,而不是在 /boot/loader/entries/<KERNEL_BOOT_ENTRY>.conf 文件中。

红帽只为次版本保护内核符号

红帽保证,在您使用受保护的内核符号编译内核模块时,内核模块将继续在延长更新支持(EUS)版本中的所有更新中载入,。RHEL 9 的次版本之间没有内核应用程序二进制接口(ABI)保证。