1 ポイント 投稿者 GN⁺ 2024-01-01 | 1件のコメント | WhatsAppで共有

SteamOSをカスタムフォークする方法

  • SteamOS 3("Holo") は、Valve Softwareの携帯型PCゲーム機であるSteam Deck向けに作られた、ArchベースのLinuxディストリビューション。
  • SteamOSは、新しい読み取り専用ルートファイルシステムを非アクティブなパーティションにダウンロードし、アトミックに更新を行う。
  • ユーザーは steamos-devmode を実行してルートファイルシステムのロックを解除し、pacmanデータベースを整理することで、通常のパッケージマネージャーを備えた動作するLinuxディストリビューションを得られる。

SteamOSのシステム構造

  • SteamOSシステムは8つのパーティションで構成されており、EFIシステムパーティションにはステージ1ブートローダーとメタデータファイルが保存される。
  • 2つのA/Bパーティションセットには、ステージ2ブートローダー(GRUB)、ルートファイルシステム、/var パーティションが含まれる。
  • 残りのディスク領域を使う単一のホームパーティションがある。

カーネルをパッチする方法

  • ValveはSteamOSで大幅に修正されたLinuxカーネルを使用している。
  • カーネルソースはValveのpacmanミラーで見つけることができ、現在の安定版イメージのカーネルソースはオンラインでダウンロード可能。
  • ソースtarballは2.9 GiBのサイズがあり、これは完全なLinuxのGitツリーを含んでいるため。

ルートファイルシステムの再パッケージ化

  • ルートファイルシステムを変更し、ユーザーのニーズに合わせて「再パッケージ化」することが可能。
  • ルートファイルシステムイメージは、Steam Deckを購入するか、SteamOSのリカバリーイメージをダウンロードすることで入手できる。
  • casyncを使って .castr リポジトリから必要なイメージ断片をダウンロードし、非アクティブなルートファイルシステムパーティションに書き込む形でイメージを取得できる。

RAUCバンドルの作成

  • casyncリポジトリとblobインデックスを生成した後、RAUCバンドルを作成できる。
  • RAUCはX.509証明書を使って信頼を確立するため、新しい証明書をルートファイルシステムにインストールする必要がある。
  • RAUCバンドルには rootfs.img.raucb と rootfs.img.caibx を含める必要があり、これらはWebサーバーにアップロードしなければならない。

アップデートサーバーの設定

  • アップデートサーバーはJSONファイルを提供する必要があり、このファイルはイメージの manifest.json と一致していなければならない。
  • Caddyの設定を使うことで、steamos-atomupd が QueryUrl と MetaUrl に対して行うリクエストを live.json にリダイレクトできる。

GN⁺の見解

  • カスタムOSの重要性: この記事は、ユーザーが自分のニーズに合わせてオペレーティングシステムをカスタマイズする方法を示している。これは、ソフトウェア開発者が用途に応じたソリューションを提供するうえで重要。
  • 学習資料としての価値: このプロセスを通じて、初級ソフトウェアエンジニアはLinuxディストリビューションの仕組みとカスタマイズ方法を学べる。
  • コミュニティへの貢献: このような知識共有はオープンソースコミュニティへの貢献となり、ほかのユーザーが似たプロジェクトを始める際の助けになる。

1件のコメント

 
GN⁺ 2024-01-01
Hacker Newsの意見
  • ソフトウェア/OSをユーザーが望むとおりにカスタマイズする深い探究への情熱

    • Steam Deck には Tivoization(ハードウェアメーカーが特定のソフトウェアしか実行できないよう制限する行為)への懸念がなくてよかった
    • 記事で最も興味深かったのは、Steam Deck が nixpkgs をサポートしているという言及(デフォルトではインストールされていないが、OS 全体をフォークしなくてもデバイスにインストール可能)
  • 投稿に対する徹底的で興味深い評価

    • 個人的にはこのようなことはしないと思う
    • Linux で最も多く作業したのは Raspberry Pi の時代で、それでも 1% に過ぎなかった
    • 著者に賛辞を送りたい
  • Netscape のメテオシャワー favicon への懐かしさ

  • unRaid NAS サーバー向けに GPU を注文し、Docker イメージ経由で Steam Headless を実装したい

    • Windows ノートPCで Moonlight クライアントを使う予定
    • NAS はほとんどの時間アイドル状態なので、新しいデスクトップ用ハードウェアを買うより良いと思う
    • Nvidia カードの電力設定をアイドル状態に保つ必要がある(おそらく nvidia-persistenced の呼び出しで可能)
  • SteamOS をベースにしたディストリビューションはすでに存在する

    • ChimeraOS は PC とコントローラーベースの利用に適しており、Steam Deck アドオンも含めて完全に動作する
  • A/B アップグレードに関する意見

    • ライブディストリビューションを使うか、古いバージョンのリカバリーシステムをパーティションにインストールする方が、より簡単かもしれない
    • 著者は Arch Linux に移行した最近の経験を共有し、Valve より Arch を信頼していると述べた
    • Arch のパッケージ品質、メインリポジトリの迅速な更新、有用な AUR パッケージ群が NixOS から移行した理由
  • Linux の経験を増やすために、ゲーミングハンドヘルド(Legion Go)を使った経験の共有

    • Linux は互換性が限られ、継続的な調整が必要なように見えて避けていた
    • 不変ファイルシステムと、従来の Linux がソフトウェアに root 権限を簡単に与えることへの好奇心
    • NixOS の使用経験の共有:さまざまなコンポーネントを簡単に試せて、不要なら完全に削除できる
    • Jovian コミュニティは Valve の SteamOS tarball を GitHub 上でタグ付きコミットとして再構成し、Valve の社員のようにソースをたどれるようにしている
    • Jovian を通じて NixOS 上に自分用の SteamOS コピーをインストールできる
  • bazzite.gg の AMD ハードウェアにおける 120Hz VRR 対応と HDR 対応のアルファテスト体験の共有

  • SteamOS が Arch Linux ベースであることを知って興味を持った

  • Linux PC で SteamOS を動かしたいなら HoloISO を勧める