Ubuntu 16.04 を「ライブ」にする (読み取り/書き込みレイヤーを備えた読み取り専用)

Ubuntu 16.04 を「ライブ」にする (読み取り/書き込みレイヤーを備えた読み取り専用)

Ubuntu 16.04 をライブ CD のようにセットアップしたいです。これは Ubuntu 12.04 ではうまくいきましたが、16.04 では問題があります。サービスがクラッシュし、CRON が機能せず、X が機能せず、シェルにログインすることすらできません。そのため、16.04 には何らかの変更が必要だと思います。ルート ドライブを読み取り/書き込みとしてマウントすると、すべてが正常に動作します。つまり、OS 自体は問題ありません。

Ubuntu を読み取り専用モードで起動するには、カーネル パラメータ「rw」を「ro」に置き換え、initramfs でスクリプトを使用します。

/etc/initramfs-tools/scripts/init-bottom/ro_root

#!/bin/sh

PREREQ=''

prereqs() {
  echo "$PREREQ"
}

case $1 in
prereqs)
  prereqs
  exit 0
  ;;
esac

ro_mount_point="${rootmnt%/}.ro"
rw_mount_point="${rootmnt%/}.rw"

# Create mount points for the read-only and read/write layers:
mkdir "${ro_mount_point}" "${rw_mount_point}"

# Move the already-mounted root filesystem to the ro mount point:
mount --move "${rootmnt}" "${ro_mount_point}"

# Mount the read/write filesystem:
mount -t tmpfs root.rw "${rw_mount_point}"

# Mount the union:
mount -t aufs -o "dirs=${rw_mount_point}=rw:${ro_mount_point}=ro" root.union "${rootmnt}"

# Correct the permissions of /:
chmod 755 "${rootmnt}"

# Make sure the individual ro and rw mounts are accessible from within the root
# once the union is assumed as /.  This makes it possible to access the
# component filesystems individually.
mkdir "${rootmnt}/ro" "${rootmnt}/rw"
mount --bind "${ro_mount_point}" "${rootmnt}/ro"
mount --bind "${rw_mount_point}" "${rootmnt}/rw"

# ro_root end

ro ルート ドライブと rw fs レイヤーを使用して Ubuntu 16.04 を正しくセットアップするにはどうすればよいですか?

答え1

標準の Ubuntu パッケージ「overlayroot」を使用します。Ubuntu 16.04 では、このパッケージは自動的にインストールされます。/etc/overlayroot.conf を編集して次の設定を追加することで、これを有効にするだけです。

overlayroot="tmpfs"

Ubuntu 16.04 システムを再起動すれば完了です。パッチなどのために読み取り専用のルート ファイルシステムを一時的に無効にしやすくするために、カーネル ブート エントリを grub 構成に追加することをお勧めします。これを行うには、次のようにカーネル引数を渡す grub エントリを追加します。

overlayroot=disabled

詳細は以下をご覧ください:https://spin.atomicobject.com/2015/03/10/protecting-ubuntu-root-filesystem/

関連情報