Cum se extrage boot.img?

Î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?

  1. Dacă da, mai există metoda de extragere a boot.img?
  2. 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:

  1. 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

  2. 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, altfel unpackbootimg 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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *