Home | History | Annotate | Download | only in milestone
      1 #!/sbin/sh
      2 #
      3 # CDDL HEADER START
      4 #
      5 # The contents of this file are subject to the terms of the
      6 # Common Development and Distribution License (the "License").
      7 # You may not use this file except in compliance with the License.
      8 #
      9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10 # or http://www.opensolaris.org/os/licensing.
     11 # See the License for the specific language governing permissions
     12 # and limitations under the License.
     13 #
     14 # When distributing Covered Code, include this CDDL HEADER in each
     15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16 # If applicable, add the following below this CDDL HEADER, with the
     17 # fields enclosed by brackets "[]" replaced with your own identifying
     18 # information: Portions Copyright [yyyy] [name of copyright owner]
     19 #
     20 # CDDL HEADER END
     21 #
     22 #
     23 # Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
     24 # Use is subject to license terms.
     25 #
     26 # Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T.
     27 # All rights reserved.
     28 #
     29 #
     30 . /lib/svc/share/smf_include.sh
     31 . /lib/svc/share/fs_include.sh
     32 
     33 #
     34 # Once root is read/write we can enable the dedicated dumpdevice if it exists
     35 # locally. This is an optimization as svc-dumpadm will attempt do this later.
     36 #
     37 dump_setup()
     38 {
     39 	[ -r /etc/dumpadm.conf ] && . /etc/dumpadm.conf
     40 
     41 	readswapdev $DUMPADM_DEVICE < $vfstab
     42 
     43 	#
     44 	# Make sure that the dump save area has been configured before
     45 	# proceeding. If the variable has not been defined or does not exist
     46 	# then bail out early. This will prevent us from configuring a
     47 	# dump save area before a hostname has been configured (i.e after
     48 	# sys-unconfig has been invoked).
     49 	#
     50 	[ -z "$DUMPADM_SAVDIR" ] && return
     51 
     52 	#
     53 	# If we have a dedicated dump device, then go ahead and configure it.
     54 	# 
     55 	if [ "x$special" != "x$DUMPADM_DEVICE" ]; then
     56 		if [ -x /usr/sbin/dumpadm -a -b $DUMPADM_DEVICE ]; then
     57 			/usr/sbin/dumpadm -u || exit $SMF_EXIT_ERR_CONFIG
     58 		fi
     59 	fi
     60 }
     61 
     62 rootiszfs=0
     63 # get the fstype of root
     64 readmnttab / </etc/mnttab
     65 if [ "$fstype" = zfs ] ; then
     66 	rootiszfs=1
     67 	dump_setup
     68 fi
     69 
     70 #
     71 # Add physical swap.
     72 #
     73 /sbin/swapadd -1
     74 
     75 #
     76 # Check and remount the / (root) file system.
     77 # For NFS mounts, force the llock option on.
     78 #
     79 if smf_is_globalzone && [ $rootiszfs = 0 ]; then
     80 	readvfstab / < $vfstab
     81 	checkfs $fsckdev $fstype $mountp || exit $SMF_EXIT_ERR_FATAL
     82 	checkopt "llock" $mntopts
     83 	mntopts='remount'
     84 
     85 	[ -n "$otherops" ] && mntopts="${mntopts},${otherops}"
     86 	[ "$fstype" = nfs ] && mntopts="${mntopts},llock"
     87 
     88 	# if root dev is a read-only metadevice then fail
     89 	case $special in
     90 	/dev/md/dsk/*)
     91 		dd if=/dev/null of=$special count=0 >/dev/null 2>&1 ||
     92 		    exit $SMF_EXIT_ERR_FATAL
     93 		;;
     94 	esac
     95 
     96 	mountfs -m $mountp $fstype $mntopts - || exit $SMF_EXIT_ERR_FATAL
     97 fi
     98 
     99 #
    100 # Check and remount the /usr file system (formerly mounted read-only).
    101 # Unless root is zfs, in which case we've already mounted /usr read-write
    102 #
    103 if [ "$rootiszfs" = 0 ] ; then
    104 	readvfstab /usr < $vfstab
    105 	if [ "$mountp" ]; then
    106 		if [ "$fstype" = cachefs ]; then
    107 			mountfs -O $mountp cachefs $mntopts $special ||
    108 			    exit $SMF_EXIT_ERR_FATAL
    109 		else
    110 			checkopt ro $mntopts
    111 			if [ "x$option" != xro ]; then
    112 				checkfs $fsckdev $fstype $mountp ||
    113 				    exit $SMF_EXIT_ERR_FATAL
    114 				if [ "x$mntopts" != x- ]; then
    115 					mntopts="remount,$mntopts"
    116 				else
    117 					mntopts="remount"
    118 				fi
    119 
    120 				# if usr dev is a read-only metadevice then fail
    121 				case $special in
    122 				/dev/md/dsk/*)
    123 					dd if=/dev/null of=$special count=0 \
    124 					    >/dev/null 2>&1 || exit $SMF_EXIT_ERR_FATAL
    125 					;;
    126 				esac
    127 
    128 				mountfs - /usr $fstype $mntopts - ||
    129 				    exit $SMF_EXIT_ERR_FATAL
    130 			fi
    131 		fi
    132 	fi
    133 fi
    134 
    135 #
    136 # Check and mount the /usr/platform file system.  This should only be
    137 # present when a SunOS 5.5 (Solaris 2.5) or greater client is being
    138 # administered by a SunOS 5.4 or less host.
    139 #
    140 readvfstab /usr/platform < $vfstab
    141 if [ "$mountp" ]; then
    142 	checkfs $fsckdev $fstype $mountp || exit $SMF_EXIT_ERR_FATAL
    143 	mountfs - $mountp $fstype $mntopts - || exit $SMF_EXIT_ERR_FATAL
    144 fi
    145 
    146 #
    147 # Mount the fd file systems if mount point exists.
    148 #
    149 readvfstab /dev/fd < $vfstab
    150 if [ "$mountp" -a -d /dev/fd ]; then
    151 	mountfs - /dev/fd - - - || exit $SMF_EXIT_ERR_FATAL
    152 fi
    153 
    154 exit $SMF_EXIT_OK
    155