summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xetc/etc.i386/inst1.install1039
-rwxr-xr-xetc/etc.i386/inst2.install5
-rw-r--r--etc/etc.i386/inst2.profile177
3 files changed, 826 insertions, 395 deletions
diff --git a/etc/etc.i386/inst1.install b/etc/etc.i386/inst1.install
index b89a486..114c4bc 100755
--- a/etc/etc.i386/inst1.install
+++ b/etc/etc.i386/inst1.install
@@ -1,225 +1,550 @@
#!/bin/sh
-# filesystem-floppy disk /install
-# Simplified, interactive *BSD installation script.
-# D.E. Silvia (dsilvia@net.com)
+# install1.fs disk 'install'
#
-# Heavily hacked on by cgd and rwgrimes and miscilanious times
-# comments here are brief to save disk space!
+# Currently, no method for checking to see if the designated disk type is
+# already in /etc/disktab. You can edit it out of the file after installation.
#
OPSYSTEM=FreeBSD
+OPSYSID=165
+ROOTMIN=7
+SWAPMIN=8
+DISKMIN=`expr $ROOTMIN + $SWAPMIN + 1`
DEFBLOCKING=2
DEFSECT=17
DEFHEAD=12
DEFCYLN=1024
+RUN_FDISK=""
-echo "Welcome to ${OPSYSTEM}."
-echo ""
-echo "This program is designed to help put ${OPSYSTEM} on a hard disk,"
-echo "in a simple and rational way. We'll ask you several questions,"
-echo "and it would probably be useful to have a disk's hardware"
-echo "manual, the installation notes, and a calculator handy."
-echo ""
-echo "In particular, we need to know some reasonably detailed"
-echo "information about the disk's geometry, because there is currently"
-echo "no way we can figure out this information by ourselves."
-echo ""
-echo "As with anything which modifies a hard drive's contents, this"
-echo "program can cause SIGNIFICANT data loss, and we strongly recommend"
-echo "making sure that the hard drive is backed up before going further with"
-echo "the installation process."
-echo ""
-echo -n "Proceed with installation? [y] "
-read resp junk
-if [ "$resp" = "" ]; then
- resp=y
+set_arbitrary_defaults() {
+cyls_per_disk=$DEFCYLN
+tracks_per_cyl=$DEFHEAD
+sects_per_track=$DEFSECT
+unused_last_part=3
+part_cnt=4
+}
+
+
+get_fdisk_data() {
+cyls_per_disk=
+part_id=
+got_sysid=
+part_cnt=0
+sysid_cnt=0
+have_opsys_part=
+unused_last_part=
+extent_max=0
+extent_max_part=
+
+fdisk /dev/r${drivename}d >fdisk.out 2>fdisk.err
+if [ $? -gt 0 ]; then
+ echo "Can't open /dev/r${drivename}d for reading!"
+ set_arbitrary_defaults
+ >fdisk.out
+ >fdisk.err
+ return 2
+elif [ -s fdisk.err ]; then
+ echo "Disk doesn't appear to be initialized..."
+ no_part_table=1
fi
-case $resp in
+while read data; do
+ if [ ! "$cyls_per_disk" ]; then
+ cyls_per_disk=`expr "$data" : '[^=]*=\([0-9]*\)'`
+ tracks_per_cyl=`expr "$data" : '[^=]*=[^=]*=\([0-9]*\)'`
+ sects_per_track=`expr "$data" : '[^=]*=[^=]*=[^=]*=\([0-9]*\)'`
+ continue
+ fi
+ if [ "$got_sysid" ]; then
+ start_part=`expr "$data" : '[^0-9]*\([0-9]*\)'`
+ size_part=`expr "$data" : '[^0-9]*[0-9]*[^0-9]*\([0-9]*\)'`
+ extent_part=`expr $start_part + $size_part`
+ if [ $extent_part -gt $extent_max ]; then
+ extent_max=$extent_part
+ extent_max_part=$part_id
+ fi
+ eval start${part_id}=$start_part
+ eval size${part_id}=$size_part
+ sysid_cnt=`expr $sysid_cnt + 1`
+ got_sysid=
+ part_id=
+ elif [ "$part_id" ]; then
+ sysid=`expr "$data" : 'sysid \([0-9]*\)'`
+ if [ "$no_part_table" -o "$sysid" = "0" -o \
+ "$(expr "$data" : '\(<UNUSED>\)')" = "<UNUSED>" ]; then
+ unused_last_part=$part_id
+ part_id=
+ continue
+ fi
+ [ "$sysid" = "$OPSYSID" ] && have_opsys_part=$part_id
+ eval sysid${part_id}=$sysid
+ got_sysid=1
+ else
+ part_id=`expr "$data" : 'The data[^0-9]*\([0-9]*\)'`
+ beg_cyl=`expr "$data" : '[ ]*beg[^0-9]*\([0-9]*\)'`
+ end_cyl=`expr "$data" : '[ ]*end[^0-9]*\([0-9]*\)'`
+ if [ "$part_id" ]; then
+ part_cnt=`expr $part_cnt + 1`
+ elif [ "$beg_cyl" ]; then
+ if [ $beg_cyl -gt $cyls_per_disk ]; then
+ no_part_table=1
+ sysid_cnt=0
+ have_opsys_part=0
+ unused_last_part=`expr $part_cnt - 1`
+ fi
+ elif [ "$end_cyl" ]; then
+ if [ $end_cyl -gt $cyls_per_disk ]; then
+ no_part_table=1
+ sysid_cnt=0
+ have_opsys_part=0
+ unused_last_part=`expr $part_cnt - 1`
+ fi
+ fi
+ fi
+done <fdisk.out
+if [ ! "$cyls_per_disk" ]; then
+ set_arbitrary_defaults
+ return 2
+fi
+>fdisk.out
+>fdisk.err
+return 0
+}
+
+analyze_fdisk_data() {
+# Case I: >1024 cylinders
+force_offset=
+if [ $cyls_per_disk -gt 1024 ]; then
+ echo
+ echo "WARNING: >1024 cylinders."
+ echo "Overwriting existing partitions - okay? [y] "
+ read resp junk
+ [ ! "$resp" ] && resp=y
+ case "$resp" in
y*|Y*)
+ force_offset=1
+ ;;
+ *)
echo
- echo "Cool! Let's get to it..."
- echo ""
- echo "If a mistake is made along the way, don't bail out."
- echo "At the end, you have the option to redo the configuration."
- echo "If you really must bail out at some point, then type <CTRL>+C,"
- echo "and enter \`halt' at the command prompt \`#'."
+ echo "If the number of disk cylinders does exceed 1024, then ${OPSYSTEM}"
+ echo "can be installed alongside other operating systems on a single disk."
+ echo "Otherwise, ${OPSYSTEM} MUST be installed at the beginning of the disk,"
+ echo "and existing partitions will be lost."
+ ;;
+ esac
+ RUN_FDISK=""
+ opsys_off=0
+ cyls_per_opsys=${cyls_per_disk}
+ opsys_part=${unused_last_part:-3}
+ return 0
+# Case II: no partitions used
+elif [ $sysid_cnt -eq 0 ]; then
+ echo
+ echo "WARNING: partition table is either missing or corrupt."
+ echo "Existing partitions will be lost."
+ part_cnt=${part_cnt:-4}
+ RUN_FDISK="overwrite"
+ opsys_off=1
+ cyls_per_opsys=`expr ${cyls_per_disk} - 1`
+ opsys_part=${unused_last_part:-3}
+ return 0
+# Case IIIa: overwrite an existing 386BSD/NetBSD/FreeBSD partition
+elif [ "$have_opsys_part" ]; then
+ echo
+ echo "386/Net/FreeBSD partition already exists!"
+ echo -n "Overwriting existing partition - okay? [y] "
+ read resp junk
+ [ ! "$resp" ] && resp=y
+ case "$resp" in
+ y*|Y*)
+ # Set existing partiton values as default (after adjusting to
+ # cylinder boundaries)
+ eval opsys_size=\$size${have_opsys_part}
+ eval opsys_start=\$start${have_opsys_part}
+ [ $opsys_size -eq 50000 ] && opsys_size=$disksize
+ opsys_off=`expr $opsys_start / $cylindersize`
+ opsys_adjusted=`expr $opsys_off \* $cylindersize`
+ if [ $opsys_adjusted -lt $opsys_start -o $opsys_off -eq 0 ]; then
+ opsys_off=`expr $opsys_off + 1`
+ opsys_adjusted=`expr $opsys_off \* $cylindersize`
+ opsys_size=`expr $opsys_size - $opsys_adjusted + $opsys_start`
+ fi
+ cyls_per_opsys=`expr $opsys_size / $cylindersize`
+ opsys_part=${have_opsys_part}
+ RUN_FDISK="fdisk -u"
+ return 0
+ ;;
+ *)
+ have_opsys_part=
+ # FALL THROUGH
+ ;;
+ esac
+fi
+
+# Case IIIb: no partitions available
+if [ $sysid_cnt -eq $part_cnt -a ! "$have_opsys_part" ]; then
+ echo
+ echo "No unused partitions."
+ echo "$OPSYSTEM cannot selectively overwrite existing partitions."
+ echo -n "Install $OPSYSTEM and overwrite the entire disk? [n] "
+ read resp junk
+ case "$resp" in
+ y*|Y*)
+ # don't use first cylinder!
+ opsys_off=1
+ cyls_per_opsys=`expr $cyls_per_disk - 1`
+ opsys_part=${unused_last_part}
+ RUN_FDISK="overwrite"
+ return 0
+ ;;
+ *)
+ return 2
+ ;;
+ esac
+fi
+
+
+# *** CAVEAT ***
+# $OPSYSTEM installs at the end of the disk. If the
+# beginning of the disk is free but not the end, install fails!
+
+# Assume `fdisk -u' to add $OPSYSTEM in last unused partition for remaining cases
+opsys_part=${unused_last_part}
+RUN_FDISK="fdisk -u"
+mb_sect=`expr 1024 \* 1024 / $bytes_per_sect`
+disk_minimum=`expr $DISKMIN \* $mb_sect`
+
+# Case IV: No room (at end of disk) for mininal install
+disk_remaining=`expr $disksize - $extent_max`
+if [ $disk_remaining -lt $disk_minimum ]; then
+ echo
+ echo "Not enough space ($DISKMIN Mb) at end of disk to install $OPSYSTEM."
+ echo -n "Install FreeBSD and overwrite the entire disk? [n] "
+ read resp junk
+ case "$resp" in
+ y*|Y*)
+ # don't use first cylinder!
+ opsys_off=1
+ cyls_per_opsys=`expr $cyls_per_disk - 1`
+ opsys_part=${unused_last_part}
+ RUN_FDISK="overwrite"
;;
*)
- echo ""
- echo "OK, then enter 'halt' to halt the machine."
- echo "Once the machine has halted, remove the floppy,"
- echo "and press any key to reboot."
- exit
+ echo
+ echo "WARNING: To install ${OPSYSTEM}, you're on your own in figuring"
+ echo "out where on the disk it will fit without overwriting another"
+ echo "partition..."
+ # Set defaults assuming there is only one partition at end of disk
+ eval start=\$start${extent_max_part}
+ # don't use first cylinder!
+ opsys_off=1
+ cyls_per_opsys=`expr $start / $cylindersize - 1`
;;
+ esac
+ return 0
+fi
+
+# Case V: Room for $OPSYSTEM and partition data okay
+opsys_off=`expr $extent_max / $cylindersize`
+opsys_extent=`expr $opsys_off \* $cylindersize`
+[ $opsys_extent -lt $extent_max ] && opsys_off=`expr $opsys_off + 1`
+cyls_per_opsys=`expr $cyls_per_disk - $opsys_off`
+return 0
+}
+
+put_fdisk_data() {
+start=$root_offset
+size=$partition
+
+if [ "$RUN_FDISK" = "overwrite" ]; then
+ # How do you overwrite without explicitly editing each entry?
+ (
+ echo y
+ echo $cyls_per_disk
+ echo $tracks_per_cyl
+ echo $sects_per_track
+ echo y
+ ) >fdisk.script
+ i=0
+ n=`expr ${part_cnt:-4} - 1`
+ while [ $i -lt $n ]; do
+ echo y
+ echo 0
+ echo 0
+ echo 0
+ echo n
+ echo y
+ i=`expr $i + 1`
+ done >>fdisk.script
+ ( echo y
+ echo ${OPSYSID}
+ echo ${start}
+ echo ${size}
+ echo n
+ echo y
+ echo y
+ echo ${n}
+ echo y
+ echo y
+ ) >>fdisk.script
+ fdisk -u <fdisk.script >/dev/null 2>&1
+elif [ "$RUN_FDISK" ]; then
+ $RUN_FDISK -${opsys_part:-${unused_last_part:-3}} <<-EOF >/dev/null 2>&1
+ y
+ $cyls_per_disk
+ $tracks_per_cyl
+ $sects_per_track
+ y
+ y
+ ${OPSYSID}
+ ${start}
+ ${size}
+ n
+ y
+ y
+ ${opsys_part:-${unused_last_part:-3}}
+ y
+ y
+ EOF
+fi
+
+}
+
+echo "Welcome to ${OPSYSTEM}."
+echo
+echo "This program is designed to help put ${OPSYSTEM} on a hard disk with"
+echo "at least $DISKMIN Megabytes of free space."
+echo
+echo "If other operating systems are already on the disk, ${OPSYSTEM}"
+echo "should be able to install alongside them. Otherwise, if the disk"
+echo "is being installed for the first time, it would probably be useful"
+echo "to have the disk's hardware manual, the installation notes, and a"
+echo "calculator handy."
+echo
+echo "As with anything which modifies a hard drive's contents, this"
+echo "program can cause SIGNIFICANT data loss, and we strongly recommend"
+echo "making sure that the hard drive is backed up before going further with"
+echo "the installation process."
+echo
+echo -n "Proceed with installation? [y] "
+read resp junk
+resp=${resp:-y}
+case "$resp" in
+y*|Y*)
+ echo
+ echo "Cool! Let's get to it..."
+ echo
+ echo "If a mistake is made along the way, don't bail out."
+ echo "At the end, you have the option to redo the configuration."
+ echo "If you really must quit at some point, type <CTRL>+C and"
+ echo "enter \`halt' at the command prompt, \`#'."
+ ;;
+*)
+ echo
+ echo "OK, then. Enter \`halt' to halt the machine."
+ echo "Once the machine has halted, remove the floppy,"
+ echo "and press any key to reboot."
+ exit
+ ;;
esac
+mount -u /dev/fd0a /
+sync
verified_install=""
-while [ "$verified_install" = "" ]; do # Begin of Big Loop
+while [ ! "$verified_install" ]; do # Begin of Big Loop
rotdelay=""
drivename=wd0
drivetype=wd
sect_fwd=""
-echo ""
-echo "First, we need to know the drive type. This can be can be one of"
+echo
+echo "First, we need to know the drive type. This can be can be one of"
echo "ESDI, SCSI, ST506, or IDE."
-echo -n "Drive type? [IDE] "
-read type junk
-if [ "$type" = "" ]; then
- type=IDE
-fi
+echo -n "Drive type? [${type:-IDE}] "
+read resp junk
+type=${resp:-${type:-IDE}}
case "$type" in
- e*|E*|st*|ST*)
- echo
- echo -n "Does it support _automatic_ sector remapping? [y] "
- read remap junk
- case "$remap" in
- n*|N*)
- sect_fwd="sf:"
- ;;
- esac
- case "$type" in
- e*|E*)
- DEFSECT=36
- ;;
- esac
+e*|E*|st*|ST*)
+ echo -n "Does it support AUTOMATIC sector remapping? [y] "
+ read remap junk
+ case "$remap" in
+ n*|N*)
+ sect_fwd="sf:"
;;
- i*|I*)
- type=ST506
- rotdelay="-d 0"
- ;;
- sc*|SC*)
- drivename=sd0
- drivetype=sd
- type=SCSI
- rotdelay="-d 0"
- DEFSECT=32
- DEFHEAD=64
- ;;
- *)
- echo "Unknown type. Assuming ST506 with automatic sectoring..."
- type=ST506
+ esac
+ case "$type" in
+ e*|E*)
+ DEFSECT=36
;;
+ esac
+ ;;
+i*|I*)
+ type=ST506
+ rotdelay="-d 0"
+ ;;
+sc*|SC*)
+ drivename=sd0
+ drivetype=sd
+ type=SCSI
+ rotdelay="-d 0"
+ DEFSECT=32
+ DEFHEAD=64
+ ;;
+*)
+ echo "Unknown type. Assuming ST506 with automatic sectoring..."
+ type=ST506
+ ;;
esac
-echo ""
-echo "Disk is of device type $drivetype."
-echo "Installing on device /dev/$drivename..."
-echo ""
+echo
+echo "Disk is of device type $drivetype."
+echo
+echo -n "Number of bytes per disk sector? [${bytes_per_sect:-512}] "
+read resp junk
+bytes_per_sect=${resp:-${bytes_per_sect:-512}}
+if [ ! "$partition" ]; then
+ echo
+ echo "Please wait. Examining device /dev/r${drivename}d..."
+ get_fdisk_data
+ if [ $? -gt 1 ]; then
+ echo "Hm - we can't seem to read that drive."
+ echo
+ echo -n "Are you sure that $type is the correct type? [n] "
+ read resp
+ case "$resp" in
+ y*|Y*)
+ echo "Well, since we can't even open it, there isn't much"
+ echo "hope for writing a label on it. But you're free"
+ echo "to give it a try. You need to specify the geometry."
+ ;;
+ *)
+ echo "Okay. Let's start again from the top."
+ continue
+ ;;
+ esac
+ fi
+fi
+echo
echo "Now we want to build a data base entry in /etc/disktab describing"
echo "the geometry of the /dev/$drivename disk. The name of the entry"
echo "should be descriptive of the disk's type and model. For example,"
echo "a Maxtor IDE, model 7080 disk might be named \`maxtor7080'."
-echo -n "Disk label name (one word, please)? [mfr_model] "
-read name junk
-if [ "$name" = "" ]; then
- name=mfr_model
-fi
-echo ""
-echo -n "Number of bytes per disk sector? [512] "
-read bytes_per_sect junk
-if [ "$bytes_per_sect" = "" ]; then
- bytes_per_sect=512
-fi
-echo ""
-echo -n "Total number of disk cylinders? [$DEFCYLN] "
-read cyls_per_disk junk
-if [ "$cyls_per_disk" = "" ]; then
- cyls_per_disk=$DEFCYLN
-fi
-echo ""
-echo -n "Number of disk heads (i.e., tracks/cylinder)? [$DEFHEAD] "
-read tracks_per_cyl junk
-if [ "$tracks_per_cyl" = "" ]; then
- tracks_per_cyl=$DEFHEAD
-fi
-echo ""
-echo -n "Number of disk sectors (i.e., sectors/track)? [$DEFSECT] "
-read sects_per_track junk
-if [ "$sects_per_track" = "" ]; then
- sects_per_track=$DEFSECT
-fi
-echo ""
+echo -n "Disk label name (one word, please)? [${name:-mfr_model}] "
+read resp junk
+name=${resp:-${name:-mfr_model}}
+echo
+echo -n "Total number of disk cylinders? [${cyls_per_disk:-${DEFCYLN}}] "
+read resp junk
+cyls_per_disk=${resp:-${cyls_per_disk:-${DEFCYLN}}}
+echo
+echo -n "Number of disk heads (i.e., tracks/cylinder)? [${tracks_per_cyl:-${DEFHEAD}}] "
+read resp junk
+tracks_per_cyl=${resp:-${tracks_per_cyl:-${DEFHEAD}}}
+echo
+echo -n "Number of disk sectors (i.e., sectors/track)? [${sects_per_track:-${DEFSECT}}] "
+read resp junk
+sects_per_track=${resp:-${sects_per_track:-${DEFSECT}}}
cylindersize=`expr $sects_per_track \* $tracks_per_cyl`
disksize=`expr $cylindersize \* $cyls_per_disk`
mb_sect=`expr 1024 \* 1024 / $bytes_per_sect`
mb_per_disk=`expr $disksize / $mb_sect`
-echo "Disk has a total of $mb_per_disk Mb."
-echo "It must be divided into at least two partitions: one for the root"
-echo "filesystem and one for swap. In addition, it is a very good idea to"
-echo "have at least a third partition for the /usr filesystem."
-echo ""
-echo "For greater efficiency, partitions should begin and end on cylinder"
-echo "boundaries. If you know the size NN in Megabytes (Mb) of a partition"
-echo "you want, then use the following formula to determine the number NC of"
-echo "cylinders to use:"
-echo " NC = integer { ( NN * $mb_sect ) / $cylindersize }"
-echo -n "Total size of the ${OPSYSTEM} portion of the disk (in cylinders)? [${cyls_per_disk}] "
-read partition junk
-if [ "$partition" = "" ]; then
- partition=$cyls_per_disk
+opsys_cyls_min=`expr $DISKMIN \* $mb_sect / $cylindersize`
+analyze_fdisk_data
+if [ $? -eq 0 ]; then
+ partition=`expr $cyls_per_opsys \* $cylindersize`
+ part_offset=`expr $opsys_off \* $cylindersize`
fi
-partition=`expr $partition \* $cylindersize`
-part_offset=0
-if [ $partition -lt $disksize ]; then
- echo ""
- echo -n "Offset from beginning of the disk of first ${OPSYSTEM} partition (in cylinders)? [0] "
- read part_offset junk
- if [ "$part_offset" = "" ]; then
- part_offset=0
+echo
+echo "Disk has a total of $mb_per_disk Mb."
+echo "The size of the ${OPSYSTEM} portion of the disk must be at least"
+echo "${opsys_cyls_min} cylinders, and should not exceed $(expr $cyls_per_disk - 1) cylinders."
+echo "The offset of ${OPSYSTEM} from the beginning of the disk should be at"
+echo "least 1 cylinder."
+echo
+echo "For efficiency, partitions begin and end on cylinder boundaries."
+echo "If you know the size NN in Megabytes (Mb) of a partition you want, then"
+echo "use the following formula to determine the number NC of cylinders to use:"
+echo " NC = integer { ( NN * $mb_sect ) / $cylindersize }"
+while :; do
+ echo -n "Total size of the ${OPSYSTEM} portion of the disk (in cylinders)? [${cyls_per_opsys:-`expr ${cyls_per_disk} - 1`}] "
+ read resp junk
+ cyls_per_opsys=${resp:-${cyls_per_opsys:-`expr ${cyls_per_disk} - 1`}}
+ partition=`expr $cyls_per_opsys \* $cylindersize`
+ if [ $cyls_per_opsys -lt $cyls_per_disk -a ! "$force_offset" ]; then
+ echo
+ echo -n "Offset of ${OPSYSTEM} from beginning of disk (in cylinders)? [${opsys_off:-1}] "
+ read resp junk
+ opsys_off=${resp:-${opsys_off:-1}}
+ else
+ echo
+ echo "WARNING: Installing at cylinder 0 overwrites DOS partition table."
+ echo "Existing partitions will be lost, and subsequent installs may fail."
+ RUN_FDISK=""
+ cyls_per_opsys=$cyls_per_disk
+ partition=$disksize
+ opsys_off=0
fi
- echo $part_offset
-fi
-part_offset=`expr $part_offset \* $cylindersize`
+ part_offset=`expr $opsys_off \* $cylindersize`
+ opsys_extent=`expr $opsys_off + $cyls_per_opsys`
+ if [ ${opsys_extent} -gt ${cyls_per_disk} ]; then
+ echo
+ echo "${OPSYSTEM} Size + Offset cannot exceed ${cyls_per_disk} cylinders."
+ elif [ ${cyls_per_opsys} -lt ${opsys_cyls_min} ]; then
+ echo
+ echo "${OPSYSTEM} requires at least ${opsys_cyls_min} cylinders to install."
+ else break
+ fi
+done
badspacesec=0
if [ "$sect_fwd" = "sf:" ]; then
badspacecyl=`expr $sects_per_track + 126`
badspacecyl=`expr $badspacecyl + $cylindersize - 1`
badspacecyl=`expr $badspacecyl / $cylindersize`
badspacesec=`expr $badspacecyl \* $cylindersize`
- echo ""
+ echo
echo -n "Using $badspacesec sectors ($badspacecyl cylinders) for the "
echo "bad144 bad block table"
fi
whats_left=`expr $partition - $badspacesec`
cyl_left=`expr $whats_left / $cylindersize`
mb_left=`expr $whats_left / $mb_sect`
-echo ""
-echo "There are $mb_left Mb ($cyl_left cylinders) to allocate."
-echo ""
-# set default root partition to 15MB
-part_size=`expr \( 15 \* $mb_sect \) / $cylindersize`
-if [ $part_size -gt $cyl_left ]; then
- part_size=$cyl_left
+swap_cyls_min=`expr $SWAPMIN \* $mb_sect / $cylindersize`
+root_cyls_max=`expr ${cyl_left} - ${swap_cyls_min}`
+root_cyls_min=`expr $ROOTMIN \* $mb_sect / $cylindersize`
+echo
+echo "There are $mb_left Mb ($cyl_left cylinders) to allocate."
+echo
+echo "The $OPSYSTEM portion of the disk must itself be divided into at least"
+echo "two partitions: one for the root filesystem and one for swap. It is a"
+echo "good idea to have at least a third (large) $OPSYSTEM partition for the /usr"
+echo "filesystem."
+echo
+echo "The root partition cannot exceed ${root_cyls_max} cylinders. It is usually"
+echo "no larger than about 15 Mb ($(expr 15 \* $mb_sect / $cylindersize) cylinders), and sometimes"
+echo "as small as $ROOTMIN Mb ($root_cyls_min cylinders)."
+if [ ! "$cyls_per_root" ]; then
+ # set default root partition to 15MB
+ cyls_per_root=`expr \( 15 \* $mb_sect \) / $cylindersize`
+ [ $cyls_per_root -gt $root_cyls_max ] && cyls_per_root=$root_cyls_max
fi
-echo "The root partition is usually no larger than about 15 Mb, and sometimes"
-echo "as small as 7 or 8 Mb."
-root=0
-while [ $root -eq 0 ]; do
- echo -n "Root partition size (in cylinders)? [${part_size}] "
- read root junk
- if [ "$root" = "" ]; then
- root=$part_size
+while :; do
+ echo -n "Root partition size (in cylinders)? [${cyls_per_root}] "
+ read resp junk
+ cyls_per_root=${resp:-${cyls_per_root}}
+ root=`expr $cyls_per_root \* $cylindersize`
+ if [ ${cyls_per_root} -gt ${root_cyls_max} ]; then
+ echo
+ echo "The root partition size cannot exceed $root_cyls_max cylinders."
+ elif [ ${cyls_per_root} -lt ${root_cyls_min} ]; then
+ echo
+ echo "The root partition size must be at least $root_cyls_min cylinders."
+ else
+ part_used=`expr $root + $badspacesec`
+ break
fi
- case $root in
- [1-9]*)
- root=`expr $root \* $cylindersize`
- total=$root
- if [ $total -gt $whats_left ]; then
- echo Total is greater than remaining free space
- root=0
- else
- part_used=`expr $root + $badspacesec`
- fi
- ;;
- *)
- root=0
- ;;
- esac
done
root_offset=$part_offset
whats_left=`expr $partition - $part_used`
cyl_left=`expr $whats_left / $cylindersize`
mb_left=`expr $whats_left / $mb_sect`
-echo ""
+echo
# DO NOT USE DIFFERENT BLOCKING FACTORS FOR EACH PARITION.. IT TRASHES THE
# VM SYSTEM! When that gets fixed this can go back the way it was...
#
@@ -227,138 +552,114 @@ echo "We can build the filesystems with block/fragment sizes of either"
echo " 1) 4k/512, to save disk space at the expense of speed, or"
echo " 2) 8k/1k for speed at the expense of disk space."
echo -n "Which blocking factor should we use for the filesystems? "
-echo -n "[$DEFBLOCKING] "
-read blocking_factor junk
-if [ "$blocking_factor" = "" ]; then
- blocking_factor=$DEFBLOCKING
-fi
-DEFBLOCKING=$blocking_factor
+echo -n "[${blocking_factor:-${DEFBLOCKING}}] "
+read resp junk
+blocking_factor=${resp:-${blocking_factor:-${DEFBLOCKING}}}
fragsize=`expr $bytes_per_sect \* $blocking_factor`
blocksize=`expr $bytes_per_sect \* $blocking_factor \* 8`
-minswap=`expr 8 \* $mb_sect`
-min_cyl=`expr $minswap / $cylindersize`
-swap=0
-while [ $swap -eq 0 ]; do
- echo
- echo "$mb_left Mb ($cyl_left cylinders) remaining in ${OPSYSTEM} portion of disk."
- echo
- echo "Minimum swap space is $min_cyl cylinders."
- echo "For running X, if your RAM size is NR Mb, then the recomended swap"
- echo "size NS (in cylinders) is:"
- echo " NS = integer { ( 2.1 x NR x $mb_sect ) / ${cylindersize} }"
-
+echo
+echo "$mb_left Mb ($cyl_left cylinders) remaining in ${OPSYSTEM} portion of disk."
+echo
+echo "Minimum swap space is ${swap_cyls_min} cylinders."
+echo "For running X, if your RAM size is NR Mb, then the recomended swap"
+echo "size NS (in cylinders) is:"
+echo " NS = integer { ( NR x `expr 21 \* $mb_sect / 10` ) / ${cylindersize} }"
+if [ ! "$swap_cyl" ]; then
# guess memory size
mb_ram=16
- part_size=`expr \( 21 \* $mb_ram \* $mb_sect \) / 10`
- part_size=`expr $part_size / ${cylindersize}`
+ swap_cyl=`expr \( 21 \* $mb_ram \* $mb_sect \) / 10`
+ swap_cyl=`expr $swap_cyl / ${cylindersize}`
# but not swap size more than 10% of disk size...
swap_quot=`expr $mb_left / $mb_ram`
if [ $swap_quot -lt 10 ]; then
- part_size=$min_cyl
+ swap_cyl=$swap_cyls_min
fi
- echo -n "Swap partition size (in cylinders)? [${part_size}] "
- read swap_cyl junk
- if [ "$swap_cyl" = "" ]; then
- swap_cyl=$part_size
+fi
+while :; do
+ echo -n "Swap partition size (in cylinders)? [${swap_cyl}] "
+ read resp junk
+ swap_cyl=${resp:-${swap_cyl}}
+ swap=`expr $swap_cyl \* $cylindersize`
+ if [ ${swap_cyl} -gt ${cyl_left} ]; then
+ echo
+ echo "Swap size cannot exceed $cyl_left cylinders."
+ elif [ ${swap_cyl} -lt ${swap_cyls_min} ]; then
+ echo
+ echo "Swap size must be at least ${swap_cyls_min} cylinders."
+ else
+ break
fi
- case $swap_cyl in
- [1-9]*)
- swap=`expr $swap_cyl \* $cylindersize`
- if [ $swap_cyl -gt $cyl_left ]; then
- echo "Swap size is greater than remaining free space"
- swap=0
- fi
- if [ $swap_cyl -lt $min_cyl ]; then
- echo "Swap space must be greater than $min_cyl"
- swap=0
- fi
- ;;
- *)
- swap=0
- ;;
- esac
done
-echo ""
+echo
swap_offset=`expr $root_offset + $root`
part_used=`expr $part_used + $swap`
-mount -u /dev/fd0a /
-echo "" >/etc/disktab
-echo "$name|${OPSYSTEM} installation generated:\\" >>/etc/disktab
-echo " :dt=${type}:ty=winchester:\\" >>/etc/disktab
+echo "" >/etc/disktab
+echo "$name|${OPSYSTEM} installation generated:\\" >>/etc/disktab
+echo " :dt=${type}:ty=winchester:\\" >>/etc/disktab
echo -n " :nc#${cyls_per_disk}:ns#${sects_per_track}" >>/etc/disktab
-echo ":nt#${tracks_per_cyl}:\\" >>/etc/disktab
-echo " :se#${bytes_per_sect}:${sect_fwd}\\" >>/etc/disktab
+echo ":nt#${tracks_per_cyl}:\\" >>/etc/disktab
+echo " :se#${bytes_per_sect}:${sect_fwd}\\" >>/etc/disktab
echo -n " :pa#${root}:oa#${root_offset}" >>/etc/disktab
-echo ":ta=4.2BSD:ba#${blocksize}:fa#${fragsize}:\\" >>/etc/disktab
-echo " :pb#${swap}:ob#${swap_offset}:tb=swap:\\" >>/etc/disktab
-echo " :pc#${partition}:oc#${part_offset}:\\" >>/etc/disktab
+echo ":ta=4.2BSD:ba#${blocksize}:fa#${fragsize}:\\" >>/etc/disktab
+echo " :pb#${swap}:ob#${swap_offset}:tb=swap:\\" >>/etc/disktab
+echo " :pc#${partition}:oc#${part_offset}:\\" >>/etc/disktab
ename="";fname="";gname="";hname=""
-
-echo ""
-echo "Now we enter information about any other partitions and filesystems"
-echo "to be created in the ${OPSYSTEM} portion of the disk. This process"
-echo "is complete when we've filled up all remaining space in the ${OPSYSTEM}"
-echo "portion of the disk."
-
+if [ $part_used -lt $partition ]; then
+ echo
+ echo "Now we enter information about any other partitions and filesystems"
+ echo "to be created in the ${OPSYSTEM} portion of the disk. This process"
+ echo "is complete when we've filled up all remaining space in the ${OPSYSTEM}"
+ echo "portion of the disk."
+fi
while [ $part_used -lt $partition ]; do
part_size=0
whats_left=`expr $partition - $part_used`
cyl_left=`expr $whats_left / $cylindersize`
mb_left=`expr $whats_left / $mb_sect`
- while [ $part_size -eq 0 ]; do
- echo ""
- echo "$mb_left Mb ($cyl_left cylinders) remaining in ${OPSYSTEM} portion of disk."
- echo
+ echo
+ echo "$mb_left Mb ($cyl_left cylinders) remaining in ${OPSYSTEM} portion of disk."
+ echo
+ while :; do
echo -n "Next partition size (in cylinders)? [${cyl_left}] "
- read part_size junk
- if [ "$part_size" = "" ]; then
- part_size=$cyl_left
+ read resp junk
+ part_size=${resp:-${cyl_left}}
+ part_size=`expr $part_size \* $cylindersize`
+ total=`expr $part_used + $part_size`
+ if [ $total -gt $partition ]; then
+ echo
+ echo "Partition size cannot exceed ${cyl_left} cylinders."
+ else
+ part_used=$total
+ part_name=""
+ while [ "$part_name" = "" ]; do
+ echo
+ echo -n "On which directory should this filesystem be mounted? [usr] "
+ read resp junk
+ part_name=${resp:-usr}
+ part_name=`expr "$part_name" : '/*\(.*\)'`
+ done
+ break
fi
- case $part_size in
- [1-9]*)
- part_size=`expr $part_size \* $cylindersize`
- total=`expr $part_used + $part_size`
- if [ $total -gt $partition ]; then
- echo Total is greater than partition size
- part_size=0
- else
- part_used=$total
- part_name=""
- while [ "$part_name" = "" ]; do
- echo
- echo -n "On which directory should this filesystem be mounted? [usr] "
- read part_name junk
- if [ "$part_name" = "" ]; then
- part_name=usr
- fi
- part_name=`expr "$part_name" : '/*\(.*\)'`
- done
- fi
- ;;
- *)
- part_size=0
- ;;
- esac
done
- echo ""
- if [ "$ename" = "" ]; then
+ echo
+ if [ ! "$ename" ]; then
ename=$part_name
offset=`expr $part_offset + $root + $swap`
echo -n " :pe#${part_size}:oe#${offset}" >>/etc/disktab
echo ":te=4.2BSD:be#${blocksize}:fe#${fragsize}:\\" >>/etc/disktab
offset=`expr $offset + $part_size`
- elif [ "$fname" = "" ]; then
+ elif [ ! "$fname" ]; then
fname=$part_name
echo -n " :pf#${part_size}:of#${offset}" >>/etc/disktab
echo ":tf=4.2BSD:bf#${blocksize}:ff#${fragsize}:\\" >>/etc/disktab
offset=`expr $offset + $part_size`
- elif [ "$gname" = "" ]; then
+ elif [ ! "$gname" ]; then
gname=$part_name
echo -n " :pg#${part_size}:og#${offset}" >>/etc/disktab
echo ":tg=4.2BSD:bg#${blocksize}:fg#${fragsize}:\\" >>/etc/disktab
offset=`expr $offset + $part_size`
- elif [ "$hname" = "" ]; then
+ elif [ ! "$hname" ]; then
hname=$part_name
echo -n " :ph#${part_size}:oh#${offset}" >>/etc/disktab
echo ":th=4.2BSD:bh#${blocksize}:fh#${fragsize}:\\" >>/etc/disktab
@@ -366,115 +667,141 @@ while [ $part_used -lt $partition ]; do
fi
done
-echo " :pd#${disksize}:od#0:" >>/etc/disktab
-cat /etc/disktab
+echo " :pd#${disksize}:od#0:" >>/etc/disktab
sync
-echo ""
+# cat /etc/disktab
+OIFS=$IFS
+IFS='
+'
+while read data; do
+ echo $data
+done < /etc/disktab
+IFS=$OIFS
+
+echo
echo -n "Verbose installation? [n] "
read resp
case $resp in
- y*)
- cpioverbose=v
- ;;
- *)
- cpioverbose=
- ;;
+y*)
+ cpioverbose=v
+ ;;
+*)
+ cpioverbose=
+ ;;
esac
-echo ""
-echo "OK! THIS IS THE LAST CHANCE!!! Data on the hard disk wil be lost."
+
+echo
+echo "OK! THIS IS THE LAST CHANCE!!! Data on the hard disk wil be lost."
echo -n "Are you sure you want to install on the hard drive? (yes/no) "
-answer=""
-while [ "$answer" = "" ]; do
- read answer junk
- case $answer in
- Yes|yes|YES)
- verified_install=1
- echo ""
- echo "OK! Here we go..."
- ;;
- No|no|NO)
- echo ""
- echo -n "Would you like to change the configuration? [y] "
- read answer junk
- if [ "$answer" = "" ]; then
- answer=y
- fi
- echo $answer
- case $answer in
- y*|Y*)
- ;;
- *)
- echo ""
- echo "OK, then enter 'halt' to halt the machine."
- echo "Once the machine has halted, remove the floppy,"
- echo "and press any key to reboot."
- exit
- ;;
- esac
+resp=""
+while [ ! "$resp" ]; do
+ read resp junk
+ case "$resp" in
+ Yes|yes|YES)
+ verified_install=1
+ echo
+ echo "OK! Here we go..."
+ ;;
+ No|no|NO)
+ echo
+ echo -n "Would you like to change the configuration? [y] "
+ read resp junk
+ resp=${resp:-y}
+ case "$resp" in
+ y*|Y*)
;;
*)
- echo "Please spell out either of \`yes' or \`no'..."
- echo -n "Install on the hard disk? (yes/no) "
- answer=
+ echo
+ echo "OK, then. Enter 'halt' to halt the machine."
+ echo "Once the machine has halted, remove the floppy,"
+ echo "and press any key to reboot."
+ exit
;;
+ esac
+ ;;
+ *)
+ echo "Please spell out either of \`yes' or \`no'..."
+ echo -n "Install on the hard disk? (yes/no) "
+ resp=
+ ;;
esac
done
-
done # End of Big Loop
-echo ""
+put_fdisk_data
+
+echo
echo -n "Labelling disk..."
-/sbin/disklabel -w -r $drivename $name /usr/mdec/${drivetype}boot /usr/mdec/boot${drivetype}
-echo " done."
+echo y |
+/sbin/disklabel -w -r ${drivename} $name /usr/mdec/${drivetype}boot /usr/mdec/boot${drivetype} >/dev/null 2>&1
+echo " done."
if [ "$sect_fwd" = "sf:" ]; then
echo -n "Initializing bad144 badblock table..."
bad144 $drivename 0
echo " done."
- echo "Scanning disk for bad blocks..."
- bad144 -s $drivename
- echo "done."
+ echo "Updating badblock table..."
+ # `2>&1 >/dev/null' filters stdout and leaves only stderr...
+ bad144 -s $drivename 2>&1 >/dev/null |
+ while read data; do
+ bad_seek=`expr $data : '[^(]*(seek)[^0-9]*\([0-9]*\)'`
+ bad_read=`expr $data : '[^(]*(read)[^0-9]*\([0-9]*\)'`
+ [ "$bad_seek" -o "$bad_read" ] && echo -n "$bad_seek $bad_read "
+ done >bad144.out
+ if [ -s bad144.out ]; then
+ read badlist <bad144.out
+ bad144 -a -c $drivename "$badlist"
+ >bad144.out
+ fi
+ echo " done."
fi
-echo "Initializing root filesystem, and mounting..."
+echo "Initializing root filesystem, and mounting..."
newfs ${rotdelay} /dev/r${drivename}a $name
mount -v /dev/${drivename}a /mnt
if [ "$ename" != "" ]; then
- echo ""
- echo "Initializing $ename filesystem, and mounting..."
+ echo
+ echo "Initializing $ename filesystem, and mounting..."
newfs ${rotdelay} /dev/r${drivename}e $name
mkdir -p /mnt/$ename
mount -v /dev/${drivename}e /mnt/$ename
fi
if [ "$fname" != "" ]; then
- echo ""
- echo "Initializing $fname filesystem, and mounting..."
+ echo
+ echo "Initializing $fname filesystem, and mounting..."
newfs ${rotdelay} /dev/r${drivename}f $name
mkdir -p /mnt/$fname
mount -v /dev/${drivename}f /mnt/$fname
fi
if [ "$gname" != "" ]; then
- echo ""
- echo "Initializing $gname filesystem, and mounting..."
+ echo
+ echo "Initializing $gname filesystem, and mounting..."
newfs ${rotdelay} /dev/r${drivename}g $name
mkdir -p /mnt/$gname
mount -v /dev/${drivename}g /mnt/$gname
fi
if [ "$hname" != "" ]; then
- echo ""
- echo "Initializing $hname filesystem, and mounting..."
+ echo
+ echo "Initializing $hname filesystem, and mounting..."
newfs ${rotdelay} /dev/r${drivename}h $name
mkdir -p /mnt/$hname
mount -v /dev/${drivename}h /mnt/$hname
fi
echo
-echo "Copying to disk..."
+echo "Please wait. Copying to disk..."
cd /
-cat filelist | cpio -pdamu${cpioverbose} /mnt
+# cat filelist | cpio -pdamu${cpioverbose} /mnt
+OIFS=$IFS
+IFS='
+'
+while read data; do
+ echo $data
+done <filelist | cpio -pdamu${cpioverbose} /mnt
+IFS=$OIFS
sync
cd /mnt
@@ -492,44 +819,48 @@ if [ "$hname" != "" ]; then
echo "/dev/${drivename}h /$hname ufs rw 1 5" >>etc/fstab
fi
-cat /etc/disktab >etc/disktab.install
+# cat /etc/disktab >etc/disktab.install
+OIFS=$IFS
+IFS='
+'
+while read data; do
+ echo $data
+done </etc/disktab >etc/disktab.install
+IFS=$OIFS
-cat << EOF >.profile
-PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/contrib/bin:.:
-export PATH
-HOME=/root
-export HOME
-TERM=pc3
-export TERM
-mount -at ufs
-echo
-echo "Insert cpio floppy in a drive and enter"
-echo -n "that drive's number (e.g. 0 or 1): [0]"
-read driveno junk
-if [ "\$driveno" = "" ]; then
- driveno=0
-fi
-echo $driveno
-mount -o ro /dev/fd\${driveno}a /mnt
-cd /mnt
-install
-EOF
+# cat << EOF >.profile
+(
+echo "PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin:/usr/contrib/bin:.:"
+echo "export PATH"
+echo "HOME=/root"
+echo "export HOME"
+echo "TERM=pc3"
+echo "export TERM"
+echo "mount -at ufs"
+echo "echo"
+echo "echo \"Insert second installation floppy in drive and\""
+echo "echo -n \"enter that drive's number (e.g. 0 or 1): [0] \""
+echo "read resp junk"
+echo "driveno=\${resp:-0}"
+echo "mount -o ro /dev/fd\${driveno}a /mnt"
+echo "cd /mnt"
+echo "install"
+) >.profile
sync
-echo ""
-echo "The next step: reboot from the kernel-copy disk, copy a kernel"
-echo "to the hard disk, and finally reboot from the hard disk."
-echo ""
-echo "To do this, enter 'halt' now to halt the machine. After it"
+echo
+echo "The next step: reboot from the kernel-copy disk, copy a kernel"
+echo "to the hard disk, and finally reboot from the hard disk."
+echo
+echo "To do this, enter 'halt' now to halt the machine. After it"
echo "announces that it has halted, remove the floppy from the drive"
echo "and insert the kernel-copy disk that was booted before."
-echo "Press any key to reboot."
-echo ""
-echo "When prompted to insert the file system floppy, this time just"
-echo "hit RETURN without changing floppies. If all goes well, you can"
-echo "enter the command \`copy' at the prompt to copy the kernel to the"
-echo "hard disk. When asked for which partition to copy to, enter to"
-echo "\`${drivename}a' (without the quotes)."
-echo ""
+echo "Press any key to reboot. Then when prompted to insert the file"
+echo "system floppy this time, just hit RETURN without changing floppies."
+echo
+echo "If all goes well, you can enter the command \`copy' at the prompt to"
+echo "copy the kernel to the hard disk. When asked for which partition to"
+echo "copy to, enter to \`${drivename}a' (without the quotes)."
+echo
echo "Okay, that's all for now. I'm waiting for you to enter \`halt'..."
diff --git a/etc/etc.i386/inst2.install b/etc/etc.i386/inst2.install
index f8bcda4..f2d5382 100755
--- a/etc/etc.i386/inst2.install
+++ b/etc/etc.i386/inst2.install
@@ -20,9 +20,10 @@ case $resp in
;;
esac
-echo "Copying to disk..."
+echo
+echo "Please wait. Copying to disk..."
cd /
-cat mnt/inst2.cpio.gz | mnt/usr/bin/gunzip | cpio -idmu${cpioverbose}
+mnt/usr/bin/gunzip < mnt/inst2.cpio.gz | cpio -idmu${cpioverbose}
cd /mnt
ls .profile install usr/bin/* | cpio -pdmu${cpioverbose} /
cd /dev
diff --git a/etc/etc.i386/inst2.profile b/etc/etc.i386/inst2.profile
index ebdddd7..c174aec 100644
--- a/etc/etc.i386/inst2.profile
+++ b/etc/etc.i386/inst2.profile
@@ -1,6 +1,6 @@
stty status '^T'
-trap : 2
-trap : 3
+#trap : 2
+#trap : 3
HOME=/; export HOME
PATH=/sbin:/bin:/usr/sbin:/usr/bin; export PATH
if [ -e /fastboot ]
@@ -121,16 +121,112 @@ tmp_dir()
load_fd()
{
tmp_dir
- which=
- while [ "$which" != "a" -a "$which" != "b" ]; do
- echo -n "read from which floppy drive? [a or b] "
- read which
+ drive=
+ altdrive=
+ while [ -z "$drive" ]; do
+ echo -n "Read from which floppy drive? (? for help) [a] "
+ read answer junk
+ [ ! "$answer" ] && answer=a
+ case "$answer" in
+ a*b|A*B)
+ drive=A; altdrive=B
+ ;;
+ b*a|B*A)
+ drive=B; altdrive=A
+ ;;
+ a*|A*)
+ drive=A; altdrive=A
+ ;;
+ b*|B*)
+ drive=B; altdrive=B
+ ;;
+ q*|Q*)
+ drive=q
+ ;;
+ \?*)
+ echo
+ echo "Enter: To:"
+ echo "------ ---"
+ echo " a Read from floppy drive A:"
+ echo " b Read from floppy drive B:"
+ echo " ab Alternate between A: and B:, starting with A:"
+ echo " ba Alternate between A: and B:, starting with B:"
+ echo " q Quit"
+ echo
+ ;;
+ esac
done
- while echo -n "Insert floppy (hit ^C to terminate, enter to load): "
+ verbose=
+ interactive=-v
+ dir=/tmp/floppy
+ umount $dir >/dev/null 2>&1
+ rm -f $dir
+ mkdir -p $dir
+ while [ "$drive" != "q" ]
do
- read foo
- mread "$which:*.*" .
+ device=/dev/fd0a
+ [ "$drive" = "B" ] && device=/dev/fd1a
+ echo; echo "Insert floppy in drive $drive: and press RETURN,"
+ echo -n "or enter option (? for help): "
+ read answer junk
+ [ ! "$answer" ] && answer=c
+ case "$answer" in
+ c*|C*)
+ if mount -t pcfs $verbose $device $dir; then
+ [ "$verbose" ] &&
+ echo "Please wait. Copying to disk..."
+ cp $interactive $dir/* .
+ sync
+ umount $dir
+ tmp=$drive; drive=$altdrive; altdrive=$tmp
+ fi
+ ;;
+ o*|O*)
+ tmp=$drive; drive=$altdrive; altdrive=$tmp
+ ;;
+ v*|V*)
+ tmp=$verbose; verbose=; [ -z "$tmp" ] && verbose=-v
+ tmp=on; [ -z "$verbose" ] && tmp=off
+ echo "verbose mode is $tmp"
+ ;;
+ i*|I*)
+ tmp=$interactive; interactive=; [ -z "$tmp" ] && interactive=-i
+ tmp=on; [ -z "$interactive" ] && tmp=off
+ echo "interactive mode is $tmp"
+ ;;
+ s*|S*)
+ echo; echo -n "tmp_dir is set to $tmp_dir"
+ [ "$tmp_dir" != "`pwd`" ] && echo -n " (physically `pwd`)"
+ echo; echo "free space in tmp_dir:"
+ df -k .
+ echo -n "you are loading from drive $drive:"
+ [ "$drive" != "$altdrive" ] && echo -n " and drive $altdrive:"
+ echo
+ tmp=on; [ -z "$verbose" ] && tmp=off
+ echo "verbose mode is $tmp"
+ tmp=on; [ -z "$interactive" ] && tmp=off
+ echo "interactive mode is $tmp"
+ ;;
+ q*|Q*)
+ drive=q
+ ;;
+ \?)
+ echo
+ echo "Enter: To:"
+ echo "----- ---"
+ echo "(just RETURN) Copy the contents of the floppy to $tmp_dir"
+ [ "$drive" != "$altdrive" ] &&
+ echo " o Read from alternate drive"
+ echo " v Toggle verbose mode"
+ echo " i Toggle interactive mode (cp -i)"
+ echo " s Display status"
+ echo " q Quit"
+ echo
+ ;;
+ esac
done
+ echo goodbye.
+ unset verbose answer drive altdrive device dir tmp interactive
}
load_qic_tape()
{
@@ -152,18 +248,21 @@ extract()
echo -n "Would you like to be verbose about this? [n] "
read verbose
case $verbose in
- y*|Y*)
- tarverbose=--verbose
- ;;
- *)
- tarverbose=
- ;;
+ y*|Y*)
+ tarverbose=--verbose
+ ;;
+ *)
+ tarverbose=
+ ;;
esac
#XXX ugly hack to eliminate busy files, copy them to /tmp and use them
#from there...
- cp -p /bin/cat /usr/bin/gunzip /usr/bin/tar /tmp
- /tmp/cat "$@"* | /tmp/gunzip | (cd / ; /tmp/tar --extract --file - --preserve-permissions ${tarverbose} )
- rm -f /tmp/cat /tmp/gunzip /tmp/tar
+ cp -p /usr/bin/gunzip /usr/bin/tar /tmp
+
+ for i in "$@"*; do
+ /tmp/gunzip <$i
+ done | (cd / ; /tmp/tar --extract --file - --preserve-permissions ${tarverbose} )
+ rm -f /tmp/gunzip /tmp/tar
sync
}
configure()
@@ -195,7 +294,7 @@ configure()
echo -n "Does this machine have an ethernet interface? [y] "
read resp
case "$resp" in
- n*)
+ n*)
;;
*)
intf=
@@ -219,31 +318,31 @@ configure()
echo -n "Does this interface have a special netmask? [n] "
read resp
case "$resp" in
- y*)
- echo -n "What is the netmask? [0xffffff00] "
- read ifnetmask
- if [ "$ifnetmask" = "" ]; then
- ifnetmask=0xffffff00
- fi
- ;;
- *)
- ifnetmask=
- ;;
+ y*)
+ echo -n "What is the netmask? [0xffffff00] "
+ read ifnetmask
+ if [ "$ifnetmask" = "" ]; then
+ ifnetmask=0xffffff00
+ fi
+ ;;
+ *)
+ ifnetmask=
+ ;;
esac
echo -n "Does this interface need additional flags? [n] "
read resp
case "$resp" in
- y*)
- echo -n "What flags? [llc0] "
- read ifflags
- if [ "$ifflags" = "" ]; then
- ifflags=llc0
- fi
- ;;
- *)
- ifflags=
- ;;
+ y*)
+ echo -n "What flags? [llc0] "
+ read ifflags
+ if [ "$ifflags" = "" ]; then
+ ifflags=llc0
+ fi
+ ;;
+ *)
+ ifflags=
+ ;;
esac
echo "inet $ifname $ifnetmask $ifflags" > /etc/hostname.$intf
OpenPOWER on IntegriCloud