how to have both mac os x and linux installed and share the same home directory files

2011-04-09

So much time since my last post! I’m sure that the best way to come back to blog posting is a nice tutorial. I’m going to write how to have the same home directory shared between Mac Os X and Gnu/Linux. Let me call Gnu/Linux just Linux from now on.

A unique place for your working directory on both Mac Os X and Linux!

The configuration I’m proposing should be very confortable, as it works with symbolic links. It lets you to boot either Mac Os X or Linux and have the same directories and files for your everyday use. Meanwhile, the important configuration files and directories (e.g. ~/Library for Mac Os X, ~/.config for Linux) are kept separately on their corresponding partitions. Another advantage of this configuration is that you can have a small partition dedicated to Linux - let’s say 10GB but could be even less - just for installing the programs you need, while your videos, documents, music files are kept inside the biggest partition, the one for Mac Os X.

Disclaimer, assumptions

Basically, you will mount your Mac Os X root partition in Linux, and soft-link your important directories to your Linux home directory. You will then use them as there were real directories in your Linux home directory. For this how to, there are a couple of things I assume that:

You have Linux installed and running natively on your Mac(Book). I’m going to give commands with sudo, so configure it if you’re not using Ubuntu-based distros! You know your partition layout. The following is mine. I’m going to use it as example:

disk0s2	 /dev/sda2 MacOsx /
disk0s3	 /dev/sda3 Linux /
disk0s4	 /dev/sda4 Swap

You have a clean Linux home directory. This means that you don’t have directories whose names are in conflict with those on your Mac Os X home directory You are going to disable file system journaling on your Mac Os X root partition! Please read carefully this Wikipedia page about journaling and this Apple page about HFS+ journaling if you need more information. Boot Mac Os X

Follow these instructions under Mac Os X:

Open a Terminal.

Identify your Mac Os X root partition:

$ sudo diskutil list
/dev/disk0
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *111.8 Gi disk0
1: EFI 200.0 Mi disk0s1
2: Apple_HFS MacOsX 99.9 Gi disk0s2
3: EFI 10.7 Gi disk0s3
4: Linux Swap 1.0 Gi disk0s4

Disable file system journaling for the partition:

$ sudo diskutil disablejournal disk0s2

Do a ls -n of your home directory to discover your user id uid:

$ ls -n
total 0
drwx——+ 11 501 20 374 25 Feb 17:43 Desktop
drwxrwxrwx+ 32 501 20 1088 26 Feb 18:19 Documents
drwxrwxrwx+ 8 501 20 272 26 Feb 18:06 Downloads
[Few Others ...]

My UID is 501. Keep your UID in mind, you will need it under Linux. You obtain the same results by using the command “id”. Reboot your Mac.

Boot Linux

Follow these instructions in a linux shell.

Change your Linux user id (UID). To correctly share the same home directory between both OS, you need to have on Linux the same UID of your Mac Os X user.

sudo usermod -u <uid> <username>

(sudo usermod -u 501 dgraziotin in my case)

To have your new UID applied, either reboot or logout from every shell you opened, even from your desktop environment. Login again.

Create a directory in which you are going to mount Mac Os X root partition:

sudo mkdir /media/</strong>OSX</strong>OSX</strong>

put this line at the end of /etc/fstab, as root, with your favourite editor:

/dev/sda2	/media/OSX hfsplus rw,nosuid,nodev,uhelper=hal	0	0

Remember to change sda2 and OSX according to your settings.

Either reboot the system or type:

sudo mount /media/OSX

To mount your Mac Os X root directory in your mount point directory.

Now cd to your Linux home directory and begin to soft-link all of your important Mac Os X directories. Here are some of those I needed:

ln -s /media/OSX/Users/dgraziotin/Documents/ .
ln -s /media/OSX/Users/dgraziotin/Pictures/ .
ln -s /media/OSX/Users/dgraziotin/Projects/ .
[...and many more...]

Don’t soft-link the Library directory.

Conclusions

Now you have the same important files shared on both Mac Os X and Linux, while the important hidden configuration files are kept in separate phyisical places. You can listen to your Itunes mp3 collection on both operating systems. You can now develop programs under Gnu/Linux. You can reboot your machine to Mac Os X and take notes during the lectures, and so on! Hope you liked this how to, and comment it as well. Contact me if you find some mistakes or you’re in trouble!


I do not use a commenting system anymore, but I would be glad to read your comments and feedback. Feel free to contact me.