两个不同的操作系统可以共享一个根分区吗?

两个不同的操作系统可以共享一个根分区吗?

我在外部硬盘上安装了 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等等。

虽然这应该理论上可行,但在实践中需要做大量工作。许多程序要么包含硬编码的默认路径,要么依赖于配置文件中设置的默认路径,您需要修改所有这些才能使其工作,这意味着您无法让“现成的”发行版工作;您必须自己创建发行版。您可能能够使用标准发行版作为基础,但您需要重建许多(可能是大多数或所有)软件包。任何未修改的内容最终都会使用“本机”/驻留发行版的文件,这可能会导致一些奇怪的问题。因此,这种方法更多的是一种理论想法,而不是实际建议。

相关内容