我们的情况是:
- 首先,我们有一个内核线程(比如 KS)在内核开始运行时开始运行;
- 然后当系统准备好时,我们创建另一个命名空间(比如 NS1),它与 LXC 具有不同的 mntns。
我们的要求是 KS 需要在只有 NS1 才能看到的路径中写一些东西。所以我在想我可以将 KS 移动到 NS1 命名空间(至少更改挂载命名空间)吗?如果是,如何?我检查了setns()
系统调用及其内核源代码,但仍然不知道该怎么做(在用户空间或更改 KS 源代码),甚至不确定这是否是解决问题的正确方法。
我的另一个问题是:我的理解是,如果内核任务(例如内核线程)在进程上下文中,它会感知“命名空间”,但我的朋友认为“命名空间”是一个用户空间概念,所有内核工作人员只知道关于根命名空间。哪一个是正确的?