From 0d07a17653cfe4950880cf898beb23cbac18d6e4 Mon Sep 17 00:00:00 2001 From: Mark Huang Date: Thu, 14 Oct 2004 18:25:05 +0000 Subject: [PATCH] - move functionality into /etc/init.d/vserver-reference, which runs once after installation (and maybe again if the RPM is ever updated, but the script is mostly idempotent). --- vserver-reference.init | 141 +++++++++++++++++++++++++++++++++++++++++ vserver-reference.spec | 136 +++------------------------------------ 2 files changed, 150 insertions(+), 127 deletions(-) create mode 100755 vserver-reference.init diff --git a/vserver-reference.init b/vserver-reference.init new file mode 100755 index 0000000..9b291d5 --- /dev/null +++ b/vserver-reference.init @@ -0,0 +1,141 @@ +#!/bin/bash +# +# vserver-reference Builds VServer reference +# +# Load before pl_conf, pl_nm, and vservers +# chkconfig: 3 70 80 +# description: Builds VServer reference image +# +# Mark Huang +# Copyright (C) 2004 The Trustees of Princeton University +# +# $Id: vnet.init,v 1.8 2004/10/11 04:28:20 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 + +# 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 + +# Clean up before exiting if anything goes wrong +set -e +echo -n $"Building VServer reference: " +trap "umount $VROOT/proc ; umount $VROOT/dev/pts ; chattr -R -i $VROOT ; rm -rf $VROOT ; failure ; echo ; exit 255" EXIT + +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 </dev/null 2>&1 +fi + +# Install RPMs in reference image +yum $SSLCERTDIR --installroot=$VROOT -e 0 -d 0 -y groupinstall VServer >/dev/null 2>&1 + +# Clean up /dev in reference image +umount $VROOT/dev/pts +MAKEDEV + +# Disable all services in reference image +chroot $VROOT /bin/sh -c "chkconfig --list | awk '{ print \$1 }' | xargs -i chkconfig {} off" + +# Copy configuration files from host to reference image +for file in /etc/hosts /etc/resolv.conf /etc/yum.conf ; do + if [ -f $file ] ; then + echo $file | cpio -p -d -u $VROOT >/dev/null 2>&1 + fi +done + +# Clean up +umount $VROOT/proc + +# Reset trap +trap - EXIT + +# Swap them when complete +mv $VROOT $VROOTDIR +if [ -d $VROOTDIR/vserver-reference ] ; then + mv $VROOTDIR/vserver-reference $VROOT + # Let vcached clean it up later +fi +mv $VROOTDIR/$(basename $VROOT) $VROOTDIR/vserver-reference + +# Disable again +chkconfig vserver-reference off + +# Reset trap +trap - EXIT + +success +echo +exit 0 diff --git a/vserver-reference.spec b/vserver-reference.spec index 86b188a..98fa230 100644 --- a/vserver-reference.spec +++ b/vserver-reference.spec @@ -29,141 +29,23 @@ as the installation base for new PlanetLab slivers. %install rm -rf $RPM_BUILD_ROOT +install -D -m 755 %{name}.init $RPM_BUILD_ROOT/%{_initrddir}/%{name} %clean rm -rf $RPM_BUILD_ROOT -%post -. /usr/lib/util-vserver/util-vserver-vars - -# 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 - -# Clean up before exiting if anything goes wrong -set -e -trap "umount $VROOT/proc ; umount $VROOT/dev/pts ; chattr -R -i $VROOT ; rm -rf $VROOT" EXIT - -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.0-3.planetlab +- dynamically install reference image at init time + * Sun Oct 10 2004 Mark Huang 3.0-2.planetlab - dynamically install reference image -- 2.43.0