我在外部硬盘上安装了 Ubuntu,并且还想安装 SteamOS,我想知道在分区/安装时,它们是否可以共享根分区,以便在需要时为它们提供更多空间。
如果它不是可能吗,有人可以解释一下为什么吗?
谢谢你!
答案1
简单答案
不。
解释
Unix 类型的操作系统(包括 Ubuntu 或任何其他基于 Linux 的操作系统)主要由相对于根 ( /
) 目录位于固定位置的文件定义,例如/etc/fstab
(描述分区)以及/bin
和中的关键二进制文件/sbin
。每个发行版在这些位置都有自己独特的文件集。(对于某些文件,例如/etc/fstab
,它们是为特定安装而定制的;但这只意味着共享文件的两个操作系统需要相同的设置,这进一步意味着它们是相同的,因此不是真正的两个操作系统。)这些关键文件大多位于根 ( /
) 之外的目录中,但它们所在的目录可能无法从单独的文件系统(例如/etc
、/bin
和/sbin
)挂载,因此它们位于目录中这一事实并不重要。从非常真实的意义上讲,根 ( /
) 文件系统是操作系统;它不能共享。(你可以挂载一个发行版的根目录别处在另一个发行版中,但这并不是我认为您所指的共享。)
解决上述问题的技术方法
您的问题询问的是共享的“根分割。“(重点补充。)我的回答与目录(或者,暗示,文件系统)。这些不必完全等同。最值得注意的是,如果您使用逻辑卷管理器 (LVM),多个文件系统可以共享一个分区;它们只是位于不同的逻辑卷 (LV) 中。因此,您可以在单个 LVM 物理卷 (PV;即分区) 中安装多个 Linux 发行版。不过,我不认为这是你的意思;我认为你问的是共享根 ( /
)文件系统/目录尽管你用了这个词分割。
编辑:一种更奇怪的工作方式
/
我想到另一种让两个发行版共享根 ( ) 分区的方法:Linux 内核运行一个名为 的程序init
来处理启动任务。可以通过传递init=
内核选项来告诉内核使用另一个程序,例如init=/foo/bar
让它运行/foo/bar
。原则上,您可以使用此选项将一个发行版的内核传递给一个非标准init
程序,该程序反过来会在非标准位置查找支持程序。这种方法需要创建一个全新的发行版,或者至少修改一些关键组件 —— 可能要将其所需的所有内容安装在某个目录中,例如/myweirddistrib
、/myweirddistrib/etc
、/myweirddistrib/sbin
等等。
虽然这应该理论上可行,但在实践中需要做大量工作。许多程序要么包含硬编码的默认路径,要么依赖于配置文件中设置的默认路径,您需要修改所有这些才能使其工作,这意味着您无法让“现成的”发行版工作;您必须自己创建发行版。您可能能够使用标准发行版作为基础,但您需要重建许多(可能是大多数或所有)软件包。任何未修改的内容最终都会使用“本机”/
驻留发行版的文件,这可能会导致一些奇怪的问题。因此,这种方法更多的是一种理论想法,而不是实际建议。