Încerc să văd conținutul într-un fișier boot.img
dintr-o imagine Android.
Am căutat pe Google și am găsit acest articol pentru a extrage system.img
, dar nu funcționează pentru boot.img
. Când încercați să faceți acest lucru pentru boot.img
, acesta afișează următoarele:
Invalid sparse file format at header magi Failed to read sparse file
Este simg2img
utilizat numai pentru extragerea system.img
?
- Dacă da, mai există metoda de extragere a
boot.img
? - Dacă nu, care este problema pentru a nu extrage
boot.img
?
Comentarii
Răspuns
boot.img este un fișier mic (ish) care conține două părți principale.
* kernel(important for android) * ramdisk( a core set of instruction & binaries)
Despachetați boot.img:
Conține următorii pași:
-
Descărcați instrumentul utilizând
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz
-
Extrageți fișierul utilizând
tar xvzf android_bootimg_tools.tar.gz
.Conține
two
binare:* unpackbootimg * mkbootimg
3. Apoi executați ./unpackbootimg -i <filename.img> -o <output_path>
It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk
De asemenea, putem extrage ramdisk, utilizând următoarea comandă
gunzip -c boot.img-ramdisk.gz | cpio -i
După schimbarea fișierelor, putem împacheta din nou acele fișiere ca boot.img folosind mkbootimg
Distrează-te!
Comentarii
- Primesc erori la al treilea pas te rog ajută-mă … terminalul spune că comanda unpackbootimg nu a fost găsită
- Obținerea aceleiași erori pentru pasul 3 pe Mint 17 aici. Am încercat să le rulezi cu sudo și după chmod 755 fără rezultat.
- La pasul 3, asigurați-vă că
output_path
există deja, altfelunpackbootimg
va segfault. - Link-ul pentru instrument este mort.
- Remediere pentru: " comanda unpackbootimg nu a fost găsită ", rulați binar pe 32 de biți pe un computer pe 64 de biți fără dependențe pe 32 de biți. Instalați-le cu " apt-get install gcc-multilib "
Răspuns
boot.img
nu este o imagine de sistem de fișiere comprimată precum system.img
. Este citit de bootloader și conține puțin mai mult decât o imagine a nucleului și o imagine ramdisk.
Unele distribuții binare livrează separat imaginile kernel și ramdisk. În acest caz, nu trebuie să faceți nimic cu boot.img
, trebuie doar să regenerați unul nou cu mkbootimg
.
Dacă trebuie să extrageți informații dintr-un boot.img
, încercați split_bootimg
(de William Enck , prin wiki Android ).
Comentarii
- Linkul către
split_bootimg
nu mai este valid. - @NathanOsman Înlocuit de un link la copia de pe pagina lui William Enck '.
Răspuns
Folosesc opensuse. Am instalat abootimg. Dacă doriți să extrageți (boot | recuperare) .img rulați astfel:
abootimg -x (boot|recovery).img
Apoi veți obține următoarele fișiere : bootimg.cgf, zImage și initrd.img Dacă doriți să împachetați imaginea, rulați astfel
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Apoi veți obține (boot | recuperare) .img
Enjoy
Răspunde
Puteți utiliza următorul instrument pentru a extrage și a împacheta din nou imaginea de boot Android
$ git clone https://github.com/cfig/Android_boot_image_editor.git
copiați boot.img în depozit git clonat. Rulați:
$ ./gradlew unpack
Pentru prima dată, va trebui să descărcați libs-urile necesare de pe internet, aveți răbdare. Puteți obține conținutul la „build / unzip_boot /”, astfel:
build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root
Comentarii
- Acesta este răspunsul, deoarece acest cod și proiect sunt actuale și întreținute.
boot.img
pentru portarea ROM?