← 返回信息流
AI 资讯Hacker News·2 天前

为Holo Core打造Arch Linux Aarch64移植版

原标题:Building an Arch Linux Aarch64 Port for Holo Core

速览

开发团队正为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 开发和镜像创建所需的包集合。即便如此,包括运行时和构建依赖在内,仍涉及数千个包。

移植面临的两大核心问题

  1. 为异架构构建最新 Arch 包版本:从 x86_64 到 aarch64 的交叉编译并非简单重编译。
  2. 为没有 CI 基础设施的滚动发行版创建 CI 系统:Arch Linux 是滚动更新发行版,需要 CI 能够正确追踪依赖变化,并在发行版更新时自动调整。

主要挑战

  • 构建顺序与依赖树:Arch Linux 的 state Git 仓库记录的包推送顺序往往不适合重建,需要手动纠正顺序以形成有效的构建序列。
  • 滚动更新的持续追赶:在准备初始移植期间,上游包和依赖链不断前进。无法跳过中间版本,因为许多包依赖中间版本才能构建后续版本(例如 Rust 1.91 需要先有 1.90,1.90 又需要 1.89,依此类推)。CI 工具必须处理这种链式依赖。
  • SONAME 过渡:某些库(如 icugpgme,均为 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-staticqemu-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 进行实验。这降低了进入门槛,有助于早期发现兼容性问题,并促进社区贡献。
查看原文 →collabora.com