この記事はK4e Linux Distros Advent Calendar 2025の八日目の記事です
前書き
Linuxの魅力の一つに、環境を自由に作り込める高いカスタマイズ性があります。必要な機能があればパッケージを追加し、自分の用途に合わせて最適な環境を構築できます。
一方で、APTなどの従来のパッケージ管理システムは、使い方を誤ると依存関係が破損し、最悪の場合はOSが起動不能に陥る可能性があります。筆者も過去に適当にapt autoremove を実行した結果、システムPythonが削除され、ネットワーク関連のサービスが動かなくなるというトラブルを起こしたことがあります。
さらに、利用したいアプリケーションによっては.debや.rpm、Snap、Flatpakなど複数形式のパッケージを扱う必要が出てきます。このようなマルチパッケージ環境では依存関係の衝突が発生しやすく、管理が複雑化しがちです。
こうした問題が一度起きてしまうと、復旧には手間がかかり、場合によっては解決が難しくなることもあります。特に物理マシン上のデスクトップ環境では、ロールバック手段が限られるため、影響が大きくなりやすいです。
Linuxデスクトップを長く使っていると、これらのリスクは無視できなくなってきます。そのようなパッケージ競合によるシステム不良を、革新的な仕組みによって未然に防ごうとしているのが、今日紹介するVanilla OS です。
概要
ホストを壊さず、自由に環境構築できるイミュータブルなLinux
- 系統: Debian
- パッケージマネージャ: apx(サブシステム内では任意のパッケージマネージャ)
- リリースタイプ: 不定期リリース
- 想定用途: 安定したデスクトップLinuxを使いたい人向け
Vanilla OSとは
Vanilla OSは独自のシステムにより安定したシステムを実現するLinuxディストリビューションです。Vanilla OSのシステムはイミュータブルです。つまり起動中システムを書き換えることができません。
Vanilla OSでのシステムアップデートではA/B Root方式が使われています。
Vanilla OSにはAルートとBルートの二つのルートパーティションが用意され、システムアップデートは起動していないルートパーティションに施されます。そして再起動後はアップデート後のルートが起動します。万が一システムの起動に失敗した場合、アップデートを行っていないルートにロールバックされます。
これによるメリットとして
- OS本体が壊れにくい
- アップデートが安全
- 依存関係によるシステム障害が起きない
などがあります。
しかしこれだけでは新しいアプリのインストールに手間暇かかって面倒です。ここで使うのがVSO(Vanilla System Operator)です。
Vanilla OSはホストシステムとその上で動くコンテナであるサブシステムを分けて考えます。
Vanilla OSにおいて新しいアプリを入れる際にはサブシステムとしてコンテナ(デフォルトではPodman)をたて、その中にインストールをします。
サブシステム内で利用するLinuxディストリビューションは自由に選ぶことができます。alpine、arch、fedora、opensuse、ubuntu、vanillaがデフォルトで選べます。もちろんサブシステム内ではそれぞれのパッケージマネージャ(pkg, pacman, dnf, zypper, apt)が使えます。サブシステムでインストールしたバイナリをホストシステムから呼び出すシステムがあるので**複数のパッケージマネージャを一つのシステム上で安全に同居させることができます。**これは面白い。
APXとは
サブシステムのPodmanは直接弄りません。サブシステムとして扱うためにAPXという管理ツールが用意されています。
apx subsystemsコマンドでサブシステムを管理します。例えばubuntuというubuntuベースのサブシステムを作成する際は
apx subsystems new -n ubuntu -s ubuntu
というコマンドで行います。
サブシステムのパッケージはコンテナに入って行う必要はなく、apxを介して行います。例えばubnutuサブシステム内でapt update がしたいときは
apx apt update
で行うことができます。
サブシステムでインストールしたバイナリをホストに開放する際はapx exportコマンドを使用します。
デフォルトで用意されているパッケージマネージャだけではなく、nixやsnapのようなパッケージマネージャを追加で登録することもできるようです。サブシステムで使えるOSはStackというもので用意されています。
Flatpak in Vanilla
Vanillaではサブシステムとは別にFlatpakがデフォルトでセットアップされており、すぐに使うことができます。Flatpakでインストールしたアプリはsandbox内で動かすシステムのため、Vanilla OSの思想と合っているようです。GUIアプリストアではFlatpakを用いたグローバルなアプリインストールを行うことができます。
それではインストールを行っていきましょう。
インストール
Grubメニュー
インストール
インストーラ起動時画面
言語設定
キーマップ設定
次のページにネットワーク接続設定があります。有線環境だとスキップされます。
タイムゾーン設定 スクロールの最後らへんにTokyoがあります。
VM Tools選択
インストール環境がHyperVの仮想マシンなのでVM Toolsをインストールします。
インストール場所の選択
今回はEntire Diskを選びます。
LUKS(LInux Unified Key Setup)によるストレージの暗号化を行います。パスワードの設定をします。
インストール内容の最終確認です。
インストールが始まります。
インストールが終わったら再起動します。
再起動時
A系とB系をGRUBで選ぶことができます。
A系を起動してみます。
ガイドが始まります。日本語フォントもきれいです。
デバイス名を指定します。
ユーザ設定です。
GUI
GNOMEデスクトップでお出迎え。やはりきれいですね。
初期セットアップは非常にシンプルです。
セットアップ
カラースキーム選択
アプリケーション選択
ここで必要なものを入れておくと後で楽です。
インストールが始まります。
インストールが完了しました。
たくさんアプリが入りました。
hyfetch
Vanilla OSで追加アプリを入れる際はホストシステムではなくサブシステムにインストールを行います。この説明を見ると結構面倒そうですが、最新のVanilla OSでは使用感が改善されていそうです。
最新のVanilla OSではVSO v2が使われており、ターミナルを開くと通常Linuxではなくapxベースのサブシステムに入ります。このサブシステムのことをVSO Picoと呼び、これはUbuntuベースのサブシステムなようです。この仕組みによりホストOSをイミュータブルにしたまま通常のLinuxと似たような使用感を実現することができています。
Black Boxというターミナルアプリを開きます。初回起動時にVSO Picoの初期化について聞かれます。yを入力して起動します。
通常のubuntuと同じようにaptを用いることができます。apt updateとapt upgrade を行っておきます。
sudo apt update
sudo apt upgrade
通常通りhyfetchをインストールします。
sudo apt install hyfetch
hyfetchを実行できました。
カーネルはDebianの物が使われています。パッケージはdpkg、flatpakの2つが使われています。デフォルトシェルはsh。
日本語環境
こちらにibusのインプットメソッドのインストール方法が書いてありますが、やり方が悪かったか不具合か、ibus-mozcを反映させることができませんでした。
作業ログ
GNOMEなのでibus-mozcをいれて対応します。
ホストシステムにインストールする際はabrootコマンドを使用します。
abroot pkg add ibus-mozc
以下のような注意がでます。yを選択。
INFO To utilize ABRoot's abroot pkg command, explicit user agreement is required. This command facilitates package installations but introduces non-deterministic elements, impacting system trustworthiness. By consenting, you acknowledge and accept these implications, confirming your awareness of the command's potential impact on system behavior.
するとibus-mozcをホストシステムにインストールできます。インストール後はいったん再起動を行います。システムにインストールしたパッケージは再起動しないと反映されません。
再起動したら設定の入力メソッドの追加で日本語(MOZC)が追加できるはずですが、できませんでした。
先駆者様がflatpakでfcitx5とfcitx5-mozcを導入する方法を使っていたので試してみます。
Vanilla OSではflatpakがデフォルトでセットアップされており、VSO内でも自由に使うことができます。
fcitx5とfcitx5-mozcをvso-picoでインストールします。
flatpak install org.fctix.Fcitx5 org.fcitx.Fcitx5.Addon.Mozc
Fcitx5の自動起動設定を行います。
cp ~/.local/share/flatpak/exports/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart
この状態で再起動かログアウトをするとログイン時自動でfcitx5が起動するようになります。
サブシステムをリセットする
何か操作を間違えてシステムをリセットしたいときがあります。その際はVanilla OSの場合サブシステムのリセット、という形でシステムを汚すことなくリセットをすることができます。
ALT+F2を押すとコマンド実行の画面に入ります。
reset-vsoコマンドを実行します
reset-vso
Yesを押すとvso-picoがリセットされます。
vso-picoをリセットしてもflatpakでインストールしたパッケージはリセットされません。
flatpakアプリのインストールはホストのユーザ空間にインストールされるようで、VSOサブシステムとは無関係のようです。host-shellコマンドでホストシステムのシェルに入ることができます。そしてホストシステムの以下のディレクトリを見てみると、VSOのシェル内と変わらない中身になっています。
.local/share/flatpak
flatpak自体がアプリをsandbox内で実行する仕組みを持っているため、flatpak自体の隔離はしていないようです。
まとめ
ホストを壊さず、自由に環境構築できるイミュータブルなLinux
以上Vanilla OSを紹介しました。
Vanilla OSのシステムが予想以上に面白く沼ってしまいました。(かなりアドカレの遅刻をしている)
Vanilla OSに関しては今後も取り上げる可能性は高いです。Vanilla OSにnixを登録したり、apt、dnf、zypper、pacmanの同時利用を試してみたり...。他のLinuxではできない挑戦的な環境構築ができそうで非常に面白そうです。
明日は最強のセキュリティLinux、Tailsを紹介します。




























