如何在 linux 上覆盖根文件系统?

How can I overlayfs the root filesystem on linux?

我正在使用 overlayFS 创建一种简单的实验性沙盒。 我想我明白它是如何工作的:

例如,我在 /disk2 上安装了一个物理磁盘。然后我想覆盖以保留内容,所以我可以这样做:

mount("overlay", "/disk2", "overlay", MS_MGC_VAL, "lowerdir=/disk2,upperdir=./upper,workdir=./work");

这工作得很好:当我的新进程试图修改 /disk2 下的内容时,它实际上只会在 upper 下修改:这确实有效故意的。例如,我还可以看到 0, 0 文件显示在 upper 中删除了某些内容,但在 中没有删除降低.

不幸的是,我无法以某种方式覆盖根 /:如果我执行以下代码:

mount("overlay", "/", "overlay", MS_MGC_VAL, "lowerdir=/disk2,upperdir=./upper,workdir=./work")

我仍然可以看到整个 real / 并且当我写入文件时,它们被写入 real (即 lower) 位置,而不是 upper 一个。

我做错了什么?

我在内核上4.4.0-53

根据我读过的内容,我认为系统启动后无法以编程方式执行此操作。