Files
mtx/mtx-1.3.12/contrib/config_sgen_solaris.sh
2018-07-31 15:07:09 -05:00

151 lines
3.4 KiB
Bash
Executable File

#!/bin/sh
# Copyright 2001 Enhanced Software Technologies Inc.
# All Rights Reserved
#
# This software is licensed under the terms of the Free Software Foundation's
# General Public License, version 2. See http://www.fsf.org for more
# inforation on the General Public License. It is released for public use in
# the hope that others will find it useful. Please contact eric@estinc.com
# if you have problems. Also check out our backup products at
# http://www.estinc.com (grin).
#
# usage: config_sgen_solaris.sh check|[un]install
#
# This configures sgen under Solaris (we hope! :-). Note that this
# *CAN* do a reboot of the system. Do NOT call this function unless
# you are willing to let it do a reboot of the system! Also note that
# this *must* be run as user 'root', since it does highly grokety things.
mode="$1"
cvs upd
SGEN="/kernel/drv/sgen"
SGEN_CONF="/kernel/drv/sgen.conf"
do_check() {
if test ! -f $SGEN_CONF; then
# sgen.conf not installed...
return 1
fi
changer_type_count=`grep "changer" $SGEN_CONF | grep -v "^#" | wc -l`
target_count=`grep "target=" $SGEN_CONF | grep -v "^#" | wc -l`
if test $changer_type_count = 0 -o $target_count = 0; then
# sgen.conf not configured
return 1
fi
# sgen.conf installed, and configured
return 0
}
do_install() {
# see if already installed
do_check
if test $? = 0; then
echo "sgen already configured, skipping"
return 0 # successfully installed (?)
fi
if test ! -f $SGEN; then
echo "sgen driver not installed, aborting"
return 1
fi
echo "configuring sgen driver..."
echo 'device-type-config-list="changer"; # BRU-PRO' >>$SGEN_CONF
target=0
while test $target -le 15; do
echo "name=\"sgen\" class=\"scsi\" target=$target lun=0; # BRU-PRO" >>$SGEN_CONF
target=`expr $target + 1`
done
echo "Attempting to reload driver..."
rem_drv sgen >/dev/null 2>&1
add_drv sgen
if test "$?" != "0"; then
# failed
touch /reconfigure
echo "Driver was successfully configured, but could not be re-loaded."
echo "The system must be rebooted for the driver changes to take effect."
ans=""
while test "$ans" = ""; do
printf "Do you want to reboot now (shutdown -g 1 -y -i 6)? [Y/n] "
read ans
if test "$ans" = "Y"; then
ans="y"
fi
if test "$ans" = "N"; then
ans="n"
fi
if test "$ans" != "y" -a "$ans" != "n"; then
echo "Please enter 'y' or 'n'"
ans=""
fi
done
if test "$ans" = "y"; then
shutdown -g 1 -y -i 6
# will be killed by reboot...
while true; do
echo "Waiting for reboot..."
sleep 300
done
fi
# not rebooted, exit with error
return 2
fi
# successful
return 0
}
do_uninstall() {
do_check
if test $? = 1; then
echo "sgen not configured, skipping"
return 0 # successfully uninstalled (?)
fi
printf "removing BRU-PRO configuration from $SGEN_CONF..."
grep -v "# BRU-PRO" $SGEN_CONF > ${SGEN_CONF}.$$ || return 1
cat ${SGEN_CONF}.$$ >${SGEN_CONF} || return 1
rm -f ${SGEN_CONF}.$$ >/dev/null || return 1
printf "done\n"
touch /reconfigure
printf "Devices will be reconfigured at next reboot.\n"
return 0
}
uname | grep SunOS >/dev/null 2>&1
if test $? != 0; then
echo "$0: not on Solaris, ABORT!"
exit 99
fi
case "$mode" in
check)
do_check
;;
install)
do_install
;;
uninstall)
do_uninstall
;;
*)
echo "usage: $0 check|[un]install"
exit 1
;;
esac
exit $?