squashfs를 수정하고,

squashfs를 수정하고,

분명히 나는 ​​실제로 squashfs를 수정하고 싶지 않습니다. 내가 하고 싶은 일은 기존의 squashfs, 파일 세트를 가져와서 세트의 파일이 squashfs의 유사한 파일을 대체하거나 (있는 경우) 없이 추가된다는 점을 제외하고는 이전 파일과 동일한 새 squashfs를 만드는 것입니다. 문서 같은 것.

좋아요, 마지막 부분이 이상하게 들리네요. 예를 들어 보겠습니다.

mfs.squash라는 이름의 squashfs가 있습니다. 안에 파일이 있습니다 ./a/foo. 나는 이전 squashfs와 동일한 새 squashfs를 만들고 싶습니다. 단, 새 파일이 있고 a/b이를 내 사양 중 하나로 덮어씁니다../a/foo

답변1

Squashfs를 설치합니다:

mkdir /mnt/squishy
mount mfs.sqash /mnt/squishy -t squashfs -o loop

squashfs를 다른 위치에 복사합니다.

mkdir /tmp/squooshtacular
find /mnt/squishy -xdev -print0 | cpio -pa0V /tmp/squooshtacular

새 파일을 해당 위치에 복사합니다.

cp ./a.foo /tmp/squooshtacular/a.foo

새로운 squashfs를 만드세요:

mksquashfs /tmp/squooshtacular mfs_with_bbq_sauce.squash

답변2

위와 같이 unsquash 또는 cpio Mounted_squashfs 없이 new_or_modified files_dir을 squashfs_file에 추가할 수 있습니다. 자세한 답변은 다음을 참조하세요.

squashfs 파일 내의 하위 디렉터리에 추가

답변3

squashfs를 ar/w 파일 시스템으로 추출하고 변경한 다음 다시 압축하는 것은 작은 볼륨의 경우 잘 작동합니다. 또는 mksquashfs를 사용하여 최상위 디렉터리에 콘텐츠를 추가("append")할 수 있는데 이는 매우 빠릅니다.

그러나 squashfs 볼륨이 크고 압축을 풀고 다시 압축할 공간이 문제이거나 성능이 문제인 경우 overlayfs(man mount -->overlayfs 옵션)가 원하는 것입니다.

  • Squashfs 볼륨 마운트mount -t squashfs stuff.sq /mnt/stuff
  • overlayfs용 오버헤드 디렉토리 생성 mkdir -p /overlay/{upper,work}/stuff /mnt/stuff-new
  • 설치하세요 mount -t overlay -o lowerdir=/mnt/stuff,upperdir=/overlay/upper/stuff,workdir=/overlay/work/stuff overlay /mnt/stuff-new(추가 옵션은 매뉴얼 페이지를 확인하세요)
  • 평소처럼 /mnt/stuff-new를 변경하세요.
  • 그런 다음 다시 포장mksquashfs /mnt/stuff-new stuff-new.sq
  • 완료되면 오버레이를 제거하고 임시 디렉터리(원래 호박도 포함)를 삭제하세요.

여러 개의 겹치는 디렉터리 계층을 병합하려는 경우 그보다 조금 더 복잡하지만 오버레이 설치에서 여러 개의 하위 디렉터리를 나열한 다음 작동하지 않는 겹치는 부분을 패치한 다음 다시 패키지할 수도 있습니다.... ... .

관련 정보