임베디드 장치를 위해 작은 rootfs 디렉토리에서 squashfs를 만들었습니다.
mksquashfs rootfs_image rootfs.squashfs -b 1024k -comp xz -Xbcj x86
나는 이 squashfs를 장치의 NOR 플래시에 성공적으로 복사하고 이 NOR을 rootfs로 사용하도록 부트로더(U-boot)와 커널을 설정했습니다.
그러나 일부 파일은 양호하지만(예: 고양이 처리 가능) 일부는 그렇지 않습니다!
구체적인 예를 통해 이를 살펴보겠습니다.
# cat /var/www/hello.html
# hi, hello
# head /lib/modules/3.10.14/rtl8189es.ko
[ 21.940062] SQUASHFS error: xz_dec_run error, data probably corrupt
[ 21.946652] SQUASHFS error: squashfs_read_data failed to read block 0x1b9f76
[ 21.953963] SQUASHFS error: Unable to read fragment cache entry [1b9f76]
[ 21.960960] SQUASHFS error: Unable to read page, block 1b9f76, size 3c9d8
... (last 2 lines are repeated for a while
head: rtl8189es.ko: Input/output error
#
여기서 문제는 무엇이며 어떻게 해결할 수 있습니까? squashfs가 손상되었는지 확인하는 쉬운 방법이 있습니까?
squashfs 파일은 호스트 시스템에서 아무 문제 없이 unsquashfs-ed될 수 있으므로 손상되지 않았습니다.
답변1
xz 압축을 사용하지 않음으로써 이 문제를 해결했습니다.
mksquashfs rootfs_image rootfs.squashfs -b 1024k
이런 식으로 squashfs는 여전히 압축되지만 내 장치에 더 적합한 gzip으로 압축됩니다.