167 lines
5.0 KiB
Bash
Executable File
167 lines
5.0 KiB
Bash
Executable File
#!/sbin/sh
|
|
# Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
|
|
# All Rights Reserved
|
|
|
|
# THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T
|
|
# The copyright notice above does not evidence any
|
|
# actual or intended publication of such source code.
|
|
|
|
#
|
|
# Copyright (c) 1991, Sun Microsystems Inc.
|
|
#
|
|
|
|
#ident "@(#)rootusr 1.8 95/02/24 SMI"
|
|
|
|
|
|
# Make sure that the libraries essential
|
|
# to this stage of booting can be found.
|
|
LD_LIBRARY_PATH=/etc/lib; export LD_LIBRARY_PATH
|
|
|
|
#
|
|
#
|
|
# Configure the software loopback driver. The network initialization is
|
|
# done early to support diskless and dataless configurations.
|
|
#
|
|
/sbin/ifconfig lo0 127.0.0.1 up 2>&1 >/dev/null
|
|
|
|
#
|
|
# For interfaces that were configured by the kernel (e.g. those on diskless
|
|
# machines), reset the netmask using the local "/etc/netmasks" file, if
|
|
# one exists.
|
|
#
|
|
/sbin/ifconfig -au netmask + broadcast + 2>&1 >/dev/null
|
|
|
|
#
|
|
# Get the list of network interfaces to configure by breaking
|
|
# /etc/hostname.* into separate args by using "." as a shell separator
|
|
# character, then step through args and ifconfig every other arg.
|
|
# Set the netmask along the way using local "/etc/netmasks" file.
|
|
# This also sets up the streams plumbing for the interface.
|
|
# With an empty /etc/hostname.* file this only sets up the streams plumbing
|
|
# allowing the ifconfig auto-revarp command will attempt to set the address.
|
|
#
|
|
interface_names="`echo /etc/hostname.*[0-9] 2>/dev/null`"
|
|
if test "$interface_names" != "/etc/hostname.*[0-9]"
|
|
then
|
|
(
|
|
echo "configuring network interfaces:\c"
|
|
IFS="$IFS."
|
|
set `echo /etc/hostname\.*[0-9]`
|
|
while test $# -ge 2
|
|
do
|
|
shift
|
|
if [ "$1" != "xx0" ]; then
|
|
addr=`shcat /etc/hostname\.$1`
|
|
/sbin/ifconfig $1 plumb
|
|
if test -n "$addr"
|
|
then
|
|
/sbin/ifconfig $1 inet "$addr" netmask + \
|
|
broadcast + -trailers up \
|
|
2>&1 > /dev/null
|
|
fi
|
|
echo " $1\c"
|
|
fi
|
|
shift
|
|
done
|
|
echo "."
|
|
)
|
|
fi
|
|
|
|
#
|
|
# configure the rest of the interfaces automatically, quietly.
|
|
#
|
|
/sbin/ifconfig -ad auto-revarp netmask + broadcast + -trailers up \
|
|
2>&1 >/dev/null
|
|
|
|
#
|
|
# Set the hostname from a local config file, if one exists.
|
|
#
|
|
hostname="`shcat /etc/nodename 2>/dev/null`"
|
|
if [ ! -z "$hostname" ]; \
|
|
then
|
|
/sbin/uname -S $hostname
|
|
fi
|
|
|
|
#
|
|
# Otherwise, set host information from bootparams RPC protocol.
|
|
#
|
|
if [ -z "`/sbin/uname -n`" ]; then
|
|
/sbin/hostconfig -p bootparams
|
|
fi
|
|
|
|
#
|
|
# If local and network configuration failed, re-try network
|
|
# configuration until we get an answer. We want this loop to be
|
|
# interruptible so that the machine can still be brought up manually
|
|
# when the servers are not cooperating.
|
|
#
|
|
|
|
trap 'intr=1' 2 3
|
|
while [ -z "`/sbin/uname -n`" -a ! -f /etc/.UNCONFIGURED -a -z "${intr}" ]; do
|
|
echo "re-trying host configuration..."
|
|
/sbin/ifconfig -ad auto-revarp up 2>&1 >/dev/null
|
|
/sbin/hostconfig -p bootparams 2>&1 >/dev/null
|
|
done
|
|
trap 2 3
|
|
|
|
echo "Hostname: `/sbin/uname -n`" >&2
|
|
|
|
#
|
|
# If "/usr" is going to be NFS mounted from a host on a different
|
|
# network, we must have a routing table entry before the mount is
|
|
# attempted. One may be added by the diskless kernel or by the
|
|
# "hostconfig" program above. Setting a default router here is a problem
|
|
# because the default system configuration does not include the
|
|
# "route" program in "/sbin". Thus we only try to add a default route
|
|
# at this point if someone managed to place a static version of "route" into
|
|
# "/sbin". Otherwise, we may add the route at run level 2 after "/usr"
|
|
# has been mounted and NIS is running.
|
|
#
|
|
# Note that since NIS is not running at this point, the router's name
|
|
# must be in "/etc/hosts" or its numeric IP address must be used in the file.
|
|
#
|
|
if [ -f /sbin/route -a -f /etc/defaultrouter ]; then
|
|
/sbin/route -f add default `cat /etc/defaultrouter` 1
|
|
fi
|
|
|
|
#
|
|
# Root is already mounted (by the kernel), but still needs to be checked,
|
|
# possibly remounted and entered into mnttab. First mount /usr read only
|
|
# if it is a separate file system. This must be done first to allow
|
|
# utilities such as fsck and setmnt to reside on /usr minimizing the space
|
|
# required by the root file system.
|
|
#
|
|
exec < ${vfstab}; readvfstab "/usr"
|
|
if [ "${mountp}" ]
|
|
then
|
|
if [ "${fstype}" = "cachefs" ]; then
|
|
#
|
|
# Mount without the cache initially. We'll enable it
|
|
# later at remount time. This lets us avoid
|
|
# teaching the statically linked mount program about
|
|
# cachefs. Here we determine the backfstype.
|
|
# This is not pretty, but we have no tools for parsing
|
|
# the option string until we get /usr mounted...
|
|
#
|
|
case "$mntopts" in
|
|
*backfstype=nfs*)
|
|
cfsbacktype=nfs
|
|
;;
|
|
*backfstype=hsfs*)
|
|
cfsbacktype=hsfs
|
|
;;
|
|
*)
|
|
echo "invalid vfstab entry for /usr"
|
|
cfsbacktype=nfs
|
|
;;
|
|
esac
|
|
/sbin/mount -m -F ${cfsbacktype} -o ro ${special} ${mountp}
|
|
else
|
|
/sbin/mount -m -o ro /usr
|
|
fi
|
|
fi
|
|
|
|
# Reset the library path now that we are
|
|
# past the critical stage.
|
|
LD_LIBRARY_PATH=/usr/lib; export LD_LIBRARY_PATH
|