Ошибка с перепаковкой boot.img (Android)
У меня Nexus 5 с AOSP ROM 4.4.4.
Я пытаюсь «вытащить» boot.img из устройства, распаковать его, отредактировать «init.rc», перепаковать его в boot.img и прошить на устройство.
Я следую многим инструкциям, но ни у одного из них нет такого же сценария, как у меня:
(http://droidcore.blogspot.co.il/2012/12/how-to-edit-initrc-in-android.html а такжеhttp://www.digitalinternals.com/mobile/android-mmc-mmcblk-partition-layout/259/)
Раздел устройства - это mmcblck, так чтоls -l /dev/block/platform/msm_sdcc.1/by-name/
Я понял, что ботинок/dev/block/mmcblk0p19
:root root lrwxrwxrwx 1971-02-28 21:30 boot -> / dev / block / mmcblk0p19
Я создал boot.img с помощью команды:cat /dev/block/mmcblk0p19 > /mnt/sdcard/boot.img
и вытащить этот boot.img на мой компьютер. Этот boot.img составляет ~ 23 МБ.
I unmkbootimg
boot.img с инструментом вhttp://droidcore.blogspot.co.il/2012/12/how-to-edit-initrc-in-android.html и получил 2 файла:initramfs.cpio.gz
что составляет ~ 500 КБ иkernel.gz
что составляет ~ 8,4 МБ. Детали, которые я получил:
Размер ядра 8405280
Адрес ядра 0x8000
Рамдиск размер 498992
Рамдиск адрес 0x2900000
Вторичный размер 0
Вторичный адрес 0xf00000
Ядра тегов адрес 0x2700000
Размер флеш-страницы 2048
Название платы ""
Командная строка "console = ttyHSL0,115200, n8 androidboot.hardware = молоток user_debug = 31 maxcpus = 2 msm_watchdog_v2.enable = 1"
Извлечение kernel.gz
... Извлечение файла initramfs.cpio.gz ...
Все сделано.
Чтобы перекомпилировать это изображение, используйте:
mkbooting --kernel kernel.gz --ramdisk initramfs.cpio.gz --base 0x26fff00 --cmdline 'console = ttyHSL0,115200, n8 androidboot.hardware = hammerhead user_debug = 31 maxcpus = 2 msm_watchdog_v2.enable = 1' -o new_boot .img
Я распаковываюinitramfs.cpio.gz
с помощью команды:gunzip -c initramfs.cpio.gz | sudo sh -c 'cd ../ && cpio -i'
(отhttp://www.wiki.xilinx.com/Build+and+Modify+a+Rootfs) и получил много файлов, в том числе init.rc. Я редактировал этот файл.
Я перепаковываюinitramfs.cpio.gz
с помощью команды:sh -c 'cd ../ && sudo find . | sudo cpio -H newc -o' | gzip -9 > new_initramfs.cpio.gz
и получил этот файл ~ 500 КБ.
Сейчас яmkbootimg
эти 2 файла с командой:./mkbooting --kernel kernel.gz --ramdisk initramfs.cpio.gz --base 0x26fff00 --cmdline 'console=ttyHSL0,115200,n8 androidboot.hardware=hammerhead user_debug=31 maxcpus=2 msm_watchdog_v2.enable=1' -o new_boot.img
и я получил boot.img, который составляет ~ 8,5 МБ
Теперь прошейте загрузку на устройство, и устройство зависло на первом экране (не загружается)
Мои вопросы:
В чем дело?
Это нормально, что мой новый boot.img имеет только 8,5 МБ вместо 23 МБ (оригинал)?
Спасибо вам, ребята!
************* Я НАШЕЛ ПРОБЛЕМУ *************
РЕШЕНИЕ: Я использовалunmkbootimg
отсюда:http://whiteboard.ping.se/Android/Unmkbootimg
После запуска unmkbootimg я получил этот комментарий:
*** ПРЕДУПРЕЖДЕНИЕ **** Это изображение построено с использованием нестандартного mkbootimg! OFF_KERNEL_ADDR - 0xFD908100 OFF_RAMDISK_ADDR - 0x00200100 OFF_SECOND_ADDR - 0xFE800100. Измените файл mkbootimg.c, используя приведенные выше значения, чтобы создать свой образ.
поэтому я следую инструкциям здесь:https://gist.github.com/jberkel/1087757
и теперь это работает !!!