If you have followed along the earlier series of this article, you may have already met one of the limitations of Ubuntu's HFS support: it can't write journaled HFS volumes. Thus, it makes sense to partition the drives with non-case-sensitive and non-journaled HFS where there is a need to read/write. You can also
manually disable journaling if you already finished partitioning and you've had the journaled option turned on.
A decision to take: move the home folder, or make symbolic links?
In earlier iterations of my dual-boot configurations, I had my OSX home folder moved to the shared partition. This works quite well, at least up to the point when the system starts up after a "dirty shutdown" when the regular shutdown procedure was not executed properly: like when the computer was frozen and was killed with the power switch (or facing a power-outage on an iMac, or running out of battery on macbooks). In these cases, a disk-check was performed during startup, but since the check can't finish until the computer boots up (and OSX does not wait for the check to finish, rendering the shared volume inaccessible temporarly), we may face an empty home-folder after a dirty shutdown (so you'll face a brand-new configuration, like you have just finished installation, since it uses the unmounted /Users/username folder). This can be fixed by a logout-login, nevertheless it is not nice.
Not to mention if we do the same with Ubuntu: if the home folder is moved to the shared partition and the partition is dirty on boot-up, it will be read-only; if I'm not mistaken this has resulted being not able to login to the system at all. This sounds really bad, so in my experience the best option is to leave the home folders where they are (e.g. Ubuntu will have its' home folder on the EXT3 drive, OSX on the HFS drive), and we'll make symbolic links to the documents, pictures, videos folders on the shared partition. Until we keep our documents where they belong, they will be on the shared drive.
Mounting an HFS volume on Ubuntu
There are two ways to identify a partition to mount on linux: either by the device's name (like /dev/sda1) or by its
UUID, which is just a random number. The UUID option is better, since a partition will be identified even if its' name changes (like when the number of partitions changes on a drive: /dev/sda3 won't be /dev/sda3 anymore as soon as we remove /dev/sda1 and /dev/sda2).
To see some information about your partitions, you can use the command
blkid:
In this screenshot (don't let yourself fooled by the appearance, this is Ubuntu having a
nice gnome-theme applied, thus looks a bit like OSX, pretty neat huh? See
here how to install it) it is apparent that I have four partitions, and I will have to mount the last one. I will mount /dev/sda4. Yours can be different, so double-check.
To mount a partition, first we have to create the folder where it will be mounted. Open a terminal, and enter
sudo mkdir /mnt/shared
sudo chmod 777 /mnt/shared
Now we'll add an entry in
/etc/fstab. Press Alt+F2 to bring up the
Run Application dialog, and enter
gksudo gedit /etc/fstab
Enter your password when it's been asked. This will bring up the contents of the fstab file in the text-editor using the proper rights to edit it (you can use
vi of course but then you won't need my assistance in any case...) Add a line to the end of this file:
/dev/sda4 /mnt/shared hfsplus rw 0 2
Of course, replacing my /dev/sda4 with the correct entry if needed. Save the file & exit the editor.
Using UUIDs
You could also use UUID to identify the partition; I don't know why, it didn't work for me. To acquire the UUID, copy the UUID from the blkid command (or, if you are using Jaunty you can use the sudo vol_id /dev/sda4 command too), and add the fstab line like this:
UUID=aae739de-bfb8-39d6-b60a-a6e47222e74a /mnt/shared hfsplus rw 0 2
Somehow, even though it worked the first time, it didn't work after a reboot, so I've had to fall back to the name. If you figured out the reason, please let us know!
Now we have everything in place. If you reboot, this should mount automagically, but you can mount it right away by entering
sudo mount -a
to a terminal-window. This mounts all filesystems mentioned in fstab - since all others are mounted anyway, ours will be mounted now. To see your mounted filesystems enter
sudo mount
Hopefully your shared partition will be on the list. To shorten the list you can also use
sudo mount | grep sda4
Preparing the shared partition
The shared partition will contain our documents, pictures, music, videos, etc. Now that we have our shared partition mounted, we can create symbolic links from our home folder, so that we don't have to navigate to the shared folder manually.
First let's create the folder for our documents:
mkdir /mnt/shared/doma
mkdir /mnt/shared/doma/Documents
Don't forget to replace my name with yours of course.
sudo or not to sudo? Using multiple accounts
We don't need sudo here, since we want to keep our credentials; by repeating this same process for another user using another name, his/her documents will be on the shared partition as well. Just don't forget to logout/login with the other user's account in this case.
Now just to be sure we don't lose anything, we can move all our may-be-existing documents already:
mv ~/Documents/* /mnt/shared/doma/Documents
Now the Documents folder should be empty. We can verify it with
ls ~/Documents
It should be empty. If it is, we are ready to create the symbolic link.
Creating the symbolic link
To create the symbolic link, enter
ln -sf /mnt/shared/doma/Documents ~
in the terminal.
ln -s creates a symbolic link, the
f parameter replaces the Documents folder if it exists (it does). Even if it looks like (and we wouldn't have moved our documents earlier), it does not destroy anything under the old /home/doma/Documents: if we remove the link, the contents of the (now hidden) folder would reappear. But since we've been careful and moved everything out of the folder earlier, it is empty anyway.
This same procedure can be repeated with the Pictures, Videos and other folders.
Moving the folders on OSX
In order to have a nice and clean system, we should move these folders in OSX as well. Thus, if we'll go to the Documents folder, both OSX and Ubuntu will go to the same folder.
The procedure is quite similar to the previous one. Let's create a small shell-script which will help us:
mkdir /Volumes/shared/doma/$1
mv ~/$1/* /Volumes/shared/doma/$1 && sudo rm -rf ~/$1
ln -s /Volumes/shared/doma/$1 ~
Copy these lines to TextEdit, make it Plain Text (format menu) and save the file in your home folder using the name mv.sh - and don't forget to replace my name with yours! This shell-script automates all the necessary steps for OSX. We'll have to make it executable first with
chmod +x mv.sh
Now we can execute it for all the folders we want to move. For the Documents folder, enter
./mv.sh Documents
You can do the same with your Movies, Music, Pictures folder if you like - but take iTunes' and iPhoto's proprietary folder-structure into account, you'll see the details of their file-storage in Ubuntu (that's linux anyway and supposed to be lower level right?). In any case, you'll have access to your files - and if you use some other, possibly multi-platform tool to manage your pictures and music, you may end up having a quite usable multi-platform system.
Drop a comment if it works for you, tell us how you've configured your system - and don't hesitate to ask if you have a question!
Thanks for dropping by - see y'all next time!