如何在基于内核2.6.38和initd的系统中启用Linux命名空间?
问题描述:
我想在Linux内核2.6.38和init.d上运行LXC 2.0,无论是内核版本还是initd都是必需的。如何在基于内核2.6.38和initd的系统中启用Linux命名空间?
我已经用命名空间支持重新编译了内核,如下所示。
# Kernel parameters
CONFIG_NAMESPACES=y
CONFIG_CGROUP_NS=y
CONFIG_UTS_NS=y
CONFIG_IPC_NS=y
CONFIG_USER_NS=y
CONFIG_PID_NS=y
CONFIG_NET_NS=y
[[email protected] ~]# CONFIG=$(pwd)/.config lxc-checkconfig
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
newuidmap is not installed
newgidmap is not installed
Network namespace: enabled
Multiple /dev/pts instances: enabled
--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: missing
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: enabled
Cgroup cpuset: enabled
一切都运行成功,直到我在lxc-start -n ts1 --logfile=ts1.log
上遇到以下问题。
lxc_start - start.c:preserve_ns:138 - No such file or directory - Kernel does not support attaching to namespaces.
LXC/start.c:138说,我的父进程没有/proc/<PID>/ns
文件夹,当我检查它甚至在系统包括INITD所有过程是真实的。
我假定initd没有考虑名称空间作为初始过程。
为了让initd附加命名空间,我需要做些什么?
答
编辑:误读的问题,纠正:
似乎有 - https://cateee.net/lkddb/web-lkddb/PID_NS.html是不够的,有可能是需要的另一种选择。 (CONFIG_EXPERIMENTAL?)
我记得看到HOWTO Debian的挤压(6,2.6内核线)与LXC容器的地方,所以它应该是可行的,也许尝试,并从那里攫取的Kconfig和比较。
我也发现这个补丁集,尝试,也许比较:同样 http://lxc.sourceforge.net/patches/linux/2.6.38/2.6.38.2-lxc1/patches/
,考虑老LXC(V1),我不希望从年〜2009年核心的兼容性会很高(如果有的话)优先 - 所以很有可能会有更多的警告和陷阱与lxd与这种古老的内核。