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 配置中添加一个内核引导条目,以便轻松地临时禁用补丁等的只读根文件系统。实现此操作的方法是添加一个传递内核参数的 grub 条目,如下所示:

overlayroot=disabled

更多信息请访问: https://spin.atomicobject.com/2015/03/10/protecting-ubuntu-root-filesystem/

相关内容