Я создал squashfs из небольшого каталога rootfs для встроенных устройств:
mksquashfs rootfs_image rootfs.squashfs -b 1024k -comp xz -Xbcj x86
Мне удалось успешно скопировать этот squashfs во флэш-память NOR устройства и настроить загрузчик (U-boot) и ядро для использования этого NOR в качестве корневой файловой системы.
Однако некоторые файлы хороши (т.е. я могу их пометить), а некоторые — нет!
Давайте рассмотрим это на конкретных примерах:
# 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, что кажется более подходящим для моего устройства.