讓 Ubuntu 16.04 變得「活躍」(具有讀/寫層的唯讀)

讓 Ubuntu 16.04 變得「活躍」(具有讀/寫層的唯讀)

我想像 Live CD 一樣設定 Ubuntu 16.04。這在 Ubuntu 12.04 中運作良好,但在 16.04 中卻出現了問題。服務崩潰,CRON 不起作用,X 不起作用,我什至無法登入 shell。所以我認為16.04需要一些修改。如果我將根驅動器安裝為讀取/寫入,一切都會正常進行。所以,作業系統本身是沒問題的。

為了讓 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 配置中新增一個核心引導條目,以便輕鬆地暫時停用補丁等的唯讀根檔案系統。

overlayroot=disabled

更多資訊請見:https://spin.atomicobject.com/2015/03/10/protecting-ubuntu-root-filesystem/

相關內容