	 kv w4w4by name         by name         BUILD           d   	kH      A                                                ./               A          A          
k^  m          E  w4w4w4           E      ./lpp_name               m          m          4 R S bos.sysmgt {
bos.sysmgt.nim.spot 4.3.0.2 01 N U en_US Network Install Manager - SPOT
[
*ifreq bos.rte.install (4.3.0.0) 4.3.0.3
%
/usr/lib/boot/network 48
/usr/lpp/SAVESPACE 48
/usr/lib/objrepos 8
INSTWORK 56 16
%
%
%
IX73385  2 Diagnostics does not perform ELA in NIM environment
IX73526  13 ATM network install
%
]
}
   	k\      A                                                ./usr            A          A          
k{      A                                                ./usr/lpp                A          A          k      A                                                ./usr/lpp/bos.sysmgt/bos.sysmgt.nim.spot/4.3.0.2                 A          A          k t m            w4w4w4                 ./usr/lpp/bos.sysmgt/bos.sysmgt.nim.spot/4.3.0.2/liblpp.a                m          m          <aiaff>
2502        0           68          1540        0           22          190         0           885947836   300         300         644         9   productid `
bos.sysmgt 5765-C3403
269         582         68          885947897   300         300         644         29  bos.sysmgt.nim.spot.copyright `
 Licensed Materials - Property of IBM

 5765C3403
   (C) Copyright International Business Machines Corp. 1993, 1997.

 All rights reserved.
 US Government Users Restricted Rights - Use, duplication or disclosure
 restricted by GSA ADP Schedule Contract with IBM Corp.

   474         1176        190         886011649   300         300         644         29  bos.sysmgt.nim.spot.inventory `
/usr/lib/boot/network/rc.diag:
          owner = root
          group = system
          mode = 555
          type = FILE
          class = apply,inventory,bos.sysmgt.nim.spot
          size = 4354
          checksum = "01003     5 "

/usr/lib/boot/network/rc.dd_boot:
          owner = root
          group = system
          mode = 555
          type = FILE
          class = apply,inventory,bos.sysmgt.nim.spot
          size = 12920
          checksum = "46205    13 "

67          1360        582         886011649   300         300         644         24  bos.sysmgt.nim.spot.size`
/usr/lib/boot/network 48
/usr/lpp/SAVESPACE 48
/usr/lib/objrepos 8
   65          1540        1176        886011649   300         300         644         22  bos.sysmgt.nim.spot.al`
./usr/lib/boot/network/rc.diag
./usr/lib/boot/network/rc.dd_boot
   841         2502        1360        886011649   300         300         644         27  bos.sysmgt.nim.spot.fixdata `
fix:
	name = IX73385
	abstract = does not perform ELA in NIM environment
	type = f
	filesets = "bos.diag.util:4.3.0.2\n\
bos.sysmgt.nim.spot:4.3.0.1\n\
"
	symptom = " ON nodes that do not have CDROM drives, the customer cannot\n\
 analzye Machine Check errors on RSPC and CHRP systems.\n\
"

fix:
	name = IX73526
	abstract = ATM network install
	type = f
	filesets = "bos.msg.en_US.rte:4.3.0.1\n\
bos.rte.boot:4.3.0.1\n\
bos.sysmgt.nim.client:4.3.0.2\n\
bos.sysmgt.nim.master:4.3.0.1\n\
devices.base.rte:4.3.0.1\n\
devices.chrp.base.rte:4.3.0.1\n\
devices.mca.8f66.ucode:4.3.0.1\n\
devices.mca.8f67.com:4.3.0.1\n\
devices.mca.8f67.ucode:4.3.0.2\n\
devices.mca.8f7f.ucode:4.3.0.2\n\
devices.pci.14105300.rte:4.3.0.1\n\
devices.pci.14107c00.com:4.3.0.2\n\
devices.rspc.base.rte:4.3.0.1\n\
"
	symptom = " no symptom - adding new function\n\
"

   230         0           1540        0           0           0           0           0   `
6           68          190         582         1176        1360        1540        productid bos.sysmgt.nim.spot.copyright bos.sysmgt.nim.spot.inventory bos.sysmgt.nim.spot.size bos.sysmgt.nim.spot.al bos.sysmgt.nim.spot.fixdata tLkP  m            w444          ä        ./usr/lib/boot/network/rc.diag           m          m          # @(#)78	1.19  src/bos/usr/lib/boot/network/rc.diag.sh, cmddiag, bos430, n9751A5 12/4/97 08:59:19
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# bos430 src/bos/usr/lib/boot/network/rc.diag.sh 1.19 
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1993,1997 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#
#   COMPONENT_NAME: CMDDIAG
#
#   FUNCTIONS: 
#		mount_from_list
#
#   ORIGINS: 27
#
#
#   (C) COPYRIGHT International Business Machines Corp. 1993, 1996
#   All Rights Reserved
#   Licensed Materials - Property of IBM
#   US Government Users Restricted Rights - Use, duplication or
#   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
#
#
# This script is to be run as a "dot" script from within rc.boot only.
# Function: BOS installation configuration on network booted machine.
#

mount_from_list()
{
${NIM_DEBUG}

	# Mount anything else from the info file
	# format of each stanza is:
	#		<hostname>:<remote dir>:<local mntpnt>
	if [ -n "${NIM_MOUNTS}" ]
	then
		${SHOWLED} 0x610
		OIFS="$IFS"
		for mount_args in ${NIM_MOUNTS}
		do
			IFS=':'
			set -- ${mount_args}
			IFS="$OIFS"

			# make sure local mount point exists
			if [ ! -d "${3}" ]
			then
				/SPOT/usr/bin/mkdir -p ${3} || loopled 0x625
			fi

			mount $1:$2 $3 || loopled 0x611

		done
	fi
}

##################### MAIN ########################
#
# -----------------------  PHASE ONE
#
${NIM_DEBUG}

case "$PHASE" in
	1)
	# update the Mstate
	/SPOT/usr/sbin/nimclient -S booting

	mount_from_list
	${SHOWLED} 0x622
set +x
	/SPOT/usr/bin/rm -fr /etc/init /usr/bin /usr/lib/boot /usr/lib/drivers \
		/usr/lib/microcode /usr/lib/netsvc /usr/sbin

	/SPOT/usr/bin/ln -s /SPOT/usr/* /usr
	ln -fs /SPOT/usr/lib/!(libbind.a|libc.a|libs.a) /usr/lib
	ln -s /SPOT/usr/lib/boot/ssh /etc/init
${NIM_DEBUG}

	strload -f /dev/null
	cfgmgr -f -v
	${SHOWLED} 0x622
set +x
	# now link to the full databases
	ln -fs /usr/lib/objrepos/* /etc/objrepos
	ln -s /SPOT/usr/lib/methods/cfgcon /SPOT/usr/lib/methods/startlft \
		/SPOT/usr/lib/methods/starttty /usr/lib/methods
${NIM_DEBUG}

	# link necessary methods from SPOT
	/SPOT/usr/lib/boot/network/link_methods
	cfgmgr -s -v
	ln -s /SPOT/usr/lib/methods/* /usr/lib/methods

	${SHOWLED} 0x622
	;;

#
# -----------------------  PHASE TWO
#
	2)

set +x
	unset fd_invoker loopled
	shift $#

	rm -f /sbin/rc.boot

	# configure the console 
	/usr/lib/methods/cfgcon

	${SHOWLED} 0xfff

	# copy the empty diagnostic object classes over to
	# the RAM filesystem from the remotely mounted system.
	for i in CDiagDev TMInput MenuGoal FRUB FRUs DAVars CDiagAtt CDiagAtt.vc
	do
		cp /usr/lpp/diagnostics/obj/$i /etc/objrepos/$i
	done
	mkdir -p /etc/lpp/diagnostics/data

	# If Graphics console, need rcm started
	/usr/lib/methods/startrcm >/dev/console 2>&1
	if [ -x /usr/lib/methods/cfggxme ]
	then
		/usr/lib/methods/cfggxme -l gxme0 >/dev/console 2>&1
	fi
	/usr/lib/methods/cfgrcm -l rcm0 >/dev/console 2>&1

        #
        # RSPC and CHRP architecture only - start errdemon, sleep, then kill it. 
        # This logs any errors that might have occurred since previous boot.
        #
        architecture=`bootinfo -a`
        if [ "$architecture" = "3" -o "$architecture" = "2" ] ; then
	
		echo Starting errdemon
		# Copy over files needed for errdemon.
		cp /SPOT/usr/lpp/bos/inst_root/etc/objrepos/SWservAt /etc/objrepos
		cp /SPOT/usr/lpp/bos/inst_root/etc/objrepos/SWservAt.vc /etc/objrepos
		cp /SPOT/usr/lpp/bos/inst_root/var/adm/ras/errtmplt /var/adm/ras 
		cp /SPOT/usr/lpp/bos/inst_root/var/adm/ras/codepoint.cat /var/adm/ras 

                /SPOT/usr/lib/errdemon -s 16384 -B 8192 >/dev/null 2>&1
                /usr/bin/sleep 2
                errdemonpid=`/usr/bin/ps -ef -o ruser,pid,ppid=parent,args | cut -c 1-90 | awk '$4~/^.*\/errdemon$/||$4~/errdemon/{print $2}'`
                if [ -n "$errdemonpid" ] ; then
                        /usr/bin/kill $errdemonpid              >/dev/null 2>&1
                fi
        fi

	# execute the diagnostic pretests before running diag.
	echo Starting Diagnostics
	exec /usr/lpp/diagnostics/bin/diagsrv -pb </dev/console >/dev/console 2>&1
	;;
esac
erty ok  m          x2  w4)4)4          &  x2      ./usr/lib/boot/network/rc.dd_boot                m          m          # @(#)18  1.19.1.12  src/bos/usr/lib/boot/network/rc.dd_boot.sh, cmdnim, bos430, n984A2 1/14/98 11:48:15
# IBM_PROLOG_BEGIN_TAG 
# This is an automatically generated prolog. 
#  
# bos430 src/bos/usr/lib/boot/network/rc.dd_boot.sh 1.19.1.12 
#  
# Licensed Materials - Property of IBM 
#  
# (C) COPYRIGHT International Business Machines Corp. 1993,1994 
# All Rights Reserved 
#  
# US Government Users Restricted Rights - Use, duplication or 
# disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 
#  
# IBM_PROLOG_END_TAG 
#
#   COMPONENT_NAME: CMDNIM
#
#   FUNCTIONS: make_dataless
#
#   ORIGINS: 27
#
#
#   (C) COPYRIGHT International Business Machines Corp. 1993, 1996
#   All Rights Reserved
#   Licensed Materials - Property of IBM
#   US Government Users Restricted Rights - Use, duplication or
#   disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
#
#
# This script is to be run as a "dot" script from within rc.boot only.
# Function: diskless/dataless configuration

nim_status() {
	# update the "info" attribute on the NIM master
	/usr/sbin/nimclient -o change -a force=yes -a ignore_lock=yes -a info="$*"
}

fatal_error() {
	typeset led=${1}
	shift
	nim_status "${*:-fatal network boot error}"
	loopled ${led}
}

config_network() {
#
# Function: configure network
#

	${NIM_DEBUG}
	ifconfig lo0 inet 127.0.0.1 up
	ifconfig $LDEV inet $CLIENT_IPADDR up $SUBMASK
	[ "$?" -ne 0 ] && return 1

	# set up route tables
	[ "$BOOT_GATE_IP" ] && route -v add $BOOT_SERV_IP $BOOT_GATE_IP
	[ -n "${ROUTES}" ] && {
		for route_args in $ROUTES
		do
			OIFS="$IFS"; IFS=':'
			set -- $route_args
			IFS="$OIFS"
			# verify that there are 3 arguments
			[ $# -ne 3 ] && continue
			route -v add -net $1 -netmask $2 $3 || return 2
		done
	}

	return 0
	# End of config_network function.
}

DEFAULT_DISK=hdisk0	# the default physical disk to use for local paging

make_dataless() {
${NIM_DEBUG}

	nim_status "creating a local paging device"
	${SHOWLED} 0x616
	[ -z "${DTLS_VG_DISK}" ] && DTLS_VG_DISK=${DEFAULT_DISK}

	# clear the ipl record on this disk
	mkboot -c -d /dev/${DTLS_VG_DISK}

	# Determine largest physical partition size required
	# by the target disks.
	LRGST_PRTN_SZ=$(bootinfo -P 0 -s ${DTLS_VG_DISK})

	VGNAME=$(mkvg -f -d 8 -s ${LRGST_PRTN_SZ} ${DTLS_VG_DISK})

	[ $? != 0 ] && fatal_error 0x617 "mkvg failed on ${DTLS_VG_DISK}"
	varyonvg -n ${VGNAME}
	[ $? != 0 ] && fatal_error 0x617 "varyonvg failed for ${VGNAME}"
	syncvg -v ${VGNAME} &
	syncvg1_pid=$!
	cp /mnt/etc/swapspaces /etc
	[ $? != 0 ] && fatal_error 0x617 "copy of swapspaces failed"

	# Calculate paging space using largest number of partitions required
	# by target disk and the paging space specified OR the size
	# of real memory.
	if [ -n "${DTLS_PAGING_SIZE}" ]
	then
		# Use the paging space specified.  It was specified, we assume,
		# in 4Meg partitions so we'll calculate the value in bytes
		# for subsequent calculations.
		(( TMP_PGSP_MEG=${DTLS_PAGING_SIZE}*4096 ))
	else
		# No paging space specified.
		# Use size of real memory for page space calculation.
		(( TMP_PGSP_MEG=$(bootinfo -r) ))
	fi
	(( DTLS_PAGING_SIZE=${TMP_PGSP_MEG}/(${LRGST_PRTN_SZ}*1024) ))

	SWAP_DEV=$(mkps -s${DTLS_PAGING_SIZE} -n -a ${VGNAME})
	[ $? != 0 ] && fatal_error 0x617 "mkps failed on ${VGNAME}"
	cp /etc/swapspaces /mnt/etc/swapspaces
	[ $? != 0 ] && fatal_error 0x617 "restore copy of swapspaces failed"

	[ -n "${DTLS_LOCAL_FS}" ] && {
	# if this variable is not null, then we need to create /home
	# and/or /tmp.  Remember that the NFS /usr filesystem is mounted
	# over /usr, but that the NFS root filesystem is mounted over /mnt.
	# That is why we must copy /etc/filesystem to the ram filesystem
	# and then back.  This will only work for filesystems that already
	# have the mountpoints in the NFS root filesystem.
		nim_status "creating a local /home and/or /tmp"
		cp /mnt/etc/filesystems /etc
		cp /mnt/sbin/helpers/v3fshelper /sbin/helpers
		for fs in ${DTLS_LOCAL_FS}
		do
			case ${fs} in
				home)	FS_SIZE=8192;;
				tmp)	FS_SIZE=16384;;
				*)	continue;;
			esac
			crfs -v jfs -m /${fs} -g ${VGNAME} -A yes -p rw \
				-a size=${FS_SIZE}
			if [ ${fs} = tmp ]
			then
				mount /tmp
				chmod a-s /tmp
				chmod 1777 /tmp
				chown 2:2 /tmp
				umount /tmp
			fi
		done
		cp /etc/filesystems /mnt/etc
	}

	# Copy LVM information to the hardfile
	cd /
	find /etc/vg -print | cpio -updmv /mnt
	[ $? != 0 ] && fatal_error 0x617 "failed to copy lvm info to hardfile"
	# Make sure we save base cust info
	[[ -s /etc/basecust ]] && cp /etc/basecust /mnt/etc/basecust

	# inform NIM that this has succeeded
	/usr/sbin/nimclient -R success
}

#
# -----------------------  PHASE ONE
#
${NIM_DEBUG}

case "$PHASE" in
	1)
	# update the Mstate
	ln -s /SPOT/usr/sbin/nimclient /usr/sbin/nimclient
	ln -s /SPOT/usr/bin/chmod /usr/bin/chmod
	ln -s /SPOT/usr/bin/alog /usr/bin/alog

	# NIM's shared library is not needed until now so it was not included
	# in the boot image.  Link the library from the SPOT to the RAM
	# filesystem.
	ln -s /SPOT/usr/lib/libnim.a /usr/lib/libnim.a
	/usr/sbin/nimclient -S booting

set +x
	/SPOT/usr/bin/rm /lib /sbin/helpers/v3fshelper /usr/bin/tftp
	cp /SPOT/usr/sbin/rmdev /usr/sbin
	cp /SPOT/usr/bin/rm /usr/bin
	/SPOT/usr/bin/mkdir -p /lib/netsvc
	# we removed /lib, which was a symlink to /usr/lib, and replaced it
	# with a real directory.  now we populate that real directory with
	# hard links to the files in /usr/lib.  this enables us to access the
	# libraries in the RAM filesystem when /usr is overmounted.  This
	# is a good thing because we do not want to have multiple copies
	# of the same library loaded into memory during boot!
	ln /usr/lib/* /lib
	ln /usr/lib/netsvc/* /lib/netsvc
${NIM_DEBUG}
	${SHOWLED} 0x610
	mount -o llock ${ROOT} /mnt
	[ $? -ne 0 ] && \
		fatal_error 0x611 "unable to NFS mount the root directory at ${ROOT}"
	${SHOWLED} 0x612

	# copy the niminfo file into the root
	cp /SPOT/niminfo /mnt/etc/niminfo

	if [ -s /mnt/etc/basecust ]
	then
		cp /mnt/etc/basecust /etc
		cp /SPOT/usr/lib/boot/restbase /usr/sbin
		cp /SPOT/usr/bin/uncompress /usr/bin
	fi
	ln /usr/sbin/mount /usr/sbin/umount
	ln /usr/sbin/mount /etc/umount
	nim_status "network boot phase 1"
	umount allr

	# unconfigure network services and devices and let cfgmgr do it the
	# right way.  this also resets device information to what it was
	# before the system was shutdown if /etc/basecust is non-null
	ifconfig ${LDEV} down
	ifconfig ${LDEV} detach
	ifconfig lo0 down

	route -f


	# If there was a basecust file, then need to unconfigure all of the
	# devices in the hardware tree so they can be configured using the
	# basecust data.
	if [ -s /etc/basecust ]
	then
 		rmdev -l sys0 -R
		restbase -o /etc/basecust
		rm -f /etc/basecust /usr/bin/restbase /usr/bin/uncompress
	fi
	rm -f /usr/sbin/rmdev

	# run config manager to configure only the network boot devices and
	# their parents.  we are limited to only those devices because the
	# boot RAM filesystem contains a subset of device configuration files
	cfgmgr -f -v

	# check the physical boot device name again, in case the basecust data
	# added an entry that conflicts with what was there before basecust
	PHY_BOOT_DEV=`bootinfo -b`
	pdev_to_ldev

	${SHOWLED} 0x606
	config_network
	case $? in
		1) fatal_error 0x607 "unable to configure the primary network interface";;
		2) fatal_error 0x613 "unable to add routes";;
	esac
	rm -fr /usr/lib/drivers /usr/lib/methods/!(showled) /usr/lib/microcode \
		/usr/sbin/cfgmgr /usr/sbin/ifconfig /usr/sbin/route
${NIM_DEBUG}

	LIBPATH=/lib; export LIBPATH

	${SHOWLED} 0x610
	mount -r ${SPOT} /usr
	[ $? -ne 0 ] && \
		fatal_error 0x611 "unable to NFS mount the SPOT at location ${SPOT}"
	strload -f /dev/null
	# run cfgmgr to configure remaining devices now that we have the
	# device support in /usr from the remotely mounted filesystem
	cfgmgr -f -v

	mount -o llock ${ROOT} /mnt
	[ $? -ne 0 ] && \
		fatal_error 0x611 "unable to NFS mount root directory at location ${ROOT}"

	# configure paging - local or NFS network

	# the grep searches for lines that do not have an asterisk as the
	# first character and contain "/dev".  the sed deletes the lines that
	# contain "swapnfs" and strips away all characters preceding the "/dev"
	local_swap=$(grep "^[^*].*/dev" /mnt/etc/swapspaces | \
		sed -e "/.*\/dev\/swapnfs.*/d; s/.*\(\/dev.*\)/\1/")

	# Start local paging
	if [ -n "$local_swap" ]
	then
		nim_status "configuring local paging device"
		for paging in $local_swap
		do
			${SHOWLED} 0x614
			# get the volume group name
			name=${paging##*/}
			vgname=$(odmget -qname=$name CuDv | \
				sed -n "s/.*parent *= *\"\(.*\)\"/\1/gp")
			if [ -z "$vgname" ]
			then
				${SHOWLED} 0x615
				continue
			fi

			# make the /dev entries which are found
			# in the client's root
			dev_vg=$(ls -l /mnt/dev/$vgname 2>/dev/null)
			if [ -n "$dev_vg" ]
			then
				if [ ! -c /dev/$vgname ]
				then
				# volume group not present yet
				# activate it

					# major number is field 5
					# minor is field 6
					set -- $dev_vg

					# remove the "," after
					# the major number
					major=$(echo $5 | sed -e "s/,//g")

					# make the /dev entry
					mknod /dev/$vgname c $major $6

					# varyon the volume group
					varyonvg -fn $vgname || ${SHOWLED} 0x615
					syncvg -v $vgname &
					syncvg2_pid=$!
				fi

				# make the paging device entry
				dev_ps=$(ls -l /mnt$paging)
				if [ -n "$dev_ps" ]
				then
					# major number is field 5
					# minor is field 6
					set -- $dev_ps

					# remove the "," after
					# the major number
					major=$(echo $5 | sed -e "s/,//g")

					# make the /dev entry
					mknod $paging b $major $6

					# check for local dump image
					# if present, upload it to the server
					BS=8192
					dump_info=/tmp/dump.info
					dump_mnt=/tmp/dump
					dump_file=${dump_mnt}/dump

					# is there a dump image to upload?
					sysdumpdev -z >${dump_info} 2>&1
					if [[ -n "${DUMP}" ]] && [[ -s ${dump_info} ]]
					then
						# dump info in this format:
						#		<total num bytes> <dump device>
						set -- $( cat ${dump_info} )
						num_bytes=${1}
						dump_device=${2}

						# how many blocks?
						(( num_blocks=num_bytes/BS ))
						(( (num_bytes%BS) > 0 )) && (( num_blocks=num_blocks+1 ))

						# mount the remote dump directory
						mkdir ${dump_mnt}
						if mount ${DUMP} ${dump_mnt}
						then
							# upload the dump image
							dd if=${dump_device} of=${dump_file} bs=${BS} \
								count=${num_blocks}

							unmount ${dump_mnt}
						fi
					fi

					# swapon the paging device
					swapon $paging || ${SHOWLED} 0x615
				else
					${SHOWLED} 0x615
				fi
			else
				${SHOWLED} 0x615
			fi

		done

		# Copy LVM information to the hardfile
		cd /
		find /etc/vg -print | cpio -updmv /mnt

	fi # local_swap

	# if the dataless conversion flag is set, call a function to do it
	[ -n "${NIM_MK_DATALESS}" ] && make_dataless

	remote_swap=$(grep "^[^*]remdev" /mnt/etc/swapspaces | \
		sed -e "s/.*= *\(.*\)/\1/")

	# Start NFS remote paging
	# configure the remote paging devices
	DEFAULT_IFS=$IFS
	for i in $remote_swap
	do
		nim_status "configuring remote paging device"
		${SHOWLED} 0x618
		IFS=':'
		set -- $i
		IFS=$DEFAULT_IFS
		SWAPHOST=$1
		SWAPFILE=$2
		SWAPDEV=${SWAPFILE##*/}

		if [ -z "$(odmget -qname=$SWAPDEV CuDv)" ]
		then
		# device doesn't exist - create it
			cat <<- EOF > /tmp/swapnfs
			CuDv:
			name = $SWAPDEV
			status = 0
			chgstatus = 1
			PdDvLn = swap/nfs/paging
			EOF

			odmadd /tmp/swapnfs

			# change the paging attributes
			/usr/lib/methods/chggen -l $SWAPDEV -a \
			"swapfilename=$SWAPFILE hostname=$SWAPHOST" || \
			${SHOWLED} 0x619
		fi

		/usr/lib/methods/cfgswpnfs -l $SWAPDEV || ${SHOWLED} 0x619
		swapon /dev/$SWAPDEV && RC=0 || ${SHOWLED} 0x619
	done # remote_swap

	${SHOWLED} 0x620

	# Copy special files to the hardfile
	/usr/lib/boot/mergedev

	# Copy ram disk repository customized data to disk
	cp /etc/objrepos/Cu* /mnt/etc/objrepos

	# copy the client's /etc/filesystems to the RAM filesystem
	cp /mnt/etc/filesystems /mnt/etc/hosts /etc

	# unmount all of the remote filesystems
	nim_status "network boot phase 2"

	# ensure we can access usr/lib after we mount the root.
	/usr/bin/ln -fs /../usr/lib /mnt/usr/lib

	wait $syncvg1_pid $syncvg2_pid

	/etc/umount -f allr
	;;

#
# -----------------------  PHASE TWO
#
	2)

	${SHOWLED} 0x610
	# change SHOWLED just in case the mount of / succeeds and the mount
	# of /usr fails because /usr will be empty
	SHOWLED=/../usr/lib/methods/showled; export SHOWLED
	mount -f -t dd_boot
	[ $? -ne 0 ] && fatal_error 0x611 "unable to mount -f -t dd_boot"

	slibclean	# clean up unused shared libraries
	SHOWLED=/usr/lib/methods/showled; export SHOWLED

	# set the client's hostname.  this makes NFS services happy.
	hostname ${NIM_HOSTNAME}

	${SHOWLED} 0x553

	nim_status "network boot phase 3"
	;;
esac
kFwaot/mergedev

	# Copy ram disk repository customized data to disk
	cp /etc/objrepos/Cu* /mnt/etc/objrepos

	# copy the client's /etc/filesystems to the RAM filesystem
	cp /mnt/etc/filesystems /mnt/etc/hosts /etc

	# unmount all of the remote filesystems
	nim_status "network boot phase 2"

	# ensure we can access usr/lib after we mount the root.
	/usr/bin/ln -fs /../usr/lib /mnt/usr/lib

	wait $syncvg1_pid $syncvg2_pid

	/etc/umount -f allr
	;;

#
# -----------------------  PHASE TWO
#
	2)

	${SHOWLED} 0x610
	# change SHOWLED just in case the mount of / succeeds and the mount
	# of /usr fails because /usr will be empty
	SHOWLED=/../usr/lib/methods/showled; export SHOWLED
	mount -f -t dd_boot
	[ $? -ne 0 ] && fatal_error 0x611 "unable to mount -f -t dd_boot"

	slibclean	# clean up unused shared libraries
	SHOWLED=/usr/lib/methods/showled; export SHOWLED

	# set the client's hostname.  this makes NFS services happy.
	hostname ${NIM_HO