SUMMARY: Jumpstart finish scripts

From: Clarkson, Michael (clarkson@amgen.com)
Date: Tue Feb 11 1997 - 06:49:07 CST


Thanks to all that responded, the first reply only took 20 mins.
 
My original question was:-

Is it possible to install the recommended patch clusters, as part of the
finish script ?
The problem I can see is that the actual bootdisk is mounted on /a
during the jumpstart installation, so any pathnames in the patches will
be incorrect.

Is it possible to tell install_cluster the / mount point, or do I need
to write a script that gets copied into /etc/rc2.d that installs the
patches the first time it reboots on completion of the installation.

Thanks to:-
jmmosley@uncc.edu James M Mosley
kmpoon@eee.hku.hk Kai Ming Poon
prylons@air.dec.state.ny.us Paul Lyons
jefi@kat.ina.de Jens Fischer
bruce.cross@tti.fingerhut.com Bruce Cross
eric.walters@sdrc.com Eric Walters
Ken.Picard@ska.com Ken Picard
vm18276@cae902.tu.hac.com Bill Campillo
grm@star.le.ac.uk Geoff Mellor
brain.styles@mrc-bsu.cam.ac.uk Brain Styles
tkld@cogsci.ed.ac.uk Kevin Davidson
Matthew.Stier@mci.com Matthew Stier
ian.camm@sse.eu.sony.co.jp Ian Camm
Answers:-

The majority seemed to favour using a script that installed the patches
during the first boot after the jumpstart installation. I've included
some of the supplied scripts below:

INSTALLHOST="master"
mkdir /a/added_patches
# Note the following is all one line
mount -F nfs
${INSTALLHOST}:/export/install_2.5.1/auto_install_encon/added_patches
/a/added_patches

# SUGGESTED PATCHES
# Note the -R /a tells the script to use /a as the effective root
directory for the command.
/bin/echo "\nInstalling Suggested Patches\n"
cd /a/added_patches/suggested
echo "Current Directory=`pwd`"
for i in *
do
   /bin/echo "\nInstalling Suggested Patch $i\n"
   /a/added_patches/installpatch -R /a -d /a/added_patches/suggested/$i
done

-------------------------------------------------------------------------
---------------------------------------

----------------------------------------------------------
This is ran within the finish script :

#!/bin/sh -x
#
# ...put the rc script for patches in place
#
#####
 
#
# Get IP of the appropriate port on the jumpstart server
#
IP_OF_JUMPSTART_SERVER="`mount|grep ${SI_CONFIG_DIR}|head -1|cut -d:
-f1|awk
'{print $3}'`"
 
sed -e "s/IP_OF_JUMPSTART_SERVER/$IP_OF_JUMPSTART_SERVER/g" \
                ${SI_CONFIG_DIR}/extra_files/S99patches >
/a/etc/rc3.d/S99patches
chmod 755 /a/etc/rc3.d/S99patches

----------------------------------------------------------
"S99patches" :

#!/bin/sh
#################################################################
PATH=/usr/bin:/usr/sbin:/etc
OS=`uname -r`
 
#################################################################
# Figure out which server to mount
#################################################################
PATCHSERVER="IP_OF_JUMPSTART_SERVER"
 
#################################################################
# Mount the patch server
#################################################################
mkdir -p /patch
mount $PATCHSERVER:/export2/patches /patch
 
#################################################################
# Run the installpatch program
#################################################################
/patch/install_patch
 
#################################################################
# Remove myself
#################################################################
rm $0
 
#################################################################
# Reboot with "-r" option for good measure
#################################################################
reboot -- -r

-----------------------------------------------------------------------
"install_patch" (in /export2/patches) :

#!/bin/ksh
###################################################################

LOGFILE=/var/adm/install_patch.log
OS=`uname -r`
PATCHDIR="/net/JUMPSTARTSERVER.DOMAIN/export2/patches"
 
###################################################################
# Move old log file to .old if it exists
###################################################################
if [ -a $LOGFILE ]
then
        mv $LOGFILE $LOGFILE.old
fi
 
###################################################################
# Set the "data" file(contains list of patches to be installed)
###################################################################
if [ -z "$1" ]
then
        DATA=$PATCHDIR/data/mandatory_${OS}_patches
else
        DATA=$PATCHDIR/data/$1
fi
 
###################################################################
# Check to make sure data file is readable and exists
###################################################################
if [ ! -r "$DATA" ]
then
        echo "Datafile($DATA) is not readable" | tee -a $LOGFILE
        exit 1
fi
 
###################################################################
# Actually install patches
###################################################################
for PATCH in `cat $DATA | cut -d\| -f1`
do
        echo "Installing patch $PATCH for SunOS $OS" | tee -a $LOGFILE
        $PATCHDIR/patches_$OS/$PATCH/installpatch -u -d \
                $PATCHDIR/patches_$OS/$PATCH >> $LOGFILE 2>&1
        echo "--------------------------------------" >> $LOGFILE
done
 
###################################################################
# List installed patches
###################################################################
echo "\nThe following patches are installed on the system:" | tee -a
$LOGFILE
$PATCHDIR/patches_$OS/$PATCH/installpatch -p | tee -a $LOGFILE
 
###################################################################
# Get rid of /var/sadm/patch for / space considerations
###################################################################
rm -rf /var/sadm/patch >/dev/null 2>&1
 
###################################################################
# Tell user to reboot
###################################################################
echo "Please reboot system for patches to take affect"

-----------------------------------------------------------------

#/bin/sh
#add_patch.fin

B=/a #base directory of all absolute paths
PATCH_SERV=cyclops:/5_4patches

mkdir $B/patches
mount -F nfs ${PATCH_SERV} $B/patches

if [ $? = 0 ]
then
        cd $B/patches
        for patch in `ls $B/patches`
        do
                if [ -x $B/patches/${patch}*/installpatch ]
                then
                        echo "
==============================
Applying patch ${patch}
=============================="
        /usr/sbin/chroot $B /patches/`ls -d ${patch}*`/installpatch \
        /patches/`ls -d ${patche}*`
                        rm -r $B/var/sadm/patch/${patch}*/save
        
                else
                        echo "
==============================
Error: Patch $patch not added.
=============================="
                fi
        done
        cd
        umount $B/patches
        rmdir $B/patches
else
        rmdir $B/patches
        echo "
=====================================
Error: Cannot mount patch directory.
       Patches not added
=====================================
fi



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:11:46 CDT