Ubuntu 16.04에는 읽기 전용 파일 시스템과 쓰기 가능한 레이어가 있습니다

Ubuntu 16.04에는 읽기 전용 파일 시스템과 쓰기 가능한 레이어가 있습니다

(이 글은 교차 게시글입니다.아쿠벤투, 왜냐면 여기엔 그것을 작동시키는 방법을 아는 사람들이 더 많다고 생각하기 때문입니다)

Live CD처럼 Ubuntu 16.04를 설정하고 싶습니다. 이것은 Ubuntu 12.04에서는 잘 작동하지만 16.04에서는 문제가 있습니다. 서비스가 충돌하고 CRON이 작동하지 않고 X가 작동하지 않으며 셸에 로그인할 수도 없습니다. 그래서 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/

관련 정보