Holo Core 向けの Arch Linux Aarch64 ポートの構築

2026/07/18 0:50

Holo Core 向けの Arch Linux Aarch64 ポートの構築

RSS: https://news.ycombinator.com/rss

要約

日本語翻訳:

サマリー:

Valve と Collabora は、Arch Linux が ARM ベースの Steam Frame ハードウェア上で動作することを成功裡に実証し、同ハードウェアにおける aarch64 への公式サポート欠如を克服しました。このマイルストーンは、Arch Linux の複雑なロールリングリリースモデル(rolling-release model)を管理するためにカスタムツールと CI インフラストラクチャを適応させることで達成され、ICU や gpgme のようなライブラリにおける SONAME 移行(ビルド中に新旧両方のバージョンが必要となるケース)の処理などを含む課題に取り組みました。その結果生じた「Holo Core」はまだ完全なオペレーティングシステムではなく、開発用およびイメージ作成用のエッセンシャルパッケージを内包したプロトタイプです(数千のパッケージ)。これは、頻繁な更新と依存関係の管理という複雑な課題は、専用インフラストラクチャによって解決可能であることを証明しており、特に次の 2 つの主要問題への対応を達成しています:1) 外部アーキテクチャ上で最新バイナリをビルドすること、2) Arch Linux のロールリングリリースにおける依存関係更新を処理できる CI システムを構築すること。

主なアセットには、以下のものがあります:https://gitlab.steamos.cloud/holo/holo-core-aarch64-preview のソースコード、https://holo-packages.steamos.cloud/holo-core-aarch64-preview/mash-20251118 のバイナリパッケージ、そして registry.gitlab.steamos.cloud/holo/holo-core-aarch64-preview/base-devel の Docker コンテナです。これらのアセットは、Arch Linux の「state」リポジトリのコミット 97c0a0b47d15 に基づくスナップショットからのパッケージ subsets であり、aarch64 ビルド向けに修正されたものです。現在では Arch Linux のすべてのパッケージを再ビルドしておらず、初期の目標は Steam Frame 用として開発およびイメージ作成パッケージを提供することにあります。今後の反復では、ソフトウェアツリーを拡張して一般利用をサポートする予定です。

このプロジェクトはまた、アップストリーム環境の変化(ソース移転、ホスティング移行、チェックサムハッシュの拡張など)による歴史的回放問題、アップストリームサービスのダウンロードレート制限などのインフラストラクチャ課題、そして互換性のない aarch64 パッケージに対するパッチが必要となる可能性といった課題を浮き彫りにしています。ユーザーは、このプレビューを ARM デバイスで直接使用するか、または QEMU と提供された Docker コンテナを用いて標準的な Intel CPU 上でエミュレートすることができます。このプロジェクトは、Arch Linux を Steam Frame デバイスに展開するための重要な機能基盤を確立し、開発者が陳腐化したり互換性のないレガシーシステムに依存せずに、外部アーキテクチャ上で最新バイナリをコンパイルすることを可能にします。

本文

Valve × Collabora: アーチ Linux aarch64 移植プロジェクト「Holo Core」の公開と進捗

Valve は自社製品(SteamOS など)向けに、Linux の派生版である アーチ(Arch)Linux を採用しています。Collabora では、この方針を支持し、aarch64 アーキテクチャ用の純粋な移植プロジェクト「Holo Core」において Valve と緊密に協力してまいりました。

本来、アーチ Linux は公式に aarch64 のサポートを行っていないため、ツールチェーンと CI(継続的インテグレーション)インフラの構築に多大な労力を費やしてきました。

公開されたリソース

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

注記: 公開されたアーティファクトは、アーチ Linux の「state」リポジトリスナップショット(コミット

97c0a0b47d15
)に含まれるパッケージ群のサブセットに対応しており、aarch64 ビルドを可能にするための修正が反映されています。

裏側で起こっていること:課題と解決策

現時点では、アーチ Linux リポジトリ内の全パッケージを対象とした「全世界(all-the-world)」再ビルドは完了していません。今回の目標は、Steam Frame の開発用イメージ作成に必要な一連のパッケージセットの提供です。

しかし、数千ものパッケージを含む依存関係樹を考慮すると、単純な再コンパイル以上の複雑さが伴います。主に以下の 2 つの課題に対処するため、**「裏側でのビルドリプレイモデル」**を開発しました。

主要な技術的課題と対応策

  1. 他アーキテクチャ向けバイナリのビルド
    • 最新のアーチ Linux パッケージから、aarch64 用のバイナリを再構築・インストールします。
  2. CI システムの自動化と依存関係解決
    • CI インフラを持たない配布物向けに自動ビルドを実現し、ローリングリリース型モデルにおける正確な依存関係の特定と決定体制を整えます。

具体的な難問

  • Git リポジトリの信頼性不足: パッケージリポジトリの履歴を追跡する状態 Git は、複数のパッケージを一括プッシュする際、再ビルドに適さない順序で保存されるケースが多いため、手動での順序修正が必要です。
  • ローリングリリースの性質: パッケージと依存関係チェーンは常に進化しており、開発が進むにつれて中間バージョンがスキップされがちです。後続のバージョンをビルドするには中間パッケージが必要となるため(例:Rust 1.91 をビルドするには 1.90 → 1.89 までの遡及が必要)、歴史的なビルドシーケンスの完全再現が必須となります。
  • SONAME とライブラリの移行:
    pacman
    が新しいライブラリバージョンを要求する一方で、ビルド環境自体は古いバージョンに依存している場合があり、実行時には両方のバージョンが存在する必要があります(例:icu, gpgme など)。
  • 時間的遅延とインフラ変化: 数ヶ月前のパッケージを再ビルドしようとすると、上流の状況が変化しています。ソースコード場所の変更、ホスティングサービスの移転、コミットハッシュの形式変更などにより、チェックサムが変わることがあります。
  • ボット対策によるダウンロード制限: 上流サービスがボット防御のために接続数や速度を制限しているため、依存関係解決用の CI パイプラインにとって困難な状況です。
  • 互換性の問題: aarch64 と単純に互換性のないパッケージが存在するため、追加のパッチ適用が必要です。

ビルドリプレイモデルについて

上記の問題に対処するため、複雑なツールセットを開発しました。ブートストラップフェーズから特定の Git スナップショットまでの依存関係チェーン全体を解決し、「リプレイ」方式でビルドを実行できます。

  • 現在の状態: 公開されたパッケージツリーは概念実証(Proof of Concept)であり、フル機能のツールセットと CI インフラストラクチャーによる完全なビルドツリーの生成を示しています。
  • 将来の計画:
    • ツールとインフラのさらなる開発(現在は非公開)。
    • アーチ Linux の進化を追跡するシステムの構築。
    • アップストリームのアーチ Linux プロジェクトとの協力による、自動化された再現可能ビルドの実現。
    • 将来的には AMD64/X86_64 版 SteamOS で使用されているパッケージリビジョンとの同期を効率的に行うことを目指します。

aarch64 パッケージのビルド方法(プレビュー版)

aarch64 ホストをお持ちでない場合、x86_64 ホスト上で

QEMU
を用いてエミュレーション環境を構築します。以下の手順は最近のアーチ Linux ホストでテスト済みです。

1. x86_64 ホストの準備(QEMU のインストール)

異なるアーキテクチャのコンテナを実行するには、以下が必要です。

sudo pacman -S --noconfirm qemu-user-static qemu-user-static-binfmt

オプション:x86_64 上での

sudo
を動作させる デフォルト設定では SUID バイナリ(例:
sudo
,
makepkg
)が阻止されることがあります。以下の手順で有効化します。

  1. 設定をコピー:
    sudo cp /usr/lib/binfmt.d/qemu-aarch64-static.conf /etc/binfmt.d/qemu-aarch64-static.conf
    
  2. :FP
    フラグを
    :FCP
    に変更
    (C credentials フラグの追加):
    sudo sed -i -e "s/:FP$/:FCP/" /etc/binfmt.d/qemu-aarch64-static.conf
    
  3. 構成を再登録:
    sudo systemctl restart systemd-binfmt.service
    

2. ビルドコンテナの作成とテスト

以下は

distrobox
を使用した簡易的なセットアップ例です。

A. distrobox のインストール

sudo pacman -S --noconfirm distrobox

B. UID/GID マッピングの確認と設定 rootless コンテナのため、適切な ID 空間マッピングが必要です。

# 現在のユーザーの UID/GID を確認
grep "$USER" /etc/subuid /etc/subgid

# subuid/subgid の範囲を追加(例:100000-165535)
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER

C. コンテナの作成

distrobox create \
  --platform linux/arm64 \
  --image registry.gitlab.steamos.cloud/holo/holo-core-aarch64-preview/base-devel:latest \
  --name builder

コンテナ内へのアクセスと確認:

$ distrobox enter builder
Starting container...                            [ OK ]
Installing basic packages...                     [ OK ]
Setting up devpts mounts...                      [ OK ]
Setting up read-only mounts...                   [ OK ]
Setting up read-write mounts...                  [ OK ]
Setting up host's sockets integration...         [ OK ]
Integrating host's themes, icons, fonts...       [ OK ]
Setting up distrobox profile...                  [ OK ]
Setting up sudo...                               [ OK ]
Setting up user's group list...                  [ OK ]
Setting up existing user - shell...              [ OK ]
Setting up existing user - groups...             [ OK ]
Ensuring user's access...                        [ OK ]
Container Setup Complete!

[user@builder ~]$ file /bin/bash
/bin/bash: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=6b5cf11c690122687bb20c169b56aadf44a9aeb6, for GNU/Linux 4.4.0, stripped

[user@builder ~]$ cat /etc/os-release 
NAME="Holo core Aarch64 port (preview)"
PRETTY_NAME="Holo core Aarch64 port (preview)"
ID=holo-core
ID_LIKE=arch
VARIANT_ID=aarch64-preview
ANSI_COLOR="1;35"
HOME_URL="https://gitlab.steamos.cloud/holo/holo-core-aarch64-preview"
LOGO=holo
VERSION_ID=mash-20251118.1
BUILD_ID=240949

[user@builder ~]$ sudo pacman -Syu
:: Synchronizing package databases...
 core is up to date
 extra is up to date
:: Starting full system upgrade...
 there is nothing to do

3. パッケージのビルド

リポジトリからパッケージをダウンロードし、ビルドを実行します。

A. リポジトリとパッチの取得

$ git clone https://gitlab.steamos.cloud/holo/holo-core-aarch64-preview
$ cd holo-core-aarch64-preview/core-aarch64/c/coreutils/9.9-1

B. キーのインポートとビルド コンテナ内で作業します。GPG キーをインポートし、クリーンビルドを開始します。

$ distrobox enter builder -- gpg --import keys/pgp/*.asc
$ distrobox enter builder -- makepkg --cleanbuild --noconfirm --syncdeps

注意点: ビルドプロセスは時間がかかります。x86_64 ホスト上では、すべての

aarch64
バイナリが QEMU によるエミュレーションを通じて実行されることを理解しておいてください。

ビルド完了後、aarch64 アーキテクチャ用のパッケージが取得できます。

まとめと今後の展望

今回の「Holo Core」プロジェクトは、アーチ Linux の aarch64 移植における重要なマイルストーンです。 チームは現在、ツール開発を継続しており、コミュニティ全体でオープンなアプローチを追求していきます。将来的には、SteamOS の基盤となるより広いエコシステムへの貢献を目指してまいります。

詳細や最新情報は以下のリポジトリをご覧ください: 🔗

https://gitlab.steamos.cloud/holo/holo-core-aarch64-preview

同じ日のほかのニュース

一覧に戻る →

2026/07/19 23:41

Show HN:12万ドルのボウリングセンターシステムを、ESP32 1,600 ドルで置き換えました

## 日本語訳: このプロジェクトは、8レーンの郊外ボウリングセンターにおける重要なインフラストラクチャ問題を解決することを目的としています。同センターでは、2008 年の過時化した機械式スコアリングシステムが置換される必要があり、そのコストは 105,000 米ドルから 120,000 米ドルに上っています。著者(施設を運用する SRE)はこの高額な障壁とベンダーロックインを回避するために、コモディティ技術に基づいたカスタム・オープンソースのスタックを提案しています。このソリューションでは、RS485 ワイアードフォールバックを備えた ESPNow メッシュトポロジーで接続された ESP32 マイコンをノードに使用し、Raspberry Pi レーンコンピュータを Redis イベントストリーミングゲートウェイとして採用しています。このアーキテクチャにより、堅牢なデータ所有権の実現、トロンテーマのアニメーションのようなカスタマイズ可能な機能、ボールスピード計算やピン検出など的高度なロジックが可能になります。主な課題は各ノードに対して専用のファームウェアを開発することでしたが、結果的に作成されたプロトタイプのコストは約 1,600 米ドルに留まり(交換部品費数千米ドルに対して)、レーンペアあたり約 200 米ドルです。また、システムへの迅速な修理(5 分以内)やシステムのスワップ(10 分以内)も可能です。ハードウェア、ファームウェア、ソフトウェアを含む全設計は、OpenLaneLink でリリースされる予定であり、プロプライエタリ制約のない近代的なスコアリング機能を取り入れたい施設にとって、参入障壁を大幅に低下させるものです。

2026/07/14 23:23

並列プログラミングの禅

## Japanese Translation: 真の進歩は、単に計算資源や人的リソースを増加させることによって達成されるのではなく、すべての構成要素間の効果的な調整を必要とします。プロセッサや人材を増やすだけでは、元素同士の間で資源を競合させたり、孤立して動作したりするとシステムのスロットル化や燃え尽きをもたらすため、失敗することが往々にしてあります。この原理は『禅の心・初心者の心』に見られる教えに準拠しており、全身全霊の活動は残り物なく完全に燃える清潔な火に例えられています。同様に、ソフトウェアシステムにおいて隠された情報が不安を引き起こすように、不整合な人間の知性と感情は疲れをもたらします。 今後、気候モデル化や創薬のような複雑な全球的課題を解決するには、単に新たな能力を獲得するだけでなく、既存の能力との同期を mastery する必要があります。人工知能や大規模データ解析に依存する産業は、生ハードウェアの拡張から内部通信の最適化とワークフロー統合へと焦点を移さなければなりません。また、個人やチームも感情的な深さと知的創造性を整合させる包括的なアプローチを採用する必要があります。これらの重要な同期問題を解決しない場合、人類は権力の分断がさらなる進化和理解を停止させるという厳しい天井に直面するリスクにあります。

2026/07/20 3:57

ホームラボ #1:MikroTik を家庭用ルーターとして採用する

## Japanese Translation: 本ガイドでは、自宅ラベル用にISPの設備を置き換えるマイクロティク L009UiGS-RMルーターの設定を詳述し、ローカルバックアップの活用およびネットワークパフォーマンスの最適化を実現します。プロセスは、IPoE または PPPoE のいずれかであるなど接続の特定から始まり、MAC クローンリングによるハードウェアバインディングへの対応へと続きます。重要な決定要因となるのが IPv4 アドレスの割り当てであり、ISP からプライベート IPv4 アドレス(キャリアグレード NAT)が提供される場合、パブリック IP アドオンを購入しない限り入方向的接続はブロックされ、DS-Lite 構成では MikroTik の自動 AFTR サポートがないためポートフォワーディングが破綻する可能性があります。この特定のセットアップでは、著者は VLAN 35 を介した PPPoE およびプライベート IPv4 アドレスを使用しています。 設定には、WAN リンク(ether1)上で VLAN インターフェースを作成し、ISP に接続するための PPPoE クライアントを確立することが含まれます。大量転送時のバッファーブloat によるレイテンシを緩和するため、ガイドでは `fq-codel` キューイングアルゴリズムを採用しており、このキューを経由するようにトラフィックが通過するようファストトラックファイアウォールルールの無効化が必要です。無線管理は、ポート 8 に接続された別個の PoE 給電アクセスポイント上で CAPsMAN を使用して行われます。結局のところ、このプロセスはユーザーに完全なネットワーク制御を付与し、可能な限り制約のある ISP の制限(例えば CGNAT)を回避するとともに、感応度が高いアプリケーションに対して信頼性が高く最適化された接続を提供します。

Holo Core 向けの Arch Linux Aarch64 ポートの構築 | そっか~ニュース