<vserver> is the name of a vserver.
Possible commands are:
- start [--rescue] [<rescue-cmd> <args>*]
+ start [--rescue [--rescue-init]] [<rescue-cmd> <args>*]
... starts the specified vserver
stop ... stops the specified vserver
restart ... restarts the specified vserver; this is the subsequent
vserver=$1
cmd=$2
-test "$cmd" != build || { shift 2; exec "$_VSERVER_BUILD" -n "$vserver" "$@"; }
+test "$cmd" != build || { shift 2; exec $_VNAMESPACE --new -- \
+ "$_VSERVER_BUILD" $OPTION_DEBUG -n "$vserver" "$@"; }
allow_legacy=
VSERVER_NAME=$(basename "$VSERVER_DIR")
fi
+# Create a new namespace when starting the guest
test "$2" != start -o -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \
exec $_VNAMESPACE --new -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}"
+# Enter the namespace early so we can test for files inside the guest
+test "$2" != enter -a "$2" != stop || \
+ test -n "$OPTION_NONAMESPACE" || isAvoidNamespace "$VSERVER_DIR" || \
+ ! isVserverRunning "$VSERVER_DIR" || \
+ exec $_VNAMESPACE --enter "$VSERVER_DIR" -- $_VSERVER ----nonamespace "${OPTIONS_ORIG[@]}"
+
+set_init_cwd
+cd /
+
. $__PKGLIBDIR/vserver.functions
case "$2" in
(start|stop|delete)
;;
(exec)
shift 2
- suexec root "$@"
+ suexec 0 "$@"
;;
(chkconfig)
shift 2
- suexec root chkconfig "$@"
+ suexec 0 chkconfig "$@"
;;
(enter)
+ useVlogin && \
+ OPTS_VCONTEXT_ENTER=( "${OPTS_VCONTEXT_ENTER[@]}" --vlogin )
getEnterShell "$VSERVER_DIR"
- suexec root "${ENTER_SHELL[@]}"
+ suexec 0 "${ENTER_SHELL[@]}"
;;
(running)
isVserverRunning "$VSERVER_DIR"
;;
(apt-get|apt-config|apt-cache)
- export _APT_GET=$2
+ export APT_GET=$2
shift 2
- exec $_VAPT_GET -- "$@"
+ exec $_VAPT_GET "$VSERVER_DIR" -- "$@"
;;
+
(rpm)
- exec $_VRPM -- "$@"
+ shift 2
+ exec $_VRPM "$VSERVER_DIR" -- "$@"
;;
(status)