从个人角度出发,我是个现实主义者,对 Linux、Windows、Mac OS 等操作系统以及 Ubuntu 的“亲和力”都无意褒贬。历史与用户心里都已经无法重设了……

对 Linux 毫无概念的用户安装 Ubuntu 时多半仅仅挂载主目录和交换区(/ & swap),如果仅为尝鲜也就罢了——三两天重装一次——何必多费心机。

然而,这种挂载方式在长久应用中是不可取的,/home 目录包含了几乎所有的用户文档(类似 Windows 系统中的“我的文档”等),/usr 包含了用户所安装应用程序,这些不适于与系统文件混杂一处。

欲图重设 /home 等挂载点,可先为其划分新的分区之后修改与挂载点相关的系统设置。

新建分区
如果你有一块空白的磁盘或者已经从 Windows 系统中划分出新的分区,那么可以跳过了。如果你需要在 Ubuntu 系统磁盘中(即原有的 / 所挂载的分区),那么可以由 Ubuntu Live CD 启动并使用 GPart 磁盘管理工具来处理。

  1. 准备 Ubuntu Live CD 或籍此创建的可启动 U 盘;
  2. 设定 BIOS 由以上设备启动计算机;
  3. 成功进入 Ubuntu Live 模式桌面;
  4. 主菜单-System-Administration-Partition Editor;
  5. 选定 / 所在的磁盘设备,并选定 / 所在分区;
  6. 在以上分区图示上执行右键命令 Resize,解脱出 /home 所在分区所需空间;
  7. 使用获取的为划分空间创建新的分区,分区格式 ext4、ext3、ntfs 均可;
  8. 执行以上方案;
  9. 经历漫长的过程之后,完成磁盘编辑;
  10. 50G 分区耗费 1 小时,300G 分区耗费 4 小时,于是不敢再用他处理大分区了……

  11. 重启计算机,进入硬盘中的 Ubuntu 系统;

转移用户文件
该过程目的是将现有 /home 目录中的所有文件备份到新建的分区中。

  1. 挂载新分区于 /media/home
  2. 拷贝 /home// 及其所有下级文件至 /media/home//,注意拷贝隐藏文件与目录(多为程序配置);

编辑挂载设置
此过程通过修改 fstab 信息来重设 /home 挂载点位置,这里我们需要知道 Linux 下的磁盘与分区标识规则。

  1. 查看磁盘与分区的标识信息;
  2. ls -all /dev/disk/by-uuid
    示例如下:
    drwxr-xr-x 2 root root 180 2009-04-29 23:13 .
    drwxr-xr-x 6 root root 120 2009-04-29 23:13 ..
    lrwxrwxrwx 1 root root 10 2009-04-29 23:13 12FEDB1DFEDAF845 -> ../../sdd1
    lrwxrwxrwx 1 root root 10 2009-04-29 23:13 ab0d0ae1-da1f-49ce-91cc-42ffa03114d0 -> ../../sda7
    lrwxrwxrwx 1 root root 10 2009-04-29 23:13 BC8290BF82907F96 -> ../../sda1
    lrwxrwxrwx 1 root root 10 2009-04-29 23:13 C128A5C97B468FC6 -> ../../sda5
    lrwxrwxrwx 1 root root 10 2009-04-29 23:13 c80627f3-419d-405d-a987-dafbf1ed86c2 -> ../../sda8
    lrwxrwxrwx 1 root root 10 2009-04-29 23:13 D4CCB757CCB7331A -> ../../sdb2
    lrwxrwxrwx 1 root root 10 2009-04-29 23:13 D648CC1148CBEE75 -> ../../sdc1

    12FEDB1DFEDAF845 等字符串称为 UUID

  3. 编辑 fstab 信息
  4. sudo gedit /etc/fstab
    示例如下:
    # /etc/fstab: static file system information.
    #
    # Use 'vol_id --uuid' to print the universally unique identifier for a
    # device; this may be used with UUID= as a more robust way to name devices
    # that works even if disks are added and removed. See fstab(5).
    #
    # proc /proc proc defaults 0 0
    # / was on /dev/sda7 during installation
    UUID=ab0d0ae1-da1f-49ce-91cc-42ffa03114d0 / ext4 relatime,errors=remount-ro 0 1
    /dev/sda6 none swap sw 0 0
    UUID=c80627f3-419d-405d-a987-dafbf1ed86c2 /home ext4 defaults 0 2
    UUID=12FEDB1DFEDAF845 /media/Media ntfs-3g defaults 0 0
    UUID=C128A5C97B468FC6 /media/Documents ntfs-3g defaults 0 0
    UUID=D648CC1148CBEE75 /media/DataI ntfs-3g defaults 0 0
    UUID=D4CCB757CCB7331A /media/DataII ntfs-3g defaults 0 0
    UUID=BC8290BF82907F96 /media/Vista ntfs-3g defaults 0 0

    我们看到,主要信息分为六列:

    file system - 挂载设备,我们可以用 UUID 来标识
    mount point - 挂载点,如我们所需的 /home
    type - 分区文件系统,如 ext4、ext3、ntfs-3g、vfat 等
    options - 使用该分区的方式
    dump - dump 备份工具
    pass - 系统扫描检测

    详见译稿:学会理解并编辑fstab文件

  5. 添加 /home 挂载点设置;
  6. 例如:
    UUID=c80627f3-419d-405d-a987-dafbf1ed86c2 /home ext4 defaults 0 2

  7. 重启计算机