⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sysupd

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻
字号:
#!/bin/sh5##	sysupd - coordinate system update##			Copyright (c) 1989 by#		Digital Equipment Corporation, Maynard, MA#			All rights reserved.##	This software is furnished under a license and may be used and#	copied  only  in accordance with the terms of such license and#	with the  inclusion  of  the  above  copyright  notice.   This#	software  or  any  other copies thereof may not be provided or#	otherwise made available to any other person.  No title to and#	ownership of the software is hereby transferred.		##	The information in this software is subject to change  without#	notice  and should not be construed as a commitment by Digital#	Equipment Corporation.					##	Digital assumes no responsibility for the use  or  reliability#	of its software on equipment which is not supplied by Digital.##	SCCSID = "@(#)sysupd	4.1	(ULTRIX)	7/2/90";##	000	21-jun-1989	jon wallace#	001	14-aug-1989	ccb#		qualified with new information from 8840 update#	002	17-oct-1989	ccb#		remove v3.0/3.1 specific codePATH="/install.tmp:/bin:/etc:/usr/ucb:/usr/bin:/usr/etc:."CDPATH=export CDPATH PATH# This procedure runs twice. First invocation is under is running under#  a shell being paged out of the /usr file system. It copies the shell#  into the / file system and execs itself after setting a flag.cd /case "$SYSUPD_CONTEXT" ingo)	;;*)	# rerun script with shell paged from /	cp /usr/bin/sh5 /	SYSUPD_CONTEXT=go	export SYSUPD_CONTEXT	TRACE=	case "$-" in	*x*)	TRACE=-x	esac	exec /sh5 $TRACE /sysupd $*	;;esacMTMP=/tmp/mtab$$PROG=$0RESTOREFILES="./bin/sh ./bin/sh5 ./etc/svc.conf ./bin/init	./install.tmp/compress ./install.tmp/rsh ./install.tmp/rcp	./install.tmp/grep ./install.tmp/whoami ./install.tmp/egrep	./install.tmp/getopt ./install.tmp/sleep ./install.tmp/setld	./install.tmp/tar ./install.tmp/dd ./install.tmp/depord	./install.tmp/usync ./install.tmp/fitset ./install.tmp/umerge	./install.tmp/udelta ./install.tmp/frm ./install.tmp/iff	./install.tmp/udetect ./vmunix ./.updprofile"UPDTMP=/usr/#updtmp: -Error#	Print an error message#Error(){	1>&2 echo "$PROG: $*"}: -InitDevice#	establish relationship to device##	given:	$1 - name of device from command line#	does:	establish UNIT and MEDIA information for DEVICE#	return:	VOIDInitDevice(){	DEVICE=$1	MEDIA=	UNIT=	case "$DEVICE" in	*::)	# DECnet, unsupported, leave MEDIA empty		;;	*: )	# InterNet		HOSTNAME=`hostname`		[ "$HOSTNAME" ] ||		{			Error "Hostname undefined"			return 1		}		UNIT=`Parse : $DEVICE`		MEDIA=inet		;;	*rmt*)	# looks like a tape device		UD=`expr $DEVICE : '.*\([0-9][0-9]*.\)'`		UNIT=/dev/nrmt$UD		DEVICE=$UNIT		[ -c $UNIT ] ||		{			Error "$DEVICE: No Such Device"			return 1		}		MEDIA=tape		;;	*)	# no match so far, maybe the device is a directory?		[ -d "$DEVICE" ] &&		{			UNIT=`(cd $DEVICE;pwd)`			DEVICE=$UNIT			MEDIA=disk			# what device is this on?			set -- `df $UNIT | awk 'NR == 3 {print $1, $NF}'`			DISKPART=$1			MOUNTPOINT=$2		}		;;	esac	[ "$MEDIA" ] ||	{		Error "$DEVICE: not supported for update"		return 1	}}: -InitFileSystems#	re-arrange mounts to accomodate use of ufs file systems only##	given:	nothing#	does:	dismount all file systems, remount ufs file systems#	return:	nothingInitFileSystems(){ (	cd /	umount -af && mount -a -t ufs	STAT=$?	# remount distribution if is disk and not already mounted	[ "$MEDIA" = disk -a ! -f $UNIT/ROOT ] &&	{		mount $DISKPART $MOUNTPOINT		STAT=$?	}	return $STAT) }: -Main#	Main Program#Main(){	[ "$#" = 1 ] ||	{		Error "Usage: $PROG <location>"		exit 1	}	DEVICE=$1	HOSTNAME=`hostname`	[ "$HOSTNAME" ] ||	{		Error "Hostname is not set"		exit 1	}	echo "$HOSTNAME" > /.hostname	InitDevice $DEVICE ||	{		Error "Cannot initialize distribution at $DEVICE"		exit 1	}	Warning ||	{		Error "update exiting at user request"		exit 1	}	InitFileSystems	mkdir $UPDTMP	(cd $UPDTMP		MediaRestore $MEDIA $UNIT $RESTOREFILES ||		{			Error "Restore Failed"			exit 1		}		ln -s $UPDTMP/install.tmp /install.tmp		[ -f /etc/svc.conf ] ||			mv etc/svc.conf /etc	)	# run setld -u	/$UPDTMP/bin/sh5 /install.tmp/setld -u $DEVICE ||	{		Error "Setld -u error"		exit 1	}	/$UPDTMP/bin/sh5 /install.tmp/setld -l $DEVICE ||	{		Error "Setld -l error"		exit 1	}	# the rest of this procedure is perilous	# disable the ability to come up	echo "Moving files:\c"	mv /etc/rc /etc/rc.UPD && echo " rc\c" &&	# drop in a new profile	mv /.profile /.realprofile &&	mv /$UPDTMP/.updprofile /.profile && echo " .profile\c" &&	mv /bin/sh /bin/sh.old &&	mv /$UPDTMP/bin/sh /bin/sh && echo " shell\c" &&	mv /bin/init /bin/init.old &&	mv /$UPDTMP/bin/init /bin/init && echo " init\c" &&	mv /vmunix /vmunix.old &&	mv /$UPDTMP/vmunix /vmunix && echo "vmunix." ||	{		echo		Error "FAILED"		exit 1	}	umount -a	sync;  sync;  sync	echo "	Your system will now halt. Perform what steps are needed to	reboot the system."	halt}: -MediaRestore#	restore requested files from current media##	given:	$1: media type#		$2: unit info#		$3 ->: files to restore#	does:	retore the named files from the appropriate places#	return:	nothingMediaRestore(){	case "$#" in	[12])		Error "MediaRestore($*): expects 3+ args, got $#"		return 1		;;	*)	MEDIA=$1		UNIT=$2		shift 2		LIST=$*	esac	case "$MEDIA" in	inet)	rsh $UNIT -l ris "/etc/getrisroot $HOSTNAME" | restore xf - $LIST		;;	tape)		mt -f $UNIT rew && mt -f $UNIT fsf 2 &&			dd if=$UNIT bs=20b | restore xf - $LIST		;;	disk)		dd if=$UNIT/ROOT bs=20b | restore xf - $LIST		;;	esac ||	{		Error "MediaRestore(): cannot restore $LIST"		return 1	}}: -Parse#Parse(){ (	IFS=$1	shift	echo $*) }Warning(){	echo "	WARNING:		You have chosen to perform an update installation of your	ULTRIX system. The update installation is an advanced procedure	which requires a thorough understanding of your system.		Be sure that you have perfomed full backups of your system	and that you have read and understood the update installation guide	and the release notes."	while :	do		echo "	Are you ready for the update to proceed (y/n)? \c"		read X		case "$X" in		[Yy])	return 0			;;		[Nn])	return 1		esac	done}[ "$SYSUPD_DEBUG" ] || Main $*

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -