".img" 파일의 일부 파일을 변경하려고 합니다.
예:
logo-x.squashfs.img
romfs-x.squashfs.img
safeEnv.img
sign.img
이를 위해 7-Zip을 사용하여 ".img"를 추출하고 필요한 사항을 변경했습니다. 그러나 이러한 변경된 파일을 7-Zip을 사용하여 보관하는 것은 불가능했기 때문에 이를 수행하는 도구를 검색했지만 원본 ".img"를 생성할 수 있는 도구를 찾을 수 없었습니다.
ImgBurn을 사용해 보았는데 원본과 다른 파일이 생성되는 것 같습니다. 또한 DD를 사용해 보았지만 볼륨 대신 파일에서 작동하도록 만들 수 없었습니다.
원본 ".img" 파일을 읽고 해당 형식을 이해하고 새 파일에서 새 파일을 만들려면 어떻게 해야 합니까?
답변1
7-Zip이 squashFS 이미지를 별도의 파일로 변환할 수 있다는 것을 알았지만 이를 수행하기 위한 표준 도구는 아마도 다음과 같습니다
rdsquashfs
.
# Unpack image `foo.img' into directory `foo':
rdsquashfs --unpack-root foo --unpack-path / foo.img
그런 다음 파일의 파일을 변경한 후 foo
다음을 사용하여 다시 패키징할 수 있습니다
mksquashfs
.
mksquashfs foo foo-updated.img
mksquashfs
위에서 설명한 대로 사용하면 원본 이미지 파일의 일부 메타데이터가 손실될 수 있다고 생각합니다 . 이것이 사용 사례에 중요한 경우 원본 이미지의 설명을 읽고 새 이미지를 만들 때 참조로 사용하는 것이 좋습니다.
# Unpack image `foo.img' into directory `foo':
rdsquashfs --unpack-root foo --unpack-path / foo.img
# Read description from image `foo.img' to file `foo.desc`:
rdsquashfs --describe foo.img >foo.desc
# Create image `foo-updated.img' from directory `foo' and description:
gensquashfs --pack-file foo.desc --pack-dir foo foo-updated.img
답변2
이렇게 하면...
file logo-x.squashfs.img
그리고...
sudo fdisk logo-x.squashfs.img
그런 다음 'p'는 파티션 정보를 인쇄합니다. 이것이 도움이 될 수 있습니다.
또한 .img 파일을 마운트하고 필요한 파티션에 파일을 추가하는 것이 더 낫습니까?
lsblk
sudo losetup --find logo-x.squashfs.img
lsblk
이제 .img 파일이 어느 장치 블록에 있는지 확인할 수 있습니다(예: /dev/loop6).
sudo mount /dev/loop6 /mnt
답변3
QEMU 머신을 생성한 다음 이러한 이미지를 QEMU 머신에 로드하면 디스크로 표시됩니다. 해당 디스크의 파일을 자유롭게 조작하세요. 디스크를 마운트 해제해도 파일은 그대로 유지됩니다.
돌출된 이미지의 경우 프로세스가 약간 다릅니다. 당신이 사용할 수있는파일 시스템 압축 해제도구. 이것 좀 봐세부.
기본적으로 다음과 같습니다(squashfs 파일 시스템의 경우).
unsquashfs /live/image/livefs.squashfs
touch modified-this.file
mksquashfs squashfs-root/ livefs.squashfs -noappend -always-use-fragments