如何解压缩boot.img?


15

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

我用谷歌搜索并找到了这篇文章进行摘录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

Android.SE网站上存在类似的问题:如何解压缩和编辑boot.imgROM的移植?
WhiteWinterWolf,2016年

Answers:


19

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

          * 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命令未找到
Rahul Matte

在此处获取关于Mint 17的步骤3的相同错误。尝试通过sudo以及在chmod 755之后运行它们均无济于事。
Nisse 2014年

在步骤3中,确保output_path已经存在,否则unpackbootimg将出现段错误。
Aldaviva '16

2
该工具的链接已失效。
艾迪生·克鲁普

只需从github克隆代码:github.com/osm0sis/mkbootimg
Albus Dumbledore

6

boot.img不是像的压缩文件系统映像system.img。它由引导加载程序读取,仅包含内核映像和ramdisk映像。

一些二进制发行版分别分发内核和ramdisk映像。在这种情况下,您无需执行任何操作boot.img,只需使用来重新生成一个新的mkbootimg

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


的链接split_bootimg不再有效。
内森·奥斯曼

@NathanOsman替换为指向William Enck页面上副本的链接。
吉尔斯(Gilles)'所以

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

这是答案,因为此代码和项目是最新的并且正在维护。
加百利博览会
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.