1
0
Files
irix-657m-src/eoe/cmd/initpkg/init.d/autoconfig
2022-09-29 17:59:04 +03:00

150 lines
3.7 KiB
Bash

#!/sbin/sh
#Tag 0x00000800
#
# Automatically re-configure the kernel. This script uses the
# /etc/config/autoconfig.options file to tell lboot to either
# prompt for permission to reconfigure the kernel or not. The
# default autoconfig.options file contains a '-T', which indicates
# to lboot to reconfigure the kernel without prompting for
# permission. A 't' indicates to lboot to prompt for permission
# first.
#
# When autoconfig runs at system startup, it uses -T or -t to indicate
# to lboot that it should use 'Smart' mode. In 'Smart' mode, lboot
# determines whether or not it should build a new kernel by looking
# at the dates of files in /var/sysgen and comparing to the date of
# /unix. In 'Smart' mode, lboot also auto-registers dynamically loadable
# kernel modules, such as tpsc, hpcplp, hpc3plp, ticlts, dial, sball,
# tablet, wacom, etc.
#
# If the LBOOTOPTS below are changed, so that they don't pass -T or -t
# to lboot, autoconfig will not perform its 'Smart' mode tasks, as
# described above.
#
# "$Revision: 1.52 $"
LBOOTOPTS=
FORCE=
LD_LIBRARY_PATH=
#
# If autoconfig.options is 0 or is missing, then default to -T.
# Also, if it contains bogus information, default to -T.
#
if [ -f /etc/config/autoconfig.options ]; then
FORCE=`cat /etc/config/autoconfig.options 2> /dev/null`
else
FORCE=""
fi
if test "$FORCE" = ""; then
FORCE="-T"
fi
TARGET=${UNIX:=/unix}
USAGE="`basename $0`: [-vf] [-p toolroot] [-d /var/sysgen] [-o lbootopts] [start|stop]"
while getopts "vnfp:d:o:" c; do
case $c in
v) if test "$verbose" = "-v"; then
set -x
else
verbose="-v"
LBOOTOPTS="$LBOOTOPTS -v"
fi
;;
n) LBOOTOPTS="$LBOOTOPTS -e";;
f) FORCE=""
TARGET=${TARGET}.install;;
p) TOOLROOT="$OPTARG";;
d) SYSGEN="$OPTARG";;
o) if test "$OPTARG" = "-t" -o "$OPTARG" = "-T"; then
FORCE=$OPTARG
else
LBOOTOPTS="$LBOOTOPTS $OPTARG"
fi
;;
\?) echo $USAGE; exit 1;;
esac
done
shift `expr $OPTIND - 1`
SYSGEN=${SYSGEN:-/var/sysgen}
BOOTAREA=${BOOTAREA:-${SYSGEN}/boot}
SYSTEM=${SYSTEM:-${SYSGEN}/system}
MASTERD=${MASTERD:-${SYSGEN}/master.d}
STUNEFILE=${STUNEFILE:-${SYSGEN}/stune}
MTUNEDIR=${MTUNEDIR:-${SYSGEN}/mtune}
WORKDIR=${WORKDIR:-${SYSGEN}}
# TOOLROOT and ROOT control where lboot looks for tools and does its work
# TOOLROOT is normally set in the system file.
TOOLROOT=${TOOLROOT:-$SYSGEN/root}
export TOOLROOT
LBOOT=/usr/sbin/lboot
SETSYM=/usr/sbin/setsym
LBOOTOPTS="$LBOOTOPTS $FORCE -m $MASTERD -b $BOOTAREA -w $WORKDIR -s $SYSTEM -u $TARGET -c $STUNEFILE -n $MTUNEDIR"
cd /
case $1 in
""|start)
for nm in $LBOOT $TOOLROOT/usr/bin/cc $TOOLROOT/usr/bin/ld; do
if test ! -x $nm; then
echo "`basename $0`: cannot find $nm" 1>&2
exit 1
fi
done
for nm in $BOOTAREA $MASTERD $SYSTEM; do
if test ! -d $nm; then
echo "`basename $0`: cannot find $nm" 1>&2
exit 1
fi
done
# note - set -e in a case stmt doesn't work right in /bin/sh
rm -rf ${UNIX}.install
/sbin/suattr -C CAP_DEVICE_MGT+ip -c "$LBOOT $LBOOTOPTS"
if [ $? != 0 ]
then
# dont print anything since a no answer to Automatically ..
# causes lboot to exit 1
exit 1
fi
#
# The following puts labels on files created in ${SYSGEN}
# while in the mini-root when trix is installed.
#
if [ -f $BOOTAREA/mac.a ] ; then
echo "labeling ${SYSGEN}" 1>&2
/sbin/suattr -C all=epi -c "/usr/bin/find ${SYSGEN} -follow -print |xargs /sbin/attrinit -mac=dblow" > /dev/null
fi
if test -w ${UNIX}.install; then
chmod a+r ${UNIX}.install
if test -x $SETSYM ; then
$SETSYM ${UNIX}.install > /dev/null 2>&1
# Ignore any error return from setsym, so autoconfig
# will not exit non-zero if setsym has a problem.
true
fi
fi
;;
stop)
exit 1
;;
*)
echo "$USAGE"
exit 1
;;
esac