Bagaimana cara mengekstrak boot.img?

15

Saya mencoba melihat konten dalam boot.imgfile dari gambar Android.

Saya mencari di Google dan menemukan artikel ini untuk diekstrak system.img, tetapi tidak berhasil boot.img. Ketika mencoba melakukan ini boot.img, itu menunjukkan yang berikut:

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

Apakah simg2imghanya digunakan untuk mengekstraksi system.img?

  1. Jika demikian, Apakah ada metode lain untuk mengekstrak boot.img?
  2. Jika tidak, apa masalah untuk tidak mengekstraksi boot.img?
Dhasneem
sumber
tolong identifikasi distribusi linux spesifik dan versi kernel.
mdpc
Ada pertanyaan serupa di situs Android.SE: Bagaimana cara membongkar dan mengedit boot.imguntuk porting ROM?
WhiteWinterWolf

Jawaban:

19

boot.img adalah file kecil (ish) yang berisi dua bagian utama.

          * kernel(important for android)
          * ramdisk( a core set of instruction & binaries)

Buka paket boot.img:

Ini berisi langkah-langkah berikut:

  1. Unduh alat menggunakan wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Ekstrak file menggunakan tar xvzf android_bootimg_tools.tar.gz.

    Ini berisi twobinari:

           * unpackbootimg
           * mkbootimg
    

3.Kemudian jalankan ./unpackbootimg -i <filename.img> -o <output_path>

It will contain,

           * boot.img-zImage     ----> kernel
           * boot.img-ramdisk.gz ----> ramdisk

Kita juga dapat mengekstrak ramdisk, menggunakan perintah berikut

gunzip -c boot.img-ramdisk.gz | cpio -i

Setelah mengubah file, kita kembali dapat mengemas file-file tersebut sebagai boot.img menggunakan mkbootimg

Selamat bersenang-senang!

Dhasneem
sumber
Saya mendapatkan kesalahan pada langkah ketiga tolong bantu saya ... terminal mengatakan perintah unpackbootimg tidak ditemukan
Rahul Matte
Mendapatkan kesalahan yang sama untuk langkah 3 pada Mint 17 di sini. Mencoba menjalankannya dengan sudo dan setelah chmod 755 tidak berhasil.
Nisse
Pada langkah 3, pastikan output_pathsudah ada, jika tidak unpackbootimgakan segfault.
Aldaviva
2
Tautan untuk alat ini mati.
Addison Crump
Cukup tirukan
Albus Dumbledore
6

boot.imgbukan gambar sistem file terkompresi seperti system.img. Itu dibaca oleh bootloader, dan berisi sedikit lebih dari gambar kernel dan gambar ramdisk.

Beberapa distribusi biner mengirimkan imej kernel dan ramdisk secara terpisah. Dalam hal ini Anda tidak perlu melakukan apa pun boot.img, cukup buat kembali yang baru mkbootimg.

Jika Anda perlu mengekstrak informasi dari boot.img, coba split_bootimg(oleh William Enck , melalui wiki Android ).

Gilles 'SANGAT berhenti menjadi jahat'
sumber
Tautan ke split_bootimgtidak lagi valid.
Nathan Osman
@NathanOsman Digantikan oleh tautan ke salinan di halaman William Enck.
Gilles 'SO- stop being evil'
4

Saya menggunakan openuse. Saya telah menginstal abootimg. Jika Anda ingin mengekstrak (boot | recovery) .img jalankan seperti:

abootimg -x (boot|recovery).img

Kemudian Anda mendapatkan file berikutnya: bootimg.cgf, zImage dan initrd.img Jika Anda ingin mengemas gambar, Anda menjalankannya

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

Maka Anda akan mendapatkan (boot | recovery) .img

Nikmati

pengguna199575
sumber
1

Anda dapat menggunakan alat berikut untuk mengekstrak dan mengemas ulang gambar boot Android

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

salin boot.img Anda ke repositori git hasil kloning. Lari:

$ ./gradlew unpack

Pertama kali dijalankan perlu mengunduh lib yang diperlukan dari internet, bersabarlah. Anda bisa mendapatkan konten di "build / unzip_boot /", seperti ini:

build/unzip_boot/
├── bootimg.json (boot image info)
├── kernel
├── second (2nd bootloader, if exists)
├── boot.img.avb.json (AVB only)
└── root
cfig
sumber
Ini jawabannya, karena kode dan proyek ini terkini dan dipelihara.
Gabriel Fair