X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Fdistrib%2Fredhat%2Finitpost;h=d4c6a38d8e69d36a1a21d6fc7238defd2b52d1dc;hb=faa778968d1a7dfeaebc9fe4b847e691dc62fd15;hp=963cdb5e4117b8e9231d050cf7b94fc8ce8d339f;hpb=2439c1ce4f7235d9d6d67d1f88fa73d9ff8afe91;p=util-vserver.git diff --git a/util-vserver/distrib/redhat/initpost b/util-vserver/distrib/redhat/initpost index 963cdb5..d4c6a38 100755 --- a/util-vserver/distrib/redhat/initpost +++ b/util-vserver/distrib/redhat/initpost @@ -15,9 +15,48 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +## HACK: this script is full of races... + vdir=$1/vdir . "$2" +function relink +{ + test ! -e "$2" -o -L "$2" || mv -f "$2"{,.orig} + ln -sf "$1" "$2" +} + +## Usage: subst +function subst +{ + tmp=$(mktemp /tmp/initpost-subst.XXXXXX) + + case "$1" in + (/*|./*) cat "$1";; + (*) $_CHROOT_SH cat "$1";; + esac | sed -e "$2" >$tmp + cmp -s $tmp "$1" || $_CHROOT_SH truncate "$1" <$tmp + + rm -f $tmp +} + +vserver=$1 + +## Do some magic to set the vserver into a defined state +$_VSERVER "$vserver" stop &>/dev/null || : +$_VSERVER "$vserver" start --rescue bash -c ' + exec >/dev/null + exec 2>/dev/null + + set -x + f=/tmp/startwait + trap "rm -f $f" EXIT + mkfifo $f + ( sleep 10; kill -s 9 -- -1 ) & + cat "$f" >/dev/null + kill -s 9 -- -1 + wait +' pushd "$vdir"/etc/init.d &>/dev/null || pushd "$vdir"/etc/rc.d/init.d &>/dev/null || exit 1 @@ -33,7 +72,37 @@ pushd "$vdir"/etc/init.d &>/dev/null || esac done - mv -f halt{,.orig} - ln -s /bin/true halt +popd >/dev/null +pushd "$vdir"/sbin &>/dev/null + relink /bin/true new-kernel-pkg popd >/dev/null + +pushd "$vdir"/usr/bin &>/dev/null + relink /bin/true rhgb-client +popd >/dev/null + +pushd "$vdir" &>/dev/null + echo 'NETWORKING=yes' | $_CHROOT_SH append /etc/sysconfig/network +popd >/dev/null + +pushd "$vdir" &>/dev/null + cat </dev/null + +$_VSERVER "$vserver" exec bash -c ': >/tmp/startwait' &>/dev/null || : +$_VSERVER "$vserver" stop &>/dev/null || :