我想在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附加命名空間,我需要做些什麼?