web-dev-qa-db-ja.com

boot.imgを抽出する方法?

Android画像からboot.imgファイルのコンテンツを表示しようとしています。

私はグーグル検索して この記事 を抽出してsystem.imgを見つけましたが、boot.imgでは機能しません。 boot.imgに対してこれを実行しようとすると、次のように表示されます。

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

simg2imgsystem.imgの抽出のみに使用されますか?

  1. もしそうなら、boot.imgを抽出する他の方法はありますか?
  2. そうでない場合、boot.imgを抽出しない場合の問題は何ですか?
16
Dhasneem

boot.imgは、2つの主要な部分を含む小さな(ish)ファイルです。

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

Boot.imgを解凍します。

次の手順が含まれます。

  1. wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/Android-serialport-api/Android_bootimg_tools.tar.gzを使用してツールをダウンロードします

  2. tar xvzf Android_bootimg_tools.tar.gzを使用してファイルを抽出します。

    twoバイナリが含まれています:

           * unpackbootimg
           * mkbootimg
    

3.次に./unpackbootimg -i <filename.img> -o <output_path>を実行します

It will contain,

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

次のコマンドを使用して、ramdiskも抽出できます

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

ファイルを変更した後、mkbootimgを使用してこれらのファイルをboot.imgとして再度パックできます。

楽しんで!

19
Dhasneem

boot.imgは、system.imgのような圧縮ファイルシステムイメージではありません。ブートローダーによって読み込まれ、カーネルイメージとRAMディスクイメージしか含まれていません。

一部のバイナリ配布では、カーネルイメージとRAMディスクイメージを別々に出荷しています。その場合、boot.imgで何もする必要はありません。mkbootimgで新しいものを再生成するだけです。

boot.imgから情報を抽出する必要がある場合は、 split_bootimg (by Williamを試してください。 Enckthe Android wiki )を介して。

私はopensuseを使用しています。 abootimgをインストールしました。 (boot | recovery).imgを抽出したい場合は、次のように実行します。

abootimg -x (boot|recovery).img

次に、次のファイルを取得します。bootimg.cgf、zImage、およびinitrd.imgイメージをパックする場合は、そのようなファイルを実行します。

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

次に、(boot | recovery).imgが表示されます。

楽しい

4
user199575

次のツールを使用して、Androidブートイメージを抽出して再パックできます。

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

boot.imgを複製したgitリポジトリにコピーします。実行:

$ ./gradlew unpack

初めて実行する場合は、インターネットから必要なライブラリをダウンロードする必要があります。しばらくお待ちください。次のように、「build/unzip_boot /」でコンテンツを取得できます。

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