boot.img
Androidイメージでファイルの内容を表示しようとしています。
Googleで見つけました。この記事抽出しようとし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
?
答え1
boot.img
2つの主要部分を含む小さなファイルです。
- カーネル(Androidにとって重要)
- RAMディスク(コア命令とバイナリセット)
開梱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
これには2つのバイナリが含まれています。
unpackbootimg
mkbootimg
その後実行
./unpackbootimg -i <filename.img> -o <output_directory>
内容は次の
output_directory
とおりです。boot.img-zImage
(核心)boot.img-ramdisk.gz
(仮想ディスク)
次のコマンドを使用してRAMディスクを抽出することもできます。
gunzip -c boot.img-ramdisk.gz | cpio -i
ファイルを変更したら、次のようにboot.img
ファイルを再パッケージ化できます。mkbootimg
答え2
インストールする abootimg
(パッケージとして利用可能です。Debian/UbuntuそしてSUSEを開く)。
抜粋(boot|recovery).img
:
$ abootimg -x (boot|recovery).img
$ ls
boot.img bootimg.cfg initrd.img zImage
修正(boot|recovery).img
後に再梱包するには、次の手順を実行します。bootimg.cfg
zImage
initrd.img
abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
答え3
boot.img
そのような圧縮ファイルシステムイメージではありませんsystem.img
。ブートローダによって読み取られ、カーネルイメージとラムディスクイメージのみが含まれます。
一部のバイナリディストリビューションでは、カーネルとラムディスクのイメージを別々に提供しています。この場合、何もする必要はなく、boot.img
Rebuildを使用して新しいものを作成するだけですmkbootimg
。
から情報を抽出する必要がある場合は、boot.img
以下を試してください。split_bootimg
(通過ウィリアムエンク、渡すAndroidウィキ)。
答え4
次のツールを使用して、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