Dados corrompidos do Squashfs

Dados corrompidos do Squashfs

Eu criei um squashfs a partir de um pequeno diretório rootfs para dispositivos incorporados:

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

Copiei com sucesso este squashfs para o flash NOR do dispositivo e configurei o bootloader (U-boot) e o kernel para usar este NOR como rootfs.

No entanto, alguns arquivos são bons (ou seja, posso catá-los), mas outros não!

Vamos ver isso em exemplos concretos:

# 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
#

Qual é o problema aqui e como posso resolvê-lo? Existe alguma maneira fácil de verificar se um squashfs está corrompido?

Observe que o arquivo squashfs não está corrompido, pois pode ser removido do squashfs na máquina host sem problemas.

Responder1

Resolvi isso não usando a compactação xz:

mksquashfs rootfs_image rootfs.squashfs -b 1024k

Desta forma o squashfs ainda está compactado mas pelo gzip o que me parece mais apropriado para o meu aparelho.

informação relacionada