Squashfs 损坏的数据

Squashfs 损坏的数据

我已经从小型 rootfs 目录为嵌入式设备创建了一个 squashfs:

mksquashfs rootfs_image rootfs.squashfs -b 1024k -comp xz -Xbcj x86

我已成功将此 squashfs 复制到设备的 NOR 闪存中,并设置引导加载程序(U-boot)和内核以使用此 NOR 作为 rootfs。

但是,有些文件是好的(即我可以对它们进行 cat ),但有些则不好!

让我们通过具体的例子来看一下:

# 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 文件没有损坏,因为它可以在主机上无问题地取消 squashfs 操作。

答案1

我通过不使用 xz 压缩解决了这个问题:

mksquashfs rootfs_image rootfs.squashfs -b 1024k

这样,squashfs 仍然被压缩,但是通过 gzip 压缩,这似乎更适合我的设备。

相关内容