SquashFS를 사용하고 다른 컴퓨터에서는 r/o로 마운트하는 루트 파일 시스템이 포함된 디렉터리가 있습니다.
그러나 SquashFS 이전에는 파일 시스템에서 모든 사용자 네임스페이스 xattrs를 지우고 싶습니다. 이것은 getfattr
작은 루프 스크립트의 경우 사소한 일 setfattr
이지만 종속성으로 도입하는 것을 피하고 싶습니다.
까다로운 부분은 사용자 xattrs만 지우고 싶다는 것입니다. 보안 xattrs에는 SELinux 태그가 포함되어 있으므로 유지해야 합니다. 따라서 단순히 Squash에게 xattrs를 수집하지 말라고 지시하는 것은 선택 사항이 아닙니다.
내가 가진 한 가지 아이디어는 파일 시스템의 크기를 파악하고, 해당 크기의 빈 파일을 할당하고, ext4로 포맷하고, 를 사용하여 마운트하고 -o nouser_xattrr
, 거기에 파일을 복사한 다음 압축하는 것이었습니다. 이것은 작동하지만 번거롭고 파일을 수용할 충분한 공간이 있기를 바랍니다. xattr 지원이 없고 메모리가 부족할 수 있으므로 tmpfs는 작동하지 않습니다.
다른 아이디어가 있나요?
답변1
GNU tar는 xattrs를 읽고 필터링할 수 있습니다.https://www.gnu.org/software/tar/manual/html_node/Extended-File-Attributes.html.
sqfstar
이제 tar 아카이브에서 Squashfs 파일 시스템을 생성하는 것이 가능합니다(버전 4.5 이상).
그처럼
tar --xattrs --xattrs-exclude='user.*' -c your-directory | sqfstar img.sqfs
작동해야합니다.