Разбираюсь с прошивками TV-Box на базе RockChip RK3066. Так, чисто для себя...
Итак. Распаковать имадж:
Упаковка до *.img делается с помощью img_maker, md5-суммы сходиться не будут, т.к. внутрь файла .img запихивается время, когда он был произведен. Проверил тем, что опять распаковал и проверил md5-сумму. Все точно.
Итак, после распаковки apftool получаем каталог root, в котором лежит структура прошивки андроида. В каталог Image легли образы всех кусков прошивки - boot, kernel, misc, recovery, system. В моем случае system.img - это готовая к работе ext3:
Соответственно, ее можно просто замонтировать по соседству:
Файл Image/boot.img содержит в себе и ядро и ramdisk
опять же, boot.img & boot-1.img показывают одинаковые md5-суммы.
Пока я не смог понять, какой формат у файла boot/boot.img-kernel - я полагал, что это загзипленное ядро, но file говорит, что не понял, что это за формат.
Тулзы взяты из rk-tools, mkbootimg из rk30sdk.
Итак. Распаковать имадж:
$ img_unpack update.img update-unpacked
rom version: 4.1.1
build time: 2013-08-20 14:15:41
chip: 60
checking md5sum....OK
Полученный образок распаковывается с помощью afptool:
$ afptool -unpack update-unpacked root Check file...OK ------- UNPACK ------- package-file 0x00000800 0x00000238 RK30xxLoader(L)_V1.22.bin 0x00001000 0x0002EC7A parameter 0x00030000 0x00000267 Image/misc.img 0x00030800 0x0000C000 Image/kernel.img 0x0003C800 0x00711030 Image/boot.img 0x0074E000 0x00A50000 Image/recovery.img 0x0119E000 0x00A9C000 Image/system.img 0x01C3A000 0x15D60800 parameter 0x1799A800 0x0000025B SELF 0x00000000 0x1799C004 Skip SELF file. update-script 0x1799B000 0x000003A5 recover-script 0x1799B800 0x0000010A UnPack OK! $Забегая вперед скажу, что сразу же проверил обратную процедуру - упаковку с полученного дерева. Файлы в результате идентичные, об этом сказал ls -l и md5sum.
Упаковка до *.img делается с помощью img_maker, md5-суммы сходиться не будут, т.к. внутрь файла .img запихивается время, когда он был произведен. Проверил тем, что опять распаковал и проверил md5-сумму. Все точно.
Итак, после распаковки apftool получаем каталог root, в котором лежит структура прошивки андроида. В каталог Image легли образы всех кусков прошивки - boot, kernel, misc, recovery, system. В моем случае system.img - это готовая к работе ext3:
$ file Image/system.img
Image/system.img: Linux rev 1.0 ext3 filesystem data...
Соответственно, ее можно просто замонтировать по соседству:
$ mkdir system
$ sudo mount -o loop Image/system.img system
О пассах с system.img - как нибудь позже.Файл Image/boot.img содержит в себе и ядро и ramdisk
$ boot_info Image/boot.img
Page size: 16384 (0x00004000)
Kernel size: 7409700 (0x00711024)
Ramdisk size: 3374548 (0x00337dd4)
Second size: 0 (0x00000000)
Board name:
Command line: ''
Base address: 1611169536 (0x60087f00)
Распаковывается это дело с помощью скрипта split_boot:$ split_boot Image/boot.img
Page size: 16384 (0x00004000)
Kernel size: 7409700 (0x00711024)
Ramdisk size: 3374548 (0x00337dd4)
Second size: 0 (0x00000000)
Board name:
Command line: ''
Base address: (0x60087f00)
в результате в текущем каталоге появляется каталог boot, который содержит boot.img-kernel, boot.img-ramdisk.cpio.gz и распакованный в соответствующий каталог ramdisk.Файлы Image/kernel.img - это упакованное ядро, а boot/boot.img-kernel - распакованное. репаковку можно делать с помощью mkkrnlimg. С ключиком -a - в img, с ключиком -r - распаковать. Опять же проверено по md5sum. Собрать boot.img назад можно с помощью mkbootimg, указав программе файлы с незапакованным ядром и рамдиском:
$ mkbootimg --kernel boot/boot.img-kernel \
--ramdisk boot/boot.img-ramdisk.cpio.gz \
-o Image/boot-1.img
опять же, boot.img & boot-1.img показывают одинаковые md5-суммы.
Пока я не смог понять, какой формат у файла boot/boot.img-kernel - я полагал, что это загзипленное ядро, но file говорит, что не понял, что это за формат.
Тулзы взяты из rk-tools, mkbootimg из rk30sdk.
Комментариев нет:
Отправить комментарий