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

📄 doconfig

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻
字号:
#!/bin/sh5## @(#)doconfig	4.4	(ULTRIX)	2/28/91## 009 - Jan, 1991 - Jon Wallace#	Removed the zic command from this script because of incompati-#	bility with the date command, and of the process used in this#	script.##	Changed date example to reflect the current year.## 008 - Aug, 1990 - Jon Wallace#	Put in functionality to allow bind hostnames as the system#	name.## 007 - Feb, 1990 - Jon Wallace#		Fixed Time problem by repositioning zic command.#		Restructured time zone entry by asking user for#		time *east* of Greenwich.## 006 - May, 1989 - Jon Wallace#		Added zic(8) support.## 005 - Mar, 1989 - Jon Wallace#		Changed hierarchy of directories for merged pool.#		Merged VAX and MIPS doconfig scripts into one.## 004 - Dec, 1988 - Jon Wallace#		* Added user interface for disk placement of swap, dump,#			etc, during interactive use on Pmax.#		* Added Console_type subroutine to remove UWS opition#			from config file, if machine is not worksystem.## 003 - May, 1987  - Donnie Cherng#		* Added the environment for the diskless.#		- p : If the root path is not /, give a full path root.#		- c : for a specific config file.#		- e : a edit script for the new config file.## 002 - Mar, 1987  - Tungning Cherng#		* Added the flag for installation use.#		-i : doconfig -i [sysname] [timezone day light saving area}#		-n : set for the sysname.#		-t : set for the date and time#		* Fix the time for the Non-EST USA area.## 001 - June, 1986 - Tung-Ning Cherng#		* Added the advanced installation flag.#		* system name can be mixed with upper and lower case.#		* Timezone for the area may be a negative number.##	Edited prompts on Aug. 5, 1986 by Al Wojtas## 000 - May, 1986 - Bob Fontaine#		Revised for V2.0 installation from V1.2########################################################################### Subroutines ################set -h  # hash subr references: Ticker - Put time stamps on screenTicker(){	(		while :		do			echo "    working ..... \c"			date			sleep 120		done	)&	TICKPID=$!}: Unticker - Stop time stamps to screenUnticker(){	[ -n "$TICKPID" ] &&	{		(		kill -15 $TICKPID		wait $TICKPID		TICKPID=		)&	}}: Getconfigname - Get the config name out of sysnameGetconfigname(){(	IFS=.	set $1	IFS=	echo $1 | dd conv=ucase 2>/dev/null)}######################################################################### Set Variables ##################MACHTYPE=`/bin/machine`case "$MACHTYPE" invax )	KERNELPATH="/sys/VAX"	CONFIGPATH="/sys/conf/vax"	;;mips)	KERNELPATH="/sys/MIPS"	CONFIGPATH="/sys/conf/mips"	;;esaccase "$ADVFLAG" in"" )	TMP="/tmp"	;;* )	TMP="/install.tmp"	;;esacPATH=/bin:/usr/bin:/usr/ucb:/etc:.export PATHumask 022trap 15LL=""CFLAG=0			# -c flagDTFLG=0			# day and time flagNAMEFLG=0		# sysname flagCONFKERN=1		# do the doconfigROOTPATH=/		# Rootpath is rootNEWCONFIG=true		# creates new config fileEDITOR=${EDITOR-ed}	# Editor is set by environment or `ed` by defaultUSAGE="Usage: $0 [-c config_file ] [-p path ][-e ed_script]"case $# in0 )	 # for the doconfig command	NAMEFLG=1; DTFLG=1	;;esacwhile test $# -gt 0do 	case $1 in	-i )	# for installation purpose		shift		SYSNAME=$1		shift		TIMEZONE=`echo $*`		CONFIGNAME=`Getconfigname $SYSNAME`		break		;;	-n )	# called system name for installation purpose		NAMEFLG=1		CONFKERN=0		break		;;	-t )	# called time date  for installation purpose		DTFLG=1		CONFKERN=0		break		;;	-c )	# config file name		CFLAG=1		CONFIGNAME=$2		shift; shift		NEWCONFIG=false		;;	-e )	#edit file script		EDITFILE=$2		shift; shift		;;	-p )	# Path for diskless		ROOTPATH=$2		shift; shift		;;	-? )		echo "$0: no such option"		echo $USAGE		exit 1		;;	* )			echo $USAGE		exit 1		;;	esacdonecase $CFLAG in1 )	[ -f $CONFIGPATH/$CONFIGNAME ] ||	{		echo "The config file $CONFIGPATH/$CONFIGNAME does not exist."		exit 1	} 	;;esacPWD=`/bin/pwd`case $NAMEFLG in1 )	#Set system name		echo "${LL} *** SYSTEM NAME SPECIFICATION *** "	while : true	do	    echo "Select the name of your system using alphanumeric characters. The first character must be a letter.   For example, tinker.${LL} Enter your system name:  \c"	    read SYSNAME	    SYSNAME=`echo $SYSNAME`	    check=`expr $SYSNAME : '\([a-zA-Z][a-zA-Z0-9.]*\)' 2> /dev/null`	    case $SYSNAME in	    "" )		continue ;;	    $check  ) ;;	    * )		echo "You specified $SYSNAME as your system name, which is not valid. Read the following prompt and this time type a valid system name:"		continue ;;	    esac	    CONFIGNAME=`Getconfigname $SYSNAME`	    echo "You selected ${SYSNAME} as the name of your system.Is this correct? (y/n) [y]: \c"	    read resp	    resp=`echo $resp`	    case $resp in		y* | Y* | "")			break	    		;;		*)			;;    	    esac	done	if test -s $CONFIGPATH/$CONFIGNAME	then	 	echo "A system with that name already exists. Replace it? (y/n) [n]: \c"	 	read resp		resp=`echo $resp`	 	case $resp in		[yY]* ) ;;		*)		    echo "Using existing $CONFIGPATH/$CONFIGNAME file. . ."		    cp $CONFIGPATH/$CONFIGNAME /tmp/$CONFIGNAME		    NEWCONFIG=false		    DTFLG=0		    ;;	 	esac	fi	echo "$SYSNAME $CONFIGNAME" > /tmp/realsysname	;;esaccase $DTFLG in1 )	# Set the system date	echo "${LL}*** DATE AND TIME SPECIFICATION *** "	while : true	do    		echo "The current date and time should be specified using the followingformat:	yymmddhhmmUse two digits for year (yy), month (mm), day (dd), hour (hh), andminute (mm).  Enter the time in 24-hour format.  For example, 11:30p.m. on May 3, 1991 would be entered as:	9105032330Enter the date and time: \c"		read tnc		tnc=`echo $tnc`		case $tnc in		T) 	tnc=		#testing only	   		break	   		;;		"")	   		echo "You MUST specify a date and time. ${LL}"	   		;;		*)			date $tnc > /dev/null 	 		case $? in 	 		0 )	break ;;	 		* )	;;	 		esac	  		;;		esac	done		while : true	do		echo "*** TIME ZONE SELECTION ***	Select the time zone for your area, using the options listed in thetable below.  You can also enter the number of hours (-12 to 12) intime east of Greenwich.  Selection	Time Zone ---------------------------------      e		Eastern      c		Central      m		Mountain      p		Pacific      g		Greenwich---------------------------------"		echo "Enter your choice: \c"		read zone		zone=`echo $zone`		case ${zone} in		e|E)			hourswest=5			;;		c|C)			hourswest=6			;;		m|M)			hourswest=7			;;		p|P)			hourswest=8			;;		g|G)			hourswest=0			;;		[0-9] | 1[0-2] )			hourswest="-${zone}"			;;		-[1-9] | -1[0-2] )			hourswest=`expr $zone : '[-]\(.*\)'`			;;		"")			echo ""			continue			;;		*)		   	echo "Sorry, ${zone}, is not a valid timezone option.  Please enterone of the menu options listed below."		   	continue		   	;;		esac		break	done	while : true	do		echo "Does your area alternate between Daylight Savings and Standardtime? (y/n) [y]: \c"		read dst		dst=`echo $dst`		case ${dst} in		[yY]*|"")		   	echo "Select your geographic area for Daylight Savings Time, using theoptions in the table below.  Selection	Geographic Area --------------------------------      u		USA      a		Australia      e		Eastern Europe      c		Central Europe      w		Western Europe--------------------------------"			while : true			do				echo "Enter your choice [u]: \c"				read dst				dst=`echo $dst`				case ${dst} in				u|U|"") dst=1; geog=u ;;				a|A) dst=2 ; geog=a;;				w|W) dst=3; geog=w ;;				c|C) dst=4; geog=c ;;				e|E) dst=5; geog=e ;;				*)					echo "You typed an invalid geographic area. Please type u for USA, a forAustralia, e for Eastern Europe, c for Central Europe, or w for WesternEurope. ${LL}"					continue					;;				esac				break			done			;;		[nN]*)			dst=n; geog=n			;;		*)			echo ""			continue			;;		esac		break	done	case ${dst} in	"" | n) 		TIMEZONE=$hourswest		;;	*)  		TIMEZONE="$hourswest dst ${dst}" 		;;	esac	#	# Because the timezone in the kernel is in the east of USA,	# time needs to be adjusted.	# 	tt=`expr $hourswest : '-\(.*\)' '|' $hourswest`	tttt=`expr $tt '*' 60`	case $hourswest in	0 )  	tttt=0000			;;	1 ) 	tttt=00${tttt}			;;	-1 ) 	tttt=-00${tttt}		;;	-* )	tttt=-0${tttt}			;;	* )	tttt=0${tttt}			;;	esac	# In case timezone and dst do not match 	tnc=`date +%y\%m\%d\%H\%M.%S`	date $tnc-$tttt$geog >/dev/null 2>&1 	echo "${LL}The current date and time is `date`"	echo "$TIMEZONE" > /tmp/timezone # XXX for the installation       ;;esaccase $CONFKERN in0 )		exit 0	;;esac	# Create or modify the config file case $NEWCONFIG intrue )	echo "${LL}*** SYSTEM CONFIGURATION PROCEDURE ***"	if egrep -s "^/bin/hostname" /etc/rc.local	then		# Found, replace it with a new one		sed "/^\/bin\/hostname.*/s/hostname.*/hostname ${SYSNAME}/"\		/etc/rc.local > /etc/rc.tmp	else		# Not found, add it at the top		echo "/bin/hostname ${SYSNAME}" |		cat - /etc/rc.local > /etc/rc.tmp	fi	mv /etc/rc.tmp /etc/rc.local	chmod 644 /etc/rc.local	/bin/hostname ${SYSNAME}	sizer -n ${CONFIGNAME} -t "$TIMEZONE"	cp /tmp/$CONFIGNAME $CONFIGPATH/$CONFIGNAME	;;false )	cp $CONFIGPATH/$CONFIGNAME /tmp/$CONFIGNAME	;;esaccase $EDITFILE in"" )	;;* )	if test -f $EDITFILE 	then		ed - $CONFIGPATH/$CONFIGNAME <$EDITFILE >/tmp/ed$$.err 2>&1		egrep -s "^\?" /tmp/ed$$.err && 		{			echo "Error: Command errors in the ed script for 'doconfig'."			exit 1		}		cp $CONFIGPATH/$CONFIGNAME /tmp/$CONFIGNAME	fi	;;esac[ -d $KERNELPATH/$CONFIGNAME ] || mkdir $KERNELPATH/$CONFIGNAME## Iterations of the configuration process# start here.#trap 'while : truedo	echo "Do you want to quit (y/n) []: \c"	read ans 	ans=`echo $ans`	case $ans in	[yY] )		trap '' 1 2 3		Unticker		exit 1		;;	[Nn] )		break		;;	esacdone ' 1 2 3		case $ADVFLAG in"" | 1 | 3 )	echo "Do you want to edit the configuration file? (y/n) [n]: \c"	read resp	resp=`echo $resp`	case $resp in	"" | [nN]*)		;;	*)		while : true		do		echo "Using $EDITOR to edit the configuration file.  Press return when ready,or type 'quit' to skip the editing session: \c"		read resp		resp=`echo $resp`		case $resp in		"" )			if $EDITOR /tmp/${CONFIGNAME}			then				cp /tmp/${CONFIGNAME} $CONFIGPATH/${CONFIGNAME}				break			fi			;;		quit )			break			;;		* )			continue			;;		esac		done		;;	esac	;;esacwhile : truedo    #    # Perform the actual Configuration using files    # and information from the configuration dialogue.    #    # This code is convoluted because config does not always    # return an error status when it gets errors, particularly    # syntax errors.  This code greps the error output of config    # for various signs of error and fails the configuration if    # it finds them.    #echo "*** PERFORMING SYSTEM CONFIGURATION *** "	cd $CONFIGPATH	config $CONFIGNAME 2>&1 > /tmp/config$$	case $? in	0 )		rm /tmp/config$$		if cd $KERNELPATH/$CONFIGNAME		then 			Ticker			make clean 2>&1 > /dev/null 			if (make depend vmunix 2>&1) > errs			then				Unticker				break	# successful configuration			else				Unticker				echo "An error has occurred during system configuration.  A partial listingof the error log file (./errs) follows:"				tail -20 errs			fi		fi		;;	* )		echo "${LL}Configuration file has errors."		cat /tmp/config$$		rm /tmp/config$$			true		;;	esac    echo "Do you want to edit the configuration file? (y/n) [y]: \c"    read resp    resp=`echo $resp`    case $resp in    	# We have to spell out all permutations of no	# to allow acceptance of editors starting with 'n'.	n* | N*)	    ;;	*)	    while : true	    do		echo "Using $EDITOR to edit the configuration file.  Press return when ready,or type 'quit' to skip the editing session: \c"		read resp		resp=`echo $resp`		case $resp in		"" )			if $EDITOR /tmp/${CONFIGNAME}			then				cp /tmp/${CONFIGNAME} $CONFIGPATH/${CONFIGNAME}				break			fi			;;		quit )			break			;;		* )			continue			;;		esac	    done	    ;;    esacdonetrap '' 1 2 3case ${NEWCONFIG} intrue)	# Make the special devices	# If this is the second pass, then we have to	# delete all of the previous interation's	# new devices and restore the originals.	#	echo "*** DEVICE SPECIAL FILE CREATION *** "	cd /dev	rm -f /dev/*mt* 	Ticker	(sh -v /tmp/${CONFIGNAME}.devs 2>&1) > MAKEDEV.log	Unticker	case $ADVFLAG in		"" )			echo "A log file listing Special Device Files is located in /dev/MAKEDEV.log"			;;		* )			;;	esac	;;esaccd $PWDsynccase $ROOTPATH in/ ) 	ROOTPATH=	;;esaccase $ADVFLAG in	"") echo "The new kernel is $KERNELPATH/$CONFIGNAME/vmunix"	break ;;	*)	;;esacexit 0 

⌨️ 快捷键说明

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