- BazziteはFedora Atomicベースのカスタムイメージで、Steam Deckのような携帯型デバイスからデスクトップ、HTPCまで、Linuxゲーミング環境を提供することを目指している
- SteamOSの古いパッケージと実用的なパッケージマネージャーの不在を解決するために始まり、イメージベースでありながらFedoraパッケージのインストールが可能で、アップデート後も維持される
bazzite、bazzite-deck、GNOME派生版、NVIDIA専用ドライバーイメージなど複数のバリエーションを提供し、Game mode、HDR、Mesa、SteamOSパッケージ移植、ロールバック、Secure Boot対応を含む
- 標準構成にはDistrobox、Waydroid、vkBasalt、MangoHud、OBS VkCapture、xone、DisplayLink、ROCM OpenCL/HIP、各種入力・RGB・タブレットドライバー対応が含まれる
- インストールISOとrebaseコマンドを提供し、イメージはcosign署名検証に対応、ユーザーはGitHub ActionsとCosignキーを使って独自のBazzite派生版をビルドできる
Bazziteの目的と基盤
- BazziteはFedora Atomicベースのカスタムイメージで、Universal Blueのクラウドネイティブ方式でビルドされている
- 目標はLinuxゲーミング環境をデスクトップ、リビング向けHTPC、Steam Deckのような携帯型デバイスまで拡張すること
- Bazziteはublue-os/mainからビルドされ、Fedora技術を使って拡張されたハードウェア対応と内蔵ドライバーを提供する
- SteamOSで問題だった古いパッケージと実用的なパッケージマネージャーの不在を解決するために始まった
- イメージベースだがコマンドラインからFedoraパッケージをインストールでき、インストールしたパッケージはアップデート後も維持される
- upstream Fedoraパッケージで週に複数回更新され、最新のLinuxカーネル、デフォルトで有効なSELinux、Secure Boot、ディスク暗号化をサポートする
共通のゲーミング・ハードウェア機能
デスクトップとSteam Deck・HTPCバリアント
- デスクトップ向けの共通バリアントは
bazziteで、デスクトップコンピューターに適している
- OS、Flatpakなどの自動更新はuupdとtopgradeが担当する
- ISOはダウンロードサイトから入手でき、インストールガイドが提供される
- 既存のFedora AtomicからオープンソースGPUドライバーイメージへrebaseできる
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite:stable
- NVIDIA専用ドライバーが必要なデバイスは
bazzite-nvidiaイメージへrebaseする
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia:stable
- Secure Bootが有効なユーザーは、rebase前にSecure Bootドキュメントに従う必要がある
- MesaのNVIDIA向けオープンソースオプションであるNVKは、執筆時点ではエラーが発生しやすく、NVK関連の問題はUblue/BazziteではなくMesaへ報告すべきである
-
Steam DeckとHTPC向け bazzite-deck
bazzite-deckはSteam DeckのSteamOS代替と、HTPCのコンソールライクな体験のために設計されている
- SteamOSのように即座にGame modeで起動する
- 自動
duperemoveがcompatdataサイズを大きく削減する
- 最新のMesaはより小さなshader cacheを作成し、stutter防止のためにshader cacheを必要としない
- ドライブがいっぱいでも起動できる
- upstream Fedoraがサポートするすべての言語をサポートする
- デスクトップではWaylandを使用し、Steam inputをサポートする
- evlaV repositoryのドライバー、ファームウェアアップデーター、ファンコントローラーなど、SteamOSパッケージの大半の移植版を含む
- Gamescopeで正しいフレームレート制御を行うため、パッチ適用済みのMesaを使用する
- SteamOS BTRFSパッチを含み、SDカードのBTRFS対応を標準提供する
- SDGyroDSUの移植版をデフォルトで有効化して提供する
- インストール時にDecky Loader、EmuDeck、RetroDECK、ProtonUp-Qtなどを選択インストールできる
- Game mode UIでOS、Flatpakなどを更新するカスタム更新システムを提供する
- FedoraのGRUBインストールを維持し、Windowsデュアルブートをサポートする
rpm-ostreeのロールバック機能により以前のBazziteバージョンへ戻せ、起動時に以前のイメージを選択できる
- SteamとLutrisがlayered packageとしてイメージにプリインストールされている
- デフォルトでLZ4圧縮アルゴリズムを使う4GBのZRAMを使用する
- 滑らかで応答性の高いゲームプレイのためにLAVDとBORE CPUスケジューラーを含む
- ゲームのインストールやバックグラウンドの
duperemove中にI/O starvationを防ぐため、Kyber I/Oスケジューラーを使用する
- SteamOSのカーネルパラメーターを適用する
- マット・光沢のSteam Deck画面向け色補正ディスプレイプロファイルを含む
- Steam Deckの低リスクなアンダーボルティング、ディスプレイオーバークロック、32GB RAM改造時の最大VRAM倍増適用などのパワーユーザー向け機能は、デフォルトで無効の状態で提供される
- Steam Deckハードウェア固有のBIOS・ファームウェア更新サービスは、ターミナルで
ujust disable-bios-updates、ujust disable-firmware-updatesにより無効化できる
- これらのサービスは、非DeckハードウェアとDeckHDディスプレイまたは32GB RAM改造Deckでは自動的に無効化される
- 代替携帯型デバイスのSteam Gaming Mode設定はHandheld Wikiを参照する必要がある
GNOMEバリアントとupstream機能
- GNOMEデスクトップ環境ビルドはデスクトップ、Deckバリアントの両方で提供される
- GNOMEビルドはWaylandで可変リフレッシュレートとfractional scalingを有効にする
- トップバーのカスタムメニューでGame modeへの復帰、Steam起動、各種ユーティリティ起動を提供する
- GSConnectがプリインストールされており、すぐに使える
- Hanabi extensionを含み、KDEのWallpaper Engineに似た機能を提供する
- 複数の任意のGNOME拡張がプリインストールされ、ユーザー体験の調整も含まれる
- Firefox GNOME themeとThunderbird GNOME themeは、インストールされている場合は自動更新される
- GNOMEデスクトップバリアントのrebaseコマンドは次の通り
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome:stable
- NVIDIA専用ドライバーGNOMEイメージは次のコマンドでrebaseする
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome-nvidia:stable
- Steam Deck/HTPC向けGNOMEリリースでは次のコマンドを使用する
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck-gnome:stable
-
Universal BlueとFedoraから取り込んだ機能
- Universal Blueベースの機能
- NVIDIAイメージには専用NVIDIAドライバーがプリインストールされている
- Flathubがデフォルトで有効化されている
- 利便性のための
ujustコマンドを提供する
- マルチメディアコーデックを標準提供する
- 過去90日以内の任意のビルドへBazziteをロールバックできる
- Fedora Linux Kinoite・Silverblueベースの機能
- 安定した基盤を提供する
- システムパッケージを比較的新しい状態に保つ
- Fedoraパッケージをイメージにlayerとして追加でき、アップデート後も維持される
- SELinuxがプリインストール・設定済みである
- ユーザーデータを失わずに別のFedora Atomicイメージへrebaseできる
- CUPSがプリインストールされ、印刷をサポートする
検証、Secure Boot、独自ビルド
- Bazziteイメージはsigstoreのcosignで署名されている
- リポジトリーの
cosign.pubキーをダウンロードし、次のコマンドで署名を検証できる
cosign verify --key cosign.pub ghcr.io/ublue-os/bazzite
- Secure Bootはカスタムキーでサポートされ、公開キーはリポジトリールートのsecure_boot.derにある
- インストールやrebase前にSecure Bootキーを登録するには次のコマンドを使用する
sudo mokutil --timeout -1
sudo mokutil --import secure_boot.der
- すでにUniversal Blueイメージを使用中なら、代わりに
ujust enroll-secure-boot-keyを実行できる
- パスワードを求められた場合は
universalblueを使用する
- Steam DeckはSecure Boot有効状態では提供されず、既定の登録キーもないため、十分に理解していない場合は有効化すべきではない
- Bazziteは完全にGitHub Actionsでビルドされている
- 独自のカスタム版は、リポジトリーをforkし、個人の署名キーを追加したうえで、forkのGitHub Actionsを有効化して作成できる
Build Bazziteワークフローを実行すると、Bazziteのすべてのバリアント向けカスタムイメージを生成する
- 必要なバリアントだけをビルドするには、
.github/workflows/build.ymlのpush-ghcrジョブにあるstrategy.matrix一覧から不要なバリアントをコメントアウトする
- forkをupstreamと同期するには、pull app設定を利用できる
-
独自イメージ署名手順
- まずGitHubのsecret管理方式を確認する必要がある
- Cosignで新しい鍵ペアを生成する
cosign generate-key-pair
- 公開リポジトリーの
cosign.pubを生成した公開鍵で置き換える
cosign.key内の秘密鍵テキストをforkしたリポジトリーのRepository Secretに追加する
- secret名は
SIGNING_SECRETでなければならない
ドキュメントとコミュニティ
1件のコメント
Hacker News の意見
良い。リビングのメディアサーバーがセルフホスティングを復活させるトロイの木馬になり、最終的にはインターネットを再び P2P 指向に変えていきそう
ほとんどの人が対称回線と強力な Linux システムを持つようになれば、人々が本来意図されていたインターネットのように、消費者であると同時に発信者として使うことを阻むのは、ソフトウェアの問題だけになる
代わりに、小さく静かでプライバシーを尊重するクライアント、たとえば Apple TV を置き、メディアは別の場所にある NAS に入れるのがよい。好みのクライアント UX によっては Plex のような別途メディア配信アプリが必要なこともあるし、Infuse のように不要なこともある
サーバーがリビングにあろうとオフィスやホームラボにあろうと、セルフホスティングの大衆化には大きな違いはなく、むしろローカルメディアライブラリの管理は人気が下がる可能性が高い。人々はこれを何十年もやってきたのだから、トロイの木馬効果があったなら、すでに起きていたはず
なので、この領域で挿せばすぐ使える製品が出てきたら、とても惹かれる
rpm-ostree ディストリビューション向けのいくつかのツールを知った
gnome-randr-rust: https://github.com/maxwellainatchi/gnome-randr-rust
wlr-randrをサポートしていないディストリビューションで、Gnome/Wayland 向けのxrandrの役割を果たすKernel-fsync: https://copr.fedorainfracloud.org/coprs/sentry/kernel-fsync/
gnome-vrr: https://copr.fedorainfracloud.org/coprs/kylegospo/gnome-vrr/
gsettings set org.gnome.mutter experimental-features "['variable-refresh-rate']"obs-vkcapture: https://copr.fedorainfracloud.org/coprs/kylegospo/obs-vkcapt...
system76-scheduler: https://copr.fedorainfracloud.org/coprs/kylegospo/system76-s...
これがついに上がってきてうれしい。数週間前に投稿したときは、なぜもっと早く知らなかったのかと驚いたし、すぐ上位に来ると思っていたのに、そのまま埋もれてしまった(https://news.ycombinator.com/item?id=38642298)
Bazzite にはかなり驚かされた。今のところ SteamOS の代わりに Bazzite を使う欠点はまだ見当たらず、利点は多い。ずっと前から Deck を自分の tailnet に入れたかったが簡単ではなく、Flatpak ではうまくいかないいくつかのパッケージをベース OS にインストールしたかったのだが、それが可能になった
たとえば Remote Play で強力なデスクトップ上でゲームを動かして TV で見るとき、ホストに SSH で入り、tmux の片方の pane で htop を、もう片方の pane で AMD カード用の nvtop を動かしている。AMD でも今はうまく動く。自分にとっては、速度計とタコメーターを見ながら運転するのと、何もなしで運転するのとの差のように感じる。SteamOS ではこうした単純なことが難しいが、Bazzite では簡単だ
services.tailscale.enable = trueにして tailnet に載せているBazzite に興味が出てきたので、NixOS と Bazzite を比較してみる必要があるかもしれない
いい感じに見える。携帯性は必要なく、ファンノイズは嫌だけどSteamの使いやすさは欲しくて、「Steam Deckに近い仕様のPC」みたいなものを探していたところだった
これで、一般的で静かな専用PCでゲームを簡単に動かす道ができたわけだ。ただし、ValveとAMDがSteam Deckに対して行っているような、任意のGPU/CPU/RAM構成への最適化はなさそう
SteamOS BTRFSパッチが入っていて、SDカードも標準で完全なBTRFS対応になるという点が興味深い。ゲームやSteam Deckの文脈でBTRFSにどんな利点があるのか気になっていたが、https://gitlab.com/popsulfr/steamos-btrfsを見ると、透過圧縮と重複排除でストレージ容量を節約でき、読み込むデータ量が減ることでロード時間も改善される可能性があり、即時スナップショットで以前の状態に戻しやすいとのこと。システムのロールバックや、同じゲームの別バージョンへのロールバックに役立ちそう
常に新しいブロックを割り当て、アクティブなファイルシステムや、対応している場合はスナップショットから参照されなくなった時点で古いブロックを解放済みとしてマークする
フラッシュメディアはインプレース上書きを非常に嫌う。先にブロックを解放してから書き直す必要があるためだ。最近のフラッシュファームウェアもどうせ新しいブロックを割り当てようとするので一部は相殺されるが、全体としてはフラッシュにとってより良い書き込み方式だ
意外なことに、重い作業の大半はカーネルとMesaスタックが担っており、実際の処理はそこで行われる。FedoraはカーネルとMesaの更新を比較的早く取り込み、SteamクライアントがProtonの更新を処理する
Bazzite、ChimeraOS、Nobaraのようなゲーム中心ディストリビューション間の相乗効果も良い。コード共有と協業が多く行われており、すべてオープンなので誰でも手を入れられる
大きなSteam Deckのように動作し、パフォーマンスオーバーレイ、Xboxコントローラー、FSRなどがすぐにうまく動く。コントローラーごとにペアリングは必要だが、一度だけで済む。個人的にはGod of War、Horizon Zero Dawn、Baldur’s Gate 3のようなAAAキャンペーンを4Kでクリアしていて、旅行時には進行状況がDeckにそのまま残っている。完全なマルチデバイス体験だ
期待値は合わせる必要がある。VRや、EACを選択していない、あるいはカーネルレベルのアンチチートを使うマルチプレイヤーゲーム、そしてEpic製のものは実質的に動かない。自分にとってはコンソールプラットフォームに近く、多くのゲームは遊べるが一部は遊べない、という程度だ。現時点ではWindowsもLinuxもUXはひどく、最悪なのはどちらでもひどいサードパーティーランチャーだ
ちなみにUniversal Blueには関わっているが、Bazziteに直接貢献しているわけではない
Proton/Wineランタイムを同じディスクに保存するなら、重複排除も有用かもしれない。ゲームごとに必要なランタイムが異なる場合があり、最新バージョンが常に最善とは限らず、ゲームがまったくないWine環境でもDLLと共通依存関係だけで数百MBを占めることがある。重複排除で無駄なストレージ使用量を減らせるが、最近のフラッシュストレージの価格を考えると、実際にはそこまで気にするほどではなさそう
チェックサムを好む人もいるが、ECCメモリなしではそれほど有用ではないと思う
主な利点は圧縮と、特にMicroSDのような圧縮されたドライブで読み取り速度が上がることだ。BTRFSの重複排除は、似た依存関係を持つWine prefixが必要以上に容量を食う問題も解決する
少し関連して、今日、一般的なマシン向けのSteamOS再配布版を見つけた。Nvidiaグラフィックスなしという条件付き: https://github.com/HoloISO/holoiso
LinuxでのGPU互換性の細部はよく知らないが、単にNvidiaのクローズドソースパッケージをインストールすれば済む話ではないのはなぜだろう?
このプロジェクトを作った動機が何なのか、誰が支えているのか気になる。週末の趣味プロジェクトというより、何らかの戦略的オープンソースの動きのように感じる
もしかしてNvidia関連なのだろうか?
最初はSteamOSに似ていながら、パッケージをインストールでき、更新を重ねながら維持できるものが欲しかった。Silverblueを1年ほど使った後、Fedoraならそれを提供できると分かった。そこから進化し続け、規模も大きくなった
たった今、テストチャンネルにHDRを入れたところで、セキュアブート対応を壊さずに安定チャンネルへ移すため、カスタムカーネル署名にも取り組んでいる
今すぐ支援したいなら、インストールして見つけたバグを知らせてくれるのが一番良い。ユーザーは多いほど良い
純粋なタッチ端末、たとえばタブレットでどれくらいうまく動くのか気になる
ThinkPad X1 Tablet 第3世代を持っていて、キーボードなしで普通にタブレットとして使いやすいLinuxディストリビューションをまだ探している。素のFedoraはオンスクリーンキーボードにかなり厄介なバグがあり、Phosh拡張を入れると大半は解決するが、別の面倒な点が出てきて使いづらくなる
さらにディスク暗号化は、Grubにオンスクリーンキーボードがないため起動時には依然としてキーボードを接続する必要があるが、ここではこの問題がどう解決されているのか気になる
見よ、ゴミ箱型Mac Proで動くBazzite: https://youtu.be/te1AEj_RA64
数カ月前にゲーミングPCを組んだとき、面白そうな選択肢に見えたので試してみた
いくつも問題に遭遇し、6〜7回ほど失敗した後に諦めて、今はDebianに落ち着いている(https://blog.c10l.cc/09122023-debian-gaming)
それでも当時遭遇したいくつかの問題が修正されたかを見るために、Bazziteをもう一度試すつもりはある。ただ、自分にとって致命的な制限が一つあって、デュアル/マルチブートをサポートしていなかった。今は変わったのか知っている人はいる?