Fedora Sericea導入・運用ガイド:Swayとrpm-ostreeでマスターするイミュータブルOS

Fedora tutorial - IT technology blog
Fedora tutorial - IT technology blog

エンジニアがFedora Sericeaを試すべき理由

システム更新コマンドを実行した直後にフリーズし、デスクトップに入れなくなって復旧のためにLive USBで半日潰した……そんな経験はありませんか?従来のLinuxディストリビューションでは、システムファイルと追加インストールしたソフトウェアが同じ読み書き可能なパーティション(read-write)に配置されています。そのため、ライブラリの競合や依存関係の不整合が一つ発生するだけで、OS全体が簡単に破損してしまいます。

Fedora Sericeaは、イミュータブルOS(不変OS / Immutable OS)のアーキテクチャを採用することでこのリスクを解決します。<a href="https://itfromzero.com/ja/fedora-vi-ja/fedora-system-extensions-%e5%86%8d%e8%b5%b7%e5%8b%95%e3%81%aa%e3%81%97%e3%81%a7-usr-%e3%83%87%e3%82%a3%e3%83%ac%e3%82%af%e3%83%88%e3%83%aa%e3%82%92%e3%82%ab%e3%82%b9%e3%82%bf%e3%83%9e%e3%82%a4.html">/usr</a>ディレクトリ全体が読み取り専用(read-only)にロックされており、個々のファイルを直接変更するのではなく、rpm-ostreeがOS全体をアトミックなコミット(atomic commits / 単一スナップショット)としてパッケージ化します。

Sericea最大の魅力は、Swayが標準統合されている点です。Swayはキーボードショートカットのみで操作できる超軽量なWayland対応タイル型ウィンドウマネージャです。Fedoraの最新カーネルの恩恵を受けながら、万が一アップデートで不具合が発生しても、ロールバックコマンドを1つ実行して再起動すればわずか10秒で以前の正常な状態へ復元できます。

Fedora Sericeaのインストール手順

Sericeaのインストール手順は通常のFedora Workstationとほぼ同様ですが、いくつか注意すべきパーティション設定があります。

ステップ1:インストールメディアの準備

Fedora Atomic Desktopsの公式サイトから公式ISOイメージをダウンロードします。その後、ddコマンドやBalenaEtcherなどのGUIツールを使ってUSBメモリに書き込みます。

# ISOをUSBに書き込み(/dev/sdXをご自身のUSBデバイス名に置き換えてください)
sudo dd if=Fedora-Sericea-OSTree-x86_64.iso of=/dev/sdX bs=4M status=progress oflag=direct

ステップ2:Anacondaインストーラーでのパーティション設定

USBから起動すると、シンプルなSway環境が立ち上がります。インストーラー内で以下の設定を行います。

  • パーティション設定:デフォルトのBtrfs形式による自動パーティション設定(Automatic Partitioning)を選択します。BtrfsはOSTreeがスナップショットを作成する際のディスク容量を最適化します。
  • ユーザーアカウント:一般ユーザーを作成し、管理者権限(wheelグループ)を付与するチェックボックスを必ず有効にしてください。

ステップ3:起動後のデプロイ状況の確認

PCを再起動してSwayにログインします。Super + Enterを押してターミナルを起動し、現在のバージョンを確認します。

rpm-ostree status

画面にコミットIDとともにアスタリスク(*)が表示されます。これが現在稼働中のデプロイメントを示しています。

設定戦略と開発ワークフロー

1. 3層パッケージ管理ルール(Layering・Flatpak・Container)

Sericeaではdnf installコマンドは利用できません。代わりに、ソフトウェアを明確な3つのレイヤーに分けて管理します。

  1. GUIアプリケーション:完全に分離して動作するFlatpak経由でインストールします。
  2. 開発ツール(Dev Tools):ToolbxやDistroboxの内部に配置し、ベースOSをクリーンな状態に保ちます。
  3. Base Layering:グラフィックドライバやVPNクライアント、デフォルトシェルなど、必要不可欠なもののみrpm-ostree installでOSにレイヤー追加します。
# 1. Flathubリポジトリの追加
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

# 2. ブラウザやチャットアプリのインストール
flatpak install flathub com.brave.Browser org.telegram.desktop -y

# 3. 必要なドライバやツールのレイヤー追加(新しいスナップショットの適用には再起動が必要)
sudo rpm-ostree install zsh git neovim

2. Toolbxを使った開発環境の構築

ホストOSにNodeJSやPythonを直接インストールするのではなく、toolboxを使って独立したコンテナを作成します。このアプローチにより、プロジェクト固有の依存関係によるベースOSの汚染を防ぎ、常にクリーンな状態を維持できます。

# 開発専用コンテナの作成
toolbox create dev-box

# コンテナに入る
toolbox enter dev-box

# コンテナ内ではFedora Workstationと同様に通常のDNFコマンドが利用可能
sudo dnf groupinstall "Development Tools" -y
sudo dnf install golang nodejs python3-pip -y

3. SwayのショートカットキーとUIのカスタマイズ

Swayのユーザー設定は~/.config/sway/configに保存されます。まずはデフォルトのサンプル設定ファイルをコピーして編集を始めましょう。

mkdir -p ~/.config/sway
cp /etc/sway/config ~/.config/sway/config

日々の作業効率を向上させる主な設定例です。

# ModキーをWindowsキー(Superキー)に設定
set $mod Mod4

# ターミナルをfoot(軽量でWaylandとの親和性が高い)に変更
set $term foot

# アプリ起動ランチャーとしてwofiを使用
set $menu wofi --show drun

# ウィンドウ間の隙間(Gaps)を設定
gaps inner 6
gaps outer 3
default_border pixel 2

# ステータスバーと通知マネージャを自動起動
exec waybar
exec mako

4. ワンタッチロールバックによるトラブルシューティング

アップデートによってドライバの不具合やハードウェアの非互換性が発生した場合でも、起動時のGRUBメニューから直前のスナップショットを選択して復元するか、以下のコマンドを実行するだけで元の状態に戻せます。

# 直前のビルドへロールバック
sudo rpm-ostree rollback

# アップデート時に自動削除されないよう安定版ビルドをピン留め固定
sudo ostree admin pin 0

メンテナンスとリソース監視

1. OS Treeの詳細確認

アップデートを適用する前に、変更されるパッケージ一覧を事前に確認できます。

# 利用可能なアップグレードの確認
rpm-ostree upgrade --check

# レイヤー化されているパッケージの詳細表示
rpm-ostree status -v

2. ディスク容量のクリーンアップ

数週間使い続けると、古いメタデータキャッシュが1〜2GB程度ディスクを圧迫することがあります。定期的にクリーンアップコマンドを実行しましょう。

# ダウンロードキャッシュと不要なメタデータを削除
sudo rpm-ostree cleanup -m -p

3. 実際のリソース消費量

起動直後のFedora Sericea + SwayのRAM消費量は約450MB〜600MB程度と、GNOMEの1.4GB〜1.8GBに比べて圧倒的に軽量です。システム監視ツールbtopをtoolbox内に導入してリソースを監視できます。

toolbox enter dev-box
sudo dnf install btop -y
btop

Fedora Sericeaを使いこなすには、パッケージ管理の習慣をコンテナファーストの考え方へとシフトさせる必要があります。一度慣れてしまえば、極めて高速かつ洗練された開発環境が手に入り、アップデートによるOS破損の恐怖から完全に解放されます。

Share: