rootfs에 대한 읽기-쓰기 범위를 사용하여 squashfs 이미지 마운트

rootfs에 대한 읽기-쓰기 범위를 사용하여 squashfs 이미지 마운트

Squashfs 이미지를 루트 파일 시스템으로 마운트하기 위해 사용자 정의 initramfs init 스크립트를 업데이트하려고 합니다. 저는 스퀴즈 이미지를 읽기 전용으로 루프 장치에 마운트하고, 또 다른 빈 파일을 읽기/쓰기로 다른 루프 장치에 마운트하고, 장치 매퍼를 사용하여 ro 루프 장치의 rw 스냅샷을 생성하는 것을 테스트해 왔습니다.

나는 테스트 스크립트를 사용하여 이 작업을 수행했습니다(루트로 실행).

mkdir /tmp/squash_rw
dev=$(losetup -f)
losetup -r $dev /mcp_fs.sqsh
ovl=/overlay
newdevname=overlay
size=$(blockdev --getsz "$dev")
loop=$(losetup -f --show -- "$ovl")
printf '%s\n' "0 $size snapshot $dev $loop P 8" | dmsetup create "$newdevname"

그런 다음 터치를 사용하여 새 장치가 rw로 마운트되었는지 테스트했지만 읽기 전용 장치라는 오류가 발생했습니다.

 # touch /tmp/squash_rw/test
touch: cannot touch '/tmp/squash_rw/test': Read-only file system

저는 젠투 배포판과 장치 매퍼 및 squashfs 모듈이 포함된 Linux 커널 3.10.6을 사용하고 있습니다. 많은 참고 자료에서 dracut initramfs 사용을 제안하지만 저는 공급업체에서 제공한 init 스크립트가 작동하도록 하려고 합니다.

나는 며칠 동안 이 문제에 갇혀 있었고 누구든지 제공할 수 있는 도움을 주시면 정말 감사하겠습니다.

계속된 연구와 실험 끝에 제가 만들고 있는 devmapper 장치는 첫 번째 장치의 파일 시스템이 함께 병합되고 있다고 가정하는 것 같습니다. squashfs 장치를 사용하면 devmapper 장치는 읽기 전용이고, rw 이미지를 사용하면 devmapper 장치는 rw이지만 squash 파일의 콘텐츠 없이 마운트됩니다.

관련 정보