diff options
Diffstat (limited to 'distrib/sun3/common/install.sh')
-rw-r--r-- | distrib/sun3/common/install.sh | 280 |
1 files changed, 280 insertions, 0 deletions
diff --git a/distrib/sun3/common/install.sh b/distrib/sun3/common/install.sh new file mode 100644 index 00000000000..c687b726bb3 --- /dev/null +++ b/distrib/sun3/common/install.sh @@ -0,0 +1,280 @@ +#!/bin/sh +# +# $NetBSD: install.sh,v 1.1.1.1 1995/10/08 23:07:50 gwr Exp $ +# +# Copyright (c) 1994 Christopher G. Demetriou +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# 3. All advertising materials mentioning features or use of this software +# must display the following acknowledgement: +# This product includes software developed by Christopher G. Demetriou. +# 4. The name of the author may not be used to endorse or promote products +# derived from this software without specific prior written permission +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# + +# NetBSD installation script. +# In a perfect world, this would be a nice C program, with a reasonable +# user interface. + +FSTABDIR=/mnt/etc # /mnt/etc +#DONTDOIT=echo + +VERSION=1.0 +FSTAB=${FSTABDIR}/fstab + +getresp() { + read resp + if [ "X$resp" = "X" ]; then + resp=$1 + fi +} + +getvar() { + echo $(eval $(echo "echo \$$1")) +} + +shiftvar() { + local - var + var="$1" + list="$(getvar $var)" + set -- $list + shift + setvar $var "$*" +} + +getparts() { + disklabel $1 2>/dev/null | sed -e '/^[ ][ ][ad-p]/!d' | + sed -e 's,^[ ]*\([a-p]\):[ ]*[0-9]*[ ]*[0-9]*[ ][ ]*\([a-zA-Z0-9.]*\).*,\1 \2,' | + sed -e ':a + N;${s/\n/ /g;p;d;} + ba' +} + +getdrives() { + local du thispart + for du in /dev/r${drivetype}?a; do + dd if=$du of=/dev/null bs=1b count=1 >/dev/null 2>&1 + if [ $? -eq 0 ]; then + thisunit=`echo $du | sed -e 's,/dev/r\(...\)a,\1,g'` + driveunits="$driveunits $thisunit" + else + continue; + fi + setvar $thisunit "$(getparts $thisunit)" + export $thisunit + done + export drivenunits +} + +prepdrive() { + echo "which drive would you like to prepare next?" + echo "choices are: ${driveunits}" + echo "" + getresp + case $resp in + *) ;; + esac +} + +echo "Welcome to the NetBSD ${VERSION} installation program." +echo "" +echo "This program is designed to help you put NetBSD on your hard disk," +echo "in a simple and rational way. Its main objective is to format," +echo "mount and create an fstab for your root (/) and user (/usr)" +echo "partitions." +echo "" +echo "As with anything which modifies your hard drive's contents, this" +echo "program can cause SIGNIFICANT data loss, and you are advised" +echo "to make sure your hard drive is backed up before beginning the" +echo "installation process." +echo "" +echo "Default answers are displyed in brackets after the questions." +echo "You can hit Control-C at any time to quit, but if you do so at a" +echo "prompt, you may have to hit return. Also, quitting in the middle of" +echo "installation may leave your system in an inconsistent state." +echo "" +echo -n "Proceed with installation? [n] " +getresp "n" +case "$resp" in + y*|Y*) + echo "scanning for the root device" + ;; + *) + echo ' +OK, then. Enter "halt" at the prompt to halt the machine. +If you have set the default boot device using the "eeprom" +command, you can use the "reboot" command now. Otherwise, +you may need to specify a boot device for the PROM monitor.' + exit + ;; +esac + +drivetype=sd +sect_fwd="" + +# find out what units are possible for that disk, and query the user. +getdrives +for du in $driveunits; do + set -- $(getvar $du) + if [ $# -ge 2 -a "$1" = "a" -a "`echo $2 | sed -e 's,.*BSD.*,BSD,'`" = "BSD" ]; then + rdev=$du + fi +done + +echo "" +echo "The root device you have chosen is on: ${rdev}" +echo "" +# driveunits=`ls /dev/${drivetype}?a | sed -e 's,/dev/\(...\)a,\1,g'` +if [ "X${driveunits}" = "X" ]; then + echo "FATAL ERROR:" + echo "No devices for disks of type '${drivetype}'." + echo "This is probably a bug in the install disks." + echo "Exiting install program." + exit +fi + +echo "" +echo "THIS IS YOUR LAST CHANCE!!!" +echo "" +echo "(answering yes will format your root partition on $rdev)" +echo -n "Are you SURE you want NetBSD installed on your hard drive? (yes/no) " +answer="" +while [ "$answer" = "" ]; do + getresp + case $resp in + yes|YES) + echo "" + answer=yes + ;; + no|NO) + echo ' +OK, then. enter "halt" or "reboot" at the prompt.' + exit + ;; + *) + echo -n "I want a yes or no answer... well? " + ;; + esac +done +echo "Initializing / (root) filesystem, and mounting..." +$DONTDOIT newfs /dev/r${rdev}a $name +$DONTDOIT mount_ffs /dev/${rdev}a /mnt +echo "" +echo -n "Creating a fstab..." +mkdir -p $FSTABDIR +echo "/dev/${rdev}a / ffs rw 1 1" > $FSTAB + +# get rid of this partition +shiftvar $rdev +shiftvar $rdev + +echo "" +echo "Now lets setup your /usr file system" +echo "(Once a valid input for drive and partition is seen" +echo "it will be FORMATTED and inserted in the fstab.)" +while [ "X$usrpart" = "X" ]; do + resp="" + drivename="" + while [ "X$resp" = "X" ]; do + echo "choices: $driveunits" + echo "which drive do you want /usr on?" + getresp + set -- $driveunits + while [ $# -gt 0 ]; do + if [ "X$resp" = "X$1" ]; then + drivename=$1 + break; + else + shift + fi + done + if [ "X$drivename" != "X" ]; then + break + fi + done + + usrpart="" + echo "You have selected $drivename" + echo "here is a list of partitions on $drivename" + disklabel $drivename 2>/dev/null | sed -e '/^[ ][ ][ad-p]:/p;/^#[ \t]*size/p;d' + echo "which partition would you like to format and have" + echo -n "mounted as /usr? (supply the letter): " + getresp + if [ "X$resp" = "X" ]; then + continue; + fi + + list=$(getvar $drivename) + set -- $list + while [ $# -gt 0 ]; do + if [ "$resp" = "$1" ]; then + if [ "`echo $2 | sed -e 's,.*BSD.*,BSD,'`" != "BSD" ]; then + echo "" + echo -n "$drivename$resp is of type $2 which is not" + echo " a BSD filesystem type" + break + fi + usrpart=$drivename$resp + break + else + shift + shift + fi + done + if [ "X$usrpart" = "X" ]; then + echo "$resp is not a valid input." + echo "" + fi +done + +echo "" +echo "Initializing /usr filesystem, and mounting..." +$DONTDOIT newfs /dev/r${usrpart} $name +$DONTDOIT mkdir -p /mnt/usr +$DONTDOIT mount_ffs /dev/${usrpart} /mnt/usr +echo "" +echo -n "Adding to fstab..." +echo "/dev/${usrpart} /usr ffs rw 1 2" >> $FSTAB +sync +echo " done." + +echo ' +You might want to set the PROM default boot device. +The current settings can be examined using: + eeprom bootdev + eeprom default_boot +and they can be modified by adding "=value" i.e.: + eeprom bootdev=sd(0,0,0) + eeprom default_boot=true +' + +echo ' +OK! The preliminary work of setting up your disk is now complete, +and you can install the actual NetBSD software. + +Right now, your root is mounted on /mnt and your usr on /mnt/usr. +You should consult the installation notes to determine how to load +and install the NetBSD distribution sets, and how to configure your +system when you are done. + +GOOD LUCK! +' |