为Holo Core打造Arch Linux Aarch64移植版
速览
开发团队正为Holo Core构建基于Arch Linux的Aarch64移植版,使其能在ARM64设备上运行。这扩展了Holo Core的硬件兼容性,并利用Arch Linux的滚动更新提供最新软件包。该移植将提升Holo Core在嵌入式与边缘计算场景的适用性。
AI 深度解读
背景
Valve 在其产品中使用了基于 Arch Linux 的定制发行版。Collabora 与 Valve 合作开发了 Holo Core——一个纯 aarch64 架构的 Arch Linux 移植版本,旨在作为 Steam Frame(采用 aarch64 CPU)的底层操作系统。由于 Arch Linux 官方并不支持 aarch64 架构,因此需要从头构建工具链和 CI 基础设施来实现这一目标。本文是首次公开该移植工作的阶段性成果,发布了预编译的二进制包、源码以及开发容器,供社区探索和实验。
核心内容
已发布的资源
Denis Pynkin 于 2026 年 7 月 17 日发文,宣布了 Holo Core 的 aarch64 移植预览版本。已发布的资源包括:
- 源码仓库:https://gitlab.steamos.cloud/holo/holo-core-aarch64-preview
- 二进制包:https://holo-packages.steamos.cloud/holo-core-aarch64-preview/mash-20251118
- Docker 容器:
registry.gitlab.steamos.cloud/holo/holo-core-aarch64-preview/base-devel
这些制品对应 Arch Linux 的 state 仓库快照(commit 97c0a0b47d15)的一个子集,并针对 aarch64 架构进行了必要的修改。目前尚未重建整个 Arch Linux 仓库的全部包,而是专注于提供 Steam Frame 开发和镜像创建所需的包集合。即便如此,包括运行时和构建依赖在内,仍涉及数千个包。
移植面临的两大核心问题
- 为异架构构建最新 Arch 包版本:从 x86_64 到 aarch64 的交叉编译并非简单重编译。
- 为没有 CI 基础设施的滚动发行版创建 CI 系统:Arch Linux 是滚动更新发行版,需要 CI 能够正确追踪依赖变化,并在发行版更新时自动调整。
主要挑战
- 构建顺序与依赖树:Arch Linux 的 state Git 仓库记录的包推送顺序往往不适合重建,需要手动纠正顺序以形成有效的构建序列。
- 滚动更新的持续追赶:在准备初始移植期间,上游包和依赖链不断前进。无法跳过中间版本,因为许多包依赖中间版本才能构建后续版本(例如 Rust 1.91 需要先有 1.90,1.90 又需要 1.89,依此类推)。CI 工具必须处理这种链式依赖。
- SONAME 过渡:某些库(如
icu、gpgme,均为pacman所依赖)在构建过程中会改变 SONAME。构建时使用的旧版包管理器依赖旧库,而新构建出的包管理器却依赖新库,两者必须同时共存。 - 时间与上游变化:重放历史构建序列时,上游可能已经迁移、变更校验和、缩短的 Git 哈希被扩展等,导致源文件不可用。
- 基础设施限制:如今许多上游服务对爬虫和 AI 有下载速率限制或连接屏蔽,影响 CI 直接下载源码。
- 架构不兼容:部分包需要额外补丁才能在 aarch64 上正确构建和运行。
- 人为错误与边界情况:维护自己的 Arch Linux 移植版本时,总会有各种 corner case。
解决方案与工具链
为了应对上述挑战,团队开发了一套复杂的工具链,能够:
- 计算完整的构建树,解析完整依赖链。
- 从初始引导阶段开始,重放 Arch Linux 包构建,直到指定的 state Git 仓库快照,包括所有必要的中间重建。
- 基于 GitLab 的 CI 能够以可重复的方式构建所有这些包。
目前工具链尚未发布,但正在开发中。当前发布的包树并非一次性产物,而是概念验证,证明了工具链和 CI 基础设施能够生成功能完整的包树,并支持产品发布。
下一步计划
- 构建能够持续跟踪 Arch Linux 滚动更新的 CI 系统,实现影子构建。
- 与上游 Arch Linux 项目合作,帮助其完成 aarch64 架构的官方移植,并推进自动化可重复构建。
实验指南
预览版已足够成熟,可用于在 aarch64 主机上直接实验(无需虚拟化)。若只有 x86_64 主机,可通过 QEMU 用户态模拟运行 aarch64 容器。需要安装 qemu-user-static 和 qemu-user-static-binfmt,并确保 binfmt 配置正确(注意默认配置中的 :FP 标志会影响 SUID 程序执行)。
关键要点
- Holo Core 是 Valve 为 Steam Frame 定制的 aarch64 纯架构 Arch Linux 移植,由 Collabora 合作开发。
- 由于 Arch Linux 官方不支持 aarch64,移植工作从零搭建了工具链和 CI 基础设施。
- 已发布源码、二进制包和 Docker 容器,对应 2025 年 11 月 18 日的快照,包含数千个包。
- 两大核心难题:为异架构构建最新包,以及为滚动发行版构建可重复的 CI 系统。
- 关键挑战包括依赖顺序、滚动更新追赶、SONAME 过渡、上游变迁、基础设施限制、架构兼容性等。
- 团队开发了专用工具链,能够从初始引导重放整个构建历史,并支持 GitLab CI 的可重复构建。
- 工具链尚未开源,但团队正在积极开发,下一个目标是实现持续跟踪上游的 CI 系统。
- 预览版已可用于实验,x86_64 主机可通过 QEMU 模拟运行 aarch64 容器。
意义与影响
- 对 Valve 产品线:Holo Core 是 Steam Frame 操作系统的基石,此次公开预览意味着 Valve 的 aarch64 硬件生态(如游戏掌机或新型设备)正在走向成熟,为开发者提供了早期接入和测试的机会。
- 对 Arch Linux 社区:该移植工作不仅填补了 Arch Linux 官方在 aarch64 上的空白,还提供了可复现的构建工具链和 CI 范式。Collabora 表示将与上游合作,推动 Arch Linux 官方对 aarch64 的支持,有望加速整个发行版在多架构领域的普及。
- 对开源基础设施:针对滚动发行版构建可重复 CI 的解决方案(如处理依赖链、SONAME 过渡、历史重放等)具有通用价值,其他发行版或嵌入式项目可借鉴经验。
- 对开发者:现在任何人都可以在 aarch64 硬件上运行 Arch Linux 环境,并基于 Holo Core 进行实验。这降低了进入门槛,有助于早期发现兼容性问题,并促进社区贡献。
