Hvordan udpakkes boot.img?

Jeg prøver at se indholdet i en boot.img -fil fra et Android-billede.

Jeg googlede og fandt denne artikel til at udtrække system.img, men den fungerer ikke for boot.img. Når du prøver at gøre dette for boot.img, viser det følgende:

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

Bruges simg2img kun til udpakning af system.img?

  1. Hvis ja, er der nogen anden metode til at udtrække boot.img?
  2. Hvis ikke, hvad er problemet for ikke at udtrække boot.img?

Kommentarer

Svar

boot.img er en lille (ish) fil, der indeholder to hoveddele.

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

Pak boot.img ud:

Den indeholder følgende trin:

  1. Download værktøjet ved hjælp af wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Uddrag filen ved hjælp af tar xvzf android_bootimg_tools.tar.gz.

    Den indeholder two binære filer:

     * unpackbootimg * mkbootimg 

3. Derefter udføres ./unpackbootimg -i <filename.img> -o <output_path>

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

Vi kan også udtrække ramdisk ved hjælp af følgende kommando

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

Efter ændring af filerne kan vi igen pakke disse filer som boot.img ved hjælp af mkbootimg

Hav det sjovt!

Kommentarer

  • Jeg får fejl ved tredje trin hjælp mig … terminalen siger unpackbootimg-kommando ikke fundet
  • Få den samme fejl til trin 3 på Mint 17 her. Forsøgte at køre dem med sudo og efter chmod 755 til ingen nytte.
  • I trin 3 skal du sørge for, at output_path allerede findes, ellers unpackbootimg vil segfault.
  • Linket til værktøjet er dødt.
  • Fix for: " unpackbootimg-kommando ikke fundet ", du kører 32 bit binær på en 64 bit maskine uden 32 bit afhængigheder. Installer dem med " apt-get install gcc-multilib "

Svar

boot.img er ikke et komprimeret filsystembillede som system.img. Den læses af bootloaderen og indeholder lidt mere end et kernebillede og et ramdiskbillede.

Nogle binære distributioner sender kernen og ramdisk-billederne separat. I så fald behøver du ikke gøre noget med boot.img, bare gendan en ny med mkbootimg.

Hvis du har brug for at udtrække oplysninger fra en boot.img, kan du prøve split_bootimg (af William Enck , via Android-wiki ).

Kommentarer

  • Linket til split_bootimg er ikke længere gyldigt.
  • @NathanOsman Erstattet af et link til kopien på William Enck ' s side.

Svar

Jeg bruger opensuse. Jeg har installeret abootimg. Hvis du vil udtrække (boot | recovery). img kør sådan:

abootimg -x (boot|recovery).img 

Så får du de næste filer : bootimg.cgf, zImage og initrd.img Hvis du vil pakke billede, kører du sådan

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

Så får du (boot | recovery) .img

Nyd

Svar

Du kan bruge følgende værktøj til at udpakke og pakke Android-bootbillede igen

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

kopiere din boot.img til klonet git-arkiv. Kør:

$ ./gradlew unpack 

Første gangs kørsel skal downloade nødvendige libs fra internettet, vær tålmodig. Du kan få indholdet på “build / unzip_boot /”, som dette:

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, da denne kode og dette projekt er aktuelle og vedligeholdes.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *