0 votes

Problèmes de déballage de Boot.img 'non standard' pour un périphérique 64 bits

Il s'agit de cette Fil XDA et mon fil sur xda. Il s'agit d'un message croisé de XDA, je tente ma chance ici. J'ai également posé cette question sur Stackoverflow (en anglais) mais je couvre toutes mes bases et je tente ma chance ici aussi.

Spécifications de l'appareil, au cas où quelqu'un le demanderait

Spécifications de l'appareil :

  • Version actuelle d'Android : Android Lollipop 5.1.1
  • Chipset : Marvell Armada PXA1908 (Note : Comme il s'agit d'une puce rarement utilisée, le CF-Auto Root ne fonctionnera pas)
  • Statut de récupération personnalisé : TWRP 3.0.2-0 (Ne fonctionne pas avec lollipop)
  • Statut de la racine (C'est techniquement la raison pour laquelle je suis ici) : Android KitKat 4.4.4 (Root), Android Lollipop 5.1.1 (NO Root Yet)
  • ARMv8 64-bit

Passons maintenant aux étapes qui m'ont amené jusqu'à ce point, puis à mon problème.

Note : Dans le readme du noyau, il est indiqué d'utiliser le toolchain 4.8 mais lorsque je l'utilise, il se plaint de ne pas pouvoir trouver gcc. De plus, dans le readme, il est indiqué "get Toolchain download and install arm-eabi-4.8 toolchain for ARM EABI.(64bit)" et quand lire plus il est indiqué d'utiliser aarch64 pour les appareils ARM 64 bits.

Le code source du dispositif est disponible à l'adresse suivante Ici

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

Ces sorties : Image, Image.gz, fichiers .dts et .dtb.

Où se trouve le readme du noyau (je crois qu'il n'a pas été mis à jour) ? - Kernel : Kernel/arch/arm/boot/zImage - module : Kernel/drivers/ / .ko Note : lorsque l'on essaie de compiler avec la chaîne d'outils ARM 32 bits, cela échoue, car la configuration est trouvée dans arm64, alors que d'autres configurations sont trouvées dans arm.

J'ai donc un noyau (Image ou Image.gz), et quelques fichiers .dts et .dtb. Il faut maintenant décompresser boot.img, c'est là que les problèmes surviennent . Lorsque l'on essaie d'utiliser des outils comme abootimg ou les différentes versions de unmkbootimg, ils se plaignent d'un boot.img non standard.

Non-Standard boot.img

ou

Non-Standard boot.img 2

Ils essaient également de l'enregistrer en tant que zImage alors qu'il est censé être un Image.gz, ou ils l'extraient sans générer d'erreurs, mais lorsqu'ils regardent les fichiers extraits avec un éditeur hexagonal, ils sont tous 00 dans les fichiers, ce qui en fait un fichier inutile.

J'ai donc essayé de décompresser manuellement avec un éditeur hexagonal et j'ai réussi à obtenir le noyau. A gauche ma version compilée et à droite la version hexagonale.

Kernels, Hex and Compiled

Remarquez la différence de taille, est-ce parce que le noyau dans boot.img est dépouillé de ses éléments de débogage alors que le mien ne l'est pas ? Si c'est le cas, je devrais chercher comment réparer cela.

Mais je suis j'ai des problèmes pour extraire le ramdisk via l'hexagone. Quelqu'un peut-il m'aider à extraire correctement le fichier boot.img (avec des outils comme unmkbootimg ou avec un éditeur hexadécimal) ?

J'ai joint les fichiers nécessaires si vous souhaitez les consulter vous-même. Fichiers : Fichiers Samsung xCover3

Toute aide est la bienvenue.

0voto

Matt07211 Points 891

Après de nombreux essais et erreurs, j'ai finalement réussi à obtenir ramdisk.gz.cpio, en commençant par la zone ramdisk hex .gz correcte, en recherchant 00 00 00 00 00 1F 8B, ce qui réduit la zone à 2 sections, le noyau (Image.gz) et ramdisk.gz.cpio. Pour le ramdisk, j'ai commencé à 1F 8B et je suis allé jusqu'à la fin du document (j'avais peur de m'arrêter trop tôt et de le corrompre).

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X