クイックスタート — 5分でできる
開発用ラップトップでFedora Silverblueを約6ヶ月使ってきて、はっきり言えることがある。これまで使ってきたディストリビューションの中で最も手放しがたいものだ——簡単だからではなく、慣れてしまうと以前のやり方に戻りたくなくなるからだ。
ISOはfedoraproject.org/silverblueからダウンロードし、通常のFedoraと同様にAnacondaインストーラーでインストールする。この手順に変わったところは何もない。デスクトップが起動したら、ターミナルを開いてすぐに実行しよう:
# 現在のシステム状態を確認
rpm-ostree status
# 実行中のdeploymentが表示される
● default ostree://fedora:fedora/41/x86_64/silverblue
Version: 41.20241010.0 (2024-10-10)
BaseCommit: a1b2c3d4e5f6...
LayeredPackages: (追加インストールがない場合は空)
次にToolboxを作成しよう——これが本当に便利なところだ。すべての開発ツールはコンテナ内に収まり、ホストシステムには一切手を加えない:
# toolboxコンテナを作成(Fedora 41がデフォルト)
toolbox create
# toolboxに入る
toolbox enter
# コンテナ内にいる — 好きなものをインストール
sudo dnf install -y git nodejs python3 gcc make
完了。ホストシステムはクリーンなまま、すべての開発ツールはコンテナ内に収まっている。
rpm-ostreeの仕組み
通常のFedoraでdnf installに慣れていると、最初はrpm-ostreeの動作が少し奇妙に感じるかもしれない。2年間FedoraをメインのDev環境として使ってきて、パッケージ更新の速さには満足していた——しかしSilverblueはシステム管理の哲学を根本から変えてしまった。
SilverblueはOSTreeを使用している——これはOS全体を対象としたGitに似たファイルシステム管理システムだ。パッケージを/usrに直接インストールする代わりに、各システム状態がコミットとして保存される。具体的な影響は3つある:
/usrは読み取り専用——rootでも直接書き込めない/home、/var、/etcは通常通り書き込み可能- OSへのすべての変更は
rpm-ostreeを経由し、再起動後にのみ有効になる
ホストシステムへのパッケージのインストール
ドライバー、カーネルモジュール、またはシステムに深く統合する必要があるツールなど、ホストに直接インストールしたいものがある場合:
# パッケージをインストール(ステージング — 再起動後に有効)
rpm-ostree install vim htop
# ベースイメージ上にレイヤーされたものを確認
rpm-ostree status
# LayeredPackages: htop vim
# レイヤーされたパッケージを削除
rpm-ostree uninstall htop
dnfとは異なり、これらのパッケージはベースイメージ上に「レイヤー」される——ベースイメージはそのまま保持され、何の影響も与えずにいつでもレイヤーを削除できる。
アップデート失敗時のロールバック
6ヶ月使って、ロールバックが必要になったのはちょうど2回だった。1回目は新しいカーネルがWi-Fiドライバーを壊したとき、2回目はMesaのアップデートで画面フリッカーが発生したときだ。どちらも30秒以内に対処できた:
# システムを更新(ステージング、すぐには適用されない)
rpm-ostree upgrade
# 新バージョンを適用するために再起動
systemctl reboot
# 再起動後に問題があればすぐにロールバック
rpm-ostree rollback
systemctl reboot
SilverblueはGRUBブートメニューに2つのdeploymentを保持している。再起動後に問題があれば、ブート画面から手動で古いdeploymentを選べばいい。この機能のおかげで、OSのアップデートを恐れなくなった——最悪の場合でも2分の再起動で済む。数時間のデバッグ作業は不要だ。
Toolbox — コンテナ内の開発環境
ToolboxはSilverblueを「面白い」から「実際に毎日使えるもの」へと変える存在だ。本質的には/homeがマウントされたPodmanコンテナを作成するため、何もコピーせずにコンテナ内から自分のすべてのファイルにアクセスできる。
プロジェクトごとの複数toolboxの管理
# 名前付きtoolboxを作成
toolbox create --container python-dev
toolbox create --container node-dev
toolbox create --container rust-dev
# すべてのtoolboxを一覧表示
toolbox list
# 特定のtoolboxに入る
toolbox enter python-dev
# 使わなくなったtoolboxを削除
toolbox rm python-dev
自分のマシンには常時3つのtoolboxがある:Pythonプロジェクト、Node.js、そして何でも試すサンドボックスだ。各toolboxは独立したパッケージセットを持っているため、プロジェクト間の依存関係の競合はもはや問題にならない。
Toolboxで別のディストリビューションを使う
toolbox内では必ずしもFedoraを使う必要はない。プロジェクトがUbuntuを必要としている場合や、別のディストリビューションでパッケージをテストしたい場合:
# Ubuntu 22.04で動くtoolbox
toolbox create --distro ubuntu --release 22.04 --container ubuntu-env
# Fedora 40で動くtoolbox(テスト用の古いバージョン)
toolbox create --distro fedora --release 40 --container fedora40-test
# ubuntu toolboxに入る
toolbox enter ubuntu-env
応用:overrideとrebase
ベースイメージのパッケージをoverride
実際のシナリオ:Mesa 23.2には一部のIntel GPUでフリッカーバグがある——システム全体を再構築せずに22.3にoverrideしたい場合や、使わないデフォルトアプリを削除したい場合:
# ベースイメージからパッケージを削除
rpm-ostree override remove gnome-tour
# RPMファイルから特定バージョンのパッケージに置き換え
rpm-ostree override replace ./mesa-libGL-22.3.0.x86_64.rpm
# 現在のoverride一覧を確認
rpm-ostree status
# RemovedBasePackages: gnome-tour
新バージョンまたは別のスピンへのrebase
Fedora 42にアップグレードしたいときに再インストールする必要はなく、直接rebaseできる——レイヤードパッケージと設定はすべてそのまま維持される:
# Fedora 42 Silverblueへrebase
rpm-ostree rebase ostree://fedora:fedora/42/x86_64/silverblue
# またはFedora Kinoiteを試す(GNOMEの代わりにKDE Plasma)
rpm-ostree rebase ostree://fedora:fedora/41/x86_64/kinoite
# 適用するために再起動
systemctl reboot
Fedora 42に問題があれば、Silverblue 41へのロールバックは数秒で完了する。
6ヶ月使って分かった実践的なTips
GUIアプリはすべてFlatpakで
Silverblueでの正しい哲学は:GUIアプリはFlatpak、開発ツールはToolbox、ドライバー/カーネルはrpm-ostreeだ。VS CodeやSlackをrpm-ostreeレイヤーでインストールしてはいけない。
# VS Code、Spotify、SlackをFlatpakでインストール
flatpak install flathub com.visualstudio.code
flatpak install flathub com.spotify.Client
# すべてのFlatpakアプリを更新
flatpak update
# システム全体の更新スクリプト
alias sysupdate='rpm-ostree upgrade && flatpak update'
ワークフローを高速化するエイリアス
# ~/.bashrcに追加
alias tbe='toolbox enter'
alias tbl='toolbox list'
alias rpmst='rpm-ostree status'
alias rpmup='rpm-ostree upgrade'
Silverblueが向かない場合
6ヶ月使って分かったのは、SilverblueはすべてのユーザーのためのOSではないということだ:
- NVIDIAプロプライエタリドライバーを使ったゲーミング:セットアップがかなり複雑になる——Nobara Linuxを使う方が楽だ。
- 本番サーバー:SilverblueはデスクトップOSだ。サーバーにはFedora CoreOS(同じOSTreeベース)の方が適している。
- Linux完全初心者:通常のFedora Workstationの方が導入のハードルが低い。
一方、Python、Node.js、GoなどのDeveloperにとって、SilverblueとToolboxの組み合わせは今まで試した中で最もクリーンなセットアップだ。ホストシステムが開発の依存関係で散らかることがない。OSの更新がはるかに安全になる。そして問題が起きても、数十秒でロールバックできる——何時間もかけての再インストール作業は不要だ。

