我尝试了 Ubuntu 12.04,根据我的理解,我做了以下分区:
- 2GB 交换(我有 2GB RAM)
- 1GB
/boot
,因为我将安装不同的内核版本(我正在开始内核开发) - 35GB
/var
- 40GB
/usr/local
- 407GB
/home
- 15GB
/
(根)
现在我想将 OpenSUSE 12.2 与 Ubuntu 12.04 一起安装。我可以在两个操作系统之间共享/var
和吗?/usr/local
我知道它们是两个不同的发行版,具有不同的软件包,但是有什么方法可以共享磁盘空间吗?这样两个操作系统都可以/usr/local
在同一个分区中拥有自己的操作系统或类似的东西吗?
答案1
你可以分享/usr/local
。有时,两个发行版会有不同版本的可用库,因此您可能需要在一侧或另一侧或本身安装一些库/usr/local
。安装奇怪的额外库的负担可能会因为不必在/usr/local
.
如果您只想在/usr/local
其中一个系统上安装某些程序,则可以做出不同的安排:不共享/usr/local
,而是共享一个存放/usr/local
存储库,并在两个系统中建立符号链接。
您不需要放置/usr/local
单独的分区来共享它。您可以将其存储在一个系统的系统分区上,将其安装在另一个系统上您想要的任何位置,并创建符号链接。
你不能分享/var
。目录的排列方式略有不同,并且每个发行版都有自己的用户 ID。您也许可以共享 的部分内容/var
,例如邮件池。
35GB 已经/var
很大了。对于基本系统,您不需要它。如果您要在那里放置大量数据(例如,因为那是您的 Web 服务器根目录所在),请根据您的数据调整文件系统的大小。/var
从根分区拆分没有意义,因此将它们合并起来。您没有/usr
在列表中提及:这也不需要从根分区中分割出来。只需为每个操作系统创建一个系统分区,再加上一个共享的/home
.系统分区确实需要 15GB 以上,除非您对要安装的程序非常保守。创建一个50GB的系统分区就可以了。
/boot
除非您有其他要求(例如加密系统分区),否则不需要单独的分区。
答案2
除了符号链接之外,您还可以使用bind mounts
:
http://docs.1h.com/Bind_mounts
基本上,您可以拥有一个分区和一个文件系统(类似于 Anthon 的设置)。在这种情况下,假设您已经安装了文件系统,/mnt/local
只需mount --bind /mnt/local/ubuntu /usr/local
在 ubuntu 安装和mount --bind /mnt/local/suse /usr/local
suse 安装上执行即可。
这样做的好处之一是您可以在现有目录上执行此操作,/usr/local
而无需破坏/移动实际/usr/local
目录。
这是一个例子:
# mkdir foo
# touch foo/nowyouseeme
# mkdir bar
# touch bar/nowyoudont
# ls foo
nowyouseeme
# mount --bind ./bar ./foo
# ls foo
nowyoudont
# umount foo
# ls foo
nowyouseeme
答案3
/usr/local
(即本地编译/安装的软件)应该可以正常工作,只要所使用的系统库兼容。这意味着您可能会通过大致同期的“桌面使用”发行版来摆脱这种情况。如果你尝试混合搭配 Fedora 和 RHEL/CentOS 的话全部构建在旧库(本例中为 RHEL/CentOS)的发行版上,因为基础库(glibc
大部分)具有相当的向后兼容性。你将要遇到 C++ 问题(C++ 运行时在版本之间往往会发生很大变化),一些图形库确实会随意更改界面。任何与桌面环境相关的东西(无论是 KDE 还是 Gnome 或者其他什么)都可能是不可能的。
答案4
如何在一台计算机上设置多个安装取决于您使用这些安装的风格。另一个要记住的是,除非您要使用真实分区执行一些漂亮的虚拟机工作,否则这两个安装将无法同时工作。
根据我的经验,该/home
分区应该是可共享的,没有太大问题。任何专门为应用程序(dovecot
、fetchmail
)创建的用户,但任何一个系统通常都没有/home
像“普通用户”那样的真实目录。我确实在不同的 Ubuntu 版本之间共享登录名,但这有时会导致回到旧安装时出现问题,因为主目录中的配置文件会自动转换。为了解决此类问题,我在 下使用不同的主目录进行相同的登录/home
,但使用相同的用户 ID 和组 ID 来共享数据。您始终可以在特定子目录(例如包含您的音乐的子目录)之间建立链接,这样就不存在不兼容/不可逆升级的风险。
自从在 80 年代中期使用 PDP 11/70 以来,我就没有单独的分区,所以我不知道为什么你的朋友推荐这样做。此外,如果您从源代码安装,一些程序将默认安装到/usr/local
,例如pip
python 模块的安装也会执行相同的操作。为了防止出现问题,我会/mnt/local
在每台机器上挂载指定的分区/usr/local
,在该分区中创建目录ubuntu
和suse
软链接(ln -s /usr/local /mnt/local/ubuntu
)。机器。这样您就可以共享该分区上的空间,而不会遇到意外覆盖的风险。您稍后可以随时在您明确想要共享的内容之间建立链接。
我可以建议的另一件事是为每次安装所安装的内容保留某种日志(我在更改日志模式下使用 emacs,并为每个计算机发行版本组合创建一个文件),这样如果您升级并且您可以重做安装不必记住您安装了哪些额外的东西。我现在有一个setupnewsystem
脚本可以为我完成所有额外的事情,包括/etc
安装后置于修订控制之下mercurial