Ubuntuのoverlayrootパッケージを使うと,
overlayrootとは
LinuxのOverlayFSは,
一般的な使い方としては,
身近な例だと,
- ※1
- OverlayFSについては,
LXCで学ぶコンテナ入門の 「第18回 Linuxカーネルのコンテナ機能 [7] ─ overlayfs」 が大変参考になります。
overlayrootはこのOverlayFSを既存のUbuntu環境でも利用するためのツールです。具体的にはすでにインストール済みの環境を下位の層として利用し,
overlayrootのインストール
overlayrootを利用するためにはoverlayrootパッケージをインストールしなくてはなりません。
実はサーバー版の場合は最初からoverlayrootパッケージがインストールされています。デスクトップ版のみ明示的にインストールが必要です。
$ sudo apt install overlayroot
インストールされるのは主に次の4つです。
- 設定ファイルであるoverlayroot.
conf - initramfs用の各種スクリプト
- 下層レイヤーメンテナンス用のoverlayroot-chrootコマンド
- overlayroot有効化時のためのMOTDファイル
サーバー版には最初からインストールされていることからもわかるように,
- カーネルパラメーターに
「overlayroot=XXX」 を指定する - /etc/
overlayroot. local. confに 「overlayroot="XXX"」 を指定する - /etc/
overlayroot. confに 「overlayroot="XXX"」 を指定する
設定内容は上位のほうが優先されます。つまりカーネルパラメーターとoverlayroot.
overlayrootの有効化
さっそくoverlayrootを有効化してみましょう。前述のとおり方法はいくつかありますが,
$ echo 'overlayroot="tmpfs"' | sudo tee -a /etc/overlayroot.local.conf
上記設定を行うと次回起動時から,
具体的にはinitramfsの中の初期化スクリプトがoverlayfsとしてマウントし,
- ※2
- Ubuntuのinitramfsの動作については,
第384回を参照してください。
たとえば次のようなfstabがあったとします。
UUID=1868998f-7acf-4dd4-8aee-fc44bee0033a / ext4 errors=remount-ro 0 1上記のようにoverlayroot.
#UUID=1868998f-7acf-4dd4-8aee-fc44bee0033a /media/root-ro/ ext4 ro,errors=remount-ro,noauto 0 1
/media/root-ro/ / overlay lowerdir=/media/root-ro/,upperdir=/media/root-rw/overlay/,workdir=/media/root-rw/overlay-workdir/_ 0 1
#overlayroot:swap=0#/swapfile none swap sw 0 0UUIDで指定されたデバイス
実際に起動したあとの,
$ egrep "overlayroot|/media/root-ro|/media/root-rw" /proc/mounts 2>/dev/null | sort -r tmpfs-root /media/root-rw tmpfs rw,relatime 0 0 overlayroot / overlay rw,relatime,lowerdir=/media/root-ro,upperdir=/media/root-rw/overlay,workdir=/media/root-rw/overlay-workdir/_ 0 0 /dev/sda1 /media/root-ro ext4 ro,relatime 0 0
/dev/
- ※3
- workdirはuppderdirへの書き込みの際にアトミックな操作を行うために必要な,
upperdirと同じファイルシステム上の空のディレクトリです。
この状態でルートファイルシステムにいろいろと書いてみましょう。手っ取り早いのはホームディレクトリに何かファイルを作ることです。ソフトウェアも大抵のものは起動できますが,
特にデスクトップ版の場合は,
いくつかルートファイルシステムに書き込んだ上で,