17c478bd9Sstevel@tonic-gate#!/sbin/sh 27c478bd9Sstevel@tonic-gate# 37c478bd9Sstevel@tonic-gate# CDDL HEADER START 47c478bd9Sstevel@tonic-gate# 57c478bd9Sstevel@tonic-gate# The contents of this file are subject to the terms of the 66927f468Sdp# Common Development and Distribution License (the "License"). 76927f468Sdp# You may not use this file except in compliance with the License. 87c478bd9Sstevel@tonic-gate# 97c478bd9Sstevel@tonic-gate# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 107c478bd9Sstevel@tonic-gate# or http://www.opensolaris.org/os/licensing. 117c478bd9Sstevel@tonic-gate# See the License for the specific language governing permissions 127c478bd9Sstevel@tonic-gate# and limitations under the License. 137c478bd9Sstevel@tonic-gate# 147c478bd9Sstevel@tonic-gate# When distributing Covered Code, include this CDDL HEADER in each 157c478bd9Sstevel@tonic-gate# file and include the License file at usr/src/OPENSOLARIS.LICENSE. 167c478bd9Sstevel@tonic-gate# If applicable, add the following below this CDDL HEADER, with the 177c478bd9Sstevel@tonic-gate# fields enclosed by brackets "[]" replaced with your own identifying 187c478bd9Sstevel@tonic-gate# information: Portions Copyright [yyyy] [name of copyright owner] 197c478bd9Sstevel@tonic-gate# 207c478bd9Sstevel@tonic-gate# CDDL HEADER END 217c478bd9Sstevel@tonic-gate# 227c478bd9Sstevel@tonic-gate# 23abcc7ef9SGangadhar Mylapuram# Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. 247c478bd9Sstevel@tonic-gate# 257c478bd9Sstevel@tonic-gate# Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T. 267c478bd9Sstevel@tonic-gate# All rights reserved. 277c478bd9Sstevel@tonic-gate# 287c478bd9Sstevel@tonic-gate# 297c478bd9Sstevel@tonic-gate. /lib/svc/share/smf_include.sh 307c478bd9Sstevel@tonic-gate. /lib/svc/share/fs_include.sh 317c478bd9Sstevel@tonic-gate 323b133becSGangadhar MylapuramUPDATEFILE=/etc/svc/volatile/boot_archive_needs_update 333b133becSGangadhar Mylapuram 347c478bd9Sstevel@tonic-gate# 35e7cbe64fSgw25295# Once root is read/write we can enable the dedicated dumpdevice if it exists 36e7cbe64fSgw25295# locally. This is an optimization as svc-dumpadm will attempt do this later. 377c478bd9Sstevel@tonic-gate# 38e7cbe64fSgw25295dump_setup() 39e7cbe64fSgw25295{ 40e7cbe64fSgw25295 [ -r /etc/dumpadm.conf ] && . /etc/dumpadm.conf 41e7cbe64fSgw25295 42e7cbe64fSgw25295 readswapdev $DUMPADM_DEVICE < $vfstab 43e7cbe64fSgw25295 44e7cbe64fSgw25295 # 4559bc618eSgw25295 # Make sure that the dump save area has been configured before 4659bc618eSgw25295 # proceeding. If the variable has not been defined or does not exist 4759bc618eSgw25295 # then bail out early. This will prevent us from configuring a 4859bc618eSgw25295 # dump save area before a hostname has been configured (i.e after 4959bc618eSgw25295 # sys-unconfig has been invoked). 5059bc618eSgw25295 # 5159bc618eSgw25295 [ -z "$DUMPADM_SAVDIR" ] && return 5259bc618eSgw25295 5359bc618eSgw25295 # 54e7cbe64fSgw25295 # If we have a dedicated dump device, then go ahead and configure it. 55e7cbe64fSgw25295 # 56e7cbe64fSgw25295 if [ "x$special" != "x$DUMPADM_DEVICE" ]; then 57e7cbe64fSgw25295 if [ -x /usr/sbin/dumpadm -a -b $DUMPADM_DEVICE ]; then 58e7cbe64fSgw25295 /usr/sbin/dumpadm -u || exit $SMF_EXIT_ERR_CONFIG 59e7cbe64fSgw25295 fi 60e7cbe64fSgw25295 fi 61e7cbe64fSgw25295} 627c478bd9Sstevel@tonic-gate 63*f6e214c7SGavin Maltby# 64*f6e214c7SGavin Maltby# Write a unique id into this kernel image; this will be included 65*f6e214c7SGavin Maltby# in the dump header and panicbuf of any crashdump of this image. 66*f6e214c7SGavin Maltby# 67*f6e214c7SGavin Maltbyif [ -x /usr/sbin/dumpadm ]; then 68*f6e214c7SGavin Maltby /usr/sbin/dumpadm -i 69*f6e214c7SGavin Maltbyfi 70*f6e214c7SGavin Maltby 71a227b7f4Shs24103rootiszfs=0 72a227b7f4Shs24103# get the fstype of root 73a227b7f4Shs24103readmnttab / </etc/mnttab 74a227b7f4Shs24103if [ "$fstype" = zfs ] ; then 75a227b7f4Shs24103 rootiszfs=1 76e7cbe64fSgw25295 dump_setup 77a227b7f4Shs24103fi 78a227b7f4Shs24103 797c478bd9Sstevel@tonic-gate# 80e7cbe64fSgw25295# Add physical swap. 81e7cbe64fSgw25295# 82e7cbe64fSgw25295/sbin/swapadd -1 83e7cbe64fSgw25295 84e7cbe64fSgw25295# 857c478bd9Sstevel@tonic-gate# Check and remount the / (root) file system. 867c478bd9Sstevel@tonic-gate# For NFS mounts, force the llock option on. 877c478bd9Sstevel@tonic-gate# 88a227b7f4Shs24103if smf_is_globalzone && [ $rootiszfs = 0 ]; then 897c478bd9Sstevel@tonic-gate readvfstab / < $vfstab 907c478bd9Sstevel@tonic-gate checkfs $fsckdev $fstype $mountp || exit $SMF_EXIT_ERR_FATAL 917c478bd9Sstevel@tonic-gate checkopt "llock" $mntopts 927c478bd9Sstevel@tonic-gate mntopts='remount' 937c478bd9Sstevel@tonic-gate 947c478bd9Sstevel@tonic-gate [ -n "$otherops" ] && mntopts="${mntopts},${otherops}" 957c478bd9Sstevel@tonic-gate [ "$fstype" = nfs ] && mntopts="${mntopts},llock" 967c478bd9Sstevel@tonic-gate 977c478bd9Sstevel@tonic-gate # if root dev is a read-only metadevice then fail 987c478bd9Sstevel@tonic-gate case $special in 997c478bd9Sstevel@tonic-gate /dev/md/dsk/*) 1007c478bd9Sstevel@tonic-gate dd if=/dev/null of=$special count=0 >/dev/null 2>&1 || 1017c478bd9Sstevel@tonic-gate exit $SMF_EXIT_ERR_FATAL 1027c478bd9Sstevel@tonic-gate ;; 1037c478bd9Sstevel@tonic-gate esac 1047c478bd9Sstevel@tonic-gate 1057c478bd9Sstevel@tonic-gate mountfs -m $mountp $fstype $mntopts - || exit $SMF_EXIT_ERR_FATAL 1067c478bd9Sstevel@tonic-gatefi 1077c478bd9Sstevel@tonic-gate 1087c478bd9Sstevel@tonic-gate# 1097c478bd9Sstevel@tonic-gate# Check and remount the /usr file system (formerly mounted read-only). 110a227b7f4Shs24103# Unless root is zfs, in which case we've already mounted /usr read-write 1117c478bd9Sstevel@tonic-gate# 112a227b7f4Shs24103if [ "$rootiszfs" = 0 ] ; then 1137c478bd9Sstevel@tonic-gate readvfstab /usr < $vfstab 1147c478bd9Sstevel@tonic-gate if [ "$mountp" ]; then 1157c478bd9Sstevel@tonic-gate if [ "$fstype" = cachefs ]; then 1167c478bd9Sstevel@tonic-gate mountfs -O $mountp cachefs $mntopts $special || 1177c478bd9Sstevel@tonic-gate exit $SMF_EXIT_ERR_FATAL 1187c478bd9Sstevel@tonic-gate else 1197c478bd9Sstevel@tonic-gate checkopt ro $mntopts 1207c478bd9Sstevel@tonic-gate if [ "x$option" != xro ]; then 1217c478bd9Sstevel@tonic-gate checkfs $fsckdev $fstype $mountp || 1227c478bd9Sstevel@tonic-gate exit $SMF_EXIT_ERR_FATAL 1237c478bd9Sstevel@tonic-gate if [ "x$mntopts" != x- ]; then 1247c478bd9Sstevel@tonic-gate mntopts="remount,$mntopts" 1257c478bd9Sstevel@tonic-gate else 1267c478bd9Sstevel@tonic-gate mntopts="remount" 1277c478bd9Sstevel@tonic-gate fi 1287c478bd9Sstevel@tonic-gate 1297c478bd9Sstevel@tonic-gate # if usr dev is a read-only metadevice then fail 1307c478bd9Sstevel@tonic-gate case $special in 1317c478bd9Sstevel@tonic-gate /dev/md/dsk/*) 1327c478bd9Sstevel@tonic-gate dd if=/dev/null of=$special count=0 \ 1337c478bd9Sstevel@tonic-gate >/dev/null 2>&1 || exit $SMF_EXIT_ERR_FATAL 1347c478bd9Sstevel@tonic-gate ;; 1357c478bd9Sstevel@tonic-gate esac 1367c478bd9Sstevel@tonic-gate 1377c478bd9Sstevel@tonic-gate mountfs - /usr $fstype $mntopts - || 1387c478bd9Sstevel@tonic-gate exit $SMF_EXIT_ERR_FATAL 1397c478bd9Sstevel@tonic-gate fi 1407c478bd9Sstevel@tonic-gate fi 1417c478bd9Sstevel@tonic-gate fi 142a227b7f4Shs24103fi 1437c478bd9Sstevel@tonic-gate 1447c478bd9Sstevel@tonic-gate# 1457c478bd9Sstevel@tonic-gate# Check and mount the /usr/platform file system. This should only be 1467c478bd9Sstevel@tonic-gate# present when a SunOS 5.5 (Solaris 2.5) or greater client is being 1477c478bd9Sstevel@tonic-gate# administered by a SunOS 5.4 or less host. 1487c478bd9Sstevel@tonic-gate# 1497c478bd9Sstevel@tonic-gatereadvfstab /usr/platform < $vfstab 1507c478bd9Sstevel@tonic-gateif [ "$mountp" ]; then 1517c478bd9Sstevel@tonic-gate checkfs $fsckdev $fstype $mountp || exit $SMF_EXIT_ERR_FATAL 1527c478bd9Sstevel@tonic-gate mountfs - $mountp $fstype $mntopts - || exit $SMF_EXIT_ERR_FATAL 1537c478bd9Sstevel@tonic-gatefi 1547c478bd9Sstevel@tonic-gate 1557c478bd9Sstevel@tonic-gate# 1567c478bd9Sstevel@tonic-gate# Mount the fd file systems if mount point exists. 1577c478bd9Sstevel@tonic-gate# 1587c478bd9Sstevel@tonic-gatereadvfstab /dev/fd < $vfstab 1597c478bd9Sstevel@tonic-gateif [ "$mountp" -a -d /dev/fd ]; then 1607c478bd9Sstevel@tonic-gate mountfs - /dev/fd - - - || exit $SMF_EXIT_ERR_FATAL 1617c478bd9Sstevel@tonic-gatefi 1627c478bd9Sstevel@tonic-gate 1633b133becSGangadhar Mylapuramif [ -f "${UPDATEFILE}" ]; then 1643b133becSGangadhar Mylapuram /usr/sbin/bootadm update-archive 1653b133becSGangadhar Mylapuram if [ $? != 0 ]; then 1663b133becSGangadhar Mylapuram cecho "" 1673b133becSGangadhar Mylapuram cecho "WARNING: Automatic update of the boot archive failed." 16829db4766SGangadhar Mylapuram cecho "Update the archives using 'bootadm update-archive'" 1693b133becSGangadhar Mylapuram cecho "command and then reboot the system from the same device that" 1703b133becSGangadhar Mylapuram cecho "was previously booted." 1713b133becSGangadhar Mylapuram cecho "" 1723b133becSGangadhar Mylapuram exit $SMF_EXIT_ERR_FATAL 1733b133becSGangadhar Mylapuram fi 1743b133becSGangadhar Mylapuram rm -f $UPDATEFILE 1753b133becSGangadhar Mylapuram bootcmd=`/usr/sbin/eeprom bootcmd | /usr/bin/sed -e 's#bootcmd=##g'` 1763b133becSGangadhar Mylapuram if [ `uname -p` = "i386" ]; then 1773b133becSGangadhar Mylapuram /usr/sbin/reboot -f dryrun 1783b133becSGangadhar Mylapuram if [ $? = 0 ]; then 1793b133becSGangadhar Mylapuram /usr/sbin/reboot -f -- "$bootcmd" 1803b133becSGangadhar Mylapuram exit $SMF_EXIT_OK 1813b133becSGangadhar Mylapuram fi 182abcc7ef9SGangadhar Mylapuram boot_prop=`/usr/sbin/svccfg -s svc:/system/boot-config:default listprop config/auto-reboot-safe | \ 1833b133becSGangadhar Mylapuram /usr/bin/nawk '{ print $3}'` 1843b133becSGangadhar Mylapuram if [ "$boot_prop" != "true" ]; then 1853b133becSGangadhar Mylapuram cecho "" 1863b133becSGangadhar Mylapuram cecho "WARNING: Reboot required." 1873b133becSGangadhar Mylapuram cecho "The system has updated the cache of files (boot archive) that is used" 1883b133becSGangadhar Mylapuram cecho "during the early boot sequence. To avoid booting and running the system" 1893b133becSGangadhar Mylapuram cecho "with the previously out-of-sync version of these files, reboot the" 1903b133becSGangadhar Mylapuram cecho "system from the same device that was previously booted." 1913b133becSGangadhar Mylapuram cecho "" 1923b133becSGangadhar Mylapuram exit $SMF_EXIT_ERR_FATAL 1933b133becSGangadhar Mylapuram else 1943b133becSGangadhar Mylapuram /usr/sbin/reboot -p 1953b133becSGangadhar Mylapuram exit $SMF_EXIT_OK 1963b133becSGangadhar Mylapuram fi 1973b133becSGangadhar Mylapuram fi 1983b133becSGangadhar Mylapuram /usr/sbin/reboot -- "$bootcmd" 1993b133becSGangadhar Mylapuramfi 2003b133becSGangadhar Mylapuram 2017c478bd9Sstevel@tonic-gateexit $SMF_EXIT_OK 202