Заранее извиняюсь за репост с 4pda, но там молчат. Итак:пытаюсь поиграться с дампом от модема ZTE MF833 (Мегафон М150-3), на чипсете Qualcomm mdm9207 и NAND W71NW20GF3FW. У этой заразы все закрыто, в т.ч. adb и ssh, надо как-то открыть.
Снял с помощью qtools дамп системного раздела:
-rwxrwxrwx 1 root root 155058176 июн 3 13:46 14-0-system.oob
Выдираю из него 6 подразделов и создаю манифест для обратной сборки:
ubireader_utils_info 14-0-system.oob
ubireader_extract_images 14-0-system.oob
root@ubuntu:/home/user# ls ubifs-root/14-0-system.oob/ -la
… drwxr-xr-x 2 root root 4096 May 17 00:49 img-133015877
-rw-r–r– 1 root root 2666496 May 17 00:49 img-133015877_vol-cachefs.ubifs
-rw-r–r– 1 root root 8507392 May 17 00:49 img-133015877_vol-etcrwfs.ubifs
-rw-r–r– 1 root root 1650688 May 17 00:49 img-133015877_vol-fwfs.ubifs
-rw-r–r– 1 root root 10031104 May 17 00:49 img-133015877_vol-logfs.ubifs
-rw-r–r– 1 root root 47108096 May 17 00:49 img-133015877_vol-rootfs.ubifs
-rw-r–r– 1 root root 51298304 May 17 00:49 img-133015877_vol-ztedata.ubifs
Вопрос 1: общий размер выдранных файлов - 121 Мб - где еще 35Мб?
Дальше монтирую img-133015877_vol-rootfs.ubifs, где всякие интересные вещи хранятся:
modprobe nandsim first_id_byte=0xef second_id_byte=0xa5 third_id_byte=0x51 fourth_id_byte=0x95
flash_erase /dev/mtd0 0 0
ubiformat /dev/mtd0 -s 2048 -O 2048
modprobe ubi
ubiattach -m 0 -d 0 -O 2048
ubimkvol /dev/ubi0 -N rootfs -s $((0xB000000))
ubiupdatevol /dev/ubi0_0 ./ubifs-root/14-0-system.oob/img-133015877_vol-rootfs.ubifs
mount /dev/ubi0_0 /mnt
меняю нужный файлик (/[mount point]/usr/zte/zte_conf/scripts/firewall_sys_fw.sh), собираю обратно: /usr/sbin/mkfs.ubifs -m 2048 -e 126976 -c 400 -x lzo -f 8 -k r5 -p 1 -l 4 -r /mnt img-133015877_5_1.ubifs
ls -la img-133015877_5*
-rw-r–r– 1 root root 28569600 июн 3 23:14 img-133015877_5_1.ubifs
-rw-r–r– 1 root root 47108096 июн 3 22:46 img-133015877_5.ubifs
опять расхождение размеров, а я всего-то закомментировал 4 строки в одном из файлов? Распакованные примонтированные размеры совпадают, т.е. я ничего не потерял..
Аналогично собираю новый аналог 14-0-system.oob (ini-файл мне любезно сделала утилита ubireader_utils_info из 14-0-system.oob):
/usr/sbin/ubinize -p 131072 -m 2048 -O 2048 -s 2048 -x 1 -Q 133015877 -o 14-img-133015877.ubi img-133015877.ini
Полученный файл также сильно отличается от исходного 14-0-system.oob - на 29 мегабайт, впрочем ожидаемо, выше писал, что размеры выдранных images и образа раздела отличаются: ls -la 14*
-rwxrwxrwx 1 root root 155058176 июн 3 13:46 14-0-system.oob
-rw-r–r– 1 root root 126746624 июн 3 22:48 14-img-133015877.ubi
Все это не очень нравится и шить в модем обратно файл на 29 Мб меньше исходного дампа я не решаюсь.
Вопрос 1: как сделать так, чтобы размеры исходного и собранного 14-0-system.oob совпадали, если я ничего не меняю, а просто разбираю его через ubireader_extract_images и собираю обратно через ubireader_utils_info и ubinize? Вопрос 2: как сделать так, чтобы размеры исходного и собранного раздела img-133015877_vol-rootfs.ubifs совпадали, если я на нем ничего не меняю, а просто монтирую его и собираю обратно через mkfs.ubifs?