Распаковка «нестандартных» проблем с Boot.img для 64-битного устройства

Это относится к этой ветке XDA и моей ветке на xda. Это перекрестный пост с XDA, попытаю счастья здесь. Я также задал этот вопрос на Stackoverflow , но я освещаю все свои основы и попытаю удачу и здесь.

Характеристики устройства, на всякий случай, если кто-то спросит

Характеристики устройства:

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

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

Примечание. В файле readme ядра указано, что нужно использовать набор инструментов 4.8, но когда я его использую, он жалуется, что не может найти gcc. Также в прочитанном мне говорится : «Загрузите Toolchain и установите набор инструментов arm-eabi-4.8 для ARM EABI (64 бит)» , а при чтении говорится об использовании aarch64 для ARM 64-битных устройств.

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

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, Image.gz, .dts и .dtb.

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

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

Нестандартный boot.img

или

Нестандартный boot.img 2

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

Поэтому я попытался вручную распаковать с помощью шестнадцатеричного редактора и мне удалось получить ядро. Слева моя скомпилированная, а справа шестнадцатеричная версия.

Ядра, шестнадцатеричные и скомпилированные

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

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

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

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

Ответы (1)

После многочисленных проб и ошибок мне наконец удалось вывести ramdisk.gz.cpio, это было из-за того, что я начал с правильной шестнадцатеричной области RAMDisk .gz, поиск 00 00 00 00 1F 8B, сужает его до 2 разделов, ядро ​​​​(Image.gz ) и ramdisk.gz.cpio. Итак, для виртуального диска я начал с 1F 8B и прошел весь путь до конца документа (раньше я остановился, чтобы испортить его).