Linux kernel 装载命名空间:将文件路径规范化为init/root装载命名空间

Linux kernel 装载命名空间:将文件路径规范化为init/root装载命名空间,linux-kernel,Linux Kernel,我在Linux内核中查找了关于挂载名称空间的各种信息源,我不得不说,我找不到关于它如何在引擎盖下工作的很多信息(结构的布局以及它们是如何相互关联的) 我想做的是在进程X的装载命名空间中获取给定的路径,并在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

我在Linux内核中查找了关于挂载名称空间的各种信息源,我不得不说,我找不到关于它如何在引擎盖下工作的很多信息(结构的布局以及它们是如何相互关联的)

我想做的是在进程X的装载命名空间中获取给定的路径,并在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)

一些相关问题:

如果我理解正确,您并不是在寻找装载命名空间,而是在装载系统调用或cli中寻找一个名为bind mount的选项

对于root/init,设备安装在blah/whatever/fileX中。。。您可以在/myfolder/blah中绑定挂载相同的blah/任何内容。。。因此,使用两条路径可以看到相同的fileX和相同的dir

现在,除非您寻找隔离,即不希望任何其他进程寻找这些装载点,否则您可以使用装载命名空间。最简单的方法是使用“取消共享”启动processX