Home | History | Annotate | Line # | Download | only in prepare
install.sh revision 1.1
      1 #!/bin/sh
      2 #	$NetBSD: install.sh,v 1.1 2002/04/12 21:11:46 leo Exp $
      3 #
      4 # Copyright (c) 1996 The NetBSD Foundation, Inc.
      5 # All rights reserved.
      6 #
      7 # This code is derived from software contributed to The NetBSD Foundation
      8 # by Jason R. Thorpe.
      9 #
     10 # Redistribution and use in source and binary forms, with or without
     11 # modification, are permitted provided that the following conditions
     12 # are met:
     13 # 1. Redistributions of source code must retain the above copyright
     14 #    notice, this list of conditions and the following disclaimer.
     15 # 2. Redistributions in binary form must reproduce the above copyright
     16 #    notice, this list of conditions and the following disclaimer in the
     17 #    documentation and/or other materials provided with the distribution.
     18 # 3. All advertising materials mentioning features or use of this software
     19 #    must display the following acknowledgement:
     20 #        This product includes software developed by the NetBSD
     21 #        Foundation, Inc. and its contributors.
     22 # 4. Neither the name of The NetBSD Foundation nor the names of its
     23 #    contributors may be used to endorse or promote products derived
     24 #    from this software without specific prior written permission.
     25 #
     26 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     27 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     28 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     29 # PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     30 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     31 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     32 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     33 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     34 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     35 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     36 # POSSIBILITY OF SUCH DAMAGE.
     37 #
     38 
     39 #	NetBSD installation script.
     40 #	In a perfect world, this would be a nice C program, with a reasonable
     41 #	user interface.
     42 
     43 FILESYSTEMS="/tmp/filesystems"		# used thoughout
     44 MODE="install"
     45 
     46 # include machine-dependent functions
     47 # The following functions must be provided:
     48 #	md_prep_disklabel()	- label the root disk
     49 #	md_welcome_banner()	- display friendly message
     50 #	md_congrats()		- display friendly message
     51 #	md_makerootwritable()	- make root writable (at least /tmp)
     52 
     53 # we need to make sure .'s below work if this directory is not in $PATH
     54 # dirname may not be available but expr is
     55 Mydir=`expr $0 : '^\(.*\)/[^/]*$'`
     56 Mydir=`cd ${Mydir:-.}; pwd`
     57 
     58 #
     59 # Sub-parts
     60 #
     61 getresp() {
     62 	read resp
     63 	if [ "X$resp" = "X" ]; then
     64 		resp=$1
     65 	fi
     66 }
     67 
     68 isin() {
     69 # test the first argument against the remaining ones, return succes on a match
     70 	_a=$1; shift
     71 	while [ $# != 0 ]; do
     72 		if [ "$_a" = "$1" ]; then return 0; fi
     73 		shift
     74 	done
     75 	return 1
     76 }
     77 
     78 getrootdisk() {
     79 	cat << \__getrootdisk_1
     80 
     81 The installation program needs to know which disk to consider
     82 the root disk.  Note the unit number may be different than
     83 the unit number you used in the standalone installation
     84 program.
     85 
     86 Available disks are:
     87 
     88 __getrootdisk_1
     89 	_DKDEVS=`md_get_diskdevs`
     90 	echo	"$_DKDEVS"
     91 	echo	""
     92 	echo -n	"Which disk is the root disk? "
     93 	getresp ""
     94 	if isin $resp $_DKDEVS ; then
     95 		ROOTDISK="$resp"
     96 	else
     97 		echo ""
     98 		echo "The disk $resp does not exist."
     99 		ROOTDISK=""
    100 	fi
    101 }
    102 
    103 labelmoredisks() {
    104 	cat << \__labelmoredisks_1
    105 
    106 You may label the following disks:
    107 
    108 __labelmoredisks_1
    109 	echo "$_DKDEVS"
    110 	echo	""
    111 	echo -n	"Label which disk? [done] "
    112 	getresp "done"
    113 	case "$resp" in
    114 		"done")
    115 			;;
    116 
    117 		*)
    118 			if isin $resp $_DKDEVS ; then
    119 				md_labeldisk $resp
    120 			else
    121 				echo ""
    122 				echo "The disk $resp does not exist."
    123 			fi
    124 			;;
    125 	esac
    126 }
    127 
    128 #
    129 # include machine dependent subroutines
    130 . $Mydir/install.md
    131 
    132 # Good {morning,afternoon,evening,night}.
    133 md_welcome_banner
    134 echo -n "Proceed? [n] "
    135 getresp "n"
    136 case "$resp" in
    137 	y*|Y*)
    138 		echo	"Cool!  Let's get to it..."
    139 		;;
    140 	*)
    141 		md_not_going_to_install
    142 		exit
    143 		;;
    144 esac
    145 
    146 # XXX Work around vnode aliasing bug (thanks for the tip, Chris...)
    147 ls -l /dev > /dev/null 2>&1
    148 
    149 # Deal with terminal issues
    150 md_set_term
    151 
    152 # Make sure we can write files (at least in /tmp)
    153 # This might make an MFS mount on /tmp, or it may
    154 # just re-mount the root with read-write enabled.
    155 md_makerootwritable
    156 
    157 while [ "X${ROOTDISK}" = "X" ]; do
    158 	getrootdisk
    159 done
    160 
    161 # Deal with disklabels, including editing the root disklabel
    162 # and labeling additional disks.  This is machine-dependent since
    163 # some platforms may not be able to provide this functionality.
    164 md_prep_disklabel ${ROOTDISK}
    165 
    166 # Pat on the back.
    167 md_congrats
    168 
    169 # ALL DONE!
    170 exit 0
    171