The list provided by Tim missed, if Iâ€™m not wrong, that you have to move the root folder files for installation, so:
1. Copy the silverstripe files to a master silverstripe directory; ex. "silverstripe232"
2. Don't install it (perhaps thats ok too?)
3. Copy assets, mysite, themes folders and the files in the root (notably .htaccess) to another directory; ex. "mysymlinkedsite"
4. Set the correct rights to these folders (777)
5. Create symlinks to the shared folders (saphhire, cms, etc.) (HOWTO)
6. Create a "silverstripe-cache" folder in your "mysymlinkedsite" (777 again)
7. Proceed with the installation as normal (by visiting e.g. localhost/mysymlinkedsite)
This process did not work for me at first time, since ManifestBuilder complained. To make the story short, I had to explicitly define BASE_PATH in line 121 of sapphire/core/Core.php, as pointed by Sam (it also works by defining $baseDir in ManifestBuilder then, if you want to get templates, setting Director::setBaseFolder() in _config.php).
EDIT: Needless to say, you lose the possibility to have multisites by hard-coding the BASE_PATH. I have still to find a solution.
EDIT2: BASE_PATH is defined in Core.php based on the location of this file, so multisites cannot work. If we could use instead something as Director::setBaseFolder() in _config.phpâ€¦ How others did manage to have multisites without hacking further the code?
I have yet to test modules. For the time being, CMS works (including assets!), but calling sitemap.xml (the other module being installed by default is googlesitemaps) gives an error: Call to undefined method ContentNegotiator::disable(). Well, thatâ€™s another story!
Hope it helps,