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?
- Zo ja, is er een andere methode om
boot.imgte extraheren? - Zo nee, wat is het probleem als u
boot.imgniet 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:
-
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 -
Pak het bestand uit met
tar xvzf android_bootimg_tools.tar.gz.Het bevat
twobinaries:* 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_pathal bestaat, andersunpackbootimgzal 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_bootimgis 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.
boot.imgbewerken voor ROM-portering?