rootfs에 대한 변경 사항은 fstab에 설정된 오버레이로 리디렉션되지 않습니다.

rootfs에 대한 변경 사항은 fstab에 설정된 오버레이로 리디렉션되지 않습니다.

fstab은 다음 fstab 파일에 대한 링크입니다.

# <file system> <mount pt> <type> <options> <dump> <pass>
/dev/root       /          ext2   ro,noauto 0       1
proc            /proc      proc   defaults  0       0
/dev/mmcblk0p10 /data      ext4   defaults  0       0
overlay         /          overlay
lowerdir=/,upperdir=/data/rfs_overlay,workdir=/data/rfs_overlay_work 0 0

fstab을 사용하면 덮어쓰기가 적용되지 않으며 mount 명령 출력에는 덮어쓰기 줄이 포함되지 않습니다.

fstab 줄을 다음과 같이 변경해 보았습니다.

# <file system> <mount pt>         <type>  <options> <dump> <pass>
overlay         /data/rfs_overlay  overlay
lowerdir=/,upperdir=/data/rfs_overlay_upper,workdir=/data/rfs_overlay_work 0 0

그런 다음 mount 명령에서 다음 줄을 얻습니다.

overlay on /data/rfs_overlay type overlay
(rw,relatime,lowerdir=/,upperdir=/data/rfs_overlay_upper,workdir=/data/rfs_overlay_work)

그러나 rootfs에서 test.txt 파일을 생성하려고 하면 다음과 같은 결과가 나타납니다.

touch test.txt
touch: test.txt: Read-only file system

rootfs를 rw로 변경하고 rootfs에 파일을 생성하면 파일이 지붕과 오버레이에 생성된다는 점은 주목할 가치가 있습니다.

mount -o remount,rw /
touch test.txt
find / -name test.txt
/data/rfs_overlay/root/test.txt /root/test.txt

나는 성공하지 못한 채 다음 링크를 시도했습니다.

답변1

먼저, 두 번째 시도에서 무슨 일이 일어나는지 이해해야 합니다.

# <file system> <mount pt>         <type>  <options> <dump> <pass>
overlay         /data/rfs_overlay  overlay
lowerdir=/,upperdir=/data/rfs_overlay_upper,workdir=/data/rfs_overlay_work 0 0
  • 귀하의 하위 디렉토리 /. lowerdir은 정적이어야 하며 읽기 전용이어야 합니다. 이 디렉토리를 "기본"으로 생각할 수 있습니다. 원래 변경되지 않은 파일입니다.
  • 상위 디렉토리는 입니다 /data/rfs_overlay_upper. 변경 사항을 저장해야 하는 폴더 또는 하위 디렉터리의 "delta"입니다.
  • 이 경우 마운트 지점은 입니다 /data/rfs_overlay. 이는 이 설치가 /lowerdir ("base" - ) 와 upperdir ("delta" - ) 간의 병합 결과 가 된다는 것을 의미합니다 /data/rfs_overlay_upper.

예를 들어, 귀하의 경우 파일을 생성하면 /data/rfs_overlay/afile해당 파일이 upperdir :에 생성된 것을 볼 수 있습니다 /data/rfs_overlay_upper/afile. 그렇기 때문에 lowerdir은 변경되지 않고 upperdir에는 lowerdir과 병합된 폴더 간의 변경 사항인 "델타"가 포함되어 있습니다.

/귀하의 경우에는 의 하위 디렉토리인 에서 변경을 수행했습니다 /data/rfs_overlay. 이전에 말했듯이 lowerdir은 정적으로 유지되어야 합니다(그래서 r/o입니다). 하위 또는 상위 디렉토리를 건드리지 말고 병합된 설치만 만지십시오. 커널은 상위 디렉토리를 변경해야 합니다.

두 번째 시도 시 어떤 일이 발생하는지에 대한 설명입니다.

초기 시도에 대해. 첫째, 두 번 설치하려고 하는데 /이는 불가능합니다.

이론적으로는 먼저 하위, 상위 및 작업 디렉터리를 포함하는 파티션을 마운트해야 합니다. 마지막으로 병합된 대상 경로를 설치해야 합니다.

하지만 귀하의 경우에는 두 가지 접근 방식 모두 효과가 없을 것 같습니다. 당신은 당신의 병합 폴더를 원합니다 /(그래서 제가 말한 바에 따르면 설치해야합니다뒤쪽에lower/upper/working 디렉터리). 하지만 루트 파일 시스템도 가장 먼저 마운트되어야 합니다! 나머지 브래킷은 상단에 장착해야하기 때문입니다. 그렇기 때문에 불가능합니다.

나는 당신의 목표가 rootfs의 일종의 "스냅샷"을 제공하여 이를 정적으로 유지하고 모든 변경 사항을 상위 디렉토리에 기록하는 것이라고 가정합니다. 그것이 당신이 원하는 일이라면, 루트 파일 시스템 스냅샷을 지원하는 쓰기 시 복사 파일 시스템을 사용하는 것이 좋습니다.BTFS또는ZFS. 물론 이를 위해서는 콘솔을 다시 설치해야 합니다. 하지만 원하는 방식으로 오버레이를 사용할 수는 없습니다.

관련 정보