Pete decided that setting the install location to automatically default to external storage would be a good idea. Personally I think he did that on purpose to give his users something else to learn...though I can't confirm this ;-)
I'm too lazy to find the thread that goes over how to fix this so I'll attempt to explain real fast.
Using the file manager of your choice, we will be editing the following system file:
In order to edit the file, /system must be mounted. If using Root Explorer like I did then all you need to do is click the button at the top labeled Mount R/W. If using Astro or another file manager then you can open up a terminal app (ConnectBot, Terminal Emulator, etc) and run a script Pete kindly provided you for this very reason:
NOTE: Root Explorer will automatically create a backup after you are finished editing but if you are using another app you might consider doing this before proceeding beyond this point
Before we go any further, it's time for some educational reading that may be of interest to more hardcore BB users or developers:
If the contents of this file look familiar, it's because it's essentially the Pete script from the latest 2.1 BB ROM.The Pete script is what enabled the more aggressive memory management and set the CPU speeds therefore eliminating the need for SetCPU. Before, Pete would have to modify a kernel to call the Pete script at boot. This is why loading a kernel not supported by Pete would break the afore mentioned features. The install-recovery.sh script runs automatically at boot in 2.2 regardless of which kernel is used and Pete was very clever to move the Pete script inside of here. No longer do you have to use supported kernels to reap all the benefits! If anyone has scripts they want run at boot...this would be the file to call them from or insert them into ;-)
Ok enough learning. Open up the install-recovery.sh file for editing and find the line that says:
It should be fairly obvious what the above does but the options may not be obvious...My advice would be to change the 2 with 0. This is the default for Froyo and basically means when you install an app then it will install the app to wherever the app specifies. However here are all the options. Some people may prefer instead to ensure apps ALWAYS install to the phone...in which case you would set it to 1. Anyways...choose ONE of the below options to use.
pm setInstallLocation 2
Save your changes, close the file and mount the system back to read only if you want to. Won't really matter as we are gonna reboot our phones here soon.
pm setInstallLocation 0 # auto (this is the default for the leaked 2.2)
pm setInstallLocation 1 # will always install to phone (unless no memory is left)
pm setInstallLocation 2 # will always install to sd card (unless no memory is left)
Ok cool so all new applications installed are going to be installed on the phone. Not so cool-anything you have already installed you will need to move back to the phone in order for them to function properly. Actually you only need to move back any apps with widgets or for that matter any app that needs to start or load anything up before the sdcard is mounted. This is easy but maybe a little tedious depending on how many apps you have to move. Just go into Settings>Applications>Manage Applications and click on each app you want to move. Then find the button that says Move to phone and click. Repeat for each app you need to move.
The last thing you need to do is reboot the phone for the changes we made in install-recovery.sh to take effect.
In the future if you would like to force an app to install to your phone that doesn't support moving to sd card via the Manage Applications method...there is a way for you to temporarily force apps to install back onto the sd card without having to edit and reboot like we just did. All you need to do is open up a terminal and type;
The next time you reboot apps will go back to installing to the phone. Alternately you could just type back in the terminal:
pm setInstallLocation 2
Phew that was probably more long winded then it needed to be but I'm gonna lay back down so I won't be around to answer any questions that might arise from this for a while so I wanted to be as thorough as I could as tired as I am.
pm setInstallLocation <0|1> # choose whichever you originally edited in the file