Come estrarre boot.img?


15

Sto cercando di vedere il contenuto in un boot.imgfile da un'immagine Android.

Ho cercato su Google e ho trovato questo articolo da estrarre system.img, ma non funziona boot.img. Quando si tenta di eseguire questa operazione boot.img, viene visualizzato quanto segue:

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

Viene simg2imgutilizzato solo per l'estrazione system.img?

  1. In tal caso, c'è qualche altro metodo da estrarre boot.img?
  2. In caso contrario, qual è il problema per non estrarre boot.img?

si prega di identificare la specifica distribuzione di Linux e la versione del kernel.
mdpc,

Risposte:


19

boot.img è un piccolo file (ish) che contiene due parti principali.

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

Decomprimi boot.img:

Contiene i seguenti passaggi:

  1. Scarica lo strumento utilizzando wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Estrai il file usando tar xvzf android_bootimg_tools.tar.gz.

    Contiene twobinari:

           * unpackbootimg
           * mkbootimg
    

3. Quindi eseguire ./unpackbootimg -i <filename.img> -o <output_path>

It will contain,

           * boot.img-zImage     ----> kernel
           * boot.img-ramdisk.gz ----> ramdisk

Possiamo anche estrarre ramdisk, usando il seguente comando

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

Dopo aver modificato i file, possiamo ancora impacchettare quei file come boot.img usando mkbootimg

Divertiti!


Ricevo un errore al terzo passaggio, aiutatemi ... il terminale dice che il comando unpackbootimg non è stato trovato
Rahul Matte,

Ottenere lo stesso errore per il passaggio 3 su Mint 17 qui. Ho provato a eseguirli sudo e dopo chmod 755 senza alcun risultato.
Nisse,

Nel passaggio 3, assicurarsi che output_pathesista già, altrimenti unpackbootimgsegfault.
Aldaviva,

2
Il link per lo strumento è morto.
Addison Crump,

Basta clonare il codice da github: github.com/osm0sis/mkbootimg
Albus Silente

6

boot.imgnon è un'immagine di filesystem compressa come system.img. Viene letto dal bootloader e contiene poco più di un'immagine del kernel e di un'immagine ramdisk.

Alcune distribuzioni binarie forniscono le immagini del kernel e del ramdisk separatamente. In tal caso non è necessario fare nulla con boot.img, rigenerare semplicemente uno nuovo con mkbootimg.

Se devi estrarre informazioni da un boot.img, prova split_bootimg(di William Enck , tramite il wiki di Android ).


Il collegamento a split_bootimgnon è più valido.
Nathan Osman,

@NathanOsman Sostituito da un link alla copia sulla pagina di William Enck.
Gilles 'SO- smetti di essere malvagio' il

4

Uso opensuse. Ho installato abootimg. Se vuoi estrarre (boot | recovery) .img esegui tale:

abootimg -x (boot|recovery).img

Quindi ottieni i file seguenti: bootimg.cgf, zImage e initrd.img Se vuoi impacchettare l'immagine, esegui tale

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

Quindi otterrai (boot | recovery) .img

Godere


1

Puoi utilizzare il seguente strumento per estrarre e reimballare l'immagine di avvio di Android

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

copia il tuo boot.img nel repository git clonato. Correre:

$ ./gradlew unpack

La prima volta sarà necessario scaricare le librerie necessarie da Internet, sii paziente. Puoi ottenere i contenuti su "build / unzip_boot /", in questo modo:

build/unzip_boot/
├── bootimg.json (boot image info)
├── kernel
├── second (2nd bootloader, if exists)
├── boot.img.avb.json (AVB only)
└── root

Questa è la risposta, poiché questo codice e progetto sono attuali e mantenuti.
Gabriel Fair,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.