LINUX.ORG.RU

unsquashfs или mksquashfs, какая из утилит меняют данные?

 


0

1

Здравсвуйте. Есть один девайс на mips процессоре, с GNU/Linux внутри, имеется дамп c flash, с дампа выташил mtd блок, с заархивированным в sqashfs, образ файловой системы Linux. Скачал и установил SQUASHFS 4:0 Вот что выдает unsquashfs -s о файле:

segor@segor-Aspire-1640Z:~$ unsquashfs -s mtd5.img
Found a valid SQUASHFS 4:0 superblock on mtd5.img.
Creation or last append time Wed Aug  7 14:12:54 2013
Filesystem is exportable via NFS
Inodes are compressed
Data is compressed
Fragments are compressed
Check data is not present in the filesystem
Fragments are present in the filesystem
Always_use_fragments option is not specified
Duplicates are removed
Filesystem size 8322.10 Kbytes (8.13 Mbytes)
Block size 131072
Number of fragments 19
Number of inodes 620
Number of ids 1
распаковал его:
segor@segor-Aspire-1640Z:~$ fakeroot unsquashfs mtd5.img
Parallel unsquashfs: Using 1 processor
587 inodes (724 blocks) to write

[===============================================================-] 724/724 100%
created 410 files
created 33 directories
created 177 symlinks
created 0 devices
created 0 fifos
Установил дату запаковки в компе, и запаковал в mtd5_1.img
segor@segor-Aspire-1640Z:~$ sudo date 080714122013.49 && fakeroot mksquashfs squashfs-root/ mtd5_1.img -all-root
[sudo] password for segor: 
Ср. авг.  7 14:12:49 ALMT 2013
Parallel mksquashfs: Using 1 processor
Creating 4.0 filesystem on mtd5_1.img, block size 131072.
[===============================================================|] 547/547 100%
Exportable Squashfs 4.0 filesystem, data block size 131072
	compressed data, compressed metadata, compressed fragments
	duplicates are removed
Filesystem size 8322.04 Kbytes (8.13 Mbytes)
	40.03% of uncompressed filesystem size (20787.71 Kbytes)
Inode table size 5534 bytes (5.40 Kbytes)
	26.61% of uncompressed inode table size (20800 bytes)
Directory table size 6444 bytes (6.29 Kbytes)
	49.44% of uncompressed directory table size (13035 bytes)
Number of duplicate files found 1
Number of inodes 620
Number of files 410
Number of fragments 19
Number of symbolic links  177
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 33
Number of ids (unique uids + gids) 1
Number of uids 1
	root (0)
Number of gids 1
	root (0)
unsquashfs -s выдает о запакованном файле:
segor@segor-Aspire-1640Z:~$ unsquashfs -s mtd5_1.imgFound a valid SQUASHFS 4:0 superblock on mtd5_1.img.
Creation or last append time Wed Aug  7 14:12:54 2013
Filesystem is exportable via NFS
Inodes are compressed
Data is compressed
Fragments are compressed
Check data is not present in the filesystem
Fragments are present in the filesystem
Always_use_fragments option is not specified
Duplicates are removed
Filesystem size 8322.04 Kbytes (8.13 Mbytes)
Block size 131072
Number of fragments 19
Number of inodes 620
Number of ids 1
заливаю обратно в flash, и Linux перестает загружаться. Пробовал с разными параметрами mksquashfs запаковывать, самым близким по полученному размеру оказался этот параметр (оригинальный Filesystem size 8322.10 Kbytes, перезапакованный Filesystem size 8322.04 Kbytes), но все равно не грузится.

Кто знает,пожалуйста подскажите что можно сделать чтобы перезапакованный образ стал похожим на оригинал? Или почему девайс не принимает перезапакованный образ? Я начал изучать Linux 2 месяца назад, и знаю его плохо, без вашей помощи мне не обойтись.


А заливаешь каким макаром? Может тот хвостик в из-за разницы размеров мешается?

Radjah ★★★★★ ()

А теперь запакованное тобой распакуй и сравни с оригиналом.

mksquashfs бывают разные :(

Например чудилы из d-link используют какую-то старинную левую версию с какими-то патчами. Хорошо, что они ее теперь выкладывают в виде исходников...

vel ★★★★★ ()
Ответ на: комментарий от Radjah

Заливаю также как и сливаю, через программатор, проверял много раз, заливается без ошибок.

Segor ()
Ответ на: комментарий от irton

12 mtd блоков:

0x000000000000-0x000000100000 : "cfe"
0x000000100000-0x000000b00000 : "loader"
0x000000b00000-0x000000b80000 : "hwconfig"
0x000000b80000-0x000000c00000 : "caverify"
0x000000c00000-0x000001000000 : "kernel"
0x000001000000-0x000004000000 : "rootfs"
0x000004000000-0x000006980000 : "userdata"
0x000006980000-0x000006e80000 : "logo"
0x000006e80000-0x000007080000 : "cadata"
0x000007080000-0x000007100000 : "ipdata"
0x000007100000-0x000007180000 : "ldflage"
0x000007180000-0x000008000000 : "reserved"

Segor ()
Ответ на: комментарий от Segor

берем исходники DAP-2360, в каталоге tools лежит

squashfs-4.2
squashfs-tools
squashfs-tools-3.0
squashfs-tools-4.0
squashfs-tools-4.0-qca
squashfs-tools-4.0_realtek
squashfs-tools-broadcom
Правильно распаковывал и запаковывал только один из них.

А задача была проста - подправить один из скриптов для получения отладочной информации.

Сборка и разборка образа прошивки (заголовок с сигнатурой, ядро выравненное до 64к + squashfs) - это отдельная софтина.

vel ★★★★★ ()
Последнее исправление: vel (всего исправлений: 1)
Ответ на: комментарий от vel

Скачал и попробовал, squashfs-tools-broadcom не собирается, требует файл linux/squashfs_fs.h при make:

segor@segor-Aspire-1640Z:~/tools/squashfs-tools-broadcom$ make
gcc -I/include -I. -I./lzma_src/C -I/include -I/sdk_kernel/include -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_GNU_SOURCE -O2   -c -o mksquashfs.o mksquashfs.c
mksquashfs.c:58:31: fatal error: linux/squashfs_fs.h: Нет такого файла или каталога
 #include <linux/squashfs_fs.h>
                               ^
compilation terminated.
make: *** [mksquashfs.o] Ошибка 1
Подсовывал файлы squashfs_fs.h с других squashfs-tools, при make начинает ругаться на функции и необьявленные переменные. Остальные собираются но перезапаковнные образы, устроийство не принимает. Может быть такое: при запаковке нужно указать имя владельца образа, или ещё что надо указывать?

Segor ()
Ответ на: комментарий от Segor

mksquashfs имеет еще опцию -comp и можно указать тип компрессии gz, xz и т.п.

я бы еще попробовал вобще сделать образ без этого mtd, если без него загрузка пойдет чуть дальше (но все равно зависнет конечно) - значит проблема в mtd файле. Если на том же этапе застопорится то видимо защита образа и надо сам образ по хитрому собирать.

irton ★★★★★ ()
Ответ на: комментарий от irton

Я дамп flash микросхемы, через программатор заливаю и сливаю, без этого mtd также перезагружается. Могут производители поставить зашиту на сжатый образ «rootfs»(mtd5)? Или где то в ядре или CFE проверку по каким нибудь параметрам? Я линукс плохо знаю, и наверно глупые вопросы задаю.

Segor ()
Ответ на: комментарий от Segor

broadcom тогда точно не использовал.

Дело было в 2012 году, сейчас трудно вспомнить.

там для сборки образа прошивки используются какие-то бинарные утили.

openwrt-ar71xx-vmlinux.lzma - образ ядра

wapn08_dkbs_dap2360 - сигнатура устройства. Без нее через web-интерфейс не залить прошивку.

u.bin - то, что загружалось.

Там формат прошивки не совсем прост. Части прошивки должны были распологаться по границе блока 4 или 64к.

A=0x80100000
./mksquashfs rootfs2 rootfs2.img
./packimgs -v -o raw2.img -i openwrt-ar71xx-vmlinux.lzma -i rootfs2.img
./v2image  -v -o web2.img -i raw2.img -d /dev/mtdblock/1 -s wapn08_dkbs_dap2360 -c -b
./mkimage -A mips -O linux -T kernel -C lzma -a $A -e $A -n "Linux 3.3.7" -d web2.img u.bin
vel ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.