如何提取boot.img?

Dha*_*eem 17 filesystems boot android

我正在尝试boot.img从 Android 图像查看文件中的内容。

我用谷歌搜索并发现这篇文章可以提取system.img,但它不适用于boot.img. 尝试为 执行此操作时boot.img,它显示以下内容:

Invalid sparse file format at header magi
Failed to read sparse file
Run Code Online (Sandbox Code Playgroud)

simg2img仅用于提取system.img

  1. 如果是这样,还有其他方法可以提取boot.img吗?
  2. 如果没有,不提取有boot.img什么问题?

Dha*_*eem 20

boot.img 是一个小(ish)文件,包含两个主要部分。

          * kernel(important for android)
          * ramdisk( a core set of instruction & binaries)
Run Code Online (Sandbox Code Playgroud)

解压 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
    
    Run Code Online (Sandbox Code Playgroud)

3.然后执行 ./unpackbootimg -i <filename.img> -o <output_path>

It will contain,

           * boot.img-zImage     ----> kernel
           * boot.img-ramdisk.gz ----> ramdisk
Run Code Online (Sandbox Code Playgroud)

我们也可以使用以下命令提取 ramdisk

gunzip -c boot.img-ramdisk.gz | cpio -i
Run Code Online (Sandbox Code Playgroud)

更改文件后,我们可以再次将这些文件打包为 boot.img 使用 mkbootimg

玩得开心!

  • 该工具的链接已失效。 (2认同)

小智 10

安装 abootimg(作为软件包提供,例如在Debian/UbuntuopenSUSE中)。

提取(boot|recovery).img

$ abootimg -x (boot|recovery).img
$ ls
boot.img  bootimg.cfg  initrd.img  zImage
Run Code Online (Sandbox Code Playgroud)

(boot|recovery).img在修改bootimg.cfgzImage或之一后重新打包initrd.img

abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img
Run Code Online (Sandbox Code Playgroud)


Gil*_*il' 6

boot.img不是像system.img. 它由引导加载程序读取,仅包含内核映像和 ramdisk 映像。

一些二进制发行版分别提供内核和 ramdisk 映像。在这种情况下,您不需要对 做任何事情boot.img,只需用 重新生成一个新的mkbootimg

如果您需要从 中提取信息boot.img,请尝试split_bootimg(由William Enck,通过Android wiki)。