boot.img
我正在尝试从 Android 图像中查看文件中的内容。
我用谷歌搜索发现本文提取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
是一个小文件,包含两个主要部分。
- 内核(对于android很重要)
- ramdisk(一组核心指令和二进制文件)
打开包装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
它包含两个二进制文件:
unpackbootimg
mkbootimg
然后执行
./unpackbootimg -i <filename.img> -o <output_directory>
遗嘱内容
output_directory
包括:boot.img-zImage
(核心)boot.img-ramdisk.gz
(虚拟磁盘)
我们也可以使用以下命令提取 ramdisk
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
。它由引导加载程序读取,仅包含一个内核映像和一个 ramdisk 映像。
一些二进制发行版分别提供内核和 ramdisk 映像。在这种情况下,您不需要对 执行任何操作boot.img
,只需使用 重新生成一个新的mkbootimg
。
如果您需要从 a 中提取信息boot.img
,请尝试split_bootimg
(经过威廉·恩克, 通过安卓维基)。
答案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