3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

この記事は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メニュー

image.png

image.png

インストール

インストーラ起動時画面

image.png

言語設定

image.png

キーマップ設定

image.png

次のページにネットワーク接続設定があります。有線環境だとスキップされます。

タイムゾーン設定 スクロールの最後らへんにTokyoがあります。

image.png

VM Tools選択

インストール環境がHyperVの仮想マシンなのでVM Toolsをインストールします。

image.png

インストール場所の選択
今回はEntire Diskを選びます。

image.png

LUKS(LInux Unified Key Setup)によるストレージの暗号化を行います。パスワードの設定をします。

image.png

インストール内容の最終確認です。

image.png

インストールが始まります。

image.png

インストールが終わったら再起動します。

image.png

再起動時

A系とB系をGRUBで選ぶことができます。
A系を起動してみます。

image.png

ガイドが始まります。日本語フォントもきれいです。

image.png

デバイス名を指定します。

image.png

ユーザ設定です。

image.png

image.png

GUI

GNOMEデスクトップでお出迎え。やはりきれいですね。

image.png

初期セットアップは非常にシンプルです。

image.png

セットアップ

カラースキーム選択

image.png

アプリケーション選択
ここで必要なものを入れておくと後で楽です。

image.png

インストールが始まります。

image.png

インストールが完了しました。

image.png

たくさんアプリが入りました。

image.png

hyfetch

Vanilla OSで追加アプリを入れる際はホストシステムではなくサブシステムにインストールを行います。この説明を見ると結構面倒そうですが、最新のVanilla OSでは使用感が改善されていそうです。

最新のVanilla OSではVSO v2が使われており、ターミナルを開くと通常Linuxではなくapxベースのサブシステムに入ります。このサブシステムのことをVSO Picoと呼び、これはUbuntuベースのサブシステムなようです。この仕組みによりホストOSをイミュータブルにしたまま通常のLinuxと似たような使用感を実現することができています。

Black Boxというターミナルアプリを開きます。初回起動時にVSO Picoの初期化について聞かれます。yを入力して起動します。

image.png

通常のubuntuと同じようにaptを用いることができます。apt updateとapt upgrade を行っておきます。

sudo apt update 
sudo apt upgrade 

通常通りhyfetchをインストールします。

sudo apt install hyfetch

image.png

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が起動するようになります。

image.png

サブシステムをリセットする

何か操作を間違えてシステムをリセットしたいときがあります。その際はVanilla OSの場合サブシステムのリセット、という形でシステムを汚すことなくリセットをすることができます。

ALT+F2を押すとコマンド実行の画面に入ります。

image.png

reset-vsoコマンドを実行します

reset-vso

image.png

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を紹介します。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?