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"
- Linux box or virtual machine
- simg2img, make_ext4fs binaries which can be downloaded from here http://web.djodjo.org/?a=download:android:tools:x86_linux:ext4tools
place you system.img and the 2 binaries in one directory, and make sure the binaries have exec permission.
Part 1 - mount the filesystem
- mkdir sys
- ./simg2img system.img sys.raw
- 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.
- sudo ./make_ext4fs -s -l 512M -a system new.img sys/
- sudo umount sys
- rm -fr sys
Now you can simply type:
fastboot flash system new.img