1 ポイント 投稿者 GN⁺ 2024-01-01 | 1件のコメント | WhatsAppで共有
  • BazziteはFedora Atomicベースのカスタムイメージで、Steam Deckのような携帯型デバイスからデスクトップ、HTPCまで、Linuxゲーミング環境を提供することを目指している
  • SteamOSの古いパッケージと実用的なパッケージマネージャーの不在を解決するために始まり、イメージベースでありながらFedoraパッケージのインストールが可能で、アップデート後も維持される
  • bazzitebazzite-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の目的と基盤

  • BazziteFedora Atomicベースのカスタムイメージで、Universal Blueのクラウドネイティブ方式でビルドされている
  • 目標はLinuxゲーミング環境をデスクトップ、リビング向けHTPC、Steam Deckのような携帯型デバイスまで拡張すること
  • Bazziteはublue-os/mainからビルドされ、Fedora技術を使って拡張されたハードウェア対応と内蔵ドライバーを提供する
  • SteamOSで問題だった古いパッケージと実用的なパッケージマネージャーの不在を解決するために始まった
  • イメージベースだがコマンドラインからFedoraパッケージをインストールでき、インストールしたパッケージはアップデート後も維持される
  • upstream Fedoraパッケージで週に複数回更新され、最新のLinuxカーネル、デフォルトで有効なSELinux、Secure Boot、ディスク暗号化をサポートする

共通のゲーミング・ハードウェア機能

  • Bazziteはbazzite kernelを使用してHDRと拡張ハードウェア対応を提供し、複数のパッチを含む
  • Game modeでHDRを使用できる
  • NVIDIA以外のビルドではNVKを使用できる
  • H264デコード向けのハードウェアアクセラレーションコーデック対応を提供する
  • AMDのROCM OpenCL/HIPランタイムをサポートする
  • Xboxコントローラー向けのxoneドライバーとDisplayLinkをサポートする
  • ValveのSteamOS KDEテーマを含む
  • vkBasaltMangoHudOBS VkCaptureが標準でインストールされる
  • Winesync/Fastsync/NTsyncをサポートする
  • Distroboxがプリインストールされている
  • ujust install-resolveを通じてdavinciboxベースのDavinci Resolveインストールを簡素化する
  • wine prefixコンテンツが使うディスク容量を減らすため、自動duperemoveサービスを提供する
  • libCEC経由のHDMI CECをサポートする
  • デフォルトのTCP輻輳制御としてGoogle BBRを使用する
  • Input Remapperがプリインストールされ有効化されており、Deckバリアントでは利用可能だがデフォルトでは無効になっている
  • Bazzite Portalはアプリケーションや調整項目をインストールし、システムイメージの更新・rebase・初期化を実行するボタンを提供する
  • Waydroidがプリインストールされており、Androidアプリの実行をサポートする
  • Flatpak・AppImage管理のためにFlatsealWarehouseGear Leverを使用する
  • 一部マザーボードのRGB制御向けにOpenRGBのi2c-piix4およびi2c-nct6775ドライバーを含む
  • OpenRazerドライバーが内蔵されており、Bazzite Portalまたはujust install-openrazerで利用できる
  • OpenTabletDriverのudevルールが内蔵されており、完全なソフトウェア一式はBazzite Portalまたはujust install-opentabletdriverでインストール可能
  • Wootingキーボードを標準サポートする
  • Southern Islands HD 7000およびSea Islands HD 8000のAMD GPUをamdgpuドライバーでサポートする
  • Webapp Managerにより、Firefoxなど複数のブラウザーのWebサイトをアプリのようにできる

デスクトップとSteam Deck・HTPCバリアント

  • デスクトップ向けの共通バリアントはbazziteで、デスクトップコンピューターに適している
  • OS、Flatpakなどの自動更新uupdtopgradeが担当する
  • 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 LoaderEmuDeckRetroDECKProtonUp-Qtなどを選択インストールできる
    • Game mode UIでOS、Flatpakなどを更新するカスタム更新システムを提供する
    • FedoraのGRUBインストールを維持し、Windowsデュアルブートをサポートする
    • rpm-ostreeのロールバック機能により以前のBazziteバージョンへ戻せ、起動時に以前のイメージを選択できる
    • SteamとLutrisがlayered packageとしてイメージにプリインストールされている
    • デフォルトでLZ4圧縮アルゴリズムを使う4GBのZRAMを使用する
    • 滑らかで応答性の高いゲームプレイのためにLAVDBORE CPUスケジューラーを含む
    • ゲームのインストールやバックグラウンドのduperemove中にI/O starvationを防ぐため、Kyber I/Oスケジューラーを使用する
    • SteamOSのカーネルパラメーターを適用する
    • マット・光沢のSteam Deck画面向け色補正ディスプレイプロファイルを含む
    • Steam Deckの低リスクなアンダーボルティング、ディスプレイオーバークロック、32GB RAM改造時の最大VRAM倍増適用などのパワーユーザー向け機能は、デフォルトで無効の状態で提供される
    • Steam Deckハードウェア固有のBIOS・ファームウェア更新サービスは、ターミナルでujust disable-bios-updatesujust 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.ymlpush-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件のコメント

 
GN⁺ 2024-01-01
Hacker News の意見
  • 良い。リビングのメディアサーバーがセルフホスティングを復活させるトロイの木馬になり、最終的にはインターネットを再び P2P 指向に変えていきそう
    ほとんどの人が対称回線と強力な Linux システムを持つようになれば、人々が本来意図されていたインターネットのように、消費者であると同時に発信者として使うことを阻むのは、ソフトウェアの問題だけになる

    • リビングのメディアサーバーを何年も使ってみたが、おすすめするならリビングにメディアサーバーを置かないこと
      代わりに、小さく静かでプライバシーを尊重するクライアント、たとえば Apple TV を置き、メディアは別の場所にある NAS に入れるのがよい。好みのクライアント UX によっては Plex のような別途メディア配信アプリが必要なこともあるし、Infuse のように不要なこともある
      サーバーがリビングにあろうとオフィスやホームラボにあろうと、セルフホスティングの大衆化には大きな違いはなく、むしろローカルメディアライブラリの管理は人気が下がる可能性が高い。人々はこれを何十年もやってきたのだから、トロイの木馬効果があったなら、すでに起きていたはず
    • この見方は気に入っているし、中央集権化されたインターネットになってしまった現状は本当に嫌だ。今では主要プラットフォームで基本的な検索すらまともに機能しない
    • 何度も自分でメディアセンター PC/サーバー構成を作ろうとしたが、Fire Stick が 10分の1の価格とほぼゼロに近い手間でやってくれることと比べると、いつも大きく見劣りした
      なので、この領域で挿せばすぐ使える製品が出てきたら、とても惹かれる
    • インターネット版 Roku という発想は本当に気に入っている
  • 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 では簡単だ

    • 自分の Steam Deck も NixOS で 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を見ると、透過圧縮と重複排除でストレージ容量を節約でき、読み込むデータ量が減ることでロード時間も改善される可能性があり、即時スナップショットで以前の状態に戻しやすいとのこと。システムのロールバックや、同じゲームの別バージョンへのロールバックに役立ちそう

    • コピーオンライトファイルシステムはインプレースで上書きしないため、フラッシュメディアには本質的により適している
      常に新しいブロックを割り当て、アクティブなファイルシステムや、対応している場合はスナップショットから参照されなくなった時点で古いブロックを解放済みとしてマークする
      フラッシュメディアはインプレース上書きを非常に嫌う。先にブロックを解放してから書き直す必要があるためだ。最近のフラッシュファームウェアもどうせ新しいブロックを割り当てようとするので一部は相殺されるが、全体としてはフラッシュにとってより良い書き込み方式だ
    • 自作のゲーミングHTPCで、R5-5600、Radeon 6800XT、XboxワイヤレスドングルとXboneコントローラー4台をBazziteで使っている
      意外なことに、重い作業の大半はカーネルと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に直接貢献しているわけではない
    • 古くて遅いSDカードなので、圧縮を有効にしたBTRFSを使っている。アセットの展開にCPU時間が少しかかるが、遅いI/Oが目に見えて速くなる
      Proton/Wineランタイムを同じディスクに保存するなら、重複排除も有用かもしれない。ゲームごとに必要なランタイムが異なる場合があり、最新バージョンが常に最善とは限らず、ゲームがまったくないWine環境でもDLLと共通依存関係だけで数百MBを占めることがある。重複排除で無駄なストレージ使用量を減らせるが、最近のフラッシュストレージの価格を考えると、実際にはそこまで気にするほどではなさそう
      チェックサムを好む人もいるが、ECCメモリなしではそれほど有用ではないと思う
    • Fedoraは実際にデフォルトがBTRFSで、SteamOSもシステムは標準でBTRFS、homeとSDカードだけがext4だ
      主な利点は圧縮と、特にMicroSDのような圧縮されたドライブで読み取り速度が上がることだ。BTRFSの重複排除は、似た依存関係を持つWine prefixが必要以上に容量を食う問題も解決する
    • Steam Deckに入っているValveとAMDの最適化はすべて入っているはずで、それに加えてFedoraアップストリームに入れた独自の調整や変更も含まれている
  • 少し関連して、今日、一般的なマシン向けのSteamOS再配布版を見つけた。Nvidiaグラフィックスなしという条件付き: https://github.com/HoloISO/holoiso

    • https://chimeraos.org/を使っているが、これはシステムをアトミックアップデート方式で更新する
    • そのページを読んでみると、このディストリビューションではNvidiaグラフィックスは実質的に動かないと理解した。だが、なぜそうなのか気になる
      LinuxでのGPU互換性の細部はよく知らないが、単にNvidiaのクローズドソースパッケージをインストールすれば済む話ではないのはなぜだろう?
  • このプロジェクトを作った動機が何なのか、誰が支えているのか気になる。週末の趣味プロジェクトというより、何らかの戦略的オープンソースの動きのように感じる
    もしかしてNvidia関連なのだろうか?

    • このプロジェクトの元の作者です。動機は完全に自然発生的なもので、スポンサーもなく、いかなる種類の寄付も受けたことはなく、プロジェクト費用はすべて自分で負担しています
      最初はSteamOSに似ていながら、パッケージをインストールでき、更新を重ねながら維持できるものが欲しかった。Silverblueを1年ほど使った後、Fedoraならそれを提供できると分かった。そこから進化し続け、規模も大きくなった
      たった今、テストチャンネルにHDRを入れたところで、セキュアブート対応を壊さずに安定チャンネルへ移すため、カスタムカーネル署名にも取り組んでいる
      今すぐ支援したいなら、インストールして見つけたバグを知らせてくれるのが一番良い。ユーザーは多いほど良い
    • Universal Blueの派生版です(https://universal-blue.org
  • 純粋なタッチ端末、たとえばタブレットでどれくらいうまく動くのか気になる
    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をもう一度試すつもりはある。ただ、自分にとって致命的な制限が一つあって、デュアル/マルチブートをサポートしていなかった。今は変わったのか知っている人はいる?