X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=scripts%2Fvserver;fp=scripts%2Fvserver;h=ebd105b52f8c30c4c3792b61b0c22e14e45102d0;hb=ec4370f7ebd7fb0ce7f002f5bf2c74f03acd3ec1;hp=59553fafbcd83579f3e11b31030869654bd21ccd;hpb=9234e6a7cb48373edec38284ba54a819037b79b2;p=util-vserver.git diff --git a/scripts/vserver b/scripts/vserver index 59553fa..ebd105b 100755 --- a/scripts/vserver +++ b/scripts/vserver @@ -1,5 +1,5 @@ #! /bin/bash -# $Id: vserver,v 1.30 2005/04/28 18:03:42 ensc Exp $ +# $Id: vserver 2521 2007-03-21 04:46:18Z dhozac $ # Copyright (C) 2003,2004,2005 Enrico Scholz # @@ -37,7 +37,7 @@ $"Usage: $(basename $0) [-s|--sync] [-v|--verbose] [--silent] is the name of a vserver. Possible commands are: - start [--rescue] [--rescue-cmd ] + start [--rescue [--rescue-init]] [ *] ... starts the specified vserver stop ... stops the specified vserver restart ... restarts the specified vserver; this is the subsequent @@ -57,9 +57,10 @@ Possible commands are: build * ... builds a new vserver from scratch + delete ... remove a vserver - unify [-R] - ... (de)unify vserver + unify [-R] * + ... (de)unify the vserver with its reference vserver(s). pkg install ... installs package(s) in the vserver @@ -76,8 +77,8 @@ Possible commands are: while 'internalize' means that data and programs from the vserver will be used. - unify * - ... unify the vserver with its reference vserver(s). + hashify + ... hashify the guest. Please report bugs to $PACKAGE_BUGREPORT" @@ -152,7 +153,8 @@ SELF=( "$0" "${OPTION_ALL[@]}" ) 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= @@ -188,18 +190,24 @@ Possible solutions: exit 5 } >&2 -if test -e "$VSERVER_DIR"/name; then - read VSERVER_NAME <"$VSERVER_DIR"/name -else - VSERVER_NAME=$(basename "$VSERVER_DIR") -fi +_setVserverName +# 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) + (start|stop|delete) shift 2 . $__PKGLIBDIR/vserver.$cmd ;; @@ -208,19 +216,21 @@ case "$2" in $cmd "$@" ;; (condrestart) - test ! isVserverRunning "$VSERVER_DIR" || restart + ! isVserverRunning "$VSERVER_DIR" || restart ;; (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" @@ -248,12 +258,14 @@ case "$2" in ;; (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) @@ -271,7 +283,7 @@ case "$2" in fi ;; (*) - echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status}" >&2 + echo $"Usage: $0 {start|stop|suexec|restart|condrestart|exec|enter|chkconfig|running|status|delete}" >&2 exit 2 ;; esac