毎日Kalpaを使ってて、家族のPCにもインストールしたよ。長い間リサーチしてKalpaにたどり着いたから、この新しいディストロの技術についてざっくりまとめてみるね。
用語
- イミュータブル: コアOS(/usrディレクトリ)は変更を許可しないことで「クリーン」な状態を保つ。
- パッケージのインストールや削除を控える。
- ほとんどのユーザーが同じOSと同じパッケージバージョンを使ってるから、テスト済み。
- システムアップグレードは完全に新しいイミュータブルコピー。
- アトミック/トランザクショナル: データベースのアトミック性に似ていて、一連の操作がトランザクションにまとめられる(アトミック=分割不可の単位)、成功するか完全に失敗するかのどちらか。システムアップグレードも同じで、部分的なパッケージ更新はない。
注意: Kalpaは特に、SUSEのマイクロOS技術「トランザクショナルアップデート」を使ってる。
https://documentation.suse.com/sles/15-SP7/html/SLES-all/cha...
アトミックスタイル
イミュータブルディストロの主流モデルは4つ:
- 宣言的設定: システムの設定をすべて設定ファイルに記述。例: パッケージバージョン、ネットワーク設定、ユーザーアカウントなど。例: NixOS、BlendOS
- OSTreeベース: クラウド/コンテナ(OCI)技術を使って既存のレイヤーに重ねる。例: Fedoraのアトミックスピン、VanillaOS、EndlessOS。Fedora CoreOSがベースレイヤーで、アトミックスピンはデスクトップパッケージを重ねる。例: Gnome/KDEなど。
- Btrfsスナップショットベース: アップグレード前にルートパーティションのBtrfsスナップショットを取ることで、アップグレードが失敗した場合にブートできる。例: SUSEマイクロOSファミリー(Kalpaもここに属する)、ChimeraOS
- systemd-mkosiベース: mkosiを使ってOSのファイルシステム全体をディレクトリに「キュレーション」し、イミュータブルなディスクイメージとしてデプロイ。例: KDE Linux
注意: systemd-mkosiはsystemdのメンテナーのビジョンで、ここで言及されている。
https://0pointer.net/blog/fitting-everything-together.html
この理想を達成するために開発中のシステム機能がたくさんある。これらのディストロのほとんど(Btrfsベースを除く)は、単にA/Bルートシステムを使用している。
2つのルートパーティション/イメージを維持し、アップグレードを「他の」パーティションに入れて、それをライブとしてマークし、現在のパーティションをバックアップとしてマークする。新しいパーティションへのブートが失敗した場合、バックアップパーティションにブートして次のアップグレードを待つ。システムパッケージマネージャの使用を許可しないため、ユーザーレベルでパッケージ管理を行うことになる。GUIアプリにはFlatpakを使う。その他のユーティリティには、通常Homebrewや言語特有のツール(Cargo、pip/npmなど)を選ぶ。
Distroboxという魔法のツール
これはユーザースペースでコンテナを実行し、できるだけシステムに統合しようとする。多くのソフトウェア開発にはシステムレベルのサービスやシェルアクセス、依存関係のインストールが必要。ホストではそれができないから、コンテナを作ってそこで開発を行う。もし汚れすぎたら、削除して新しいのを作ればいい。個人的には、開発にはArchコンテナを使ってる。最新のパッケージが揃ってて、便利なAURもあるから。VSCode(Flatpakから)は公式のリモート拡張を使ってコンテナに接続できる。メディアサーバもその中で動かしてる。必要なシステムパッケージやコマンドラインユーティリティもインストールできる(例: コーデック、ollamaなど)。
他のディストロよりKalpaを選ぶ理由
- SUSEが知られる素晴らしいKDEの仕上げ
- Btrfs技術は成熟していて、SUSEで何年も使われてきた。アトミックシステムはとても理解しやすく、ブートメニューで好きなスナップショットを選ぶだけ。
- イミュータブルでも、システムのカスタマイズ(例: ドライバー、カーネルモジュール、ファイアウォールのインストールなど)が簡単。
- トランザクショナルアップデートシェルに入るだけで、新しいミュータブルスナップショットを作成し、そこにchrootする。
- シェル内で好きなコマンドを実行。例: パッケージのインストール/削除、サービスの有効化など。
- シェルを終了すると、トランザクションが成功/完了としてマークされ、次回のブート用にスナップショットがライブとして設定される。
- デフォルトでミニマル。
- アップデートは早くて小さい。Tumbleweedリポジトリからの定期的なローリングリリースアップデートだから。
問題点もある:
- 単一のメンテイナー
- Fedoraベースのアトミックスピンなどの代替と比べて人気が少ない。
- Tumbleweedベースなので、小さなアップデートがたくさん(ほぼ毎日)。Fedoraベースは、例えば、週次/隔週のアップデート。
- まだアルファ段階(でも一度セットアップすれば、非常に安定してる)。
- イミュータブルはまだ新しい概念で、Flatpakはまだ粗い部分がある。バグが予想される。ミュータブル/従来のディストロは、ずっと「その方法」で使われてきたから、使いやすい。