Android – Make persistent changes to init.rc


I want to change the init.rc file of an android pad. But after I change it and reboot the system, the original init.rc comes back.

How can I make the change to the init.rc persistently without rebuild the system (since I don't have the source code of the system)? Or is there any way to work around?

Best Solution

Unpack the uramdisk using following command in host PC(Linux)

mkdir /tmp/initrc cd /tmp/initrd
sudo mount /dev/sdb1 /mnt          

sdb1 is partion where uramdisk/uInitrd resides.

dd bs=1 skip=64 if=/mnt/uInitrd of=initrd.gz
gunzip initrd.gz

At this point running the command file initrd should show:

mkdir fs
cd fs
cpio -id < ../initrd

Make changes to init.rc

Pack uramdisk using following commands:

find ./ | cpio -H newc -o > ../newinitrd
cd ..
gzip newinitrd
mkimage -A arm -O linux -C gzip -T ramdisk -n "My Android Ramdisk Image" -d newinitrd.gz uInitrd-new