Linuxtipstricks – Just another /linux/blog

October 5, 2008

How to create a separate home partition in Linux (Ubuntu, OpenSuSE, Mandriva, Gentoo, Fedora and so on)

Filed under: user tipstricks — Antonio Portuesi @ 4:26 pm
Tags: , , , , , , , , , , , ,

This simple guide is just another way to make a separate /home partition if you already installed Linux with a embedded /home partition (aka /home folder inside your / partition).

Getting a separate /home partition allows you to reinstall your Linux distro (Ubuntu, OpenSuSE, Mandriva, Gentoo, Fedora and so on) and retain all your personal files and settings. This is for your convenience and you should seriously think on it as soon as possible if time really matters to you. Do not forget to run a complete back up of your data before go trough.

You are strongly encouraged to use a self booting live CD for this process, for those reasons:

a) In order to resize your existing root partition, it needs to be unmounted. The only way to unmount it is for it not to be in use, which means you cannot boot to your regular linux environment while resizing it so you need a external and autonomous system as a live CD or a bootable USB device.
b) If you damage your linux system by accident, you can use for sure the live CD to restore your old settings and, in a very bad situation, at least recover your important data.

Before you start please note that if you are not confident in what you are doing or in repairing or recovering from the above listed process, then do not step to the outlined instructions. Creating a separate /home partition involves resizing at least one existing partition. In almost all situations, the resizing process of partitions does not carry out data loss, but there still exists a (however minimal) risk of data loss, so you should back up your data before attempting to modify your hard disk partitions.

I cannot help you troubleshoot problems you could have following this tutorial.

Now, after you made the new target partition will host your /home open a the terminal, I’m going to mount /dev/sda1 and /dev/sda2 by pasting in these commands (please remember to change the partition device names to the ones appropriate for your setup)

sudo mkdir /first
sudo mkdir /second
sudo mount -t ext3 /dev/sda1 /first
sudo mount -t ext3 /dev/sda2 /second

Now we are going to copy all the content from the original /home to the new target partition…

cd /first/home
find . -depth -print0 | cpio --null --sparse -pvd /second/

…and to get a backup copy of /home too, useful in a troubleshoot process:

sudo mv /first/home /first/home_backup
sudo mkdir /first/home

Right now, after you made a backup copy of fstab, we will specify how the system should use the brand new partition as /home:

sudo cp /first/etc/fstab /first/etc/fstab_backup

sudo gedit /first/etc/fstab (if you are a Gnome lover) or

sudo kedit /first/etc/fstab (if you are a KDE lover).

The /etc/fstab should be shown in the text editor.

Add the next line at the end of the file and remember to double check the right name of your partition before save the file and close the editor:

/dev/sda2 /home ext3 nodev,nosuid 0 2

In order to avoid error messages after reboot with the new /home partition you should set the proper ownership typing:

sudo chown user_managed:user_managed /home/user_managed -R

If everything is ok and you are running a system without problems you could delete the old /home directory and get some free space on your disk:

sudo rm -rf /home_backup

If you incur some issue you can restore the old /home by changing back the fstab removing the line you added before as described above.


Blog at