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 d7eb1fce89 supress several Java compile warnings 10 years ago
abootimg sync with android-7.1.1_r6 (#8) 10 years ago
boot_signer update to android master on May.30.2016, not tested 10 years ago
bouncycastle sync with android-7.1.1_r6 (#8) 10 years ago
gradle/wrapper Squashed commit of all strict checkings 10 years ago
security update to android master on May.30.2016, not tested 10 years ago
src add macro CFIG_NO_FIX_STAT to disable fix_stat() for mkbootfs 10 years ago
.travis.yml add self test in travis-ci 11 years ago
LICENSE.md Update LICENSE.md 11 years ago
README.expert.md mass update for next generation boot.img 10 years ago
README.md update readme (#9) 10 years ago
build.gradle supress several Java compile warnings 10 years ago
gradlew add wrapper 11 years ago
gradlew.bat add wrapper 11 years ago
settings.gradle mass update for next generation boot.img 10 years ago

README.md

Android_boot_image_editor

Build Status

Utilies for editing Android boot.img or recovery.img.

Prerequisite

Host OS requirement:

Linux or Mac.

Target Android requirement:

(1) Targeted boot.img(or recovery.img) MUST follows AOSP verified boot flow, which means it packs linux kernel, rootfs , and a optional second state bootloader, then sign it with OEM/USER keys.

(2) These utilities are known to work for Nexus (or Nexus compatible) boot.img(or recovery.img) for the following Android releases:

  • AOSP master
  • Lollipop (API Level 21,22) - Nougat (API Level 24)

You can get a full Android version list here.

Usage

Get tools via git:

git clone https://github.com/cfig/Android_boot_image_editor.git
cd Android_boot_image_editor

Then put your boot.img at $(CURDIR)/boot.img, then start gradle 'unpack' task:

cp <original_boot_image> boot.img
./gradew unpack

Your get the flattened kernel and /root filesystem under $(CURDIR)/build/unzip_boot:

build/unzip_boot/
├── bootimg.json
├── kernel
├── second
└── root

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

./gradew 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
./gradew unpack
./gradew pack

And you get recovery.img.signed

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.

boot.img layout

Read layout of Android boot.img. We now support os_version and os_patch_level.