mount(2) — Linux manual page
man手册:
SYNOPSIS top
#include <sys/mount.h>
int mount(const char *source, const char *target,
const char *filesystemtype, unsigned long mountflags,
const void *data);
解决PivotRoot系统调用失败
当我们fork新的进程,子进程会使用父进程的文件系统。
但如果我们想要把子进程的 / 文件系统修改成 /opt/busybox 怎么办呢?
这时候就要使用 pivot_root 了
int pivot_root(const char *new_root, const char *put_old);
它的作用是将进程的 / 更改为 new_root,原 / 存放到 put_old 文件夹下。
遇到的问题
我想使用 PivotRoot 来修改容器进程的根文件系统路径。
但每次进行pivot_root系统调用,总会出 Invalid arguments 错误
出错原因如下:
Not withstanding the fact that the default propagation type for new
mount points is in many cases MS_PRIVATE, MS_SHARED is typically more
useful. For this reason, systemd(1) automatically remounts all mount
points as MS_SHARED on system startup. Thus, on most modern systems,
the default propagation type