Come estrarre boot.img?

Sto cercando di vedere il contenuto in un file boot.img da unimmagine Android.

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

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

simg2img viene utilizzato solo per estrarre system.img?

  1. In tal caso, ce ne sono altri metodo per estrarre boot.img?
  2. In caso contrario, qual è il problema se non si estrae boot.img?

Commenti

Risposta

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 utilizzando tar xvzf android_bootimg_tools.tar.gz.

    Contiene two binari:

     * 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 cambiato i file, possiamo di nuovo impacchettare quei file come boot.img usando mkbootimg

Buon divertimento!

Commenti

  • Ricevo un errore al terzo passaggio per favore aiutami … il terminale dice che il comando unpackbootimg non è stato trovato
  • Ottenere lo stesso errore per il passaggio 3 su Mint 17 qui. Ho provato a eseguirli con sudo e dopo chmod 755 senza alcun risultato.
  • Nel passaggio 3, assicurati che output_path esista già, altrimenti unpackbootimg segfault.
  • Il collegamento per lo strumento è morto.
  • Correzione per: " comando unpackbootimg non trovato ", stai eseguendo un binario a 32 bit su una macchina a 64 bit senza dipendenze a 32 bit. Installali con " apt-get install gcc-multilib "

Risposta

boot.img non è unimmagine di file system compressa come system.img. Viene letto dal bootloader e contiene poco più di unimmagine del kernel e unimmagine del ramdisk.

Alcune distribuzioni binarie spediscono separatamente le immagini del kernel e del ramdisk. In tal caso non è necessario eseguire alcuna operazione con boot.img, è sufficiente rigenerarne uno nuovo con mkbootimg.

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

Commenti

  • Il link a split_bootimg non è più valido.
  • @NathanOsman Sostituito da un link alla copia nella pagina di William Enck '.

Risposta

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

abootimg -x (boot|recovery).img 

Quindi ottieni i file successivi : bootimg.cgf, zImage e initrd.img Se vuoi comprimere limmagine, esegui tale

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

Quindi otterrai (avvio | ripristino) .img

Buon divertimento

Risposta

Puoi utilizzare il seguente strumento per estrarre e ricompattare limmagine di avvio di Android

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

copia il file boot.img nella repository git clonato. Esegui:

$ ./gradlew unpack 

La prima volta che esegui sarà necessario scaricare le librerie necessarie da Internet, sii paziente. Puoi ottenere i contenuti in “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 

Commenti

  • Questa è la risposta, poiché questo codice e progetto sono aggiornati e mantenuti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *