Unpack/repack ext4 Android system images

http://andwise.net/?p=403

 

This is for all who want to unpack and modify the original system.img that you can flash using recovery.

system.img (what you get from the google factory images for example) represents a sparsed ext4 loop mounted file system.

It is mounted into /system of your device. Note that this tutorial is for ext4 file system, you may have system image which is yaffs2 for example.

the way it is mounted on Galaxy Nexus:

“/dev/block/platform/omap/omap_hsmmc.0/by-name/system /system ext4 ro,relatime,barrier=1,data=ordered 0 0″

Prerequisites:

  1.  Linux box or virtual machine
  2. simg2img, make_ext4fs binaries which can be downloaded from here http://web.djodjo.org/?a=download:android:tools:x86_linux:ext4tools

Procedure:

place you system.img and the 2 binaries in one directory, and make sure the binaries have exec permission.

Part 1 – mount the filesystem

  1. mkdir sys
  2. ./simg2img system.img sys.raw
  3. sudo mount -t ext4 -o loop sys.raw sys/

Then you have all your system partition mouned in ‘sys’ and you can modify whatever you want in ‘sys’. For example de-odex apks and framework jars.

Part 2 – create a new flashable system image.

  1.  sudo ./make_ext4fs -s -l 512M -a system new.img sys/
  2. sudo umount sys
  3.  rm -fr sys

Now you can simply type:

fastboot flash system new.img

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s