X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=scripts%2Fvserver.functions;h=b8ed2779f6573ed406a12cec845027c5006a0764;hb=228bd3bc0ad37cc331d519dc78b5283292287dd1;hp=d5eeda5f522da03b7c1f1ca4d0e069aec83fd0bb;hpb=e5d96f93d0de60ca5fe2f30c09aef449e39e3e89;p=util-vserver.git diff --git a/scripts/vserver.functions b/scripts/vserver.functions index d5eeda5..b8ed277 100644 --- a/scripts/vserver.functions +++ b/scripts/vserver.functions @@ -41,13 +41,14 @@ declare -a ENTER_SHELL=() declare -a OPTS_VCONTEXT_CREATE=() declare -a OPTS_VCONTEXT_MIGRATE=() declare -a OPTS_VCONTEXT_ENTER=() +OPT_VCONTEXT_CHROOT=--chroot declare -a OPTS_VATTRIBUTE=( --flag fakeinit ) declare -a OPTS_VSCHED=() declare -a OPTS_ENV=() declare -a OPTS_VTAG_CREATE=() declare -a OPTS_VTAG_ENTER=() declare -a OPTS_VMEMCTRL=() -declare -a OPTS_VSPACE=() +declare -a OPTS_VSPACE=( --default ) declare -a STOPCMD_PREPARE=() @@ -346,6 +347,13 @@ function _generateInitOptions INITCMD_PREPARE=( $_FAKE_RUNLEVEL 3 /var/run/utmp ) ;; + (xarch) + test -n "$RUNLEVEL_START" || RUNLEVEL_START=3 + INITCMD_START=( /etc/rc.multi ) + INITCMD_STOP=( /etc/rc.shutdown ) + INITCMD_PREPARE=( $_FAKE_RUNLEVEL "$RUNLEVEL_START" /var/run/utmp ) + ;; + (x) ;; (*) panic "Unknown init-style '$INITSTYLE'; aborting";; esac @@ -374,10 +382,12 @@ function _generateInitOptions function _generateFlagOptions { local vdir=$1 + local file CHCONTEXT_FLAG_OPTS=() - test ! -e "$vdir"/flags || \ + findFile file "$vdir"/cflags "$vdir"/flags "" + test -z "$file" || \ while read flag; do case x"$flag" in (x|x\#*) ;; @@ -391,11 +401,13 @@ function _generateFlagOptions --flag "$flag" ) ;; esac - done <"$vdir"/flags + done <"$file" isAvoidNamespace "$vdir" || { USE_VNAMESPACE=1 CHCONTEXT_FLAG_OPTS=( "${CHCONTEXT_FLAG_OPTS[@]}" --flag namespace ) + ! $_VSERVER_INFO - FEATURE PIVOT_ROOT || \ + OPT_VCONTEXT_CHROOT=--pivot-root } } @@ -931,6 +943,8 @@ function mountVserver local ns_opt=$2 local vdir=$1/vdir local mtab_src + local extra_opt= + local real_vdir test -e "$cfgdir"/fstab -o \ -e "$cfgdir"/fstab.local -o \ @@ -951,8 +965,11 @@ function mountVserver isNamespaceCleanup "$cfgdir" && \ _namespaceCleanup "$cfgdir" + real_vdir=$(getPhysicalDir "$vdir") isAvoidNamespace "$cfgdir" || \ - $_SECURE_MOUNT --rbind -n "$vdir" "/" + $_SECURE_MOUNT --rbind -n -o dev "$vdir" "$real_vdir" + ! $_VSERVER_INFO - FEATURE PIVOT_ROOT || \ + $_SECURE_MOUNT -n -o shared,rec "$real_vdir" "$real_vdir" } function _umountVserverInternal @@ -1037,7 +1054,7 @@ function initWait rc=$? if test "$rc" -ne 0 -a "$rc" -ne 1; then - $_VPS axf | $_EGREP -e "^[^ \t]+[ \t]+$S_CONTEXT[ \t]+" >&4 + $_VPS axf | $_EGREP -e "^[ \t]*[^ \t]+[ \t]+$S_CONTEXT[ \t]+" >&4 killContext "$S_CONTEXT" 9 fi @@ -1454,7 +1471,7 @@ function _handleCgroup if test -r "$dir"/name; then read name < "$dir"/name else - read name < "$vdir"/name + name="$VSERVER_NAME" fi if test "$action" = "attach"; then