Jessaie de voir le contenu dun fichier boot.img
à partir dune image Android.
Jai cherché sur Google et trouvé cet article pour extraire system.img
, mais cela ne fonctionne pas pour boot.img
. Lorsque vous essayez de faire cela pour boot.img
, il affiche ce qui suit:
Invalid sparse file format at header magi Failed to read sparse file
Est-ce que simg2img
est utilisé uniquement pour extraire system.img
?
- Si oui, y en a-t-il dautres méthode pour extraire
boot.img
? - Sinon, quel est le problème pour ne pas extraire
boot.img
?
Commentaires
Réponse
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:
-
Téléchargez loutil en utilisant
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
-
Extrayez le fichier en utilisant
tar xvzf android_bootimg_tools.tar.gz
.Il contient
two
binaires:* 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 ramdisk, en utilisant la commande suivante
gunzip -c boot.img-ramdisk.gz | cpio -i
Après avoir changé les fichiers, nous pouvons à nouveau compresser ces fichiers sous boot.img en utilisant mkbootimg
Amusez-vous bien!
Commentaires
- Jobtiens une erreur à la troisième étape sil vous plaît aidez-moi … le terminal dit que la commande unpackbootimg est introuvable
- Obtenir la même erreur pour létape 3 sur Mint 17 ici. Jai essayé de les exécuter par sudo et après chmod 755 en vain.
- À létape 3, assurez-vous que
output_path
existe déjà, sinonunpackbootimg
va segfault. - Le lien pour loutil est mort.
- Correction pour: " commande unpackbootimg introuvable ", vous exécutez un binaire 32 bits sur une machine 64 bits sans dépendances 32 bits. Installez-les avec " apt-get install gcc-multilib "
Réponse
boot.img
nest 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 quune image du noyau et une image du disque virtuel.
Certaines distributions binaires expédient les images du noyau et du disque virtuel séparément. Dans ce cas, vous navez rien à faire avec boot.img
, il vous suffit den régénérer un nouveau avec mkbootimg
.
Si vous avez besoin dextraire des informations dun boot.img
, essayez split_bootimg
(par William Enck , via le wiki Android ).
Commentaires
- Le lien vers
split_bootimg
nest plus valide. - @NathanOsman Remplacé par un lien à la copie sur la page de William Enck '.
Réponse
Jutilise opensuse. Jai installé abootimg. Si vous voulez extraire (boot | recovery) .img exécutez tel:
abootimg -x (boot|recovery).img
Ensuite, vous obtenez les fichiers suivants : bootimg.cgf, zImage et initrd.img Si vous voulez empaqueter limage, vous exécutez tel
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Alors vous « obtiendrez (boot | recovery) .img
Appréciez
Réponse
Vous pouvez utiliser loutil suivant pour extraire et reconditionner limage 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é. Exécuter:
$ ./gradlew unpack
Lors de la première exécution, vous devrez télécharger les bibliothèques nécessaires sur Internet, soyez patient. Vous pouvez obtenir le contenu sur « 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
Commentaires
- Voici la réponse, car ce code et ce projet sont actuels et maintenus.
boot.img
pour le portage ROM?