如何在 linux 上覆盖根文件系统?
How can I overlayfs the root filesystem on linux?
我正在使用 overlayFS
创建一种简单的实验性沙盒。
我想我明白它是如何工作的:
- 较低层应始终挂载R/O
- 上层是所有变化发生的地方
- work 层是出于交易原因
- target 是所有合并的地方 lower + upper go
例如,我在 /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
。
根据我读过的内容,我认为系统启动后无法以编程方式执行此操作。
我正在使用 overlayFS
创建一种简单的实验性沙盒。
我想我明白它是如何工作的:
- 较低层应始终挂载R/O
- 上层是所有变化发生的地方
- work 层是出于交易原因
- target 是所有合并的地方 lower + upper go
例如,我在 /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
。
根据我读过的内容,我认为系统启动后无法以编程方式执行此操作。