这是测试用例:
#!/bin/bash
more="$@"
saved="$EUID"
if [ "$EUID" = "0" ]; then
echo "don't run as root"
exit
fi
m="/tmp/mount-point"
exec sudo unshare -m /bin/bash <<UNSHARED
mkdir -p "$m"
mount -t tmpfs tmpfs "$m"
cd "$m"
mkdir top merge work
mount -t overlay overlay -o lowerdir=/,upperdir=top,workdir=work merge
#bash < /dev/tty
chroot merge sh -c 'sudo -u "#$saved" sh -c "id; ls /proc -lR"'
UNSHARED
这是它打印的内容:
uid=1001(username) gid=1001(username) groups=1001(username),7(lp),10(wheel)
/proc:
total 0
/proc
正如您可能猜到的那样,My已安装,并且在大FS。
答案1
维护者 Miklos Szeredi 的回答:
这就是overlayfs 的工作原理。在/merge下挂载一个新的proc实例
所以我猜测overlayfs是从指定目录开始联合文件系统,而不是用户空间看到的一般挂载合成图像。此外:
有一些用户空间变体可以使这成为可能;例如unionfs-fuse。
谢谢,
米克洛斯