boot.imgを抽出する方法は?


15

boot.imgAndroidイメージのファイルのコンテンツを表示しようとしています。

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

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

されてsimg2img抽出するためにのみ使用system.img

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

特定のLinuxディストリビューションとカーネルバージョンを特定してください。
mdpc

回答:


19

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

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

楽しんで!


私は第三のステップ助けてください、私のエラーを取得しています...端子がunpackbootimgコマンドが見つからないと言う
ラーフルマット

ここでミント17のステップ3で同じエラーを取得します。sudoでそれらを実行しようとしましたが、chmod 755が無効になりました。
ニッセ14

ステップ3では、output_path既に存在することを確認してunpackbootimgください。存在しない場合は、セグメンテーション違反が発生します。
-Aldaviva

2
ツールのリンクは無効です。
アディソンクランプ

githubからコードを複製するだけです:github.com/osm0sis/mkbootimg
Albus Dumbledore

6

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

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

から情報を抽出する必要がある場合はboot.img、試してくださいsplit_bootimgWilliam Enck著Android wiki経由)。


へのリンクsplit_bootimgは無効になりました。
ネイサンオスマン

@NathanOsman William Enckのページのコピーへのリンクに置き換えられました。
ジル 'SO-悪であるのをやめる'

4

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を取得します。

楽しい


1

次のツールを使用して、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

このコードとプロジェクトは最新のものであり、維持されているため、これが答えです。
ガブリエルフェア
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.