Rocky Linux 与 AlmaLinux VPS 怎么选?
Rocky Linux 与 AlmaLinux 都重建相同的 RHEL 源代码,但兼容承诺不同。了解 AlmaLinux 10 支持 Haswell 之前的 CPU,而 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 年。Rocky Linux 和 AlmaLinux 都因此诞生。两者都在 2021 年出现,并且目标相同:提供 RHEL 的免费重建版本,让运维人员安装后可以长期运行,十年内无需更换。CentOS 最初为何承担这一角色,以及一个 Red Hat Linux 如何发展为 Fedora、RHEL 和一系列重建版本,请参阅Red Hat、CentOS、Rocky 和 AlmaLinux 背后的完整历史。
Rocky Linux 和 AlmaLinux 的共同点
从这里开始,因为两者的共同点占据了大部分内容。两者都基于相同的上游 RHEL 源码重新构建,因此提供相同的软件包版本、相同的 dnf 包管理器、相同的 SELinux(security enhanced Linux)策略、相同的 firewalld 前端,以及相同的 systemd 单元布局。配置文件位于相同的路径。为其中一个发行版编写的指南,只需修改名称即可用于另一个发行版。这一点也适用于实际操作:安装 Docker Engine 在两者上的步骤完全相同,包括声称提供 docker 命令的 podman 软件包,以及绑定挂载所需的 SELinux 重新标记。防火墙的行为也相同,因此在任一发行版上,使用 firewalld 开放 SSH 和 Web 端口 都使用完全相同的 firewall-cmd 命令,其中包括决定规则是否在重启后保留的 --permanent 标志。
两者都紧跟 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 镜像相差两周发布,并不意味着有两周没有补丁。无论使用哪个发行版,无需登录即可获取这些勘误更新,操作方式都相同。因此,配置 dnf-automatic 按计划安装安全更新的步骤完全一致。安装补丁不等于运行补丁。确定哪些更新需要重启、哪些更新只需重启服务在两个发行版上都使用相同的 needs-restarting 命令,因为该命令都继承自同一个 RHEL 软件包。
两者也都采用从 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 所有。该基金会是一个在特拉华州注册成立的 501(c)(6) 非营利组织,成立于 2021 年 3 月。其董事会由基金会成员选举产生,董事任期错开、均为 4 年。会议纪要会在 14 天内发布。其组织章程规定,无论赞助金额多少,任何单一雇主都不得占有超过一个有表决权的董事会席位。CloudLinux 启动了该项目,并于 2024 年 10 月续签了白金赞助,每年金额为 1 百万美元。其 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 发行版由您选择。
这些工具都会改写 release 软件包,并重新安装系统的大部分组件。请先创建服务提供商快照。按照 AlmaLinux 官方文档的建议,在 screen 或 tmux 中运行转换,因为 SSH 连接如果在转换过程中途断开,服务器可能会处于不适合通过救援控制台排查的状态。
那么应该选择哪一个?
对于典型的 VPS 工作负载,选择哪一个都可以。两者安装的软件包相同,并且在同一年结束支持。选择其中一个,并在运行的每台服务器上统一使用,不要再反复考虑。统一性比两者之间的差异更重要,因为混用会使需要跟踪的镜像和勘误源数量翻倍。管理多台 Linux 服务器后,这项成本会迅速增加,详见同时管理多台 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 自身的目标,它更接近。其主页称该发行版旨在实现与 RHEL 逐个缺陷完全兼容。这表示它不仅要复现 RHEL 的行为,也要复现其中的缺陷。AlmaLinux 于 2023 年 7 月 13 日宣布,改为以 ABI(应用程序二进制接口)兼容性为目标。因此,为 RHEL 构建的软件可以在 AlmaLinux 上运行,但底层代码可能包含 RHEL 尚未发布的修复。对于运行常规服务器软件,两者没有实际区别。对于要求符合 RHEL 行为的认证,这一差异就是关键。
不重新安装系统,可以从 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 应用程序二进制接口,并在 /etc/os-release 中通过 ID_LIKE="rhel centos fedora" 标识自身。因此,检查 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 硬件上运行。