Ubuntuのoverlayrootパッケージを使うと、
overlayrootとは
Linuxの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としてマウントし、
たとえば次のような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 0
UUIDで指定されたデバイス
実際に起動したあとの、
$ 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/
この状態でルートファイルシステムにいろいろと書いてみましょう。手っ取り早いのはホームディレクトリに何かファイルを作ることです。ソフトウェアも大抵のものは起動できますが、
特にデスクトップ版の場合は、
いくつかルートファイルシステムに書き込んだ上で、
overlayrootの無効化
overlayrootを無効化するには、
ところでoverlayrootを有効化していると、
当然のことながら、
- より優先度の高いカーネルパラメーターで無効化する
- 一時的に低層のファイルシステムに書き込みできるようにする
たとえばGRUB起動時にメニューエントリーを表示し、
後者の方法はoverlayroot-chrootコマンドを使います。
$ sudo overlayroot-chroot
これだけで低層のルートファイルシステムが書き込み可能な状態で再マウントされます。/etc/
書き込み可能な状態を終了するには、
GRUBのメニューで時間がかかるようになる
overlayrootを有効化して再起動すると、
GRUBにはメニューエントリーに
GRUBは次回起動時、
さて、
もしoverlayrootを常用する場合は、
より高度な利用方法
overlayroot変数にはtmpfs以外にもさまざまなパラメーターを付与できます。詳細は
- swapパーティションを使用したい場合
[4]:overlayroot="tmpfs:swap=1" - ルートファイルシステム以外のパーティションは書き込み可能にしたい場合
[4]:overlayroot="tmpfs:recurse=0" - デバッグ出力を有効化したい場合:overlayroot="tmpfs:debug=1"
- 上位レイヤーのディレクトリ名
(/overlay) を変更したい場合:overlayroot="tmpfs:dir=other"
既存のストレージデバイスを上位レイヤーとして使用したい場合は、
overlayroot="device:dev=/dev/sdb"
overlayroot="device:dev=LABEL=flashdrive,timeout=180"
overlayroot="device:dev=/dev/sdb1,mkfs=0,fstype=ext4"
1つ目の例は特定のパーティションを指定しており、
1つ目、
overlayrootとは別にoverlayroot_
overlayroot_cfgdisk="LABEL=OROOTCFG"
標準では
他にもパスワードロックやdm-cryptを用いた暗号化ストレージにも対応しています。overlayroot_