분명히 나는 실제로 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에 추가할 수 있습니다. 자세한 답변은 다음을 참조하세요.
답변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
- 완료되면 오버레이를 제거하고 임시 디렉터리(원래 호박도 포함)를 삭제하세요.
여러 개의 겹치는 디렉터리 계층을 병합하려는 경우 그보다 조금 더 복잡하지만 오버레이 설치에서 여러 개의 하위 디렉터리를 나열한 다음 작동하지 않는 겹치는 부분을 패치한 다음 다시 패키지할 수도 있습니다.... ... .