Android画像からboot.img
ファイルのコンテンツを表示しようとしています。
私はグーグル検索して この記事 を抽出してsystem.img
を見つけましたが、boot.img
では機能しません。 boot.img
に対してこれを実行しようとすると、次のように表示されます。
Invalid sparse file format at header magi
Failed to read sparse file
simg2img
はsystem.img
の抽出のみに使用されますか?
boot.img
を抽出する他の方法はありますか?boot.img
を抽出しない場合の問題は何ですか?boot.imgは、2つの主要な部分を含む小さな(ish)ファイルです。
* kernel(important for Android)
* ramdisk( a core set of instruction & binaries)
Boot.imgを解凍します。
次の手順が含まれます。
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/Android-serialport-api/Android_bootimg_tools.tar.gz
を使用してツールをダウンロードします
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として再度パックできます。
楽しんで!
boot.img
は、system.img
のような圧縮ファイルシステムイメージではありません。ブートローダーによって読み込まれ、カーネルイメージとRAMディスクイメージしか含まれていません。
一部のバイナリ配布では、カーネルイメージとRAMディスクイメージを別々に出荷しています。その場合、boot.img
で何もする必要はありません。mkbootimg
で新しいものを再生成するだけです。
boot.img
から情報を抽出する必要がある場合は、 split_bootimg
(by Williamを試してください。 Enck 、 the 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が表示されます。
楽しい
次のツールを使用して、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