#!/sbin/sh -
# @(#)src/cmd/vxvm/solaris/support/vxroot.sh	3.1.1.3 07/23/97 17:00:09 - 
#ident	"@(#)vxvm:src/cmd/vxvm/solaris/support/vxroot.sh	3.1.1.3"

# Copyright(C)1997 VERITAS Software Corporation.  ALL RIGHTS RESERVED.
# UNPUBLISHED -- RIGHTS RESERVED UNDER THE COPYRIGHT
# LAWS OF THE UNITED STATES.  USE OF A COPYRIGHT NOTICE
# IS PRECAUTIONARY ONLY AND DOES NOT IMPLY PUBLICATION
# OR DISCLOSURE.
# 
# THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND
# TRADE SECRETS OF VERITAS SOFTWARE.  USE, DISCLOSURE,
# OR REPRODUCTION IS PROHIBITED WITHOUT THE PRIOR
# EXPRESS WRITTEN PERMISSION OF VERITAS SOFTWARE.
# 
#               RESTRICTED RIGHTS LEGEND
# USE, DUPLICATION, OR DISCLOSURE BY THE GOVERNMENT IS
# SUBJECT TO RESTRICTIONS AS SET FORTH IN SUBPARAGRAPH
# (C) (1) (ii) OF THE RIGHTS IN TECHNICAL DATA AND
# COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013.
#               VERITAS SOFTWARE
# 1600 PLYMOUTH STREET, MOUNTAIN VIEW, CA 94043

: ${VOLROOT_DIR:=$__VXVM_ROOT_DIR}
. ${VOL_SCRIPTS_LIB:-$VOLROOT_DIR/usr/lib/vxvm/lib}/vxcommon

[ $# -eq 1 ] || {
	egettxt 'Usage: vxroot rootdisk' vxvmshm:469 >&2
	exit 1
}
rootdisk=$1

unroot=no

[ -d $STATEDIR ] || volmkdirs

bail()
{
	echo ""
	egettxt "The Volume Manager has failed to setup your boot disk." \
		vxvmshm:322
	if [ $unroot = yes ]; then
		egettxt "Restoring original configuration..." vxvmshm:288
		vxunroot
	fi
	rm -f $rootfile
	voladm_continue
	quit 30
}

if [ -d $rootfile ]; then
	echo ""
	egettxt "It appears that you are already running root volumes." \
		vxvmshm:212
	voladm_yorn -M vxvmshm:114 "Continue anyway" n || quit 10
fi

## save all the files listed in vxroot.files.sh
echo ""

egettxt \
"The Volume Manager will now set up your Boot Disk as a managed disk." vxvmshm:328
echo ""


if [ ! -f $rootsvfile ]; then
	egettxt "Saving original configuration..." vxvmshm:290
	xcmd rm -rf $SAVEDIR
	xcmd mkdir -p $SAVEDIR
	xcmd cd ${VOLROOT:-/}
	xcmd find `cat $VOL_SCRIPTS_LIB/vxroot.files` -depth -print > $tmpfile1
	xcmd cpio -pdum $SAVEDIR < $tmpfile1
fi

unroot=yes

dogi_device_slice $rootdisk 0 rootdevice
dogi_slice_rawpath $rootdevice rootpath

get_drv_list $rootpath > $tmpfile1
if [ -s $tmpfile1 ] ; then
	cat $tmpfile1 | while read drv; do
		forceload_drv $drv
	done
	forceload_drv sd
	forceload_drv ssd
	forceload_drv sf
	forceload_drv pln
	forceload_drv soc
	forceload_drv socal
else
	egettxt "VxVM Can't determine root disk drivers" vxvmshm:501
	bail
fi

chroot_to_vol

if [ $? -ne 0 ] ; then
	egettxt "VxVM Can't make rootdev entry in /etc/system file" vxvmshm:502
	bail
fi

touch $rootfile

quit 0
