装载命名空间:规范化到init / root装入命名空间的文件路径

时间:2015-02-04 13:25:14

标签: linux-kernel

我在Linux内核中查找了有关mount命名空间的各种信息来源,我不得不说我无法找到有关它如何工作的更多信息(结构的布局以及它们如何相互关联)

我想要做的是在进程X的mount命名空间中获取给定路径,并在init / root进程命名空间中获取相同的文件路径。

示例:

block device A has a file as blah/whatever/fileX

In the init/root process mount namespace, this bdev A is mounted on folder /root making the path /root/blah/whatever/fileX

In the process X mount namespace, this bdev A is mounted on folder /myfolder making the path /myfolder/blah/whatever/fileX

当使用路径名进入内核的特定系统调用来自进程X的世界时,我想取路径名/ myfolder / blah / whatever / fileX并将其转换为原样在init / root的世界中创建路径名/ root / blah / whatever / fileX(如果文件无法通过init / root的任何挂载点访问,则为NULL)

一些相关问题: Linux - understanding the mount namespace & clone CLONE_NEWNS flag

1 个答案:

答案 0 :(得分:0)

如果我理解正确,你并不是在寻找mount命名空间,而只是在mount系统调用或cli中调用bind mount的选项。

对于root / init,设备安装在blah / whatever / fileX中...你可以在/ myfolder / blah中绑定挂载相同的blah / whatever ...因此,使用两个路径可以看到相同的fileX和相同的dirs。 。

现在除非您查找隔离,即您不希望任何其他进程查找这些挂载点,否则您可以使用mount命名空间。最简单的做法是使用“unshare”

启动processX