I am going to install BunsenLabs Crunchbang on my laptop that has 250gb SSD and a 1tb HDD. I am coming from a Windows 8/10 background so I am not familiar with the way the file system works.

I want to have my OS files on the SSD with the majority of my programs installed on the HHD. Yet I would like some programs installed on the SSD. How would I set the drives up to achieve this? Do I need to partition the disks on install or is it easier to change each program's install directory individually?


If you install software using package managers such as RPM (in Fedora and Redhat) and APT (in Debian and Ubuntu), the applications usually will be installed in folders such as /usr/bin, /usr/local/bin and /opt. Tipically, software that is not part of the operating system will reside in /opt.

To use a different disk for the applications, you may (1) mount the other disk as /opt or a sub directory of /opt, or (2) create a symbolic link that redirect the folder /opt or one of its sub directories to a folder in the other disk.

I prefer the second option. Suppose that you have the other disk in /mnt/otherdisk, you can create a folder before installing the software. Note that you must configure the file permissions properly. For instance, if the software will be installed in /opt/software

mkdir /mnt/otherdisk/opt/software 
ln -s /mnt/otherdisk/opt/software /opt/software
# then install the software

If you have installed the software, you can move the files and create the link too. Suppose that the software is installed in /some/dir and the other disk is in /mnt/otherdisk:

mv /some/dir /mnt/otherdisk/some/dir 
ln -s /mnt/otherdisk/some/dir /some/dir
| improve this answer | |
  • With the symbolic link, how would I have a few applications on the SSD? From the commands, it looks like all the applications are on the HDD... – EugeneProut Jul 26 '17 at 21:39
  • 1
    When you use typical commands such as ls /opt, the listings will show the files in the other disks as if they are in just one. Remember that the Linux/Unix filesystem is a "big tree" without a letter for each drive. -- to know what is installed in the SSD, you may list that mount point, i.e. ls /mnt/otherdisk – Jaime Jul 27 '17 at 4:29

Not the answer you're looking for? Browse other questions tagged or ask your own question.