Rocky Linux 与 AlmaLinux:VPS 选哪个?
Rocky Linux 和 AlmaLinux 都重构自相同的 RHEL 源代码,支持周期同为 10 年。了解 ABI 兼容承诺,以及 AlmaLinux 10 支持早于 Intel Haswell 的处理器而 Rocky Linux 10 不支持的差异。
Rocky Linux 与 AlmaLinux:简短结论
对于几乎所有服务器,Rocky Linux 与 AlmaLinux 都是不会选错的方案。两个项目都基于相同的 Red Hat Enterprise Linux (RHEL) 源代码重新构建,因此在相同的 10 年支持周期内提供相同的软件包。两者确实存在差异,但差异主要体现在治理方式和少数边缘场景,而不是日常服务器运维工作中。
在两者并非完全等价的情况下,以下两点会影响选择。AlmaLinux 10 仍提供适用于早于 Intel Haswell 处理器的构建版本,而 Rocky Linux 10 不提供。这一点对于使用较便宜或较旧 VPS(虚拟专用服务器)硬件的场景很重要。AlmaLinux 还承诺 ABI 兼容,而不是保证行为完全一致。如果运行具有严格支持矩阵的厂商产品,这一点也很重要。
两种发行版的由来
2020年12月8日,CentOS 项目宣布,作为 RHEL 8 重构版的 CentOS Linux 8 将在2021年底结束支持。其此前公布的生命周期结束日期是2029年。该项目未来的方向是 CentOS Stream。同一公告将其描述为:跟踪当前 RHEL 版本之前的开发状态,并作为 RHEL 的上游开发分支。CentOS Linux 7 保持原定计划,并于2024年6月30日结束生命周期。
问题不在于 CentOS Stream 本身。问题在于,原定于2029年结束的生命周期,在已安装系统的机器上提前了8年结束,而通知时间只有约1年。Rocky Linux 和 AlmaLinux 都因此出现。两者都在2021年发布,目标也相同:提供一个免费的 RHEL 重构版,让运维人员安装后可以长期使用,十年内无需频繁处理。
Rocky Linux 与 AlmaLinux 的共同点
从这里开始,因为两者的共同部分占主要内容。两者都基于同一套上游 RHEL 源代码重新构建,因此提供相同的软件包版本、相同的 dnf 软件包管理器、相同的 SELinux(Security-Enhanced Linux)策略、相同的 firewalld 前端,以及相同的 systemd 单元布局。配置文件位于相同的路径。为其中一个系统编写的指南,只需替换名称即可用于另一个系统。
两者都紧密跟随 RHEL 的次要版本发布。AlmaLinux 10.2 于 26 May 2026 发布,Rocky Linux 10.2 于 28 May 2026 发布。9 系列也在同一周发布:AlmaLinux 9.8 于 26 May 2026 发布,Rocky Linux 9.8 于 27 May 2026 发布。更早版本之间的时间差更大。AlmaLinux 10.0 于 27 May 2025 发布,Rocky Linux 10.0 于 11 June 2025 发布。
这个时间差涉及次要版本介质,而不是安全性。两项目都会在次要版本之间持续发布勘误更新,并分别通过各自的勘误服务提供这些更新。.2 镜像晚两周出现,并不意味着有两周没有补丁。
两者还都继承了 RHEL 的十年生命周期模型:大约五年主动支持,随后五年仅提供安全维护。两者的 10 系列都将持续到 2035 年。
各项目由谁负责?
Rocky Linux 归 Rocky Enterprise Software Foundation(RESF)所有。RESF 是一家在特拉华州注册的公益企业,由 CentOS 联合创始人 Gregory Kurtzer 创建。2022 年 11 月,RESF 批准了组织章程和宪章,将控制权从创始人手中转移到这些书面制度中。Kurtzer 还创办了 CIQ。CIQ 是该项目的创始赞助商,并为 Rocky Linux 提供商业支持。
AlmaLinux 归 AlmaLinux OS Foundation 所有。该基金会是一个在特拉华州注册、于 2021 年 3 月成立的 501(c)(6) 非营利组织。基金会成员以交错的四年任期选举董事会成员。会议记录会在十四天内发布。其章程规定,无论赞助金额多少,任何单一雇主都不得拥有超过一个有投票权的董事会席位。CloudLinux 启动了该项目,并于 2024 年 10 月续签了白金赞助,每年金额为一百万美元。其 TuxCare 部门提供商业支持。
两种组织结构的设计目标都是防止任何单一公司重演 CentOS Linux 8 发生的情况。两者没有哪一个明显更安全。实际上,您在两种情况下都可以检查相同的内容:阅读组织章程,并确认负责出资的组织。
2023 年发生了哪些变化?现在仍然重要吗?
2023 年 6 月 21 日,Red Hat 宣布 CentOS Stream 将成为公开发布 RHEL 相关源代码的唯一仓库。在此之前,RHEL 软件包源代码会出现在 git.centos.org 中,重建项目正是从那里获取源代码。移除该源代码渠道并没有阻止重建项目继续运行,但确实迫使每个项目公开说明其获取源代码的方式。
Rocky 于 2023 年 6 月 29 日作出回应。它从 Universal Base Image (UBI) 容器镜像和按需付费的公有云实例中获取 RHEL 源代码,理由是“没有人能够阻止 GPL 软件的再分发”。2023 年 8 月,CIQ、Oracle 和 SUSE 创建了 Open Enterprise Linux Association (OpenELA),负责发布构建与 Enterprise Linux 逐项兼容的重建版本所需的源代码。AlmaLinux 不是该协会成员。
AlmaLinux 于 2023 年 7 月 13 日作出回应,但它改变了目标。该项目放弃 1:1 的逐项错误兼容,改为采用 ABI 兼容。用项目自己的话说:“我们不再受 Red Hat 逐项错误兼容要求的约束,这意味着现在可以接受 Red Hat 发布周期之外的错误修复。”同一篇文章还告诉用户,日常使用预计会“几乎没有变化”。
三年过去,源代码获取问题在实践中已经解决。此后,两个项目都发布了每个 RHEL 次要版本,发布时间表也大致相同。争论最终留下的,是两者承诺内容的差异。
Bug for bug 还是 ABI 兼容:两者有什么区别?
Rocky Linux 的主页仍将该发行版描述为与 RHEL 实现 100% 的 bug for bug 兼容。Bug for bug 表示重建版本会复现 RHEL 的行为,包括其中的缺陷。如果 RHEL 中的某个软件包存在 bug,Rocky Linux 中的同一软件包也会保留该 bug,因此 Red Hat 知识库文章中的解决方法无需转换即可应用。
ABI 兼容的范围更窄,也更精确。ABI,即应用程序二进制接口,是编译程序所依赖的二进制契约,包括符号名称、结构布局、调用约定和库版本。只要保持该契约稳定,针对 RHEL 构建的二进制程序就能加载并运行。这个承诺并不表示必须匹配 RHEL 的 bug。
其结果很明确。AlmaLinux 可以在 Red Hat 修复某个 bug 之前先修复它,也可以继续提供 Red Hat 已移除的驱动。这两种做法都会有意使其行为偏离 RHEL。Rocky Linux 按设计不会这样做,因此它会以认证所关注的方式保持可预测性。
因此,关键在于您需要哪一种承诺。您需要服务器的行为与 RHEL 完全一致,还是只需要为 RHEL 构建的软件能够在该服务器上运行?几乎所有人需要的都是后者。
面向 RHEL 构建的供应商软件包可以安装在这两个系统上吗?
可以。面向 RHEL 9 或 RHEL 10 构建的 RPM 可以在这两个系统上安装并运行,因为两者的 ABI 兼容,并且在工具看来,这两个发行版都以 Red Hat 系列系统的方式提供自身信息。负责提供这些信息的文件是 /etc/os-release。
NAME="AlmaLinux"
ID="almalinux"
ID_LIKE="rhel centos fedora"Rocky Linux 中的对应文件结构相同,也包含 NAME="Rocky Linux" 和 ID="rocky",并且同样在 ID_LIKE 中列出 rhel。读取 ID_LIKE、找到 rhel 并选择 Red Hat 路径的安装脚本可以在这两个系统上运行。只将 ID 与硬编码列表中的 rhel、centos 和 fedora 进行比较的脚本,在这两个系统上都会失败,并且在两者上都会以相同方式失败,显示“不支持的发行版”消息。这是脚本中的错误,不是两个系统之间的差异。
真正的例外在于商业支持,而不是技术因素。支持矩阵是商业文件。供应商的软件包可能在矩阵未列出的发行版上完美安装并运行,但软件出现故障时,供应商仍可能拒绝提供帮助。如果您购买了这类支持,请查看支持矩阵,并据此选择系统。这是唯一由支持矩阵替您做出决定的情况。
哪个发行版仍可在较旧的 CPU 上运行?
RHEL 10 将 x86-64 微架构级别的最低要求提升到了 x86-64-v3。该级别对应 Intel 的 Haswell 这一代和 AMD 的 Excavator,并要求 AVX2 等指令集扩展。Rocky Linux 10 在这一点上遵循 RHEL。其文档说明,x86-64-v3 是最低级别,v2 及更早级别不再受支持。
AlmaLinux 10 默认提供 v3 构建版本,同时提供单独的 x86-64-v2 构建版本。按照项目自己的说法,这样可以让使用较旧硬件的用户在未来十年继续接收安全更新。AlmaLinux 还会为该架构重新构建 EPEL 软件包,因为第三方 RHEL 10 软件包面向 v3。使用前需要了解这一限制:v2 构建版本适用于默认软件包集以及 AlmaLinux 自己的 v2 EPEL,其他软件包则必须由您自行针对 v2 重新构建。
这对 VPS 的影响比自有硬件更大,因为您无法选择宿主机处理器。在较旧或较便宜的宿主机上,或者虚拟机监控程序向客户机提供较保守的 CPU 模型时,即使物理芯片支持 AVX2,虚拟机也可能不会暴露 AVX2。此时,针对 v3 构建的软件包会尝试使用处理器不具备的指令,因此运行失败。在将整批实例迁移到 10 系列之前,请检查实例实际暴露的 CPU 功能。两个发行版的 9 系列仍以 v2 为最低级别。在 ARM 实例而非 x86 实例 上不会遇到这个问题,因为微架构级别是 x86-64 的概念。
AlmaLinux 10 在其他方面也体现了这种灵活性。该项目重新启用了对 150 多种上游已移除设备的支持,其中包括较旧 RAID 和 iSCSI 控制器的 PCI ID;同时还重新启用了 SPICE 的服务器端和客户端支持。默认启用帧指针,因此可以进行系统范围的性能分析。严格的逐项兼容承诺不允许进行这些更改,而 2023 年的决策为此提供了空间。
如何迁移现有的 CentOS 或 RHEL 服务器?
Rocky Linux 在其 rocky-tools 仓库中发布转换脚本。migrate2rocky.sh 用于将 Enterprise Linux 8 系统转换为 Rocky Linux 8,migrate2rocky9.sh 对 9 系列执行相同操作。每个脚本只能在同一主版本内工作。截至 2026 年 8 月,该仓库没有适用于 Enterprise Linux 10 的对应脚本,因此迁移到 Rocky Linux 10 需要重新安装。
AlmaLinux 发布了 almalinux-deploy.sh。它支持 Enterprise Linux 8、9 和 10,并可将 CentOS Stream、Oracle Linux、RHEL、Rocky Linux、MiracleLinux 和 Virtuozzo Linux 转换为 AlmaLinux,支持 x86_64、aarch64、ppc64le 和 s390x 架构。开始前应阅读其文档中列出的限制。对于需要引导加载程序的系统,只支持 GRUB2。Oracle 的 UEK(unbreakable enterprise kernel)等自定义内核不会自动移除,这会导致计算机无法在 Secure Boot 下启动。
如果要跨主版本迁移,AlmaLinux 维护了基于 Red Hat leapp 框架构建的 ELevate。文档列出的迁移路径包括 CentOS 7 到 EL8、AlmaLinux 8 或 CentOS Stream 8 到 EL9,以及 AlmaLinux 9 或 CentOS Stream 9 到 EL10。文档将目标写为 EL8、EL9 或 EL10,而不是指定某个发行版,因为最终使用哪个 Enterprise Linux 发行版由您选择。
上述任何操作都会重写发行版软件包,并重新安装系统的大部分组件。请先创建服务商快照。按照 AlmaLinux 官方文档的建议,在 screen 或 tmux 中执行转换,因为如果 SSH 连接在转换过程中途断开,计算机可能会处于不适合通过救援控制台排查的状态。
那么应该选择哪一个?
对于典型的 VPS 工作负载,选择哪一个都可以。两者安装的软件包相同,并且在同一年结束支持。选择其中一个,并在运行的每台服务器上使用它,不要再反复考虑。保持一致比两者之间的差异更重要,因为混用两种发行版会使您需要跟踪的镜像和勘误源数量翻倍。当您同时管理多台 Linux 服务器时,这项成本会快速增加。
例外情况很少,而且每一种都由偏好之外的因素决定。
- 主机处理器早于 Haswell,或者 hypervisor 未向 guest 暴露 AVX2。AlmaLinux 10 提供 x86-64-v2 构建版本,Rocky Linux 10 则没有。
- 您付费使用的供应商在其支持矩阵中指定了某个发行版。请使用该发行版。
- 您需要与 RHEL 完全一致的行为以满足认证或审计要求。Rocky Linux 明确以逐个 bug 兼容为目标,而 AlmaLinux 的目标明确不是这样。
- 您要转换正在运行的服务器,而不是新建服务器。AlmaLinux 的工具目前支持更多源发行版和更多主版本,其中包括 Enterprise Linux 10。
如果真正的问题是选择 Enterprise Linux 还是其他系统,那么您选择的是生命周期模型。Enterprise Linux 发行版可在同一套软件包上提供 10 年支持,无需规划版本跃迁。Ubuntu 的长期支持版本提供 5 年标准支持,并且每 2 年提供一条受支持的升级路径。这是另一种取舍,详见Ubuntu LTS 与 interim 版本的比较。无论安装哪一个发行版,机器上的第一个小时都大致相同。因此,在部署任何内容前,请先完成新 VPS 上的前 10 分钟。
FAQ
Rocky Linux 还是 AlmaLinux 更接近 Red Hat Enterprise Linux?
按 Rocky Linux 自己公布的目标,Rocky Linux 更接近。其主页称,该发行版旨在与 RHEL 实现 100% 的逐缺陷兼容。这意味着它希望复现 RHEL 的行为,包括其中的缺陷。AlmaLinux 于 2023 年 7 月 13 日宣布,改为以 ABI(应用程序二进制接口)兼容性为目标。因此,为 RHEL 构建的软件可以在 AlmaLinux 上运行,但底层代码可能包含 RHEL 尚未发布的修复。对于运行常规服务器软件,两者没有实际差异。如果认证要求符合 RHEL 的具体行为,那么这种区别就是关键所在。
不重新安装的情况下,可以从 Rocky Linux 切换到 AlmaLinux 吗?
可以,但只支持从 Rocky Linux 切换到 AlmaLinux。AlmaLinux 的 almalinux-deploy.sh 将 Rocky Linux 8、9 和 10 列为支持的源系统,同时还支持 CentOS Stream、Oracle Linux、RHEL 和 MiracleLinux。反向切换的支持范围更有限:Rocky 的 rocky-tools 软件仓库只提供 Enterprise Linux 8 和 9 的转换脚本,因此截至 2026 年 8 月,没有原地切换到 Rocky Linux 10 的路径。在转换前创建快照,并在可承受连接中断的会话中执行转换,因为该过程会替换发行版软件包,并重新安装系统中的大量组件。
为 RHEL 构建的软件包可以在两者上运行吗?
可以,普通 RPM 软件包和第三方软件仓库通常都可以。两个发行版都保持 RHEL 应用程序二进制接口,并且都通过 ID_LIKE="rhel centos fedora" 在 /etc/os-release 中标识自身。因此,检查 Red Hat 系统家族的软件包或安装脚本会选择正确的处理路径。例外属于商业支持范围,而不是技术兼容性问题:供应商可能只支持其支持矩阵列出的发行版,即使其软件包可以在两者上安装和运行。如果您购买了该软件的支持服务,应以支持矩阵为准。
在配备较旧 CPU 的低成本 VPS 上,应选择哪个发行版?
如果您希望使用 10 系列,应选择 AlmaLinux。RHEL 10 将 x86-64 基线提升到 v3 微架构级别,需要 Intel Haswell 或 AMD Excavator 级别的处理器;Rocky Linux 10 也遵循这一基线。AlmaLinux 10 额外提供 x86-64-v2 构建版本,适用于较旧硬件,并提供十年的安全更新。确定使用哪个发行版前,请检查实例实际提供的 CPU 特性,因为虚拟机看到的是 hypervisor 提供的 CPU 型号,不一定是宿主机的完整指令集。两个发行版的 9 系列仍可在 v2 硬件上运行。