Finally I started searching the workaround for the same. I found that a part of my SD card can be partitioned and formatted as linux file system , so that Android OS considers it as part of phone storage. This is possible for phones which are rooted and I was already using custom ROM from Cyanogenmod.
Note: following will wipe all your data in SD card including music and photos.
- Use Mini Tool Partition Wizard Manager to delete the original SD card partition and create two primary partitions as follows
- A FAT32 partition with most of the size of the SD card.
- An EXT2 (old type file system format to make sure most of the ROM support it), you can try with EXT3 or EXT4 also but I never tested. I kept this partition as 1 GB, I think I will never run out of this space , adding apps.
- Click "apply" to commit the partition changes and format the SD card.
- Copy and unzip the system.zip file on to the SD card.
- Put the SD card back in the phone and start the Terminal Emulator app of the rooted phone.
- copy the file 40int2ext file (found in the system.zip file ) in /system/mnt/etc/init.d directory of the phone. I used the "cp" command and changed the permission of the destination directory for writing file after changing the user to super user (su). You may have to click "allow" while changing the user.
- That's it, I rebooted and phone and saw the internal memory has been increased to almost 1 GB.
Wow ! that was great, I immediately loaded the phone with all the apps I always wanted to install.
I was surprised to see that the performance did not decrease noticeably even tough it is a low class SD card. I will continue to test by installing more apps.
Finally a word of caution : Do this only if you fine in case the phone or the card does not work after this experiment.
However if experiment is successful , you will never see the "insufficient storage" or "low memory" error :)