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.img
te extraheren? - 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:
-
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
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, andersunpackbootimg
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.
boot.img
bewerken voor ROM-portering?