Это относится к этой ветке XDA и моей ветке на xda. Это перекрестный пост с XDA, попытаю счастья здесь. Я также задал этот вопрос на Stackoverflow , но я освещаю все свои основы и попытаю удачу и здесь.
Характеристики устройства, на всякий случай, если кто-то спросит
Характеристики устройства:
Теперь давайте перейдем к моим шагам до сути, а затем к моей проблеме.
Примечание. В файле 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.
или
Хотя также попробуйте сохранить его как zImage, когда он должен быть Image.gz, или они извлекают его без каких-либо ошибок, но при просмотре извлеченных файлов с помощью шестнадцатеричного редактора во всех файлах все 00, поэтому бесполезно файл.
Поэтому я попытался вручную распаковать с помощью шестнадцатеричного редактора и мне удалось получить ядро. Слева моя скомпилированная, а справа шестнадцатеричная версия.
Обратите внимание на разницу в размере, это потому, что ядро в boot.img лишено элементов отладки, а мое — нет? Если это так, я должен посмотреть, как это исправить.
Но у меня проблемы с извлечением виртуального диска через шестнадцатеричный код. Итак, кто-нибудь может научить / помочь мне правильно извлечь boot.img (с помощью таких инструментов, как unmkbootimg или с помощью шестнадцатеричного редактора)
Я приложил необходимые файлы, если вы хотите взглянуть на них самостоятельно. Файлы: Samsung xCover3 Files
Любая помощь приветствуется.
После многочисленных проб и ошибок мне наконец удалось вывести ramdisk.gz.cpio, это было из-за того, что я начал с правильной шестнадцатеричной области RAMDisk .gz, поиск 00 00 00 00 1F 8B, сужает его до 2 разделов, ядро (Image.gz ) и ramdisk.gz.cpio. Итак, для виртуального диска я начал с 1F 8B и прошел весь путь до конца документа (раньше я остановился, чтобы испортить его).