This new command is a helper to check if the needed functionalities are

compiled the kernel. It relies on /proc/config.gz, if it is not compiled,
the command will simply fail.
If a feature is missing but not mandatory, "disabled" keyword will appear
in yellow, if it is mandatory, it will appear in "red", otherwise the key
word "enabled" will appear in green.
This commit is contained in:
dlezcano 2008-10-20 11:45:19 +00:00
parent 80f412985e
commit 22e761af89
2 changed files with 56 additions and 1 deletions

View File

@ -43,7 +43,8 @@ liblxc_la_SOURCES = \
liblxc_la_LDFLAGS = -release @PACKAGE_VERSION@
bin_SCRIPTS = \
lxc-ps
lxc-ps \
lxc-checkconfig
bin_PROGRAMS = \
lxc-create \

54
src/lxc/lxc-checkconfig.in Executable file
View File

@ -0,0 +1,54 @@
#!/bin/bash
CONFIGZ=/proc/config.gz
SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_WARNING="echo -en \\033[1;33m"
SETCOLOR_NORMAL="echo -en \\033[0;39m"
is_enabled() {
mandatory=$2
zgrep -q "$1=y" $CONFIGZ
RES=$?
if [ $RES = 0 ]; then
$SETCOLOR_SUCCESS && echo -e "enabled" && $SETCOLOR_NORMAL
else
if [ ! -z "$mandatory" -a "$mandatory" = yes ]; then
$SETCOLOR_FAILURE && echo -e "disabled" && $SETCOLOR_NORMAL
else
$SETCOLOR_WARNING && echo -e "disabled" && $SETCOLOR_NORMAL
fi
fi
}
if [ ! -f $CONFIGZ ]; then
echo
echo "The kernel configuration can not be retrieved because"
echo "\"$CONFIGZ\" was not found."
echo
echo "Is your kernel compiled with IKCONFIG_PROC ?"
echo
exit 1
fi
echo "--- Namespaces ---"
echo -n "Namespaces: " && is_enabled CONFIG_NAMESPACES yes
echo -n "Utsname namespace: " && is_enabled CONFIG_UTS_NS
echo -n "Ipc namespace: " && is_enabled CONFIG_IPC_NS yes
echo -n "Pid namespace: " && is_enabled CONFIG_PID_NS yes
echo -n "User namespace: " && is_enabled CONFIG_USER_NS
echo -n "Network namespace: " && is_enabled CONFIG_NET_NS
echo
echo "--- Control groups ---"
echo -n "Cgroup: " && is_enabled CONFIG_CGROUPS
echo -n "Cgroup namespace: " && is_enabled CONFIG_CGROUP_NS
echo -n "Cgroup device: " && is_enabled CONFIG_CGROUP_DEVICE
echo -n "Cgroup sched: " && is_enabled CONFIG_CGROUP_SCHED
echo -n "Cgroup cpu account: " && is_enabled CONFIG_CGROUP_CPUACCT
echo -n "Cgroup memory controller: " && is_enabled CONFIG_CGROUP_MEM_RES_CTLR
echo -n "Cgroup cpuset: " && is_enabled CONFIG_CPUSETS
echo
echo "--- Misc ---"
echo -n "Veth pair device: " && is_enabled CONFIG_VETH
echo -n "Macvlan: " && is_enabled CONFIG_MACVLAN