Boot.img nasıl ayıklanır?


15

boot.imgBir Android görüntüsünden bir dosyadaki içeriği görmeye çalışıyorum .

Google'ı araştırdım ve çıkarmak için bu makaleyi buldum system.img, ancak işe yaramadı boot.img. Bunu yapmaya çalışırken boot.img, aşağıdakileri gösterir:

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

Is simg2imgçıkarmak için kullanılmalıdır system.img?

  1. Varsa, çıkarmak için başka bir yöntem var mı boot.img?
  2. Değilse, çıkarmama sorunu boot.imgnedir?

lütfen belirli linux dağıtımını ve çekirdek sürümünü belirtin.
mdpc

Android.SE sitesinde de benzer bir soru var: ROM taşıma için nasılboot.img
WhiteWinterWolf

Yanıtlar:


19

boot.img, iki ana parça içeren küçük (ish) bir dosyadır.

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

Boot.img paketini açın:

Aşağıdaki adımları içerir:

  1. Aracını kullanarak indirin wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Kullanarak dosyayı ayıklayın tar xvzf android_bootimg_tools.tar.gz.

    twoİkililer içerir :

           * unpackbootimg
           * mkbootimg
    

3. sonra yürütmek ./unpackbootimg -i <filename.img> -o <output_path>

It will contain,

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

Aşağıdaki komutu kullanarak ramdisk'i de ayıklayabiliriz

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

Dosyaları değiştirdikten sonra, bu dosyaları tekrar boot.img olarak paketleyebiliriz. mkbootimg

İyi eğlenceler!


1
Üçüncü adımda hata alıyorum lütfen bana yardım et ... terminal unpackbootimg komutu bulunamadı diyor
Rahul Matte

1
Mint 17'de 3. adım için aynı hatayı alıyorum. Onları sudo ve chmod 755 sonra boşuna çalıştırmak için çalıştı.
Nisse

3. adımda, output_pathzaten var olduğundan emin olun , aksi unpackbootimgtakdirde segfault olur.
Aldaviva

2
Aracın bağlantısı öldü.
Addison Crump

1
Düzeltme: "unpackbootimg komutu bulunamadı", 32 bit bağımlılık olmadan 64 bit makinede 32bit ikili çalıştırıyorsunuz. Onları "apt-get install gcc-multilib" ile yükleyin
WHol

6

boot.imggibi sıkıştırılmış bir dosya sistemi görüntüsü değildir system.img. Önyükleyici tarafından okunur ve bir çekirdek görüntüsü ve ramdisk görüntüsünden biraz daha fazlasını içerir.

Bazı ikili dağıtımlar çekirdek ve ramdisk görüntülerini ayrı ayrı gönderir. Bu durumda, hiçbir şey yapmanıza gerek yoktur boot.img, sadece yeni bir tane oluşturun mkbootimg.

A'dan bilgi almanız gerekiyorsa boot.img, deneyin split_bootimg( William Enck tarafından , Android wiki aracılığıyla ).


Bağlantı split_bootimgartık geçerli değil.
Nathan Osman

@NathanOsman William Enck'ın sayfasındaki kopyanın bağlantısıyla değiştirildi.
Gilles 'SO- kötü olmayı bırak'

4

Ben opensuse kullanıyorum. Ben abootimg yükledim. (Boot | recovery) .img dosyasını ayıklamak istiyorsanız şu şekilde çalıştırın:

abootimg -x (boot|recovery).img

Sonra sonraki dosyaları alırsınız: bootimg.cgf, zImage ve initrd.img Eğer resmi paketlemek istiyorsanız böyle çalıştırın

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

Sonra (boot | recovery) .img alırsınız

Zevk almak


1

Android önyükleme görüntüsünü ayıklamak ve yeniden paketlemek için aşağıdaki aracı kullanabilirsiniz

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

boot.img dosyanızı klonlanmış git deposuna kopyalayın. Çalıştırmak:

$ ./gradlew unpack

İlk seferde internetten gerekli kütüphaneleri indirmeniz gerekecek, sabırlı olun. İçeriği aşağıdaki gibi "build / unzip_boot /" adresinden alabilirsiniz:

build/unzip_boot/
├── bootimg.json (boot image info)
├── kernel
├── second (2nd bootloader, if exists)
├── boot.img.avb.json (AVB only)
└── root

Bu kod ve proje güncel ve sürdürüldüğü için yanıt budur.
Gabriel Fuarı
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.