Files
Arquivotheca.SunOS-4.1.4/usr.etc/upgrade/upgrade_exec.sh
seta75D ff309bfe1c Init
2021-10-11 18:37:13 -03:00

226 lines
5.7 KiB
Bash

#!/bin/sh
#
# @(#)upgrade_exec.sh 1.1 94/10/31 SMI
# Copyright (c) 1990, Sun Microsystems, Inc. All Rights Reserved.
# Sun considers its source code as an unpublished, proprietary
# trade secret, and it is available only under strict license
# provisions. This copyright notice is placed here only to protect
# Sun in the event the source is deemed a published work. Dissassembly,
# decompilation, or other means of reducing the object code to human
# readable form is prohibited by the license agreement under which
# this code is provided to the user or company in possession of this
# copy.
#
# RESTRICTED RIGHTS LEGEND: Use, duplication, or disclosure by the
# Government is subject to restrictions as set forth in subparagraph
# (c)(1)(ii) of the Rights in Technical Data and Computer Software
# clause at DFARS 52.227-7013 and in similar clauses in the FAR and
# NASA FAR Supplement.
#
# NAME: upgrade_exec
#
# DESCRIPTION:
#
# Script to selectively replace common (shared) executables
# with the corresponding 4.1_PIE version.
#
# It will modify the appropriate files in /etc/install. The
# installed software will be reported as 4.1_PIE.
#
# It installs from release media tape and cdrom.
#
# USAGE:
# upgrade_exec [-dDEVICE] [-rREMOTE_HOST]
#
# DEVICE = tape device (st?, mt?, sr?)
# REMOTE_HOST = host of remote tape drive
#
#
# STEPS:
#
# 1. Get the "user input's" that we need to know. Ask all questions
# before actually doing anything. The things we need to know:
#
# drive name
# drive machine (if remote)
#
# 2. Validate that the drive is accessible.
#
# 3. Ask user to insert the first volume of the media set.
# Read in the toc onto disk.
# Verify volume, arch and release of media.
#
# 4. Get a list of packages to upgrade. Read through each
# package listed in the toc, and if the include file list
# exists and the package is in the media list file, then
# it should be upgraded. The order of the list should
# be the order the packages are listed the toc.
#
# 5. Start the installation.
# Loop through the list of packages until done.
#
# Read TOC on disk to find out what volume the package is on.
# If correct volume isn't mounted, give message to mount
# the volume, wait for next volume to be mounted, and repeat.
#
# If a new volume had to be mounted, read in the toc from
# tape to disk, get volume number, and verify that it's the correct
# volume number for this package. Also verify arch and release.
#
# Skip tape to correct file.
#
# Read tarfile into correct location. Use include
# list to only extract off files that have changed.
#
# 6. Fix any suninstall files to reflect new release
#
# 7. Fix the links in /export/exec.
#
# 8. Install vmunix, kadb, bootblock
#
#
INSDIR="/etc/install"
HERE=`pwd`
CMD=`basename $0`
XDRTOC="/usr/etc/install/xdrtoc"
TOCFILE="/tmp/toc.$$"
SUFFIX="include"
AARCH=`/bin/arch`
KARCH=`/bin/arch -k`
CD="cd"
DD="/bin/dd"
EXPR="/usr/bin/expr"
MT="mt"
TAR="tar"
HOST=`hostname`
MEDIA_FILE="${INSDIR}/appl_media_file.${AARCH}.sunos.${FROM_RELEASE}"
REQUIRED="root usr Kvm Install Networking"
USAGE="$CMD [-dDEVICE] [-rREMOTE_HOST]"
DEVROOT=""
DEVPATH=""
PARAMS=""
REMOTE=""
REMOTE_HOST=""
MEDIA="tape"
# general purpose utility subroutines
. ./utility_subs
# toc processing subroutines
. ./toc_subs
# install subroutines
. ./install_subs
########################################################################
#
# Beginning of main program.
#
########################################################################
trap 'cleanup 1' 1 2 15
# Check parameters.
# Set the following variables:
# DEVROOT, DEVPATH, REMOTE, REMOTE_HOST, MEDIA
. ./get_params
# execute media subroutines
case "${MEDIA}" in
"tape") . ./tape_subs ;;
"cdrom") . ./cdrom_subs ;;
*) echo "$CMD: Invalid device name $MEDIA"
cleanup 1 ;;
esac
# mount release media
echo ""
echo "**Please mount volume 1 of the release media if you haven't
done so already.**"
# Wait for return
return_when_ready
# For cdrom, mount hsfs
media_start
# extract the TOC
extract_toc
# check volume and make sure volume 1 is mounted
media_check 1
# get list of packages to upgrade in variable UPGRADE_LIST
get_package_list
if [ "$UPGRADE_LIST" ]; then
echo
echo "These packages will get upgraded: "
echo " $UPGRADE_LIST"
echo ""
echo "Ready to start installation."
return_when_ready
else
echo "$CMD: No packages to upgrade, exiting."
cleanup 1
fi
# loop through list of packages to upgrade
for PACKAGE in $UPGRADE_LIST
do
# sets variables U_VOLUME, U_FILE, U_TYPE
toc_tar_info
# make sure correct volume mounted
media_check $U_VOLUME
if [ $U_TYPE = "tarZ" ]; then
uncompress="/usr/ucb/uncompress"
else
uncompress="/bin/cat"
fi
echo
echo "Extracting upgrade for $PACKAGE..."
# this should never happen, but putting a check in anyway
list="${HERE}/${PACKAGE}.${SUFFIX}"
[ ! -s $list ] && echo "Unable to locate ${list}...continuing" && continue
case "${PACKAGE}" in
"root") $CD / ;;
"Kvm") $CD /usr/kvm ;;
*) $CD /usr ;;
esac
media_extract
done
# rewind the tape again
media_rewind
# fix up the suninstall data files to reflect the new release
fix_data_files
# fix the release name file
fix_release
# reset the links in /export/exec
make_links
# install vmunix, kadb, and boot block
FROM=/usr/kvm/stand
install_vmunix $FROM
install_kadb $FROM
install_boot_block
# add pcfs line to fstab
fix_fstab
cleanup 0