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

Amo*_*ith 3 partitioning external-hdd budgie

我在外部硬盘驱动器上安装了 Ubuntu,我还想安装 SteamOS,我想知道在分区/安装时,他们是否可以共享根分区,以便他们在需要时有更多空间供他们使用。

如果不是可能的,可能有人请解释一下为什么?

谢谢!

Rod*_*ith 7

简单的答案

不。

解释

UNIX类型OS(包括Ubuntu,或任何其他基于Linux的OS)在很大程度上是由相对于根(即在固定位置的文件中定义/)目录,如/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等等。

虽然这在原则上应该可行,但在实践中需要做很多工作。许多程序包含硬编码的默认路径或依赖于配置文件中设置的默认路径,您需要修改所有这些以使其工作,这意味着您将无法获得“关闭” -shelf”分发工作;您必须自己创建发行版。您也许可以使用标准发行版作为基础,但您需要重新构建许多(可能是大部分或全部)包。任何未修改的内容最终都会使用“本地”/驻留发行版的文件,这可能会导致一些奇怪的问题。因此,这种方法更像是一种理论想法,而不是实际建议。