个人工具

“UbuntuHelp:Partitioning/Home/Moving”的版本间的差异

来自Ubuntu中文

跳转至: 导航, 搜索
第19行: 第19行:
 
# (identifier)  (location  )  (format)      (  some settings          )   
 
# (identifier)  (location  )  (format)      (  some settings          )   
 
</nowiki></pre>
 
</nowiki></pre>
You should replace the ?'s with the UUID of the intended /home partition, and the location should be a temporary one (/media/home is assumed in the rest of the guide). If /media/home does not exist yet, then you may create it with the command
+
You should replace the ?'s with the UUID of the intended /home partition.
 +
The UUID can be found with:
 
<pre><nowiki>
 
<pre><nowiki>
sudo mkdir /media/home
+
sudo vol_id -u <partition>
 +
 
 
</nowiki></pre>
 
</nowiki></pre>
The UUID can be found with:
+
eg
 
<pre><nowiki>
 
<pre><nowiki>
blkid
+
sudo vol_id -u /dev/sda3
 +
</nowiki></pre>
 +
The Fstab location should be a temporary one - we are to mount the temporary location and copy the existing home to it.  (/media/home is assumed in the rest of the guide). If /media/home does not exist yet, then you should create it with the command:
 +
<pre><nowiki>
 +
sudo mkdir /media/home
 
</nowiki></pre>
 
</nowiki></pre>
 
Now, mount the partition with:
 
Now, mount the partition with:
第47行: 第53行:
 
sudo mkdir /home
 
sudo mkdir /home
 
</nowiki></pre>
 
</nowiki></pre>
 +
~-''It seems that this guide fails at this point (under 9.04) because sudo fails as it can not find the config files it needs to check the users sudo permissions. This is because /home no longer exists. To fix this I needed to start a shell as root (su command and supply the root password) and create the new /home. - Roger Morton ''-~
 
Edit fstab so that your new home partition actually points to /home (ie. by changing /media/home to /home)
 
Edit fstab so that your new home partition actually points to /home (ie. by changing /media/home to /home)
 +
~-''gksudo would not launch gedit (for the same reason sudo failed above I suspect) so I was forced to use vi to edit my fstab. And I hate vi. - Roger Morton ''-~
 
and finally, remount the partition with:
 
and finally, remount the partition with:
 
<pre><nowiki>
 
<pre><nowiki>
 
sudo mount -a
 
sudo mount -a
 
</nowiki></pre>
 
</nowiki></pre>
 +
~-''I recall that this failed too. I think because home is already mounted - even though we have renamed it. umount /home failed because /home was in use by the GUI. In the end I had to reboot and bring up the recovery console as root and fix the mess. So bottom line - I don't think this is such a good guide. Needs further work and testing. - Roger Morton''-~
 
Reboot to ensure that currently running programs use the new /home
 
Reboot to ensure that currently running programs use the new /home
 
=== After a reboot ===
 
=== After a reboot ===

2009年11月17日 (二) 20:19的版本

Why this guide is superior to the others

If you don't care about this topic, just skip to the next section where the guide starts. I wrote this guide simply because I found some flaws in the other guides that I read, and I wanted to record my findings for future reference. I'm posting (and updating a bit) here for the benefit of others. Here are the reasons I originally wrote this guide:

  • Partition and setup fstab first
  • There are guides that use mount commands to do the initial partition mounting, and then setup fstab after you have moved your /home. If you mess up your fstab, then when you reboot, your system will lose track of your /home files. Setting up fstab first and using sudo mount -a to mount the partitions avoids this problem.
  • Use rsync to move the files
  • There is lot's of debate about which command to copy your files to the new /home partition. This debate stems from a time in the past when cp was not able to do it properly (I think it skipped files?). cp was not designed to be a powerful backup tool. The fix, then, was to use a combo of find and cpio (See section 8.3.5). cp has had improvements since, but why not use rsync, a tool that is designed for backups like moving your /home, and much more. Rsync is not only able to copy over all the files, but is also able to maintain other characteristics of the file, like permissions, ownership, and timestamps.

The Guide

Setting up /home on a separate partition is beneficial because your settings, files, and desktop will be maintained if you upgrade/reinstall/use a different distro. This works because /home has a subfolder for each user's settings and files. Also, fresh installs for linux typically like to wipe whatever partition they are being installed to, hence the need to put /home on a different partition.

Setup Partitions

This is beyond the scope of this page. Try here if you need help. Memorize or write down the location of the partition, something like /sda3 or /hda3. Its been suggested to use either ext2 or ext3 over vfat. Using vfat is not supported and may fail, since vfat does not support permissions.

Setup Fstab

Use your favorite editor to edit fstab, like: gksu gedit /etc/fstab <
> Add a line for your partition; something like the following line:

UUID=????????   /media/home    ext3          nodev,nosuid       0       2
# (identifier)  (location  )   (format)      (   some settings           )  

You should replace the ?'s with the UUID of the intended /home partition. The UUID can be found with:

 sudo vol_id -u <partition>

eg

 sudo vol_id -u /dev/sda3

The Fstab location should be a temporary one - we are to mount the temporary location and copy the existing home to it. (/media/home is assumed in the rest of the guide). If /media/home does not exist yet, then you should create it with the command:

sudo mkdir /media/home

Now, mount the partition with:

sudo mount -a

Check that you can copy files over, at least as root (ie with sudo).

Copy /home to the New Partition

sudo rsync -axS --exclude='/*/.gvfs' /home/. /media/home/.

The --exclude='/*/.gvfs' prevents rsync from complaining about not being able to copy .gvfs, but I believe it optional. Even if rsync complains, it will copy everything else anyway. (See here for discussion on this)

Make the Switch

Here is the point of no return. If the previous two steps worked, you should have no troubles. Rename your /home directory:

sudo mv /home /old_home

Re-create a /home directory with (this is because the next steps need the location to already exist):

sudo mkdir /home

~-It seems that this guide fails at this point (under 9.04) because sudo fails as it can not find the config files it needs to check the users sudo permissions. This is because /home no longer exists. To fix this I needed to start a shell as root (su command and supply the root password) and create the new /home. - Roger Morton -~ Edit fstab so that your new home partition actually points to /home (ie. by changing /media/home to /home) ~-gksudo would not launch gedit (for the same reason sudo failed above I suspect) so I was forced to use vi to edit my fstab. And I hate vi. - Roger Morton -~ and finally, remount the partition with:

sudo mount -a

~-I recall that this failed too. I think because home is already mounted - even though we have renamed it. umount /home failed because /home was in use by the GUI. In the end I had to reboot and bring up the recovery console as root and fix the mess. So bottom line - I don't think this is such a good guide. Needs further work and testing. - Roger Morton-~ Reboot to ensure that currently running programs use the new /home

After a reboot

If everything is working, great, you can delete /old_home. If things aren't working, you can undo by moving your /old_home back to /home, and delete the line you added to fstab.

Technical Notes and Resources

Rsync was chosen over cp and find|cpio because it seemed to maintain permissions. http://ubuntu.wordpress.com/2006/01/29/move-home-to-its-own-partition/ http://ubuntuforums.org/showthread.php?t=46866