util-vserver 0.30.214
[util-vserver.git] / distrib / debian / initpost
diff --git a/distrib/debian/initpost b/distrib/debian/initpost
new file mode 100644 (file)
index 0000000..a5337c0
--- /dev/null
@@ -0,0 +1,145 @@
+#!/bin/bash
+
+# Copyright (C) 2006 Benedikt Boehm <hollow@gentoo.org>
+#  
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; version 2 of the License.
+#  
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#  
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+## Called as: initpost <cfgdir> <path of util-vserver-vars>
+
+# setup environment
+cfgdir="$1"
+vdir="$cfgdir"/vdir
+. "$2"
+
+
+# vserver name
+NAME="$cfgdir"
+
+
+# go to vdir for chroot-sh
+pushd "$vdir" &>/dev/null
+
+
+# helper for sed in chroot
+chrootsed() {
+       local file="$1"
+       shift
+       
+       sedtmp=$($_MKTEMP chrootsed.XXXXXX)
+       
+       $_CHROOT_SH cat "$file" | $_SED "$@" > $sedtmp
+       $_CHROOT_SH truncate "$file"  < $sedtmp
+       
+       $_RM -f $sedtmp
+}
+
+
+# create a locale.gen if needed.
+if test -n "$LANG" && test "$LANG" != "C"; then
+       echo $LANG $(locale charmap) | $_CHROOT_SH append /etc/locale.gen
+fi
+
+
+# make apt and friends work
+$_CHROOT_SH truncate /etc/apt/sources.list <<EOF
+deb $MIRROR/ $DISTRIBUTION main
+deb-src $MIRROR/ $DISTRIBUTION main
+
+deb http://security.debian.org $DISTRIBUTION/updates main
+EOF
+
+
+# setting hostname
+if test -r "$cfgdir"/uts/nodename; then
+       $_CHROOT_SH truncate /etc/hostname < "$cfgdir"/uts/nodename
+fi
+
+
+# setting default /etc/hosts
+$_CHROOT_SH truncate /etc/hosts <<EOF
+# /etc/hosts
+
+127.0.0.1      localhost
+
+# The following lines are desirable for IPv6 capable hosts
+# (added automatically by netbase upgrade)
+
+::1    ip6-localhost ip6-loopback
+fe00::0 ip6-localnet
+ff00::0 ip6-mcastprefix
+ff02::1 ip6-allnodes
+ff02::2 ip6-allrouters
+ff02::3 ip6-allhosts
+EOF
+
+
+# copy proxy server statement from host if any
+if test -f /etc/apt/apt.conf; then
+       $_CHROOT_SH truncate /etc/apt/apt.conf < /etc/apt/apt.conf
+fi
+
+
+# fix gettys in inittab
+if $_CHROOT_SH testfile /etc/inittab; then
+       chrootsed /etc/inittab \
+               -e 's/\(^[^#].*getty.*$\)/#\1/'
+fi
+
+
+# fix /proc/cmdline in sendsigs
+if $_CHROOT_SH testfile /etc/init.d/sendsigs; then
+       chrootsed /etc/init.d/sendsigs \
+               -e 's/^\(\s\+splash_back\)$/#\1/'
+fi
+
+echo
+echo ">>> Executing post install script ... "
+echo
+
+# start vserver before we can exec anything inside it
+$_VSERVER "$NAME" stop &>/dev/null || :
+$_VSERVER "$NAME" start --rescue --rescue-init bash -c '
+    exec  > /dev/null
+    exec 2> /dev/null
+
+    set -x
+    f=/tmp/startwait
+    trap "rm -f $f" EXIT
+    mkfifo $f
+    ( sleep 15; kill -s 9 -- -1 ) &
+    cat "$f"
+    kill -s 9 -- -1
+    wait
+'
+
+# run the configure commands from within the server
+export LANG=C LC_ALL=C
+
+$_CHROOT_SH testfile /usr/sbin/locale-gen && \
+    $_VSERVER "$NAME" exec /usr/sbin/locale-gen
+
+for i in bootlogd checkfs checkroot halt hwclock.sh ifupdown klogd \
+        libdevmapper1.02 makedev module-init-tools mountall.sh \
+        mountdevsubfs.sh mountnfs.sh mountkernfs.sh mountvirtfs \
+        networking reboot setserial single stop-bootlogd \
+        stop-bootlogd-single umountfs umountnfs.sh umountroot \
+        urandom; do
+    $_VSERVER "$NAME" exec update-rc.d -f "$i" remove
+done
+
+# stop the vserver
+$_VSERVER "$NAME" exec bash -c ': >/tmp/startwait' &>/dev/null || :
+$_VSERVER "$NAME" stop &>/dev/null || :
+
+popd &>/dev/null