EDIT: Wiki now posted for this guide, located here:
Alright, so I've seen a few people asking about this, and I got curious because I had never thought about it before. Basically it involves moving the /Applications directory to the Media partition to give you more space to install apps and themes from Installer, and creating a symlink in the root directory, much like you do during the jailbreak process. This is for version 1.1.1, I'm not sure if it'll work for 1.0.2, but you don't need to on 1.0.2 because it gives you over 100 megabytes which is more than enough. This will allow you to jump from around 30 megabytes to over 50 or so, which still isn't as much as 1.0.2, but it definitely helps!
Note that I'm on Windows XP, but the process is exactly the same for Macs, you'll just have to use your ssh program.
I've seen a couple of different methods so far, but this is the one that I followed, and I figured I'd type it up and provide screenshots to those that need them, as well as provide instructions for those of you who don't have ssh, the process is exactly the same:
NOTE: If you did this on 1.1.1 and then upgraded to 1.1.2, you may notice as you are looking through your ssh program that the symlink is no longer there. You have to be logged in through an SCP session, not an SFTP session(you can do this by installing OpenSSH through Installer.app), and you can recreate this. Delete the ROOT_Applications directory you created, and then follow the steps again. You will have to reinstall all your apps from Installer, but this is the safest way to do this. You won't have to reinstall themes and the like, only the actual applications themselves.
EDIT (12/14/07): I've noticed a lot of people are having trouble with this. To answer some of your questions, yes you CAN do this all on a 1.1.2 phone. Doing this on 1.1.1 then upgrading is NOT recommended, as upgrading with the symlink installed WILL erase your symlink and reinstall the default /Applications folder. You should remove this before upgrading to any new version of firmware and redo it. I just double checked myself by removing and redoing the instructions with my 1.1.2 phone and it works.
NOTE(take two): I noticed after finally getting a chance to look back through the forum that a lot of folks are questioning whether you can use this on any firmware version. As far as I know, yes. I've been using this method since version 1.0.2, and I have used it on each version of firmware since, so I know it does work. Just follow the guide exactly and you'll get it.
NOTE(take three): If you are on firmware version 1.1.3 or higher, make sure to substitute mobile anywhere you see root. For example, instead of putting /private/var/root in the command in step two, put /private/var/mobile. It won't hurt anything to use root instead of mobile, but as of 1.1.3 the /private/var/mobile directory is where Apple is keeping everything instead of /private/var/root like in versions prior to 1.1.3, and it may end up being that the /private/var/root directory is removed altogether eventually.
Alright, here we go:
- any firmware version will do
- an SSH program of your choice(i'll be using WinSCP...the username is root and the password is dottie on 1.0.2, and on 1.1.1 the password is alpine)
- more than likely you need to have all the BSD World and BSD Extra files installed, which you should have already, if you followed the guides here to jailbreak 1.1.1, and obviously you need to have gone through installing ssh on your phone
First we have to make sure that the noexec command is not set in the /etc/fstab file. If you followed the guide here on jailbreaking 1.1.1 you may remember looking at this file to make sure that there were no "ro"s in it. Now we are going to check it and make sure that it doesn't say noexec, and if it does, delete it. So, connect via SSH however you'd like, and navigate to your /etc directory. If you are using WinSCP you can double-click the file and view it straight from WinSCP and edit it. If you are using a command-line ssh program, such as Putty, you'll need to pull it from the iPhone and look at it, then put it back. Simply run this command:
And you'll have the fstab file on your computer wherever Putty happens to be stored.
getfile /etc/fstab fstab
Open up the fstab file. Notice in the red circle that it says "noexec"? We need to get that out of there. So, delete it, and save it.
Again if you are using a command-line ssh program you'll have to put it back. Run this command:
putfile /etc/fstab fstab
Now that we are able to run the commands that we need to run, we need to actually move the /Applications directory. In WinSCP hit Ctrl+T to bring up the terminal window(I'm not sure what the command is in other programs). Using a command-line terminal you won't need to do this step, obviously
Now type this command and hit Execute:
Note that, for some reason, after running this command WinSCP reported a connection lost error. If something similar happens to you, simply reconnect and you should be ok.
cp -R /Applications /private/var/root/ROOT_Applications
Notice that now, in the /private/var/root directory, ROOT_Applications now shows up! That was easy, wasn't it?
Now we need to create the symlink which will trick the iPhone into thinking we never moved the /Applications directory. Go back to your terminal, and type in this command:
rm -rf /Applications && ln -s /private/var/root/ROOT_Applications /Applications
This does two things in one step. First it removes the /Applications directory, and then it recreates it as a shortcut to the new one we just made before. If you look in the root directory, you'll see the /Applications folder, only now it has the shortcut arrow on it. Opening it up will show you all your Applications, as normal. If not, something got botched somewhere along the line. Restart your iPhone and you should be good to go!
Removing the symlink:
If something happened to your iPhone, reversing the process is easy to do. Go back in through ssh and type the following three commands into the terminal:
And everything should be alright. You might want to do this before doing any future upgrades, as I'm not sure if this will affect the upgrade or not.
cp -R /private/var/root/ROOT_Applications /Applications
rm -rf /private/var/root/ROOT_Applications
Hopefully that wasn't terribly difficult for you to follow, as it's my first guide on something like this. If anybody knows how to execute these commands in iphoneinterface or iphuc let me know. I actually just ran into a weird issue where when I run either of those, it's as if my phone isn't jailbroken anymore, but I have ssh capability and installer and all my third party apps working just fine. Somebody try running these commands in either of those and see if they work, I really don't feel like restoring/downgrading/reupgrading/rejailbreaking my phone today lol.
Again, the method I used was that outlined by scr4p in the thread that was linked above. Thanks!