X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=vserver-reference.init;h=2897600813367c08c67d2460633857819d151d05;hb=1b52a554bc125105995bf2a53503c3d9337ad22f;hp=c8170e4a917095219a487ffc32c033323c6a872f;hpb=1accc5f143b60a13472f5cb540e1d33c67e000b8;p=vserver-reference.git diff --git a/vserver-reference.init b/vserver-reference.init index c8170e4..2897600 100755 --- a/vserver-reference.init +++ b/vserver-reference.init @@ -1,60 +1,24 @@ #!/bin/bash # -# vserver-reference Builds VServer reference -# -# Load before pl_conf, pl_nm, vcached, and vservers -# chkconfig: 3 60 80 -# description: Builds VServer reference image +# Builds VServer reference image. Requires the web and boot servers to +# be up, which complicates bootstrap. Alternatively, we could require +# the build server to host a local yum repository. Already, it is +# required to run the same major version of yum as the nodes. # # Mark Huang -# Copyright (C) 2004 The Trustees of Princeton University +# Copyright (C) 2004-2005 The Trustees of Princeton University # -# $Id: vserver-reference.init,v 1.6 2004/11/17 22:54:19 mlhuang Exp $ +# $Id: vserver-reference.init,v 1.16 2005/09/02 15:21:00 mlhuang Exp $ # -case "$1" in - start|restart|reload) - ;; - stop|status) - exit 0 - ;; - *) - echo $"Usage: $0 {start|stop|restart|status}" - exit 1 - ;; -esac - -# Source function library. -. /etc/init.d/functions - -# VServer definitions -. /usr/lib/util-vserver/util-vserver-vars - -# Save stdout and stderr -exec 3>&1 -exec 4>&2 - -# Redirect stdout and stderr to a log file -exec 2>&1 -exec &>/var/log/vserver-reference.log +# Get the URL for the production /etc/yum.conf file. XXX When MAs +# begin deploying their own boot servers and/or code, this will have +# to change. +YUM_CONF=http://boot.planet-lab.org/$(curl --silent --insecure --form node_id=0 --form file=/etc/yum.conf https://boot.planet-lab.org/db/plnodeconf/getsinglefile.php) # Make /vservers -mkdir -p $VROOTDIR -chmod 000 $VROOTDIR -$PKGLIBDIR/setattr --barrier $VROOTDIR - -# Build image in /vservers/.vtmp -mkdir -p $VROOTDIR/.vtmp -VROOT=$(mktemp -d $VROOTDIR/.vtmp/vserver-reference.XXXXXX) - -# Make /vservers/.vtmp/vserver-reference.XXXXXX -mkdir -p $VROOT -chmod 755 $VROOT - -echo -n $"Building VServer reference: " >&3 2>&4 - -# Clean up before exiting if anything goes wrong -trap "umount $VROOT/proc ; umount $VROOT/dev/pts ; rm -rf $VROOT ; failure >&3 2>&4 ; echo >&3 2>&4 ; exit 255" ERR +VROOT=$PWD/vservers/vserver-reference +install -d -m 755 $VROOT MAKEDEV () { @@ -67,7 +31,13 @@ MAKEDEV () mknod -m 644 $VROOT/dev/urandom c 1 9 mknod -m 666 $VROOT/dev/tty c 5 0 mknod -m 666 $VROOT/dev/ptmx c 5 2 + # For bash command substitution + ln -nsf ../proc/self/fd /dev/fd + # For df and linuxconf touch $VROOT/dev/hdv1 + # For TUN/TAP + mkdir -p $VROOT/dev/net + mknod -m 600 $VROOT/dev/net/tun c 10 200 } # Initialize /dev in reference image @@ -81,6 +51,9 @@ mount -t devpts none $VROOT/dev/pts mkdir -p $VROOT/proc mount -t proc none $VROOT/proc +# Clean up before exiting if anything goes wrong +trap "umount $VROOT/proc ; umount $VROOT/dev/pts ; exit 255" ERR + # Create a dummy /etc/fstab in reference image mkdir -p $VROOT/etc cat > $VROOT/etc/fstab < $VROOT/etc/rpm/macros <&3 2>&4 -echo >&3 2>&4 exit 0