Иногда требуется распаковать свой, или не свой Imageupdate (прошивку)
Так вот, если вдруг вам это понадобилось по каким либо причинам, то вооружайтесь hex редактором и линуксой
Сама структура прошивки там простая.
В заголовке все подсказки есть
Вот пример:
STB Model:MAG250
Date:Wed Jun 10 01:58:33 BST 2015
Image Version:218
Image Description:Test
VerUpdateAPI:2
Kernel size:3334307
Image size:61797479
Env size:155 65312814
Userfs Version:1
Userfs size:144 65313232
SecondBoot size:162683 65313639
Logotype size:39488 65476585
Start data...
Например, раз нам нужен rootfs, то в заголовке ищем "Image". Для него дается только размер, в
отличие от env, userfs и secondboot, поэтому смещение посчитаем сами. Нам нужно
сложить длину заголовка и длину Kernel, благо kernel и rootfs идут друг за
дружкой )
Область, где размещается kernel идет после "Start data..." и символа перноса строки 0х0А. К тому же все это дело на файловой системе Jffs2,
поэтому нужные нам блоки начинаются с hex последовательности 85 19, которые как
раз идут после "Start data..." и символа переноса строки 0х0А. В моем примере
kernel начинается с адреса 108h (число дано в 16-ой системе счисления, в 10-й
это число 264). К этому числу прибавляем длину области Kernel - 3 334 307 байт.
Получаем число 3 334 571 или в hex 32 E1 AB. По этому смещению будет находиться
начало блока Image, это проверяется наличием первого байта ФС jffs2 0х85 (после
него всегда идет 0х19, если вы верно нашли смещение в файле). Длина блока Image
указана в заголовке - это 61 797 479 байт. Я пользовался hex редактором winhex,
поэтому через меню выделил блок данных указав начало блока 32 E1 AB, а конец
блока находится тоже легко, к адресу начала блока прибавьте длину блока
(переведя с 10-й в 16-ю). После чего можно выделенный блок скопировать в
отдельный файл. Вот мы и получили наш Image.
Ну, а чтобы получить rootfs, тут уже танцы с бубнами ))))
Далее этот файлик надо в Ubuntu, Debian или любой другой nix для вас удобной системе смонтировать как блочное
устройство.
На примере Ubuntu будет выглядеть так.
Убунте для работы с файловой системой jffs2 нужен пакет mtd-utils, ставим его и выполняем
команды:
modprobe jffs2
modprobe mtdram total_size=64536 erase_size=16
modprobe mtdchar
mknod /dev/mtdblock0 b 31 0
modprobe mtdblock
losetup -o 16 /dev/loop0 /home/kikoz/Image
dd if=/dev/loop0 of=/dev/mtdblock0
losetup -d /dev/loop0
mkdir /mnt/rootfs
mount -t jffs2 /dev/mtdblock0 /mnt/rootfs
и вуаля в папке /mnt/rootfs имеем так необходимый нам rootfs в нормальном виде Там уже можете
его сжать и хранить у себя для дальнейшего использования.
работу можем закончить так:
umount /mnt/rootfs
rmmod mtdblock
rmmod mtdram
rmmod jffs2
Способ подключения образа в jffs2 взят отсюда http://www.zaurus.ru/board/viewtopic.php?t=53401.
Более простой и легкий способ я не искал, но может быть он и существует.
Представленая информация только для учебных и ознакомительных целей!
Удачи Вам!