Hvordan henter jeg ut boot.img?

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?

  1. Hvis ja, er det noen andre metode for å trekke ut boot.img?
  2. 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:

  1. 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

  2. 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, ellers unpackbootimg 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.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *