随着 2025 年的临近,希望你们中没有人仍在 x86_64 处理器上运行 x86 32 位内核/32 位操作系统软件,但如果您仍然喜欢这样做,那么将会有改进。
自上网本时代以来,在 x86_64 硬件上运行 x86 32 位内核/软件就不太流行了,因为它们的 RAM 容量有限……值得庆幸的是,大多数 Linux 发行版已经开始逐步淘汰其 32 位内核/操作系统映像支持和其他 32 位软件,除了在运行 x86_64 发行版时具有更好的兼容性。但是,在最近对 Linux 内核中的 32 位 ARM 进行清理之后,长期的 Linux 开发人员 Arnd Bergmann 已经开始清理在 x86_64 Intel/AMD 处理器上运行时使用的 x86 32 位内核代码。
Bergmann 在今天早上的 x86:32 位清理补丁系列中解释道:
“这主要是关于在 64 位硬件上运行 32 位内核,这通常是可行的,但可能应该通过仅支持在实际 32 位硬件上使用的功能来更明确地阻止:
我发现只有少数 2003 年时代的高端服务器(HP DL740 和 DL760 G2)是 HIGHMEM64G 和 BIGSMP 在 2014 年移除 32 位 NUMA 机器后唯一可能的剩余用途。同样,只有一代硬件支持 VT-x。所有这些功能都可以在不伤害用户的情况下删除。
在 CPU 选择中,构建针对 AMD K8 或 Intel Core2 优化的 32 位内核是不合时宜的,因此只需要提供 32 位 CPU 类型作为优化目标。64 位上的“通用”目标被证明略微损坏,因此我也对此进行了修复,将编译器默认目标替换为有用级别之间的有意选择。
这 11 个补丁增加了 185 行新代码,同时为那些对 x86_64 硬件上的 x86 内核感兴趣的人剥离了 1,216 行代码。
在这些补丁中值得注意的是,基于以下原因终止了 32 位 KVM 主机支持:
“支持 KVM 的 32 位机器很少,主要的例外是 2006 年的”Yonah“一代 Xeon-LV 和 Core Duo,以及 2008 年的 Atom Z5xx”Silverthorne“,它们都在 64 位对应产品之前发布。
使用 KVM 作为 64 位 CPU 上的主机,使用 32 位内核通常可以正常工作,但毫无意义,因为 64 位内核得到了更好的支持,并且更好地处理了 VM 客户机的内存需求。
删除所有仅限 32 位的部分和 x86 KVM 代码的 “#ifdef CONFIG_X86_64” 检查,并添加一个 Kconfig 依赖项,只允许在 64 位内核上构建它。
当然,对 32 位客户机的支持不受此影响。
Xeon LV 在当时(2006 年)很吸引人,但在 2025 年可以理解的是,在保留 32 位来宾操作系统兼容性的同时,取消了 32 位 KVM 主机支持。
转自 New Linux Patches Cleanup Code For Running x86 32-bit Kernels On x86_64 CPUs – Phoronix