X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver-build.functions;h=f3536d777f1633b2c67cc384fc7992bdb29bb0ad;hb=446624f2c7c017695a196b82317e793c9aeae43c;hp=1c96613d752e8ef86dcc694f34be716da7ecfd37;hpb=b7524644f70b0b0c4fba7f11b7e9ad3fb1c783da;p=util-vserver.git diff --git a/scripts/vserver-build.functions b/scripts/vserver-build.functions index 1c96613..f3536d7 100644 --- a/scripts/vserver-build.functions +++ b/scripts/vserver-build.functions @@ -44,6 +44,8 @@ function makeDevEntry (f) touch "$dst" chmod $4 "$dst" ;; + (l) ln -s "$4" "$dst" + ;; (*) echo "Unknown dev-entry mode '$3'" >&2 false ;; @@ -54,7 +56,8 @@ function populateDev { local spec - mkdir -p -m755 "$VDIR"/dev/pts + mkdir -p -m755 "$VDIR"/dev + mkdir -m755 "$VDIR"/dev/pts while read spec; do makeDevEntry "$VDIR"/dev $spec @@ -112,7 +115,7 @@ function _setCacheDir } } -function _setVserverDir +function _setVserverDirName { test -z "$VSERVERDIRNAME" || return 0 VSERVERDIRNAME="$VSERVER_NAME" @@ -183,6 +186,8 @@ ERROR: Can not determine distribution; please specify it manually with ERROR: Can not find configuration for the distribution '$DISTRIBUTION'; please read http://linux-vserver.org/HowToRegisterNewDistributions for information how to add support for your own distribution." + + export DISTRIBUTION } function base._addGeneratedFile @@ -200,6 +205,9 @@ exist already; please try to use '--force', or remove them manually." mkdir -p -m755 "$VDIR" $_SETATTR --~barrier "$VDIR" + $_SETATTR --barrier "$VDIR"/.. || colwarn $"\ +WARNING: could not set the barrier attribute on '$VDIR/..', + please set it manually." base._addGeneratedFile "$VDIR" mkdir -p -m755 "$SETUP_CONFDIR"/apps "$VDIR"/etc @@ -223,7 +231,7 @@ function base._initVariables { _setRootDir _setCacheDir - _setVserverDir + _setVserverDirName _setVdir findFile _DEV_FILE "$__CONFDIR/.distributions/$DISTRIBUTION/devs" "$__DISTRIBDIR/$DISTRIBUTION/devs" "$__DISTRIBDIR/defaults/devs" @@ -254,3 +262,23 @@ function base.setSuccess { __BASE_SUCCESS=1 } + +function startSleepingGuest +{ + local guest="$1" + local timeout="${2:-15}" + $_VSERVER "$guest" start --rescue --rescue-init bash -c " + exec > /dev/null + exec 2> /dev/null + trap 'kill -s 9 -- -1; exit 0' INT + sleep $timeout + kill -s 15 -- -1 + sleep 1 + kill -s 9 -- -1" +} + +function stopSleepingGuest +{ + local guest="$1" + $_VSERVER "$guest" stop --rescue-init +}