#!/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 # # Mark Huang # Copyright (C) 2004 The Trustees of Princeton University # # $Id: vserver-reference.init,v 1.2 2004/10/14 18:37:40 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 # Make /vservers mkdir -p $VROOTDIR chmod 000 $VROOTDIR chattr +t $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 chattr -t $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 ; chattr -R -i $VROOT ; rm -rf $VROOT ; failure >&3 2>&4 ; echo >&3 2>&4 ; exit 255" ERR MAKEDEV () { rm -rf $VROOT/dev mkdir -p $VROOT/dev mknod -m 666 $VROOT/dev/null c 1 3 mknod -m 666 $VROOT/dev/zero c 1 5 mknod -m 666 $VROOT/dev/full c 1 7 mknod -m 644 $VROOT/dev/random c 1 8 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 touch $VROOT/dev/hdv1 } # Initialize /dev in reference image MAKEDEV # Mount /dev/pts in reference image mkdir -p $VROOT/dev/pts mount -t devpts none $VROOT/dev/pts # Mount /proc in reference image mkdir -p $VROOT/proc mount -t proc none $VROOT/proc # 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