2016-09-08 10 views
0

Это относится к резьбе XDA this и my thread на xda. Это cross post от XDA, пытаясь удачи здесь.Распаковка «нестандартных» проблем с Boot.img для 64-битного устройства

спецификации устройства, только в случае, если кто-то спрашивает

устройства Технические характеристики:

  • Текущий Android Версия: Android Lollipop 5.1.1
  • Chipset: Marvell Armada PXA1908 (Примечание : Из-за этого, редко используемого чипа, корень CF-Auto не будет работать)
  • Пользовательские восстановления Статус: TWRP 3.0.2-0 (Не работает с леденец)
  • Root Статус (Это технически почему я здесь): Android KitKat 4.4.4 (Root), Android Lollipop 5.1.1 (NO ROOT же)
  • ARMv8 64-разрядное

Теперь давайте попасть в мои шаги до точки, а затем моя проблема.

Примечание: в ядре readme указано использование инструментальной цепочки 4.8, но когда я его использую, он жалуется, что не смог найти gcc. Кроме того, в прочитанной мной статье «get Toolchain загрузите и установите toolchain arm-eabi-4.8 для ARM EABI (64 бит)», а когда на нем reading up, он говорит, что для использования устройств ARM 64 Bit используется устройство aarch64.

устройств Исходный код можно найти на Here

cd ~/android 
export CROSS_COMPILE=~/android/ndk/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android- 
cd ~/android/kernel 
make ARCH=arm64 pxa1908_xcover3lte_eur_defconfig 
make ARCH=arm64 

Воспроизводит: Изображение, image.gz, .dts и .dtb файлов.

Где риое ядро ​​(Я считаю, что это не было обновление с момента KitKat) говорит, что выход будет, - Ядро: Ядро/арк/рука/загрузок/zImage - модуль: ядра/драйверов// .ko Примечание: при попытке скомпилировать 32-битную инструментальную привязку ARM она терпит неудачу, так как конфигурация найдена в arm64, если другие ключи находятся под рукой.

Знаете, у меня есть ядро ​​(Image или Image.gz) и некоторые файлы .dts и .dtb. Теперь, чтобы распаковать boot.img, , здесь возникают проблемы. При попытке использовать такие инструменты, как abootimg или различные версии unmkbootimg, они жалуются на нестандартный boot.img.

Non-Standard boot.img

или

Non-Standard boot.img 2

Хотя и попытайтесь сохранить его как zImage, когда его означало быть image.gz, или они достают его не бросать какие-либо ошибки, но при взгляде на извлеченные файлы с шестнадцатеричным редактором, это все 00 во всех файлах, поэтому бесполезный файл.

Итак, я попытался вручную распаковать шестнадцатеричный редактор и смог получить ядро. Слева - это мой сборник, а Right - шестнадцатеричная версия.

Kernels, Hex and Compiled

Обратите внимание на разницу в размерах, это потому, что ядро ​​в boot.img раздели его отладки элементов в то время как у меня это не? Если это так, я должен посмотреть, как это исправить.

Но я с проблемами, пытаясь извлечь ramdisk через hex. Итак, кто-нибудь может научить/помочь мне извлечь файл boot.img должным образом (с помощью таких инструментов, как unmkbootimg или с шестнадцатеричным редактором)

Я приложил необходимые файлы, если вы хотите посмотреть их сами. Файлы: Samsung xCover3 Files

Любая помощь приветствуется.

ответ

0

После многочисленных проб и ошибок, я, наконец, удалось вывести ramdisk.cpio.gz. Начало файла Gzip в шестнадцатеричном формате - 1F 8B 08, поэтому при использовании функции поиска у вас есть приложение-редактор, вы можете сузить результаты до 1 или 2 файлов (2 файла для меня, так как мое ядро ​​и ramdisk оба gzipped). Затем вы следуете за ним до конца, пока не найдете большой кусок нулей (похоже, они проходят между файлами). Когда вы достигаете пучки нулей, включайте первый «00» в конце другого шестисекундного. НАПРИМЕР. Конец одного из моих файлов gzip - «CE 24 00 00 00 .... 00 (ZERO PADDING BETWEEN FILES), Резьбовой конец моего файла« CE 24 00 ».

Зная это, я смог успешно извлечение и проверка правильности обоих файлов ядра и ramdisk.