多个Linux发行版的共享/home分区

我在一个分区上安装了Ubuntu,另一个分区上安装了Debian,现在我计划安装backtrack和SUSE。Debian将一个单独的分区挂载为其主目录,而Ubuntu则在其文件系统中包含自己的主文件夹。
现在,我希望我的主分区可以被当前或将来可能安装的所有其他发行版共享。
我该如何做到这一点?
附注:我在所有发行版上都有相同的用户名和昵称。
6个回答

Ubuntu的图形安装程序不会自动为/home创建单独的分区。这是真的。虽然如此,但建议您这样做,并且如果选择手动分区,可以实现。即使没有这样做,您仍然可以修复它。
然而,有几件事需要考虑。首先,请确保所有发行版实际上都可以使用在home分区上使用的文件系统。通常不会有问题,但谨慎起见还是好一些。其次,更重要的是,除非您知道自己在做什么,否则不要在不同的发行版之间使用相同的home目录。不同的发行版可能具有不同版本的已安装软件,这意味着它们的设置可能不完全相同。通常情况下,这应该不是问题,因为应用程序应该正确处理不同的版本,但并非所有应用程序都能做到。但是,将home目录命名为与用户名不同的名称是完全可以接受的,所以这不是一个问题。
如果我理解正确,您应该为Ubuntu(交换和根)设置两个分区,并为Debian设置几个分区。然后,您要做的第一件事是在Ubuntu中挂载Debian的home目录,并通过将其添加到/etc/fstab来确保在启动时挂载。有很多关于如何做到这一点的文档,所以我不会详细介绍。

如果您将Debian的主目录挂载到/home下,它将隐藏Ubuntu的/home目录,因此请先在其他位置(例如/mnt)挂载它。现在您需要做出一些决策。如果愿意,您可以尝试为所有发行版使用相同的主目录,或者为每个发行版使用不同的主目录。例如,您可以在/home下为每个发行版创建一个单独的文件夹,如:

  • /home/ubuntu/用户名
  • /home/debian/用户名
  • /home/其他发行版/用户名

我认为这是最安全的解决方案。我假设您的主目录没有加密。如果加密了,那么情况会更复杂,尽管主要步骤是相似的。在进行此操作时,您应该退出主帐户,创建一个新用户,将其设置为管理员,并以该用户身份登录。

您需要配置所有发行版上的当前用户,以便使用新位置作为主目录。您还应该配置发行版,使其默认使用这些路径来创建新用户。

如果您已经将home分区挂载到/mnt上,那么您需要创建/home/ubuntu和/home/debian目录。然后将/home/username复制到/mnt/ubuntu/username,并将/mnt/username移动到/mnt/debian/username(适用于Debian用户)。
现在,您在相同的分区中拥有Ubuntu和Debian用户的家目录,但位于不同的家目录下。如果您已经配置了Debian和Ubuntu在启动时都将该分区挂载到/home,并更改了用户使用新路径作为家目录的设置,那么一切应该都没问题。当您打算安装新的发行版时,您首先需要创建/home/distroname/目录,并按照通常的方式进行安装,但是使用home分区并将其配置为默认位置/home/distroname以供新用户家目录使用。如果您这样做,请确保不要格式化它,否则您将丢失Debian和Ubuntu的数据 :)
如果您想重用单个家目录,请确保知道自己在做什么。您需要在各个发行版之间具有相同的用户ID。否则,权限将会混乱。
祝您好运,并备份数据 :)

好的,我决定按照你的建议去做。我在主分区创建了一个名为ubuntu的文件夹,然后将当前家目录中的所有文件复制到这个新的/homepartition/ubuntu/文件夹中。接下来,我编辑了/etc/fstab文件,将新的文件夹设置为默认的家目录,所以我在末尾写入了/dev/sda10 /home ext4 nodev,nosuid 0 2。但是现在系统找不到家目录了。 - Starx
请问你能告诉我如何按照你所说的步骤来做吗?如果你已经配置了Debian和Ubuntu在启动时将该分区挂载到/home,并且更改了用户使用新路径的家目录。 - Starx
如何确保所有发行版实际上都能使用在主目录分区上使用的文件系统? - isomorphismes

这是一个晚回答,但对于其他试图在不同版本之间共享信息的人可能有用。
如上所述,在/home/user/中使用不同版本的应用程序共享相同的配置文件存在问题。
解决部分问题的简单方法是在家目录中创建符号链接文件夹,例如/home/user/Documents。我的家目录看起来像这样:
drwxr-xr-x  3 mike mike 4096 May  2 11:48 Desktop/
drwxr-xr-x  2 mike mike 4096 May  1 21:18 Downloads/
lrwxrwxrwx  1 mike mike   34 Apr 27 12:36 Documents -> /mnt/home/mike/Documents/
lrwxrwxrwx  1 mike mike   33 Apr 27 12:40 Pictures -> /mnt/home/mike/Pictures/
lrwxrwxrwx  1 mike mike   32 Apr 27 12:38 Public -> /mnt/home/mike/Public/
lrwxrwxrwx  1 mike mike   31 Apr 27 12:39 Videos -> /mnt/home/mike/Videos/
lrwxrwxrwx  1 mike mike   34 Apr 27 12:40 workspace -> /mnt/home/mike/workspace/

如上所示,桌面下载文件夹位于本地主目录分区,而文档图片等则链接到共享分区。
以下是设置符号链接的方法(以文档文件夹为例):
$ cd ~
$ mkdir old-folders
$ mv Documents old-folders/
$ ln -s /mnt/home/mike/Documents/ Documents

上述操作将当前的Documents文件夹移动到old-folders并设置一个符号链接到共享的Documents文件夹。我已经使用这个方案很长时间了,目前还没有遇到任何问题。
如果您在垃圾桶方面遇到问题,请查看此帖子:如何在不同分区中使用gnome垃圾桶处理文件?

1是的,与其在整个生活中与许多文件(从1到几十个)苦苦斗争,还不如维护共享的公共文件(无需安装、配置或点文件)更容易。 - m3nda
使用符号链接而不是将文件夹挂载到“文档”路径等,有什么好处吗?(对于一个晚回答的晚评论) - Morten

由于从不同的发行版共享“/home”目录在技术上是可能的(请参见this答案),但这样做不是一个好主意
来自不同程序版本的应用程序设置可能具有不同的格式。如果有任何不兼容或失去同步,我们将完全无法找到原因。甚至在相同发行版的不同版本之间也不推荐这样做(请参见here)。
因此,建议仅从用户主目录的子目录中共享个人数据文件(例如,通过创建symlinks到您选择的目录)。

我遇到了一些问题,使用子目录时出现了问题,请查看我在@jo-erlend的回答中的评论。 - Starx
请提供一些使用子目录作为主文件夹的步骤。 - Starx

假设共享家庭分区的目标是为了平等访问个人文件/文档/数据(但不包括每个发行版特定的配置文件),我建议您设置一个额外的分区,专门用于存放这些共享文件(数据),并且只使用您的主目录来存放发行版特定的文件。
然后,您可以将数据分区中的文件夹(使用-mount命令)挂载到每个发行版的主目录中,这样您就可以像在主分区上一样访问这些数据。同时,您可以避免由于冲突的设置等问题而产生的麻烦。
这就是我所做的,几乎完美地运行。尽管在从Ubuntu 11.10升级到12.04时它似乎重置了我的fstab,所以请记得定期检查(例如,在升级后)设置是否仍然正确。

我采用了/ect/fstab的方法,以下是我所采取的步骤。
我创建了一个单独的100+Gb分区来存储所有共享数据,在其中创建了7个对大多数操作系统都通用的文件夹。
Documents, Downloads, Music, Pictures, Public, Templates, Videos

要找到包含共享数据文件夹的分区的UUID,请执行以下操作: ``` sudo blkid ```
要自动挂载共享数据分区,您需要编辑`/etc/fstab`,执行以下操作:(将`gedit`替换为`vi`或您喜欢的文本编辑器) ``` sudo gedit /etc/fstab ```
将分区信息添加到`/etc/fstab`中(对我来说是以下内容): ``` #/dev/sda4 UUID=2dc891df-86aa-4d2b-a7aa-bc1620ef8024 /media/DATA ext2 defaults,rw,errors=remount-ro 0 0
/media/DATA/mitchbw/Documents/ /home/mitchbw/Documents bind defaults,noatime,bind 0 0 /media/DATA/mitchbw/Downloads/ /home/mitchbw/Downloads bind defaults,noatime,bind 0 0 /media/DATA/mitchbw/Music/ /home/mitchbw/Music bind defaults,noatime,bind 0 0 /media/DATA/mitchbw/Pictures/ /home/mitchbw/Pictures bind defaults,noatime,bind 0 0 /media/DATA/mitchbw/Public/ /home/mitchbw/Public bind defaults,noatime,bind 0 0 /media/DATA/mitchbw/Templates/ /home/mitchbw/Templates bind defaults,noatime,bind 0 0 /media/DATA/mitchbw/Videos/ /home/mitchbw/Videos bind defaults,noatime,bind 0 0 ```
注意:请将bind作为文件系统类型并放在选项中。
或者,您可以在bind之后、0 0之前的挂载选项中修改noatime
noatime,rw,errors=remount-ro,bind

如果您将这些选项添加到//home和数据文件夹的挂载选项中,可以加快文件访问速度,并通过减少磁盘I/O来延长磁盘驱动器的使用寿命。
为了测试您修改后的fstab,请执行以下命令:
sudo mount -a

查看已挂载的文件系统。
    mount

更多关于noatime/etc/fstab选项的信息可以在这里找到:

https://wiki.archlinux.org/index.php/fstab

http://www.openquery.com.au/blog/hint-day-noatime-relatime-fstab


1为什么要设置noatime,rw,errors=remount-ro,binddefaults,noatime,bind有什么问题吗? - Khurshid Alam
@KhurshidAlam 这是因为我在使用SSD作为我的根目录 ('/')。而且我不需要知道最后一次打开文件的时间,所以为什么要通过不断记录这些操作来减慢我的系统? - mitchbw

我开始这个项目已经两天了,经过几次重新安装,感觉进展顺利。

下面是一些我的配置图片,虽然还有些杂乱,但我的笔记本同时运行着Kali Linux和Linux Mint Debian Edition,它们共享相同的交换空间和主目录。

接下来,我计划(希望能够)配置绿色的fat32分区(sda4)进行LUKS加密,以测试紧急自毁功能,这是我听说过的。

总之,这些是我采取的步骤,我称之为“两个发行版和一个杯子”(共享统一路径),最终目标是共享/boot、/home和交换分区等多个目录。

我打算将Kali Linux作为root用户,Linux Mint作为普通用户。

首先,我创建了一个干净的新分区(在意外删除整个系统后),如下所示,是通过我的blkidfdisk -l命令得到的。

不详细介绍,因为不同的发行版表现不同,比如Ubuntu、elementary和Zorin(我想)很敏感和友好,会弹出一条消息说“嘿,我们注意到你的MBR(主引导记录)已经有了一些操作,如果你愿意,我们可以让你的安装体验更好一点”,或者类似的话 - 我只是在这里转述。

总之,在分区后我希望我能考虑到fstab和后期分区的情况。

我不确定其他的情况,也不是专家,但我的经验是,在第5次启动时(第1次安装kali,第2次安装mint,第3次进入kali,第4次回到mint),我遇到了fsck错误,我不知道为什么要经历那么多次的启动和关闭才决定让我心脏病发作。

然而,互联网上许多专家分享的丰富知识和丰富经验帮助我迅速解决了问题,毫发无损。

感谢他们,作为一个非专家(相信我,我还在苦苦挣扎alsa),我只能尽力分享我所经历的,并尽力回答和帮助你。

对我来说,这是最困难的部分——知道要问什么——具体到足以让他人知道如何帮助。同时,下面还包括了一些由很多善良的灵魂无私提供的参考资料,如果没有它们,我可能还停留在糟糕的Windows 7上,不知道该怎么做。

祝好运,如果有需要我进一步解释的地方,请告诉我。73!

enter image description here

gparted+fstab


5很抱歉,没有段落会让这段文字难以阅读 =( - Diego-MX