Probleme beim Entpacken von „Nicht-Standard“-Boot.img-Problemen für 64-Bit-Geräte

Dies bezieht sich auf diesen XDA-Thread und meinen Thread auf xda. Dies ist ein Cross-Post von XDA, ich versuche hier mein Glück. Ich habe diese Frage auch auf Stackoverflow gestellt , decke aber alle meine Basen ab und versuche auch hier mein Glück.

Gerätespezifikationen, nur für den Fall, dass jemand fragt

Gerätespezifikationen:

  • Aktuelle Android-Version: Android Lollipop 5.1.1
  • Chipsatz: Marvell Armada PXA1908 (Hinweis: Da dies ein selten verwendeter Chip ist, funktioniert der CF-Auto-Root nicht)
  • Benutzerdefinierter Wiederherstellungsstatus: TWRP 3.0.2-0 (funktioniert nicht mit Lollipop)
  • Root-Status (Technisch gesehen bin ich deshalb hier): Android KitKat 4.4.4 (Root), Android Lollipop 5.1.1 (Noch KEIN ROOT)
  • ARMv8 64-Bit

Kommen wir nun zu meinen Schritten bis zum Punkt und dann zu meinem Problem.

Hinweis: In der Kernel-Readme heißt es, die Toolchain 4.8 zu verwenden, aber wenn ich sie verwende, beschwert sie sich, dass sie gcc nicht finden kann. Auch in der Readme heißt es "Toolchain herunterladen und Arm-eabi-4.8 Toolchain für ARM EABI (64bit) installieren" und beim Lesen heißt es, aarch64 für ARM 64-Bit-Geräte zu verwenden.

Den Gerätequellcode finden Sie hier

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

Dies gibt aus: Image-, Image.gz-, .dts- und .dtb-Dateien.

Wo ist die Kernel-Readme (ich glaube, dies wurde seit Kitkat nicht mehr aktualisiert) sagt, dass die Ausgabe sein wird, - Kernel: Kernel/arch/arm/boot/zImage - module: Kernel/drivers/ / .ko Hinweis: beim Kompilieren Mit der 32-Bit-ARM-Toolchain schlägt dies fehl, da die Konfiguration in arm64 zu finden ist, während andere Konfigurationen in arm zu finden sind.

Ich habe also einen Kernel (Image oder Image.gz) und einige .dts- und .dtb-Dateien. Jetzt boot.img entpacken, hier treten Probleme auf . Wenn sie versuchen, Tools wie abootimg oder die verschiedenen Versionen von unmkbootimg zu verwenden, beschweren sie sich über nicht standardmäßiges boot.img.

Nicht-Standard-boot.img

oder

Nicht-Standard-boot.img 2

Versuchen Sie auch, es als zImage zu speichern, wenn es ein Image.gz sein soll, oder sie extrahieren es ohne Fehler, aber wenn Sie sich die extrahierten Dateien mit einem Hex-Editor ansehen, ist alles 00 in den Dateien, daher nutzlos Datei.

Also habe ich versucht, manuell mit einem Hex-Editor zu entpacken und es geschafft, den Kernel zu bekommen. Links ist meine kompilierte Version und Rechts ist die Hex-Version.

Kernel, Hex und kompiliert

Beachten Sie den Größenunterschied. Liegt das daran, dass der Kernel in boot.img von seinen Debugging-Elementen befreit wurde, während meiner dies nicht ist? Wenn ja, sollte ich nachsehen, wie ich das beheben kann.

Aber ich habe Probleme beim Versuch, die Ramdisk per Hex zu extrahieren. Ist also jemand in der Lage, mir beizubringen/zu helfen, die boot.img richtig zu extrahieren (mit Tools wie unmkbootimg oder mit einem Hex-Editor)

Ich habe notwendige Dateien beigefügt, wenn Sie sie sich selbst ansehen möchten. Dateien: Samsung xCover3-Dateien

Jede Hilfe ist willkommen.

Antworten (1)

Nach zahlreichen Versuchen und Irrtümern gelang es mir schließlich, ramdisk.gz.cpio auszugeben, dies war ab dem richtigen Ramdisk-Hex-.gz-Bereich, Suche 00 00 00 00 1F 8B, schränkt es auf 2 Abschnitte ein, Kernel (Image.gz ) und ramdisk.gz.cpio. Also habe ich für die Ramdisk bei 1F 8B angefangen und bin bis zum Ende des Dokuments gegangen (ich habe zu früh aufgehört und es daher beschädigt).