Parsing and re-packing Android boot.img/vbmeta.img/payload.bin, supporting Android 13 preview
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
cfig 5657d736c2
support chained partition descriptor (tag=4)
7 years ago
avb update avbtool 7 years ago
bbootimg support chained partition descriptor (tag=4) 7 years ago
boot_signer replace AOSP bouncycastle with upstream bcprov-jdk15on:1.57 7 years ago
doc replace AOSP bouncycastle with upstream bcprov-jdk15on:1.57 7 years ago
gradle/wrapper upgrade build 7 years ago
mkbootfs patch it 7 years ago
security update to android master on May.30.2016, not tested 9 years ago
src massive update for upcoming Android Pi 7 years ago
tools replace AOSP bouncycastle with upstream bcprov-jdk15on:1.57 7 years ago
.gitattributes do strict checking before extracting 'args.base' 7 years ago
.gitignore use javax.crypto.Cipher for raw signing 7 years ago
.travis.yml add self test in travis-ci 9 years ago
LICENSE.md Update LICENSE.md 9 years ago
README.md replace AOSP bouncycastle with upstream bcprov-jdk15on:1.57 7 years ago
build.gradle add 'pull' task 7 years ago
gradlew upgrade build 7 years ago
gradlew.bat upgrade build 7 years ago
settings.gradle replace AOSP bouncycastle with upstream bcprov-jdk15on:1.57 7 years ago
short.md add README in Chinese 7 years ago

README.md

Android_boot_image_editor

Build Status License Gitter chat

This tool focuses on editing Android boot.img(also recovery.img, recovery-two-step.img and vbmeta.img).

1. Prerequisite

1.1 Host OS requirement:

Linux or Mac. Also need python 2.x and jdk 8.

1.2 Target Android requirement:

(1) Target boot.img MUST follows AOSP verified boot flow, either Boot image signature in VBoot 1.0 or AVB HASH footer in VBoot 2.0.

Supported images:

  • boot.img
  • recovery.img
  • recovery-two-step.img
  • vbmeta.img

(2) These utilities are known to work for Nexus/Pixel boot.img for the following Android releases:

  • AOSP master
  • Lollipop (5.0) - Pie (9)

2. Usage

Put your boot.img to current directory, then start gradle 'unpack' task:

cp <original_boot_image> boot.img
./gradlew unpack

Your get the flattened kernel and /root filesystem under ./build/unzip_boot:

build/unzip_boot/
├── boot.img.avb.json (AVB only)
├── bootimg.json (boot image info)
├── kernel
├── second (2nd bootloader, if exists)
└── root

Then you can edit the actual file contents, like rootfs or kernel. Now, pack the boot.img again

./gradlew pack

You get the repacked boot.img at $(CURDIR):

boot.img.signed

If you are working with recovery.img

If you are working with recovery.img, the steps are similar:

cp <original_recovery_image> recovery.img
./gradlew unpack
./gradlew pack

And you get recovery.img.signed

3. example & test

An example boot.img has been placed at src/test/resources/boot.img, which is extracted from Nexus 5x(code: bullhead) factory images from Google, you can take it as a quick start.

4. boot.img layout

Read layout of Android boot.img. We now support both VB 1.0 and AVB 2.0 layouts.

5. compatible devices

Device Model Manufacturer Compatible Android Version Note
Pixel XL (marlin) HTC Y 9.0.0 (PPR2.180905.006,
Sep 2018)
more ...
Nexus 9 (volantis/flounder) HTC Y(with some tricks) 7.1.1 (N9F27M, Oct 2017) tricks
Nexus 5x (bullhead) LG Y 6.0.0_r12 (MDA89E)
Moto X (2013) T-Mobile Motorola N

6. References

boot_signer https://android.googlesource.com/platform/system/extras

bouncycastle https://android.googlesource.com/platform/external/bouncycastle

cpio / fs_config https://android.googlesource.com/platform/system/core

AVB https://android.googlesource.com/platform/external/avb/

Android version list https://source.android.com/source/build-numbers.html