web-dev-qa-db-ja.com

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

ライブCDのようにUbuntu 16.04をセットアップしたい。これは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を正しくセットアップする方法

2
Michael

標準の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/

2
deltamind106