为什么使用root作为lowerdir安装overlayfs会在mergedir中产生一个空的/proc?

为什么使用root作为lowerdir安装overlayfs会在mergedir中产生一个空的/proc?

这是测试用例:

#!/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。

谢谢,
米克洛斯

相关内容