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
?
- In tal caso, ce ne sono altri metodo per estrarre
boot.img
? - 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:
-
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
-
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à, altrimentiunpackbootimg
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.
boot.img
per il porting della ROM?