Î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
twobinare:* 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_pathexistă deja, altfelunpackbootimgva 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_bootimgnu 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.imgpentru portarea ROM?