Hoe boot.img uitpakken?

Ik probeer de inhoud in een boot.img -bestand te zien van een Android-afbeelding.

Ik heb gegoogeld en dit artikel gevonden om system.img te extraheren, maar het werkt niet voor boot.img. Wanneer je dit probeert voor boot.img, wordt het volgende weergegeven:

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

Wordt simg2img alleen gebruikt voor het extraheren van system.img?

  1. Zo ja, is er een andere methode om boot.img te extraheren?
  2. Zo nee, wat is het probleem als u boot.img niet extraheert?

Reacties

Antwoord

boot.img is een klein (ish) bestand dat twee hoofdonderdelen bevat.

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

Pak boot.img uit:

Het bevat de volgende stappen:

  1. Download de tool met wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Pak het bestand uit met tar xvzf android_bootimg_tools.tar.gz.

    Het bevat two binaries:

     * unpackbootimg * mkbootimg 

3.Voer vervolgens ./unpackbootimg -i <filename.img> -o <output_path>

It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk 

uit

We kunnen ramdisk ook extraheren met behulp van het volgende commando

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

Na het wijzigen van de bestanden kunnen we die bestanden opnieuw inpakken als boot.img met mkbootimg

Veel plezier!

Reacties

  • Ik krijg een foutmelding bij de derde stap help me alstublieft … de terminal zegt dat het unpackbootimg-commando niet gevonden is
  • Ik krijg hier dezelfde foutmelding voor stap 3 op Mint 17. Ik heb geprobeerd ze uit te voeren met sudo en na chmod 755 zonder resultaat.
  • Controleer in stap 3 of output_path al bestaat, anders unpackbootimg zal segfault.
  • De link voor de tool is dood.
  • Fix voor: " unpackbootimg commando niet gevonden ", u draait 32bit binair op een 64 bit machine zonder 32bit afhankelijkheden. Installeer ze met " apt-get install gcc-multilib "

Antwoord

boot.img is geen gecomprimeerde bestandssysteemafbeelding zoals system.img. Het wordt gelezen door de bootloader en bevat weinig meer dan een kernelimage en een ramdiskimage.

Sommige binaire distributies verzenden de kernel- en ramdisk-images afzonderlijk. In dat geval hoeft u “niets te doen met boot.img, genereer gewoon een nieuwe met mkbootimg.

Als je informatie wilt extraheren uit een boot.img, probeer dan split_bootimg (door William Enck , via de Android-wiki ).

Opmerkingen

  • De link naar split_bootimg is niet langer geldig.
  • @NathanOsman Vervangen door een link naar de kopie op William Enck ' s pagina.

Antwoord

Ik gebruik opensuse. Ik heb abootimg geïnstalleerd. Als je .img wilt uitpakken (boot | herstel), voer het volgende uit:

abootimg -x (boot|recovery).img 

Dan krijg je de volgende bestanden : bootimg.cgf, zImage en initrd.img Als je image wilt inpakken, draai je zulke

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

Dan krijg je (boot | herstel) .img

Veel plezier

Antwoord

U kunt de volgende tool gebruiken om Android-opstartimage uit te pakken en opnieuw in te pakken.

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

kopieer uw boot.img naar de gekloonde git-opslagplaats. Run:

$ ./gradlew unpack 

De eerste keer dat de run moet worden uitgevoerd, moeten de nodige libs van internet worden gedownload, wees geduldig. Je kunt de inhoud op “build / unzip_boot /” krijgen, als volgt:

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

Reacties

  • Dit is het antwoord, aangezien deze code en dit project actueel zijn en worden onderhouden.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *