Jeg prøver å se innholdet i en boot.img
-fil fra et Android-bilde.
Jeg googlet og fant denne artikkelen for å trekke ut system.img
, men den fungerer ikke for boot.img
. Når du prøver å gjøre dette for boot.img
, viser det følgende:
Invalid sparse file format at header magi Failed to read sparse file
Brukes simg2img
bare til å trekke ut system.img
?
- Hvis ja, er det noen andre metode for å trekke ut
boot.img
? - Hvis ikke, hva er problemet for å ikke trekke ut
boot.img
?
Kommentarer
Svar
boot.img er en liten (ish) fil som inneholder to hoveddeler.
* kernel(important for android) * ramdisk( a core set of instruction & binaries)
Pakk ut boot.img:
Den inneholder følgende trinn:
-
Last ned verktøyet ved hjelp av
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
-
Pakk ut filen ved hjelp av
tar xvzf android_bootimg_tools.tar.gz
.Den inneholder
two
binærfiler:* unpackbootimg * mkbootimg
3. Deretter utfører du ./unpackbootimg -i <filename.img> -o <output_path>
It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk
Vi kan også trekke ut ramdisk ved hjelp av følgende kommando
gunzip -c boot.img-ramdisk.gz | cpio -i
Etter å ha endret filene, kan vi igjen pakke disse filene som boot.img ved hjelp av mkbootimg
Ha det gøy!
Kommentarer
- Jeg får feil på tredje trinn vær så snill å hjelpe meg … terminalen sier unpackbootimg-kommandoen ikke funnet
- Å få den samme feilen for trinn 3 på Mint 17 her. Forsøkte å kjøre dem med sudo og etter chmod 755 til ingen nytte.
- I trinn 3 må du sørge for at
output_path
allerede eksisterer, ellersunpackbootimg
vil segfault. - Linken til verktøyet er død.
- Fix for: " unpackbootimg-kommando ikke funnet ", kjører du 32-bit binær på en 64-bits maskin uten 32-bit avhengighet. Installer dem med " apt-get install gcc-multilib "
Svar
boot.img
er ikke et komprimert filsystembilde som system.img
. Den leses av bootloader, og inneholder lite mer enn et kjernebilde og et ramdiskbilde.
Noen binær distribusjon sender kjerne- og ramdiskbildene separat. I så fall trenger du ikke å gjøre noe med boot.img
, bare generer en ny med mkbootimg
.
Hvis du trenger å hente ut informasjon fra en boot.img
, kan du prøve split_bootimg
(av William Enck , via Android-wiki ).
Kommentarer
- Koblingen til
split_bootimg
er ikke lenger gyldig. - @NathanOsman Erstattet av en lenke til kopien på William Enck ' s side.
Svar
Jeg bruker opensuse. Jeg har installert abootimg. Hvis du vil pakke ut (boot | recovery) .img kjør slik:
abootimg -x (boot|recovery).img
Så får du neste filer : bootimg.cgf, zImage og initrd.img Hvis du vil pakke bilde, kjører du slike
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Så får du (boot | recovery) .img
Kos deg
Svar
Du kan bruke følgende verktøy til å trekke ut og pakke Android-oppstartsbilde på nytt
$ git clone https://github.com/cfig/Android_boot_image_editor.git
kopiere boot.img til klonet git-depot. Kjør:
$ ./gradlew unpack
Første gangs løp må laste ned nødvendige libs fra internett, vær tålmodig. Du kan få innholdet på «build / unzip_boot /», slik:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Kommentarer
- Dette er svaret, siden denne koden og prosjektet er oppdatert og vedlikeholdt.
boot.img
for ROM-portering?