Comment extraire boot.img?


15

J'essaie de voir le contenu d'un boot.imgfichier à partir d'une image Android.

J'ai googlé et trouvé cet article à extraire system.img, mais cela ne fonctionne pas boot.img. Lorsque vous essayez de le faire pour boot.img, il affiche les éléments suivants:

Invalid sparse file format at header magi
Failed to read sparse file

Est simg2imgutilisé uniquement pour l'extraction system.img?

  1. Si oui, existe-t-il une autre méthode pour extraire boot.img?
  2. Sinon, quel est le problème pour ne pas extraire boot.img?

veuillez identifier la distribution linux spécifique et la version du noyau.
mdpc

Il y a une question similaire sur le site Android.SE: Comment décompresser et éditer boot.imgpour le portage ROM?
WhiteWinterWolf du

Réponses:


19

boot.img est un petit fichier (ish) qui contient deux parties principales.

          * kernel(important for android)
          * ramdisk( a core set of instruction & binaries)

Décompressez boot.img:

Il contient les étapes suivantes:

  1. Téléchargez l'outil en utilisant wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Extrayez le fichier à l'aide de tar xvzf android_bootimg_tools.tar.gz.

    Il contient des twobinaires:

           * unpackbootimg
           * mkbootimg
    

3.Ensuite, exécutez ./unpackbootimg -i <filename.img> -o <output_path>

It will contain,

           * boot.img-zImage     ----> kernel
           * boot.img-ramdisk.gz ----> ramdisk

Nous pouvons également extraire le disque virtuel, en utilisant la commande suivante

gunzip -c boot.img-ramdisk.gz | cpio -i

Après avoir modifié les fichiers, nous pouvons à nouveau compresser ces fichiers sous boot.img en utilisant mkbootimg

S'amuser!


Je reçois une erreur à la troisième étape, veuillez m'aider ... le terminal indique que la commande unpackbootimg est introuvable
Rahul Matte

Obtenir la même erreur pour l'étape 3 sur Mint 17 ici. J'ai essayé de les faire fonctionner par sudo et après chmod 755 en vain.
Nisse

À l'étape 3, assurez-vous output_pathqu'il existe déjà, sinon unpackbootimgsegfault.
Aldaviva

2
Le lien vers l'outil est mort.
Addison Crump

Il suffit de cloner le code de github: github.com/osm0sis/mkbootimg
Albus Dumbledore

6

boot.imgn'est pas une image de système de fichiers compressée comme system.img. Il est lu par le chargeur de démarrage et contient un peu plus qu'une image de noyau et une image de disque virtuel.

Certaines distributions binaires expédient séparément les images du noyau et du disque virtuel. Dans ce cas , vous n'avez pas besoin de faire quoi que ce soit avec boot.img, juste régénérer une nouvelle avec mkbootimg.

Si vous avez besoin d'extraire des informations d'un boot.img, essayez split_bootimg(par William Enck , via le wiki Android ).


Le lien vers split_bootimgn'est plus valide.
Nathan Osman

@NathanOsman Remplacé par un lien vers la copie sur la page de William Enck.
Gilles 'SO- arrête d'être méchant'

4

J'utilise opensuse. J'ai installé abootimg. Si vous voulez extraire (boot | recovery) .img lancez ceci:

abootimg -x (boot|recovery).img

Ensuite, vous obtenez les fichiers suivants: bootimg.cgf, zImage et initrd.img Si vous voulez emballer l'image que vous exécutez telle

abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img

Ensuite, vous obtiendrez (boot | recovery) .img

Prendre plaisir


1

Vous pouvez utiliser l'outil suivant pour extraire et reconditionner l'image de démarrage Android

$ git clone https://github.com/cfig/Android_boot_image_editor.git

copiez votre boot.img dans le référentiel git cloné. Courir:

$ ./gradlew unpack

La première fois, vous devrez télécharger les bibliothèques nécessaires sur Internet, soyez patient. Vous pouvez obtenir le contenu dans "build / unzip_boot /", comme ceci:

build/unzip_boot/
├── bootimg.json (boot image info)
├── kernel
├── second (2nd bootloader, if exists)
├── boot.img.avb.json (AVB only)
└── root

C'est la réponse, car ce code et ce projet sont à jour et maintenus.
Gabriel Fair
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.