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件のコメント
Hacker Newsの意見
ソフトウェア/OSをユーザーが望むとおりにカスタマイズする深い探究への情熱
投稿に対する徹底的で興味深い評価
Netscape のメテオシャワー favicon への懐かしさ
unRaid NAS サーバー向けに GPU を注文し、Docker イメージ経由で Steam Headless を実装したい
nvidia-persistencedの呼び出しで可能)SteamOS をベースにしたディストリビューションはすでに存在する
A/B アップグレードに関する意見
Linux の経験を増やすために、ゲーミングハンドヘルド(Legion Go)を使った経験の共有
bazzite.gg の AMD ハードウェアにおける 120Hz VRR 対応と HDR 対応のアルファテスト体験の共有
SteamOS が Arch Linux ベースであることを知って興味を持った
Linux PC で SteamOS を動かしたいなら HoloISO を勧める