Files
Arquivotheca.Solaris-2.5/cmd/initpkg/init.d/rootusr
seta75D 7c4988eac0 Init
2021-10-11 19:38:01 -03:00

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