summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--distrib/powerpc/inst-common/Makefile.inc31
-rw-r--r--distrib/powerpc/inst-common/dot.commonutils129
-rw-r--r--distrib/powerpc/inst-common/list81
-rw-r--r--distrib/powerpc/inst-common/mtree.conf79
-rw-r--r--distrib/powerpc/inst-common/raminst.conf23
-rw-r--r--distrib/powerpc/inst-common/termcap.vt67
-rw-r--r--distrib/powerpc/miniroot/Makefile68
-rw-r--r--distrib/powerpc/miniroot/disktab.preinstall32
-rw-r--r--distrib/powerpc/miniroot/disktab.shadow32
-rw-r--r--distrib/powerpc/miniroot/dot.instutils156
-rw-r--r--distrib/powerpc/miniroot/dot.profile51
-rw-r--r--distrib/powerpc/miniroot/install.md304
-rw-r--r--distrib/powerpc/miniroot/install.sh413
-rw-r--r--distrib/powerpc/miniroot/install.sub1335
-rw-r--r--distrib/powerpc/miniroot/list15
-rw-r--r--distrib/powerpc/miniroot/raminst.conf25
-rw-r--r--distrib/powerpc/miniroot/start_rdconfig.sh4
-rw-r--r--distrib/powerpc/ramdisk/Makefile25
-rw-r--r--distrib/powerpc/ramdisk/install.sh578
-rw-r--r--distrib/powerpc/ramdisk/install.sub2071
-rw-r--r--distrib/powerpc/ramdisk/list4
21 files changed, 2667 insertions, 2856 deletions
diff --git a/distrib/powerpc/inst-common/Makefile.inc b/distrib/powerpc/inst-common/Makefile.inc
deleted file mode 100644
index eeded287978..00000000000
--- a/distrib/powerpc/inst-common/Makefile.inc
+++ /dev/null
@@ -1,31 +0,0 @@
-#
-# $NetBSD: Makefile.inc,v 1.1 1995/07/18 04:13:14 briggs Exp $
-#
-
-# TOP is assumed to be defined by Makefile including this one.
-
-CBIN?= raminst
-COMMONDIR= ${TOP}/inst-common
-
-MOUNT_POINT?= ${TOP}/${BASE}/fs
-
-LISTS= ${COMMONDIR}/list ${.CURDIR}/list
-CRUNCHCONF?= ${COMMONDIR}/${CBIN}.conf
-MTREE= ${COMMONDIR}/mtree.conf
-
-${CBIN}.mk ${CBIN}.cache ${CBIN}.c: ${CRUNCHCONF}
- crunchgen -E -D ${BSDSRCDIR} -L ${DESTDIR}/usr/lib ${CRUNCHCONF}
-
-${CBIN}: ${CBIN}.mk ${CBIN}.cache ${CBIN}.c
- make -f ${CBIN}.mk all
-
-do_files:
- mtree -def ${MTREE} -p ${MOUNT_POINT}/ -u
- TOPDIR=${TOP} CURDIR=${.CURDIR} OBJDIR=${.OBJDIR} \
- TARGDIR=${MOUNT_POINT} sh ${TOP}/runlist.sh ${LISTS}
-
-clean cleandir:
- /bin/rm -f core ${IMAGE} ${CBIN} ${CBIN}.mk ${CBIN}.cache *.o *.lo *.c
-
-.include <bsd.obj.mk>
-.include <bsd.subdir.mk>
diff --git a/distrib/powerpc/inst-common/dot.commonutils b/distrib/powerpc/inst-common/dot.commonutils
deleted file mode 100644
index 64f840321c8..00000000000
--- a/distrib/powerpc/inst-common/dot.commonutils
+++ /dev/null
@@ -1,129 +0,0 @@
-#
-# $NetBSD: dot.commonutils,v 1.1 1995/07/18 04:13:18 briggs 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.
-#
-
-# Installation utilites (functions), to get NetBSD installed on
-# the hard disk. These are meant to be invoked from the shell prompt,
-# by people installing NetBSD.
-
-Set_tmp_dir()
-{
- def_tmp_dir=`pwd`
- if [ "$def_tmp_dir" = "/" -o "$def_tmp_dir" = "/mnt" ]; then
- def_tmp_dir=/mnt/usr/distrib
- fi
-
- echo -n "What directory should be used to find and/or store "
- echo "installtion"
- echo -n "files? [$def_tmp_dir] "
- read tmp_dir
- if [ "$tmp_dir" = "" ]; then
- tmp_dir=$def_tmp_dir
- fi
- if [ ! -d "$tmp_dir" ]; then
- /bin/rm -rf $tmp_dir
- mkdir -p $tmp_dir
- fi
-}
-
-Tmp_dir()
-{
- if [ "$tmp_dir" = "" ]; then
- Set_tmp_dir
- fi
- cd $tmp_dir
-}
-
-Load_fd()
-{
- Tmp_dir
- which=
- while [ "$which" != "a" -a "$which" != "b" ]; do
- echo -n "Read from which floppy drive ('a' or 'b')? [a] "
- read which
- if [ "X$which" = "X" ]; then
- which=a
- fi
- done
- while echo -n "Insert floppy (hit ^C to terminate, enter to load): "
- do
- mount -t msdos /dev/fd0$which /mnt2
- cp -rp /mnt2/* .
- umount /mnt2
- done
-}
-
-Load_tape()
-{
- Tmp_dir
- echo -n "Which tape drive will you be using? [rst0] "
- read which
- if [ "X$which" = "X" ]; then
- which=rst0
- fi
- echo -n "Insert the tape into the tape drive and hit return to "
- echo -n "continue..."
- read foo
- echo "Extracting files from the tape..."
- tar xvfp /dev/$which
- echo "Done."
-}
-
-Extract()
-{
- Tmp_dir
- echo -n "Would you like to list the files as they're extracted? [n] "
- read verbose
- case $verbose in
- y*|Y*)
- tarverbose=v
- ;;
- *)
- tarverbose=
- ;;
- esac
- echo -n "Are you installing a '-current' snapshot? [n] "
- read snapshot
- case $snapshot in
- y*|Y*)
- snapshot=y
- ;;
- *)
- snapshot=n
- ;;
- esac
- if [ $snapshot = n ]
- then
- cat "$1".??? | gunzip | (cd / ; tar xfp$tarverbose -)
- else
- cat "$1".tar.gz | gunzip | (cd /mnt ; tar xfp$tarverbose -)
- fi
-}
diff --git a/distrib/powerpc/inst-common/list b/distrib/powerpc/inst-common/list
deleted file mode 100644
index 1ed6faf3d4e..00000000000
--- a/distrib/powerpc/inst-common/list
+++ /dev/null
@@ -1,81 +0,0 @@
-#
-# $NetBSD: list,v 1.2 1995/08/13 13:21:07 briggs Exp $
-#
-
-# copy the crunched binary, link to it, and kill it
-COPY ${OBJDIR}/raminst raminst
-LINK raminst bin/cat
-LINK raminst bin/chmod
-LINK raminst bin/cp
-LINK raminst bin/df
-LINK raminst bin/dd
-LINK raminst bin/ed
-LINK raminst bin/expr
-LINK raminst bin/ln
-LINK raminst bin/ls
-LINK raminst bin/kill
-LINK raminst bin/hostname
-LINK raminst bin/mkdir
-LINK raminst bin/mv
-LINK raminst bin/pwd
-LINK raminst bin/rm
-#COPY ${OBJDIR}/sh bin/sh
-LINK raminst bin/sh
-LINK bin/sh bin/-sh
-LINK raminst bin/stty
-LINK raminst bin/sleep
-LINK raminst bin/sync
-LINK raminst bin/test
-LINK raminst bin/[
-LINK raminst sbin/disklabel
-LINK raminst sbin/fdisk
-LINK raminst sbin/fsck
-LINK raminst sbin/halt
-LINK raminst sbin/ifconfig
-LINK raminst sbin/init
-LINK raminst sbin/mknod
-LINK raminst sbin/mount
-LINK raminst sbin/mount_cd9660
-LINK raminst sbin/mount_ffs
-LINK raminst sbin/mount_msdos
-LINK raminst sbin/mount_kernfs
-LINK raminst sbin/mount_nfs
-LINK raminst sbin/mount_mfs
-LINK raminst sbin/newfs
-LINK raminst sbin/reboot
-LINK raminst sbin/route
-LINK raminst sbin/slattach
-LINK raminst sbin/umount
-LINK raminst usr/bin/chgrp
-LINK raminst usr/bin/cut
-LINK raminst usr/bin/ftp
-LINK raminst usr/bin/egrep
-LINK raminst usr/bin/grep
-LINK raminst usr/bin/gzip
-LINK raminst usr/bin/more
-LINK raminst usr/bin/sed
-LINK raminst usr/bin/sort
-LINK raminst usr/bin/pax
-LINK raminst usr/bin/tip
-LINK raminst usr/sbin/chown
-SPECIAL /bin/rm raminst
-
-# copy the MAKEDEV script and make some devices
-COPY ${DESTDIR}/dev/MAKEDEV dev/MAKEDEV
-SPECIAL cd dev; sh MAKEDEV raminst
-
-# we need the contents of /usr/mdec (XXX)
-# COPY ${DESTDIR}/usr/mdec/* usr/mdec
-
-# various files that we need in /etc for the install
-COPY ${DESTDIR}/etc/group etc
-COPY ${DESTDIR}/etc/master.passwd etc
-COPY ${DESTDIR}/etc/passwd etc
-COPY ${DESTDIR}/etc/protocols etc
-COPY ${DESTDIR}/etc/pwd.db etc
-COPY ${DESTDIR}/etc/services etc
-COPY ${DESTDIR}/etc/spwd.db etc
-
-# and the common installation tools
-COPY ${TOPDIR}/inst-common/dot.commonutils .commonutils
-COPY ${TOPDIR}/inst-common/termcap.vt usr/share/misc/termcap
diff --git a/distrib/powerpc/inst-common/mtree.conf b/distrib/powerpc/inst-common/mtree.conf
deleted file mode 100644
index 6add6806ec5..00000000000
--- a/distrib/powerpc/inst-common/mtree.conf
+++ /dev/null
@@ -1,79 +0,0 @@
-#
-# $NetBSD: mtree.conf,v 1.1 1995/07/18 04:13:24 briggs Exp $
-#
-
-/set type=dir uname=root gname=wheel mode=0755
-# .
-.
-
-# ./bin
-bin
-# ./bin
-..
-
-# ./dev
-dev
-# ./dev
-..
-
-# ./etc
-etc
-# ./etc
-..
-
-# ./mnt
-mnt
-# ./mnt
-..
-
-# ./mnt2
-mnt2
-# ./mnt2
-..
-
-# ./sbin
-sbin
-# ./sbin
-..
-
-# ./tmp
-tmp
-# ./tmp
-..
-
-# ./kern
-kern
-# ./kern
-..
-
-# ./usr
-usr
-
-# ./usr/bin
-bin
-# ./usr/bin
-..
-
-# ./usr/mdec
-mdec
-# ./usr/mdec
-..
-
-# ./usr/sbin
-sbin
-# ./usr/sbin
-..
-
-# ./usr/share
-share
-
-# ./usr/share/misc
-misc
-# ./usr/share/misc
-..
-
-# ./usr/share
-..
-
-# ./usr
-..
diff --git a/distrib/powerpc/inst-common/raminst.conf b/distrib/powerpc/inst-common/raminst.conf
deleted file mode 100644
index fdee4d29e71..00000000000
--- a/distrib/powerpc/inst-common/raminst.conf
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# $NetBSD: raminst.conf,v 1.3 1995/09/30 20:00:47 briggs Exp $
-#
-# ram.conf - unified binary for the RAM disk
-#
-
-srcdirs bin sbin usr.bin usr.sbin
-srcdirs gnu/usr.bin
-
-progs cat chmod chown chroot cp dd df disklabel ed expr fdisk fsck_ffs ftp
-progs gzip ifconfig init ln ls mkdir mknod more mount mount_cd9660
-progs mount_ffs mount_msdos mount_nfs mv newfs printf pwd reboot rm route
-progs sed sh shutdown slattach strings stty sync pax test tip umount # update
-
-ln chown chgrp
-ln fsck_ffs fsck
-ln gzip gzcat gunzip
-ln sh -sh # init invokes the shell this way
-ln test [
-ln mount_ffs ffs
-ln newfs mount_mfs
-
-libs -ledit -lutil -ltermcap -lcompat -ll -lm -lz
diff --git a/distrib/powerpc/inst-common/termcap.vt b/distrib/powerpc/inst-common/termcap.vt
deleted file mode 100644
index d0c58f1022b..00000000000
--- a/distrib/powerpc/inst-common/termcap.vt
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# $NetBSD: termcap.vt,v 1.1 1995/07/18 04:13:31 briggs Exp $
-#
-# Copyright (c) 1980, 1985, 1989 The Regents of the University of California.
-# 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 the University of
-# California, Berkeley and its contributors.
-# 4. Neither the name of the University nor the names of its contributors
-# may be used to endorse or promote products derived from this software
-# without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
-#
-# @(#)termcap.src 5.109 (Berkeley) 3/8/93
-#
-vt200|vt220|dec-vt220|vt200-js|vt220-js|dec vt200 series with jump scroll:\
- :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:LE=\E[%dD:\
- :RI=\E[%dC:UP=\E[%dA:ae=^O:al=\E[L:as=^N:ct=\E[3g:dc=\E[P:dl=\E[M:\
- :ei=\E[4l:im=\E[4h:k1=\E[17~:k2=\E[18~:k3=\E[19~:k4=\E[20~:\
- :k5=\E[21~:k6=\E[23~:k7=\E[24~:k8=\E[25~:kD=\E[3~:kH=\E[4~:\
- :kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kh=\E[1~:km:mi:ms:\
- :if=/usr/share/tabset/vt100:se=\E[27m:st=\EH:ue=\E[24m:\
- :tc=vt100:
-vt100|dec-vt100|vt100-am|vt100am|dec vt100:\
- :bl=^G:cr=^M:it#8:\
- :do=^J:co#80:li#24:cl=50\E[;H\E[2J:sf=2*\ED:\
- :le=^H:bs:am:cm=5\E[%i%d;%dH:nd=2\E[C:up=2\E[A:cb=3\E[1K:\
- :ce=3\E[K:cd=50\E[J:so=2\E[7m:se=2\E[m:us=2\E[4m:ue=2\E[m:\
- :md=2\E[1m:mr=2\E[7m:mb=2\E[5m:me=2\E[m:is=\E[1;24r\E[24;1H:\
- :if=/usr/share/tabset/vt100:\
- :rs=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:ks=\E[?1h\E=:ke=\E[?1l\E>:\
- :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:kb=^H:\
- :ho=\E[H:k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:pt:sr=2*\EM:vt#3:xn:\
- :sc=\E7:rc=\E8:cs=\E[%i%d;%dr:
-vt300|vt320|vt300-80|VT 300 with 80 columns, on VMS:\
- :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
- :LE=\E[%dD:RI=\E[%dC:SR=1*\E[%dM:UP=\E[%dA:al=\E[L:\
- :am:bl=^G:bs:cd=2*\E[J:ce=2*\E[K:cl=45\E[H\E[2J:\
- :cm=%i\E[%d;%dH:co#80:cr=\r:cs=\E[%i%d;%dr:ct=\E[3g:\
- :dc=\E[P:dl=\E[M:dm=:do=\ED:ec=\E[%dX:ed=:ei=\E[4l:\
- :ho=\E[H:ic:im=\E[4h:it#8:k1=\EOP:k2=\EOQ:k3=\EOR:\
- :k4=\EOS:kd=\E[B:ke=\E[?1l\E>:kl=\E[D:kn#4:kr=\E[C:ks=\E[?1h\E=:\
- :ku=\E[A:le=^H:li#24:mb=\E[5m:md=\E[1m:me=\E[0m:mi:\
- :mr=\E[7m:ms:nd=\E[C:nl=\ED:nw=\EE:pf=\E[?4i:po=\E[?5i:\
- :ps=\E[i:rc=\E8:sc=\E7:se=\E[27m:sf=1*\ED:so=\E[7m:\
- :sr=1*\EM:st=\EH:ue=\E[24m:up=\EM:us=\E[4m:xn:
diff --git a/distrib/powerpc/miniroot/Makefile b/distrib/powerpc/miniroot/Makefile
deleted file mode 100644
index 8258390a71c..00000000000
--- a/distrib/powerpc/miniroot/Makefile
+++ /dev/null
@@ -1,68 +0,0 @@
-# $NetBSD: Makefile,v 1.1 1995/07/18 04:13:06 briggs Exp $
-
-TOP= ${.CURDIR}/..
-
-.include "${TOP}/Makefile.inc"
-IMAGE= miniroot-${REV}.fs
-CRUNCHCONF?= ${TOP}/miniroot/${CBIN}.conf
-BASE=miniroot
-KERNEL= ${SRCSYSDIR}/arch/powerpc/compile/MINI/bsd
-
-MOUNT_POINT= /mnt1
-BDEV= /dev/rd0a
-CDEV= /dev/rrd0a
-RDEV= /dev/rd0c
-
-.include "${TOP}/inst-common/Makefile.inc"
-
-all: ${CBIN} ${IMAGE}
- @echo "all done"
-
-DISKTYPE= rdroot
-NBLKS= 4096
-# old format, minfree, opt, b/i trks, sects, cpg
-NEWFSARGS= -t ffs -m 0 -o space -c 16
-
-${IMAGE}: do_prep do_mount do_files do_umount_copy do_unconfig
- mv -f ${IMAGE}.tmp ${IMAGE}
- if [ -e rd.pid ] ; then \
- kill `< rd.pid`; \
- rm rd.pid;\
- fi
-
-elfrdsetroot: ${TOP}//elfrdsetroot.c
- ${HOSTCC} -o elfrdsetroot ${TOP}/elfrdsetroot.c
-
-setroot: ${IMAGE} bsd elfrdsetroot
- ${.OBJDIR}/elfrdsetroot bsd < ${IMAGE}
-
-bsd: ${KERNEL}
- cp ${KERNEL} bsd
-
-do_prep: ${CBIN} do_unconfig
- sh ${.CURDIR}/start_rdconfig.sh ${RDEV} ${NBLKS}
-# dd if=/usr/mdec/sdboot of=${CDEV}
- disklabel -w ${CDEV} ${DISKTYPE}
-
-do_mount:
- -newfs ${NEWFSARGS} -s ${NBLKS} ${CDEV}
- mount ${BDEV} ${MOUNT_POINT}
-
-do_umount_copy:
- @echo ""
- @df -i ${MOUNT_POINT}
- @echo ""
- -umount ${MOUNT_POINT}
- dd if=${CDEV} of=${IMAGE}.tmp bs=4b count=`expr ${NBLKS} / 4 `
-
-do_unconfig:
- -umount ${MOUNT_POINT}
- if [ -e rd.pid ] ; then \
- kill `< rd.pid`; \
- rm rd.pid;\
- fi
-
-
-.PRECIOUS: ${IMAGE}
-
-
diff --git a/distrib/powerpc/miniroot/disktab.preinstall b/distrib/powerpc/miniroot/disktab.preinstall
deleted file mode 100644
index 81a0bb0a052..00000000000
--- a/distrib/powerpc/miniroot/disktab.preinstall
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# $NetBSD: disktab.preinstall,v 1.1 1995/07/18 04:13:07 briggs Exp $
-#
-# Disk geometry and partition layout tables.
-# Key:
-# dt controller type
-# ty type of disk (fixed, removeable, simulated)
-# d[0-4] drive-type-dependent parameters
-# ns #sectors/track
-# nt #tracks/cylinder
-# nc #cylinders/disk
-# sc #sectors/cylinder, nc*nt default
-# su #sectors/unit, sc*nc default
-# se sector size, DEV_BSIZE default
-# rm rpm, 3600 default
-# sf supports bad144-style bad sector forwarding
-# sk sector skew per track, default 0
-# cs sector skew per cylinder, default 0
-# hs headswitch time, default 0
-# ts one-cylinder seek time, default 0
-# il sector interleave (n:1), 1 default
-# bs boot block size, default BBSIZE
-# sb superblock size, default SBSIZE
-# o[a-h] partition offsets in sectors
-# p[a-h] partition sizes in sectors
-# b[a-h] partition block sizes in bytes
-# f[a-h] partition fragment sizes in bytes
-# t[a-h] partition types (filesystem, swap, etc)
-#
-# All partition sizes reserve space for bad sector tables.
-# (5 cylinders needed for maintenance + replacement sectors)
-#
diff --git a/distrib/powerpc/miniroot/disktab.shadow b/distrib/powerpc/miniroot/disktab.shadow
deleted file mode 100644
index 5b01c7be7d9..00000000000
--- a/distrib/powerpc/miniroot/disktab.shadow
+++ /dev/null
@@ -1,32 +0,0 @@
-#
-# $NetBSD: disktab.shadow,v 1.1.1.1 1996/05/19 19:43:39 leo Exp $
-#
-# Disk geometry and partition layout tables.
-# Key:
-# dt controller type
-# ty type of disk (fixed, removeable, simulated)
-# d[0-4] drive-type-dependent parameters
-# ns #sectors/track
-# nt #tracks/cylinder
-# nc #cylinders/disk
-# sc #sectors/cylinder, nc*nt default
-# su #sectors/unit, sc*nc default
-# se sector size, DEV_BSIZE default
-# rm rpm, 3600 default
-# sf supports bad144-style bad sector forwarding
-# sk sector skew per track, default 0
-# cs sector skew per cylinder, default 0
-# hs headswitch time, default 0
-# ts one-cylinder seek time, default 0
-# il sector interleave (n:1), 1 default
-# bs boot block size, default BBSIZE
-# sb superblock size, default SBSIZE
-# o[a-h] partition offsets in sectors
-# p[a-h] partition sizes in sectors
-# b[a-h] partition block sizes in bytes
-# f[a-h] partition fragment sizes in bytes
-# t[a-h] partition types (filesystem, swap, etc)
-#
-# All partition sizes reserve space for bad sector tables.
-# (5 cylinders needed for maintenance + replacement sectors)
-#
diff --git a/distrib/powerpc/miniroot/dot.instutils b/distrib/powerpc/miniroot/dot.instutils
deleted file mode 100644
index 94a55659fe5..00000000000
--- a/distrib/powerpc/miniroot/dot.instutils
+++ /dev/null
@@ -1,156 +0,0 @@
-#
-# $NetBSD: dot.instutils,v 1.1 1995/07/18 04:13:08 briggs 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.
-#
-
-# Installation configuration utilites (functions), to get NetBSD configured
-# reasonably once it is installed on the hard disk. These are meant to be
-# invoked from the shell prompt, by people installing NetBSD.
-
-Configure()
-{
- DEV=/mnt/dev
- ETC=/mnt/etc
-
- echo "You will now be prompted for information about this"
- echo "machine. If you hit return, the default answer (in"
- echo "brackets) will be used."
-
- echo ""
- echo -n "What is this machine's hostname? [unknown.host.domain] "
- read hname
- if [ "$hname" = "" ]; then
- hname=unknown.host.domain
- fi
- echo $hname > ${ETC}/myname
- proto_domain=`echo $hname | sed -e 's/[^.]*\.//'`
-
- echo ""
- echo "What domain is this machine in (this is NOT its YP"
- echo -n "domain name)? [$proto_domain] "
- read dname
- if [ "$dname" = "" ]; then
- dname=$proto_domain
- fi
-
- echo ""
- if [ -e ${ETC}/sendmail.cf ]; then
- echo "WARNING: A default sendmail.cf exists, and probably"
- echo "needs to be tuned and/or replaced, to work properly at"
- echo "your site!"
- else
- echo "WARNING: No default sendmail.cf installed. Did you"
- echo "forget to install the 'etc' distribution?"
- fi
-
- echo "127.0.0.1 localhost localhost.$dname" > ${ETC}/hosts
-
- echo ""
- echo -n "Does this machine have an ethernet interface? [y] "
- read resp
- case "$resp" in
- n*)
- ;;
- *)
- intf=
- while [ "$intf" = "" ]; do
- echo -n "What is the primary interface name "
- echo -n "(e.g. ae0, etc)? "
- read intf
- done
- echo -n "What is the hostname for this interface? [$hname] "
- read ifname
- if [ "$ifname" = "" ]; then
- ifname=$hname
- fi
- ifaddr=
- while [ "$ifaddr" = "" ]; do
- echo -n "What is the IP address associated with "
- echo -n "interface ${intf}? "
- read ifaddr
- done
- echo "$ifaddr $ifname `echo $ifname | sed -e s/\.$dname//`" \
- >> ${ETC}/hosts
-
- 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=
- ;;
- esac
-
- echo -n "Does this interface need additional flags? [n] "
- read resp
- case "$resp" in
- y*)
- echo -n "What flags? [link0] "
- read ifflags
- if [ "$ifflags" = "" ]; then
- ifflags=link0
- fi
- ;;
- *)
- ifflags=
- ;;
- esac
- echo "inet $ifname $ifnetmask $ifflags" > ${ETC}/hostname.$intf
-
- echo ""
- echo -n "WARNING: if you have any more ethernet interfaces, "
- echo "you will have to configure"
- echo -n "them by hand. Read the comments in /etc/netstart to"
- echo "learn how to do this."
- ;;
- esac
-
- echo ""
- echo -n "Making device nodes..."
- cd ${DEV}
- sh MAKEDEV all
- echo " done."
-
- sync
-
- echo "You may now reboot your machine with the shutdown command."
- echo " shutdown -r now"
- echo "to reboot or"
- echo " shutdown -h now"
- echo "to halt."
- echo "Remember to erase the miniroot name from the booter's"
- echo "booting preferences dialog box before booting again."
-}
diff --git a/distrib/powerpc/miniroot/dot.profile b/distrib/powerpc/miniroot/dot.profile
deleted file mode 100644
index 1076ba966bf..00000000000
--- a/distrib/powerpc/miniroot/dot.profile
+++ /dev/null
@@ -1,51 +0,0 @@
-#
-# $NetBSD: dot.profile,v 1.1 1995/07/18 04:13:09 briggs 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.
-#
-
-export PATH=/sbin:/bin:/usr/bin:/usr/sbin:/
-export HISTFILE=/.sh_history
-export TERM=vt200
-
-umask 022
-
-set -o emacs # emacs-style command line editing
-
-# set up some sane defaults
-echo 'erase ^?, werase ^H, kill ^U, intr ^C'
-stty newcrt werase ^H intr ^C kill ^U erase ^? 9600
-echo ''
-
-# pull in the function definitions that people will use from the shell prompt.
-. /.commonutils
-. /.instutils
-
-# run the installation script.
-install
diff --git a/distrib/powerpc/miniroot/install.md b/distrib/powerpc/miniroot/install.md
deleted file mode 100644
index 346865d4c1f..00000000000
--- a/distrib/powerpc/miniroot/install.md
+++ /dev/null
@@ -1,304 +0,0 @@
-# $OpenBSD: install.md,v 1.5 1997/09/30 17:52:47 deraadt Exp $
-# Copyright (c) 1996 The NetBSD Foundation, Inc.
-# All rights reserved.
-#
-# This code is derived from software contributed to The NetBSD Foundation
-# by Jason R. Thorpe.
-#
-# 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 the NetBSD
-# Foundation, Inc. and its contributors.
-# 4. Neither the name of The NetBSD Foundation nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-# ``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 REGENTS OR CONTRIBUTORS 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.
-#
-
-#
-# machine dependent section of installation/upgrade script.
-#
-#
-
-TMPWRITEABLE=/tmp/writeable
-KERNFSMOUNTED=/tmp/kernfsmounted
-
-md_copy_kernel() {
- echo "This must be done later by hand"
-}
-
-md_set_term() {
- if [ ! -z "$TERM" ]; then
- return
- fi
- echo -n "Specify terminal type [xterm]: "
- getresp "xterm"
- TERM="$resp"
- export TERM
-}
-
-md_machine_arch() {
- cat /kern/machine
-}
-
-md_get_diskdevs() {
- egrep "^ofdisk[0-9] " < /kern/msgbuf | sed -e "s/ofdisk/sd/"
-}
-
-md_get_cddevs() {
- egrep "^ofdisk[0-9] " < /kern/msgbuf | sed -e "s/ofdisk/sd/"
-}
-
-md_get_ifdevs() {
- # return available network devices
- egrep "(^ofnet[0-9] )"< /kern/msgbuf | cut -d" " -f1 | sort -u
-}
-
-md_get_partition_range() {
- # return range of valid partition letters
- echo "[a-p]"
-}
-
-md_installboot() {
- echo "This must be done later by hand"
-}
-md_labeldisk() {
- echo "huh"
-}
-
-md_checkforfdisklabel() {
- # $1 is the disk to check
- local rval
-
- fdisk $1 >>/dev/null 2>/tmp/checkfordisklabel
- if grep "invalid fdisk" /tmp/checkfordisklabel; then
- rval=1
- else
- rval=0
- fi
- rm -f /tmp/checkfordisklabel
- return $rval
-}
-
-md_checkfordisklabel() {
- # $1 is the disk to check
- local rval
-
- disklabel $1 >> /dev/null 2> /tmp/checkfordisklabel
- if grep "no disk label" /tmp/checkfordisklabel; then
- rval=1
- elif grep "disk label corrupted" /tmp/checkfordisklabel; then
- rval=2
- else
- rval=0
- fi
-
- rm -f /tmp/checkfordisklabel
- return $rval
-}
-
-md_prep_disklabel()
-{
- local _disk
-
- _disk=$1
- md_checkforfdisklabel $_disk
- md_checkfordisklabel $_disk
- case $? in
- 0)
- echo -n "Do you wish to edit the fdisk label on $_disk? [y] "
- ;;
- 1)
- echo "WARNING: Disk $_disk has no fdisk label"
- echo -n "Do you want to create one with the fdisk editor? [y] "
- ;;
- esac
-
- getresp "y"
- case "$resp" in
- y*|Y*)
- fdisk -u $_disk
- ;;
- *) ;;
- esac
-
- case $? in
- 0)
- echo -n "Do you wish to edit the disklabel on $_disk? [y] "
- ;;
- 1)
- echo "WARNING: Disk $_disk has no label"
- echo -n "Do you want to create one with the disklabel editor? [y] "
- ;;
- 2)
- echo "WARNING: Label on disk $_disk is corrupted"
- echo -n "Do you want to try and repair the damage using the disklabel editor? [y] "
- ;;
- esac
-
- getresp "y"
- case "$resp" in
- y*|Y*) ;;
- *) return ;;
- esac
-
- # display example
- cat << \__md_prep_disklabel_1
-
-Here is an example of what the partition information will look like once
-you have entered the disklabel editor. Disk partition sizes and offsets
-are in sector (most likely 512 bytes) units. Make sure these size/offset
-pairs are on cylinder boundaries (the number of sector per cylinder is
-given in the `sectors/cylinder' entry, which is not shown here).
-
-Do not change any parameters except the partition layout and the label name.
-It's probably also wisest not to touch the `8 partitions:' line, even
-in case you have defined less than eight partitions.
-
-[Example]
-8 partitions:
-# size offset fstype [fsize bsize cpg]
- a: 50176 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 111)
- b: 64512 50176 swap # (Cyl. 112 - 255)
- c: 640192 0 unknown # (Cyl. 0 - 1428)
- d: 525504 114688 4.2BSD 1024 8192 16 # (Cyl. 256 - 1428)
-[End of example]
-
-__md_prep_disklabel_1
- echo -n "Press [Enter] to continue "
- getresp ""
- disklabel -W ${_disk}
- disklabel -E ${_disk}
-}
-
-md_welcome_banner() {
-{
- if [ "$MODE" = "install" ]; then
- echo ""
- echo "Welcome to the OpenBSD/powerpc ${VERSION} installation program."
- cat << \__welcome_banner_1
-
-This program is designed to help you put OpenBSD on your disk,
-in a simple and rational way. You'll be asked several questions,
-and it would probably be useful to have your disk's hardware
-manual, the installation notes, and a calculator handy.
-__welcome_banner_1
-
- else
- echo ""
- echo "Welcome to the OpenBSD/powerpc ${VERSION} upgrade program."
- cat << \__welcome_banner_2
-
-This program is designed to help you upgrade your OpenBSD system in a
-simple and rational way.
-
-As a reminder, installing the `etc' binary set is NOT recommended.
-Once the rest of your system has been upgraded, you should manually
-merge any changes to files in the `etc' set into those files which
-already exist on your system.
-__welcome_banner_2
- fi
-
-cat << \__welcome_banner_3
-
-As with anything which modifies your disk's contents, this
-program can cause SIGNIFICANT data loss, and you are advised
-to make sure your data is backed up before beginning the
-installation process.
-
-Default answers are displayed in brackets after the questions.
-You can hit Control-C at any time to quit, but if you do so at a
-prompt, you may have to hit return. Also, quitting in the middle of
-installation may leave your system in an inconsistent state.
-
-__welcome_banner_3
-} | more
-}
-
-md_not_going_to_install() {
- cat << \__not_going_to_install_1
-
-OK, then. Enter `halt' at the prompt to halt the machine. Once the
-machine has halted, power-cycle the system to load new boot code.
-
-__not_going_to_install_1
-}
-
-md_congrats() {
- local what;
- if [ "$MODE" = "install" ]; then
- what="installed";
- else
- what="upgraded";
- fi
- cat << __congratulations_1
-
-CONGRATULATIONS! You have successfully $what OpenBSD!
-To boot the installed system, enter halt at the command prompt. Once the
-system has halted, reset the machine and boot from the disk.
-
-__congratulations_1
-}
-
-md_native_fstype() {
-}
-md_native_fsopts() {
-}
-
-md_makerootwritable() {
- # 2048 is the size in DEV_BIZE blocks
-
- if [ -e ${TMPWRITEABLE} ]
- then
- md_mountkernfs
- return
- fi
- umount /tmp >> /dev/null 2>&1
- if ! mount -t ffs -u /dev/rd0a / ; then
- cat << \__rd0_failed_1
-
-FATAL ERROR: Can't mount the ram filesystem.
-
-__rd0_failed_1
- exit
- fi
-
- # Bleh. Give mount_mfs a chance to DTRT.
- sleep 2
- > ${TMPWRITEABLE}
-
- md_mountkernfs
-}
-md_mountkernfs() {
- if [ -e ${KERNFSMOUNTED} ]
- then
- return
- fi
- if ! mount -t kernfs /kern /kern
- then
- cat << \__kernfs_failed_1
-FATAL ERROR: Can't mount kernfs filesystem
-__kernfs_failed_1
- exit
- fi
- > ${KERNFSMOUNTED}
-}
diff --git a/distrib/powerpc/miniroot/install.sh b/distrib/powerpc/miniroot/install.sh
deleted file mode 100644
index 806e137bb26..00000000000
--- a/distrib/powerpc/miniroot/install.sh
+++ /dev/null
@@ -1,413 +0,0 @@
-#!/bin/sh
-# $OpenBSD: install.sh,v 1.2 1997/02/21 17:42:09 rahnds Exp $
-# $NetBSD: install.sh,v 1.5.2.8 1996/08/27 18:15:05 gwr Exp $
-#
-# Copyright (c) 1996 The NetBSD Foundation, Inc.
-# All rights reserved.
-#
-# This code is derived from software contributed to The NetBSD Foundation
-# by Jason R. Thorpe.
-#
-# 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 the NetBSD
-# Foundation, Inc. and its contributors.
-# 4. Neither the name of The NetBSD Foundation nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-# ``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 REGENTS OR CONTRIBUTORS 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.
-
-FILESYSTEMS="/tmp/filesystems" # used thoughout
-FQDN="" # domain name
-
-trap "umount /tmp >> /dev/null 2>&1" 0
-
-MODE="install"
-
-# include machine-dependent functions
-# The following functions must be provided:
-# md_copy_kernel() - copy a kernel to the installed disk
-# md_get_diskdevs() - return available disk devices
-# md_get_cddevs() - return available CD-ROM devices
-# md_get_ifdevs() - return available network interfaces
-# md_get_partition_range() - return range of valid partition letters
-# md_installboot() - install boot-blocks on disk
-# md_labeldisk() - put label on a disk
-# md_prep_disklabel() - label the root disk
-# md_welcome_banner() - display friendly message
-# md_not_going_to_install() - display friendly message
-# md_congrats() - display friendly message
-# md_native_fstype() - native filesystem type for disk installs
-# md_native_fsopts() - native filesystem options for disk installs
-# md_makerootwritable() - make root writable (at least /tmp)
-
-# include machine dependent subroutines
-. install.md
-
-# include common subroutines
-. install.sub
-
-# which sets?
-THESETS="$ALLSETS"
-
-# Good {morning,afternoon,evening,night}.
-md_welcome_banner
-echo -n "Proceed with installation? [n] "
-getresp "n"
-case "$resp" in
- y*|Y*)
- echo "Cool! Let's get to it..."
- ;;
- *)
- md_not_going_to_install
- exit
- ;;
-esac
-
-# XXX Work around vnode aliasing bug (thanks for the tip, Chris...)
-ls -l /dev >> /dev/null 2>&1
-
-# Deal with terminal issues
-md_set_term
-
-# Get timezone info
-get_timezone
-
-# Make sure we can write files (at least in /tmp)
-# This might make an MFS mount on /tmp, or it may
-# just re-mount the root with read-write enabled.
-md_makerootwritable
-
-# Install the shadowed disktab file; lets us write to it for temporary
-# purposes without mounting the miniroot read-write.
-cp /etc/disktab.shadow /tmp/disktab.shadow
-
-while [ "X${ROOTDISK}" = "X" ]; do
- getrootdisk
-done
-
-# Deal with disklabels, including editing the root disklabel
-# and labeling additional disks. This is machine-dependent since
-# some platforms may not be able to provide this functionality.
-md_prep_disklabel ${ROOTDISK}
-
-# Assume partition 'a' of $ROOTDISK is for the root filesystem. Loop and
-# get the rest.
-# XXX ASSUMES THAT THE USER DOESN'T PROVIDE BOGUS INPUT.
-cat << \__get_filesystems_1
-
-You will now have the opportunity to enter filesystem information.
-You will be prompted for device name and mount point (full path,
-including the prepending '/' character).
-
-Note that these do not have to be in any particular order. You will
-be given the opportunity to edit the resulting 'fstab' file before
-any of the filesystems are mounted. At that time you will be able
-to resolve any filesystem order dependencies.
-
-__get_filesystems_1
-
-echo "The following will be used for the root filesystem:"
-echo " ${ROOTDISK}a /"
-
-echo "${ROOTDISK}a /" > ${FILESYSTEMS}
-
-resp="X" # force at least one iteration
-while [ "X$resp" != X"done" ]; do
- echo ""
- echo -n "Device name? [done] "
- getresp "done"
- case "$resp" in
- done)
- ;;
-
- *)
- _device_name=`basename $resp`
-
- # force at least one iteration
- _first_char="X"
- while [ "X${_first_char}" != X"/" ]; do
- echo -n "Mount point? "
- getresp ""
- _mount_point=$resp
- if [ "X${_mount_point}" = X"/" ]; then
- # Invalid response; no multiple roots
- _first_char="X"
- else
- _first_char=`firstchar ${_mount_point}`
- fi
- done
- echo "${_device_name} ${_mount_point}" >> ${FILESYSTEMS}
- resp="X" # force loop to repeat
- ;;
- esac
-done
-
-echo ""
-echo "You have configured the following devices and mount points:"
-echo ""
-cat ${FILESYSTEMS}
-echo ""
-echo "Filesystems will now be created on these devices. If you made any"
-echo -n "mistakes, you may edit this now. Edit? [n] "
-getresp "n"
-case "$resp" in
- y*|Y*)
- ${EDITOR} ${FILESYSTEMS}
- ;;
- *)
- ;;
-esac
-
-# Loop though the file, place filesystems on each device.
-echo "Creating filesystems..."
-(
- while read _device_name _junk; do
- newfs /dev/r${_device_name}
- echo ""
- done
-) < ${FILESYSTEMS}
-
-# Get network configuration information, and store it for placement in the
-# root filesystem later.
-cat << \__network_config_1
-You will now be given the opportunity to configure the network. This will
-be useful if you need to transfer the installation sets via FTP or NFS.
-Even if you choose not to transfer installation sets that way, this
-information will be preserved and copied into the new root filesystem.
-
-Note, enter all symbolic host names WITHOUT the domain name appended.
-I.e. use 'hostname' NOT 'hostname.domain.name'.
-
-__network_config_1
-echo -n "Configure the network? [y] "
-getresp "y"
-case "$resp" in
- y*|Y*)
- resp="" # force at least one iteration
- if [ -f /etc/myname ]; then
- resp=`cat /etc/myname`
- fi
- echo -n "Enter system hostname: [$resp] "
- while [ "X${resp}" = X"" ]; do
- getresp "$resp"
- done
- hostname $resp
- echo $resp > /tmp/myname
-
- echo -n "Enter DNS domain name: "
- resp="" # force at least one iteration
- while [ "X${resp}" = X"" ]; do
- getresp ""
- done
- FQDN=$resp
-
- configurenetwork
-
- echo -n "Enter IP address of default route: [none] "
- getresp "none"
- if [ "X${resp}" != X"none" ]; then
- route delete default >> /dev/null 2>&1
- if route add default $resp >> /dev/null ; then
- echo $resp > /tmp/mygate
- fi
- fi
-
- echo -n "Enter IP address of primary nameserver: [none] "
- getresp "none"
- if [ "X${resp}" != X"none" ]; then
- echo "domain $FQDN" > /tmp/resolv.conf
- echo "nameserver $resp" >> /tmp/resolv.conf
- echo "search $FQDN" >> /tmp/resolv.conf
-
- echo -n "Would you like to use the nameserver now? [y] "
- getresp "y"
- case "$resp" in
- y*|Y*)
- cp /tmp/resolv.conf \
- /tmp/resolv.conf.shadow
- ;;
-
- *)
- ;;
- esac
- fi
-
- echo ""
- echo "The host table is as follows:"
- echo ""
- cat /tmp/hosts
- echo ""
- echo "You may want to edit the host table in the event that"
- echo "you need to mount an NFS server."
- echo -n "Would you like to edit the host table? [n] "
- getresp "n"
- case "$resp" in
- y*|Y*)
- ${EDITOR} /tmp/hosts
- ;;
-
- *)
- ;;
- esac
-
- cat << \__network_config_2
-
-You will now be given the opportunity to escape to the command shell to
-do any additional network configuration you may need. This may include
-adding additional routes, if needed. In addition, you might take this
-opportunity to redo the default route in the event that it failed above.
-If you do change the default route, and wish for that change to carry over
-to the installed system, execute the following command at the shell
-prompt:
-
- echo <ip_address_of_gateway> > /tmp/mygate
-
-where <ip_address_of_gateway> is the IP address of the default router.
-
-__network_config_2
- echo -n "Escape to shell? [n] "
- getresp "n"
- case "$resp" in
- y*|Y*)
- echo "Type 'exit' to return to install."
- sh
- ;;
-
- *)
- ;;
- esac
- ;;
- *)
- ;;
-esac
-
-# Now that the network has been configured, it is safe to configure the
-# fstab.
-(
- while read _dev _mp; do
- if [ "$mp" = "/" ]; then
- echo /dev/$_dev $_mp ffs rw 1 1
- else
- echo /dev/$_dev $_mp ffs rw 1 2
- fi
- done
-) < ${FILESYSTEMS} > /tmp/fstab
-
-echo "The fstab is configured as follows:"
-echo ""
-cat /tmp/fstab
-cat << \__fstab_config_1
-
-You may wish to edit the fstab. For example, you may need to resolve
-dependencies in the order which the filesystems are mounted. You may
-also wish to take this opportunity to place NFS mounts in the fstab.
-This would be especially useful if you plan to keep '/usr' on an NFS
-server.
-
-__fstab_config_1
-echo -n "Edit the fstab? [n] "
-getresp "n"
-case "$resp" in
- y*|Y*)
- ${EDITOR} /tmp/fstab
- ;;
-
- *)
- ;;
-esac
-
-echo ""
-munge_fstab /tmp/fstab /tmp/fstab.shadow
-mount_fs /tmp/fstab.shadow
-
-mount | while read line; do
- set -- $line
- if [ "$2" = "/" -a "$3" = "nfs" ]; then
- echo "You appear to be running diskless."
- echo -n "Are the install sets on one of your currently mounted filesystems? [n] "
- getresp "n"
- case "$resp" in
- y*|Y*)
- get_localdir
- ;;
- *)
- ;;
- esac
- fi
-done
-
-install_sets $ALLSETS $MDSETS
-
-# Copy in configuration information and make devices in target root.
-(
- cd /tmp
- for file in fstab hostname.* hosts myname mygate resolv.conf; do
- if [ -f $file ]; then
- echo -n "Copying $file..."
- cp $file /mnt/etc/$file
- echo "done."
- fi
- done
-
- # If no zoneinfo on the installfs, give them a second chance
- if [ ! -e /usr/share/zoneinfo ]; then
- get_timezone
- fi
- if [ ! -e /mnt/usr/share/zoneinfo ]; then
- echo "Cannot install timezone link..."
- else
- echo -n "Installing timezone link..."
- rm -f /mnt/etc/localtime
- ln -s /usr/share/zoneinfo/$TZ /mnt/etc/localtime
- echo "done."
- fi
-
- echo "if dev.tar.gz was not extracted it will be necessary"
- echo "to go to /mnt/dev and run \"sh MAKEDEV all\""
-# if [ ! -x /mnt/dev/MAKEDEV ]; then
-# echo "No /dev/MAKEDEV installed, something is wrong here..."
-# else
-# echo -n "Making devices..."
-# pid=`twiddle`
-# cd /mnt/dev
-# sh MAKEDEV all
-# kill $pid
-# echo "done."
-# fi
- md_copy_kernel
-
- md_installboot ${ROOTDISK}
-)
-
-unmount_fs /tmp/fstab.shadow
-
-# Pat on the back.
-md_congrats
-
-# ALL DONE!
-exit 0
diff --git a/distrib/powerpc/miniroot/install.sub b/distrib/powerpc/miniroot/install.sub
deleted file mode 100644
index 05494870cbc..00000000000
--- a/distrib/powerpc/miniroot/install.sub
+++ /dev/null
@@ -1,1335 +0,0 @@
-#!/bin/sh
-# $OpenBSD: install.sub,v 1.5 1997/02/21 17:42:11 rahnds Exp $
-# $NetBSD: install.sub,v 1.5.2.8 1996/09/02 23:25:02 pk Exp $
-#
-# Copyright (c) 1996 The NetBSD Foundation, Inc.
-# All rights reserved.
-#
-# This code is derived from software contributed to The NetBSD Foundation
-# by Jason R. Thorpe.
-#
-# 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 the NetBSD
-# Foundation, Inc. and its contributors.
-# 4. Neither the name of The NetBSD Foundation nor the names of its
-# contributors may be used to endorse or promote products derived
-# from this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
-# ``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 REGENTS OR CONTRIBUTORS 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.
-#
-
-# OpenBSD installation/upgrade script - common subroutines.
-
-ROOTDISK="" # filled in below
-VERSION= # filled in automatically (see list)
-export VERSION
-
-ALLDIST="base comp etc games man misc text" # default install sets
-ALLSNAP_1="etc games man misc text bin dev sbin"
-ALLSNAP_2="usr.bin usr.binutils usr.games usr.include bsd"
-ALLSNAP_3="usr.lib usr.libexec usr.misc usr.sbin usr.share var"
-ALLSETS="${ALLDIST} ${ALLSNAP_1} ${ALLSNAP_2} ${ALLSNAP_3}"
-
-UPGRSETS="base comp games man misc text" # default upgrade sets
-THESETS= # one of the above
-
-local_sets_dir="" # Path searched for sets by install_sets
- # on the local filesystems
-
-# decide upon an editor
-if [ X$EDITOR = X ]; then
- if [ -x /usr/bin/vi ]; then
- EDITOR=vi
- else
- EDITOR=ed
- fi
-fi
-
-getresp() {
- read resp
- if [ "X$resp" = "X" ]; then
- resp=$1
- fi
-}
-
-isin() {
-# test the first argument against the remaining ones, return succes on a match
- _a=$1; shift
- while [ $# != 0 ]; do
- if [ "$_a" = "$1" ]; then return 0; fi
- shift
- done
- return 1
-}
-
-rmel() {
-# remove first argument from list formed by the remaining arguments
- local _a
-
- _a=$1; shift
- while [ $# != 0 ]; do
- if [ "$_a" != "$1" ]; then
- echo "$1";
- fi
- shift
- done
-}
-
-cutword () {
-# read a line of data, return Nth element.
- local _a
- local _n
- local _oifs
-
- # optional field separator
- _oifs="$IFS"
- case "$1" in
- -t?*) IFS=${1#-t}; shift;;
- esac
-
- _n=$1
- read _a; set -- $_a
- IFS="$_oifs"
- if [ "$1" = "" ]; then return; fi
- eval echo \$$_n
-}
-
-cutlast () {
-# read a line of data, return last element. Equiv. of awk '{print $NF}'.
- local _a
- local _oifs
-
- # optional field separator
- _oifs="$IFS"
- case "$1" in
- -t?*) IFS=${1#-t}; shift;;
- esac
-
- read _a; set -- $_a
- IFS="$_oifs"
- if [ "$1" = "" ]; then return; fi
- while [ "$#" -gt 10 ]; do shift 10; done
- eval echo \$$#
-}
-
-firstchar () {
-# return first character of argument
- local _a
- _a=$1
- while [ ${#_a} != 1 ]; do
- _a=${_a%?}
- done
- echo $_a
-}
-
-basename () {
- local _oifs
- if [ "$1" = "" ]; then return; fi
- _oifs="$IFS"
- IFS="/"
- set -- $1
- IFS="$_oifs"
- while [ "$#" -gt 10 ]; do shift 10; done
- eval echo \$$#
-}
-
-dir_has_sets() {
- # return true when the directory $1 contains a set for $2...$n
- local _dir
- local _file
-
- _dir=$1; shift
- for _file in $*
- do
- if [ -f $_dir/${_file}.tar.gz ]; then
- return 0
- fi
- # Try for stupid msdos convention
- if [ -f $_dir/${_file}.tgz ]; then
- return 0
- fi
- done
- return 1
-}
-
-twiddle() {
-# spin the propeller so we don't get bored
- while : ; do
- sleep 1; echo -n "\010/";
- sleep 1; echo -n "\010-";
- sleep 1; echo -n "\010\\\\";
- sleep 1; echo -n "\010|";
- done >> /dev/tty & echo $!
-}
-
-get_localdir() {
- # $1 is relative mountpoint
- local _mp
- local _dir
-
- _mp=$1
- _dir=
- while : ; do
- echo -n "Enter the pathname where the sets are stored [$_dir] "
- getresp "$_dir"
- _dir=$resp
-
- # Allow break-out with empty response
- if [ -z "$_dir" ]; then
- echo -n "Are you sure you don't want to set the pathname? [n] "
- getresp "n"
- case "$resp" in
- y*|Y*)
- break
- ;;
- *)
- continue
- ;;
- esac
- fi
-
- if dir_has_sets "$_mp/$_dir" $THESETS
- then
- local_sets_dir="$_mp/$_dir"
- break
- else
- cat << __get_reldir_1
-The directory \"$local_sets_dir\" does not exist, or does not hold any of the
-upgrade sets.
-__get_reldir_1
- echo -n "Re-enter pathname? [y] "
- getresp "y"
- case "$resp" in
- y*|Y*)
- ;;
- *)
- local_sets_dir=""
- break
- ;;
- esac
- fi
- done
-}
-
-getrootdisk() {
- cat << \__getrootdisk_1
-
-The installation program needs to know which disk to consider
-the root disk. Note the unit number may be different than
-the unit number you used in the standalone installation
-program.
-
-Available disks are:
-
-__getrootdisk_1
- _DKDEVS=`md_get_diskdevs`
- echo "$_DKDEVS"
- echo ""
- echo -n "Which disk is the root disk? "
- getresp ""
- if isin $resp $_DKDEVS ; then
- ROOTDISK="$resp"
- else
- echo ""
- echo "The disk $resp does not exist."
- ROOTDISK=""
- fi
-}
-
-labelmoredisks() {
- cat << \__labelmoredisks_1
-
-You may label the following disks:
-
-__labelmoredisks_1
- echo "$_DKDEVS"
- echo ""
- echo -n "Label which disk? [done] "
- getresp "done"
- case "$resp" in
- done)
- ;;
-
- *)
- if isin $resp $_DKDEVS ; then
- md_labeldisk $resp
- else
- echo ""
- echo "The disk $resp does not exist."
- fi
- ;;
- esac
-}
-
-addhostent() {
- # $1 - IP address
- # $2 - symbolic name
-
- # Create an entry in the hosts table. If no host table
- # exists, create one. If the IP address already exists,
- # replace it's entry.
- if [ ! -f /tmp/hosts ]; then
- echo "127.0.0.1 localhost" > /tmp/hosts
- fi
-
- sed "/^$1 /d" < /tmp/hosts > /tmp/hosts.new
- mv /tmp/hosts.new /tmp/hosts
-
- echo "$1 $2 $2.$FQDN" >> /tmp/hosts
-}
-
-addifconfig() {
- # $1 - interface name
- # $2 - interface symbolic name
- # $3 - interface IP address
- # $4 - interface netmask
- # $5 - (optional) interface link-layer directives
-
- # Create a hostname.* file for the interface.
- echo "inet $2 $4 NONE $5" > /tmp/hostname.$1
-
- addhostent $3 $2
-}
-
-configurenetwork() {
- local _ifsdone
- local _ifs
-
- _IFS=`md_get_ifdevs`
- _ifsdone=""
- resp="" # force at least one iteration
- while [ "X${resp}" != X"done" ]; do
- cat << \__configurenetwork_1
-
-You may configure the following network interfaces (the interfaces
-marked with [X] have been succesfully configured):
-
-__configurenetwork_1
-
- for _ifs in $_IFS; do
- if isin $_ifs $_ifsdone ; then
- echo -n "[X] "
- else
- echo -n " "
- fi
- echo $_ifs
- done
- echo ""
- echo -n "Configure which interface? [done] "
- getresp "done"
- case "$resp" in
- "done")
- ;;
- *)
- _ifs=$resp
- if isin $_ifs $_IFS ; then
- if configure_ifs $_ifs ; then
- _ifsdone="$_ifs $_ifsdone"
- fi
- else
- echo "Invalid response: \"$resp\" is not in list"
- fi
- ;;
- esac
- done
-}
-
-configure_ifs() {
-
- local _up
- local _interface_name
- local _interface_ip
- local _interface_mask
- local _interface_symname
- local _interface_extra
-
- _interface_name=$1
-
- set -- `ifconfig $_interface_name | sed -n '
- 1s/.*<UP,.*$/UP/p
- 1s/.*<.*>*$/DOWN/p
- 2s/inet//
- 2s/--> [0-9.][0-9.]*//
- 2s/netmask//
- 2s/broadcast//
- 2p'`
-
- _up=$1
- _interface_ip=$2
- _interface_mask=$3
-
- # Get IP address
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "IP address? [$_interface_ip] "
- getresp "$_interface_ip"
- _interface_ip=$resp
- done
-
- # Get symbolic name
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Symbolic (host) name? "
- getresp ""
- _interface_symname=$resp
- done
-
- # Get netmask
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Netmask? [$_interface_mask] "
- getresp "$_interface_mask"
- _interface_mask=$resp
- done
-
- echo "Your network interface might require additional link-layer"
- echo "directives (like \`link0'). If this is the case you can enter"
- echo "these at the next prompt."
- echo ""
- echo -n "Additional link-layer arguments? [$_interface_extra] "
- getresp "$_interface_extra"
- if [ "X${resp}" != X"" ]; then
- _interface_extra=$resp
- fi
-
- # Configure the interface. If it
- # succeeds, add it to the permanent
- # network configuration info.
- if [ $_up != "UP" ]; then
- ifconfig ${_interface_name} down
- if ifconfig ${_interface_name} inet \
- ${_interface_ip} \
- netmask ${_interface_mask} ${_interface_extra} up ; then
- addifconfig \
- ${_interface_name} \
- ${_interface_symname} \
- ${_interface_ip} \
- ${_interface_mask} ${_interface_extra}
- return 0
- fi
- else
- echo "Interface ${_interface_name} is already active."
- echo "Just saving configuration on new root filesystem."
- addifconfig \
- ${_interface_name} \
- ${_interface_symname} \
- ${_interface_ip} \
- ${_interface_mask} ${_interface_extra}
- fi
- return 1
-}
-
-# Much of this is gratuitously stolen from /etc/netstart.
-enable_network() {
-
- # Set up the hostname.
- if [ ! -f /mnt/etc/myname ]; then
- echo "ERROR: no /etc/myname!"
- return 1
- fi
- hostname=`cat /mnt/etc/myname`
- hostname $hostname
-
- # configure all the interfaces which we know about.
-(
- tmp="$IFS"
- IFS="$IFS."
- set -- `echo /mnt/etc/hostname*`
- IFS=$tmp
- unset tmp
-
- while [ $# -ge 2 ] ; do
- shift # get rid of "hostname"
- (
- read af name mask bcaddr extras
- read dt dtaddr
-
- if [ ! -n "$name" ]; then
- echo "/etc/hostname.$1: invalid network configuration file"
- exit
- fi
-
- cmd="ifconfig $1 $af $name "
- if [ "${dt}" = "dest" ]; then cmd="$cmd $dtaddr"; fi
- if [ -n "$mask" ]; then cmd="$cmd netmask $mask"; fi
- if [ -n "$bcaddr" -a "X$bcaddr" != "XNONE" ]; then
- cmd="$cmd broadcast $bcaddr";
- fi
- cmd="$cmd $extras"
-
- $cmd
- ) < /mnt/etc/hostname.$1
- shift
- done
-)
-
- # set the address for the loopback interface
- ifconfig lo0 inet localhost
-
- # use loopback, not the wire
- route add $hostname localhost
-
- # /etc/mygate, if it exists, contains the name of my gateway host
- # that name must be in /etc/hosts.
- if [ -f /mnt/etc/mygate ]; then
- route delete default > /dev/null 2>&1
- route add default `cat /mnt/etc/mygate`
- fi
-
- # enable the resolver, if appropriate.
- if [ -f /mnt/etc/resolv.conf ]; then
- _resolver_enabled="TRUE"
- cp /mnt/etc/resolv.conf /tmp/resolv.conf.shadow
- fi
-
- # Display results...
- echo "Network interface configuration:"
- ifconfig -a
-
- echo ""
-
- if [ "X${_resolver_enabled}" = X"TRUE" ]; then
- netstat -r
- echo ""
- echo "Resolver enabled."
- else
- netstat -rn
- echo ""
- echo "Resolver not enabled."
- fi
-
- return 0
-}
-
-install_ftp() {
- # Get several parameters from the user, and create
- # a shell script that directs the appropriate
- # commands into ftp.
- cat << \__install_ftp_1
-
-This is an automated ftp-based installation process. You will be asked
-several questions. The correct set of commands will be placed in a script
-that will be fed to ftp(1).
-
-__install_ftp_1
- # Get server IP address
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Server IP? [${_ftp_server_ip}] "
- getresp "${_ftp_server_ip}"
- _ftp_server_ip=$resp
- done
-
- # Get server directory
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Server directory? [${_ftp_server_dir}] "
- getresp "${_ftp_server_dir}"
- _ftp_server_dir=$resp
- done
-
- # Get login name
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Login? [${_ftp_server_login}] "
- getresp "${_ftp_server_login}"
- _ftp_server_login=$resp
- done
-
- # Get password
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Password? [${_ftp_server_password}] "
- getresp "${_ftp_server_password}"
- _ftp_server_password=$resp
- done
-
- # Get list of files for mget.
- cat << \__install_ftp_2
-
-You will now be asked for files to extract. Enter one file at a time.
-When you are done entering files, enter 'done'.
-
-__install_ftp_2
- echo "#!/bin/sh" > /tmp/ftp-script.sh
- echo "cd /mnt" >> /tmp/ftp-script.sh
- echo "ftp -i -n $_ftp_server_ip << \__end_commands" >> \
- /tmp/ftp-script.sh
- echo "user $_ftp_server_login $_ftp_server_password" >> \
- /tmp/ftp-script.sh
- echo "bin" >> /tmp/ftp-script.sh
- echo "cd $_ftp_server_dir" >> /tmp/ftp-script.sh
-
- resp="" # force one interation
- while [ "X${resp}" != X"done" ]; do
- echo -n "File? [done] "
- getresp "done"
- if [ "X${resp}" = X"done" ]; then
- break
- fi
-
- _ftp_file=`echo ${resp} | cutword 1'`
- echo "get ${_ftp_file} |\"pax -r -z -v\"" >> \
- /tmp/ftp-script.sh
- done
-
- echo "quit" >> /tmp/ftp-script.sh
- echo "__end_commands" >> /tmp/ftp-script.sh
-
- sh /tmp/ftp-script.sh
- rm -f /tmp/ftp-script.sh
- echo "Extraction complete."
-}
-
-install_from_mounted_fs() {
- # $1 - directory containing installation sets
- local _filename
- local _sets
- local _next
- local _f
-
- _sets=""
- if dir_has_sets $1 $THESETS; then
- for _f in $THESETS ; do
- if [ -f $1/${_f}.tar.gz ]; then
- _sets="$_sets ${_f}.tar.gz"
- elif [ -f $1/${_f}.tgz ]; then
- _sets="$_sets ${_f}.tgz"
- fi
- done
- else
- echo "There are no OpenBSD install sets available in \"$1\""
- return
- fi
-
- while : ; do
- echo "The following sets are available for extraction:"
- echo "(marked sets have already been extracted)"
- echo ""
-
- _next=""
- for _f in $_sets ; do
- if isin $_f $_setsdone; then
- echo -n "[X] "
- else
- echo -n " "
- if [ -z "$_next" ]; then _next=$_f; fi
- fi
- echo $_f
- done
- echo ""
-
- # Get the name of the file.
- if [ "X$_next" = "X" ]; then resp=n; else resp=y; fi
- echo -n "Continue extraction [$resp]?"
- getresp "$resp"
- if [ "$resp" = "n" ]; then
- break
- fi
-
- echo -n "File name [$_next]? "
- getresp "$_next"
- _f=$resp
- _filename="/$1/$_f"
-
- # Ensure file exists
- if [ ! -f $_filename ]; then
- echo "File $_filename does not exist. Check to make"
- echo "sure you entered the information properly."
- continue
- fi
-
- # Extract file
- cat $_filename | (cd /mnt; pax -r -pe -z )
- echo "Extraction complete."
- _setsdone="$_f $_setsdone"
-
- done
-}
-
-install_cdrom() {
- local _drive
- local _partition_range
- local _partition
- local _fstype
- local _directory
-
- # Get the cdrom device info
- cat << \__install_cdrom_1
-
-The following CD-ROM devices are installed on your system; please select
-the CD-ROM device containing the partition with the installation sets:
-
-__install_cdrom_1
- _CDDEVS=`md_get_cddevs`
- echo "$_CDDEVS"
- echo ""
- echo -n "Which is the CD-ROM with the installation media? [abort] "
- getresp "abort"
- case "$resp" in
- abort)
- echo "Aborting."
- return
- ;;
-
- *)
- if isin $resp $_CDDEVS ; then
- _drive=$resp
- else
- echo ""
- echo "The CD-ROM $resp does not exist."
- echo "Aborting."
- return
- fi
- ;;
- esac
-
- # Get partition
- _partition_range=`md_get_partition_range`
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Partition? [c] "
- getresp "c"
- case "$resp" in
- $_partition_range)
- _partition=$resp
- ;;
-
- *)
- echo "Invalid response: $resp"
- resp="" # force loop to repeat
- ;;
- esac
- done
-
- # Ask for filesystem type
- cat << \__install_cdrom_2
-
-There are two CD-ROM filesystem types currently supported by this program:
- 1) ISO-9660 (cd9660)
- 2) Berkeley Fast Filesystem (ffs)
-
-__install_cdrom_2
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Which filesystem type? [cd9660] "
- getresp "cd9660"
- case "$resp" in
- cd9660|ffs)
- _fstype=$resp
- ;;
-
- *)
- echo "Invalid response: $resp"
- resp="" # force loop to repeat
- ;;
- esac
- done
-
- # Mount the CD-ROM
- if ! mount -t ${_filesystem} -o ro \
- /dev/${_drive}${_partition} /mnt2 ; then
- echo "Cannot mount CD-ROM drive. Aborting."
- return
- fi
-
- # Get the directory where the file lives
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo "Enter the directory relative to the mount point that"
- echo -n "contains the file. [${_directory}] "
- getresp "${_directory}"
- done
- _directory=$resp
-
- install_from_mounted_fs /mnt2/${_directory}
- umount -f /mnt2 > /dev/null 2>&1
-}
-
-mount_a_disk() {
- # Mount a disk on /mnt2. The set of disk devices to choose from
- # is $_DKDEVS.
- # returns 0 on failure.
-
- local _drive
- local _partition_range
- local _partition
- local _fstype
- local _fsopts
- local _directory
- local _md_fstype
- local _md_fsopts
-
- getresp "abort"
- case "$resp" in
- abort)
- echo "Aborting."
- return 0
- ;;
-
- *)
- if isin $resp $_DKDEVS ; then
- _drive=$resp
- else
- echo ""
- echo "The disk $resp does not exist."
- echo "Aborting."
- return 0
- fi
- ;;
- esac
-
- # Get partition
- _partition_range=`md_get_partition_range`
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Partition? [d] "
- getresp "d"
- case "$resp" in
- $_partition_range)
- _partition=$resp
- ;;
-
- *)
- echo "Invalid response: $resp"
- resp="" # force loop to repeat
- ;;
- esac
- done
-
- # Ask for filesystem type
- cat << \__mount_a_disk_2
-
-The following filesystem types are supported:
- 1) ffs
-__mount_a_disk_2
- _md_fstype=`md_native_fstype`
- _md_fsopts=`md_native_fsopts`
- if [ ! -z "$_md_fstype" ]; then
- echo " 2) $_md_fstype"
- else
- _md_fstype="_undefined_"
- fi
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Which filesystem type? [ffs] "
- getresp "ffs"
- case "$resp" in
- ffs)
- _fstype=$resp
- _fsopts="ro"
- ;;
- $_md_fstype)
- _fstype=$resp
- _fsopts=$_md_fsopts
- ;;
- *)
- echo "Invalid response: $resp"
- resp="" # force loop to repeat
- ;;
- esac
- done
-
- # Mount the disk
- if ! mount -t ${_fstype} -o $_fsopts \
- /dev/${_drive}${_partition} /mnt2 ; then
- echo "Cannot mount disk. Aborting."
- return 0
- fi
- return 1
-}
-
-install_disk() {
- local _directory
-
- cat << \__install_disk_1
-
-The following disk devices are installed on your system; please select
-the disk device containing the partition with the installation sets:
-
-__install_disk_1
- _DKDEVS=`md_get_diskdevs`
- echo "$_DKDEVS"
- echo ""
- echo -n "Which is the disk with the installation sets? [abort] "
-
- if mount_a_disk ; then
- return
- fi
-
- # Get the directory where the file lives
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo "Enter the directory relative to the mount point that"
- echo -n "contains the file. [${_directory}] "
- getresp "${_directory}"
- done
- _directory=$resp
-
- install_from_mounted_fs /mnt2/${_directory}
- umount -f /mnt2 > /dev/null 2>&1
-}
-
-install_nfs() {
- # Get the IP address of the server
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Server IP address? [${_nfs_server_ip}] "
- getresp "${_nfs_server_ip}"
- done
- _nfs_server_ip=$resp
-
- # Get server path to mount
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Filesystem on server to mount? [${_nfs_server_path}] "
- getresp "${_nfs_server_path}"
- done
- _nfs_server_path=$resp
-
- # Determine use of TCP
- echo -n "Use TCP transport (only works with capable NFS server)? [n] "
- getresp "n"
- case "$resp" in
- y*|Y*)
- _nfs_tcp="-T"
- ;;
-
- *)
- _nfs_tcp=""
- ;;
- esac
-
- # Mount the server
- mkdir /mnt2 > /dev/null 2>&1
- if ! mount_nfs $_nfs_tcp ${_nfs_server_ip}:${_nfs_server_path} \
- /mnt2 ; then
- echo "Cannot mount NFS server. Aborting."
- return
- fi
-
- # Get the directory where the file lives
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo "Enter the directory relative to the mount point that"
- echo -n "contains the file. [${_nfs_directory}] "
- getresp "${_nfs_directory}"
- done
- _nfs_directory=$resp
-
- install_from_mounted_fs /mnt2/${_nfs_directory}
- umount -f /mnt2 > /dev/null 2>&1
-}
-
-install_tape() {
- local _xcmd
-
- # Get the name of the tape from the user.
- cat << \__install_tape_1
-
-The installation program needs to know which tape device to use. Make
-sure you use a "no rewind on close" device.
-
-__install_tape_1
- _tape=`basename $TAPE`
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Name of tape device? [${_tape}]"
- getresp "${_tape}"
- done
- _tape=`basename $resp`
- TAPE="/dev/${_tape}"
- if [ ! -c $TAPE ]; then
- echo "$TAPE does not exist or is not a character special file."
- echo "Aborting."
- return
- fi
- export TAPE
-
- # Rewind the tape device
- echo -n "Rewinding tape..."
- if ! mt rewind ; then
- echo "$TAPE may not be attached to the system or may not be"
- echo "a tape device. Aborting."
- return
- fi
- echo "done."
-
- # Get the file number
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "File number? "
- getresp ""
- case "$resp" in
- [1-9]*)
- _nskip=`expr $resp - 1`
- ;;
-
- *)
- echo "Invalid file number ${resp}."
- resp="" # fore loop to repeat
- ;;
- esac
- done
-
- # Skip to correct file.
- echo -n "Skipping to source file..."
- if [ "X${_nskip}" != X"0" ]; then
- if ! mt fsf $_nskip ; then
- echo "Could not skip $_nskip files. Aborting."
- return
- fi
- fi
- echo "done."
-
- cat << \__install_tape_2
-
-There are 2 different ways the file can be stored on tape:
-
- 1) an image of a gzipped tar file
- 2) a standard tar image
-
-__install_tape_2
- resp="" # force one iteration
- while [ "X${resp}" = X"" ]; do
- echo -n "Which way is it? [1] "
- getresp "1"
- case "$resp" in
- 1)
- _xcmd="pax -r -pe -z"
- ;;
-
- 2)
- _xcmd="pax -r -pe"
- ;;
-
- *)
- echo "Invalid response: $resp."
- resp="" # force loop to repeat
- ;;
- esac
- ( cd /mnt; dd if=$TAPE | $_xcmd )
- done
- echo "Extraction complete."
-}
-
-get_timezone() {
- local _a
- local _zonepath
-
- #
- # If the zoneinfo is not on the installation medium or on the
- # installed filesystem, set TZ to GMT and return immediatly.
- #
- if [ ! -e /usr/share/zoneinfo -a ! -e /mnt/usr/share/zoneinfo ]; then
- TZ=GMT
- return
- fi
- if [ ! -d /usr/share/zoneinfo ]; then
- _zonepath=/mnt
- else
- _zonepath=""
- fi
-
-cat << \__get_timezone_1
-
-Select a time zone for your location. Timezones are represented on the
-system by a directory structure rooted in "/usr/share/timezone". Most
-timezones can be selected by entering a token like "MET" or "GMT-6".
-Other zones are grouped by continent, with detailed zone information
-separated by a slash ("/"), e.g. "US/Pacific".
-
-To get a listing of what's available in /usr/share/zoneinfo, enter "?"
-at the prompts below.
-
-__get_timezone_1
- if [ X$TZ = X ]; then
- TZ=`ls -l /mnt/etc/localtime 2>/dev/null | cutlast`
- TZ=${TZ#/usr/share/zoneinfo/}
- fi
- while :; do
- echo -n "What timezone are you in [\`?' for list] [$TZ]? "
- getresp "$TZ"
- case "$resp" in
- "")
- echo "Timezone defaults to GMT"
- TZ="GMT"
- break;
- ;;
- "?")
- ls ${_zonepath}/usr/share/zoneinfo
- ;;
- *)
- _a=$resp
- while [ -d ${_zonepath}/usr/share/zoneinfo/$_a ]; do
- echo -n "There are several timezones available"
- echo " within zone '$_a'"
- echo -n "Select a sub-timezone [\`?' for list]: "
- getresp ""
- case "$resp" in
- "?") ls ${_zonepath}/usr/share/zoneinfo/$_a ;;
- *) _a=${_a}/${resp}
- if [ -f ${_zonepath}/usr/share/zoneinfo/$_a ]; then
- break;
- fi
- ;;
- esac
- done
- if [ -f ${_zonepath}/usr/share/zoneinfo/$_a ]; then
- TZ="$_a"
- echo "You have selected timezone \"$_a\"".
- break 2
- fi
- echo "'/usr/share/zoneinfo/$_a' is not a valid timezone on this system."
- ;;
- esac
- done
-}
-
-install_sets()
-{
- local _yup
- _yup="FALSE"
-
- # Ask the user which media to load the distribution from.
- cat << \__install_sets_1
-
-It is now time to extract the installation sets onto the hard disk.
-Make sure the sets are either on a local device (i.e. tape, CD-ROM) or on a
-network server.
-
-__install_sets_1
-
- if [ "X$local_sets_dir" != "X" ]; then
- install_from_mounted_fs ${local_sets_dir}
- if [ X"$_setsdone" != X ]; then
- _yup="TRUE"
- fi
- fi
-
- # Go on prodding for alternate locations
- resp="" # force at least one iteration
- while [ X"${resp}" = X ]; do
- # If _yup is not FALSE, it means that we extracted sets above.
- # If that's the case, bypass the menu the first time.
- if [ X"$_yup" = X"FALSE" ]; then
- echo -n "Install from (f)tp, (t)ape, (C)D-ROM, (N)FS"
- echo -n " or local (d)isk? "
- getresp ""
- case "$resp" in
- d*|D*)
- install_disk
- ;;
- f*|F*)
- install_ftp
- ;;
- t*|T*)
- install_tape
- ;;
- c*|C*)
- install_cdrom
- ;;
- n*|N*)
- install_nfs
- ;;
- *)
- echo "Invalid response: $resp"
- resp=""
- ;;
- esac
- else
- _yup="FALSE" # So we'll ask next time
- fi
-
- # Give the user the opportunity to extract more sets. They
- # don't necessarily have to come from the same media.
- echo ""
- echo -n "Extract more sets? [n] "
- getresp "n"
- case "$resp" in
- y*|Y*)
- # Force loop to repeat
- resp=""
- ;;
-
- *)
- ;;
- esac
- done
-}
-
-munge_fstab()
-{
- local _fstab
- local _fstab_shadow
- local _dev
- local _mp
- local _fstype
- local _rest
-
- # Now that the 'real' fstab is configured, we munge it into a 'shadow'
- # fstab which we'll use for mounting and unmounting all of the target
- # filesystems relative to /mnt. Mount all filesystems.
- _fstab=$1
- _fstab_shadow=$2
- ( while read _dev _mp _fstype _rest; do
- # Skip comment lines
- case "$_dev" in
- \#*) continue;;
- *) ;;
- esac
- # and some filesystem types (like there are swap,kernfs,...)
- case "$_fstype" in
- ffs|ufs|nfs) ;;
- *) continue;;
- esac
- if [ "$_mp" = "/" ]; then
- echo $_dev /mnt $_fstype $_rest
- else
- echo $_dev /mnt$_mp $_fstype $_rest
- fi
- done ) < $_fstab > $_fstab_shadow
-}
-
-mount_fs()
-{
- # Must mount filesystems manually, one at a time, so we can make
- # sure the mount points exist.
- # $1 is a file in fstab format
- local _fstab
-
- _fstab=$1
-
- ( while read line; do
- set -- $line
- _dev=$1
- _mp=$2
- _fstype=$3
- _opt=$4
-
- # If not the root filesystem, make sure the mount
- # point is present.
- if [ "X{$_mp}" != X"/mnt" ]; then
- mkdir -p $_mp
- fi
-
- # Mount the filesystem. If the mount fails, exit
- # with an error condition to tell the outer
- # later to bail.
- if ! mount -v -t $_fstype -o $_opt $_dev $_mp ; then
- # error message displated by mount
- exit 1
- fi
- done ) < $_fstab
-
- if [ "X${?}" != X"0" ]; then
- cat << \__mount_filesystems_1
-
-FATAL ERROR: Cannot mount filesystems. Double-check your configuration
-and restart the installation process.
-__mount_filesystems_1
- exit
- fi
-}
-
-unmount_fs()
-{
- # Unmount all filesystems and check their integrity.
- # Usage: [-fast] <fstab file>
- local _fast
- local _fstab
- local _pid
-
- if [ "$1" = "-fast" ]; then
- _fast=1
- _fstab=$2
- else
- _fast=0
- _fstab=$1
- fi
-
- if [ ! \( -f $_fstab -a -s $_fstab \) ]; then
- echo "fstab empty" > /dev/tty
- return
- fi
-
- if [ $_fast = 0 ]; then
- echo -n "Syncing disks..."
- _pid=`twiddle`
- sync; sleep 4; sync; sleep 2; sync; sleep 2
- kill $_pid
- echo "done."
- fi
-
- (
- _devs=""
- _mps=""
- # maintain reverse order
- while read line; do
- set -- $line
- _devs="$1 ${_devs}"
- _mps="$2 ${_mps}"
- done
- echo -n "Umounting filesystems... "
- for _mp in ${_mps}; do
- echo -n "${_mp} "
- umount ${_mp}
- done
- echo "Done."
-
- if [ $_fast = 0 ]; then
- exit
- fi
- echo "Checking filesystem integrity..."
- for _dev in ${_devs}; do
- echo "${_dev}"
- fsck -f ${_dev}
- done
- echo "Done."
- ) < $_fstab
-}
-
-check_fs()
-{
- # Check filesystem integrity.
- # $1 is a file in fstab format
- local _fstab
-
- _fstab=$1
-
- (
- _devs=""
- _mps=""
- while read line; do
- set -- $line
- _devs="$1 ${_devs}"
- _mps="$2 ${_mps}"
- done
-
- echo "Checking filesystem integrity..."
- for _dev in ${_devs}; do
- echo "${_dev}"
- fsck -f ${_dev}
- done
- echo "Done."
- ) < $_fstab
-}
diff --git a/distrib/powerpc/miniroot/list b/distrib/powerpc/miniroot/list
deleted file mode 100644
index 862096d9aca..00000000000
--- a/distrib/powerpc/miniroot/list
+++ /dev/null
@@ -1,15 +0,0 @@
-# $NetBSD: list,v 1.1 1995/07/18 04:13:12 briggs Exp $
-
-# the disktab explanation file
-COPY disktab.preinstall etc
-
-# and the installation tools
-LINK sbin/init usr/bin/vi
-COPY dot.profile .profile
-COPY dot.instutils .instutils
-COPY install.sh install
-COPY install.md install.md
-COPY install.sub install.sub
-COPY disktab.shadow etc/disktab.shadow
-
-SPECIAL chmod 755 install
diff --git a/distrib/powerpc/miniroot/raminst.conf b/distrib/powerpc/miniroot/raminst.conf
deleted file mode 100644
index 8546e2efadd..00000000000
--- a/distrib/powerpc/miniroot/raminst.conf
+++ /dev/null
@@ -1,25 +0,0 @@
-#
-# $NetBSD: raminst.conf,v 1.3 1995/09/30 20:00:47 briggs Exp $
-#
-# ram.conf - unified binary for the RAM disk
-#
-
-srcdirs bin sbin usr.bin usr.sbin
-srcdirs gnu/usr.bin
-
-progs cat chmod chown cut cp dd df disklabel ed grep expr fdisk fsck_ffs ftp
-progs gzip ifconfig init hostname kill ln ls mkdir mknod more mount
-progs mount_cd9660 mount_kernfs mount_ffs mount_msdos mount_nfs
-progs mv newfs pwd reboot rm route sed sleep sh slattach sort stty
-progs sync pax test tip umount vim
-
-ln vim vi
-ln chown chgrp
-ln fsck_ffs fsck
-ln sh -sh # init invokes the shell this way
-ln test [
-ln mount_ffs ffs
-ln newfs mount_mfs
-ln grep egrep
-
-libs -ledit -lutil -ltermcap -lcompat -ll -lm -lz
diff --git a/distrib/powerpc/miniroot/start_rdconfig.sh b/distrib/powerpc/miniroot/start_rdconfig.sh
deleted file mode 100644
index d22552b968e..00000000000
--- a/distrib/powerpc/miniroot/start_rdconfig.sh
+++ /dev/null
@@ -1,4 +0,0 @@
-echo rdconfig ${1} ${2}
-rdconfig ${1} ${2} &
-echo $! >rd.pid
-
diff --git a/distrib/powerpc/ramdisk/Makefile b/distrib/powerpc/ramdisk/Makefile
index 1b30d9b5f3d..ff899540d1c 100644
--- a/distrib/powerpc/ramdisk/Makefile
+++ b/distrib/powerpc/ramdisk/Makefile
@@ -1,9 +1,10 @@
-# $OpenBSD: Makefile,v 1.2 1997/10/15 14:09:04 pefo Exp $
+# $OpenBSD: Makefile,v 1.3 1998/05/29 04:34:19 rahnds Exp $
TOP= ${.CURDIR}/..
.include "${TOP}/Makefile.inc"
BSD_RD= bsd.rd
+BSDOFW_RD= bsdofw.rd
IMAGE= mr.fs
CBIN?= instbin
LISTS= ${.CURDIR}/list
@@ -17,7 +18,6 @@ VND_DEV= /dev/${VND}a
VND_RDEV= /dev/r${VND}a
VND_CRDEV= /dev/r${VND}c
PID!= echo $$$$
-REALIMAGE!= echo /var/tmp/image.${PID}
DISKTYPE= rdroot
@@ -31,17 +31,26 @@ all ${IMAGE}:
@false
.else
-all: ${BSD_RD}
+all: ${BSD_RD} ${BSDOFW_RD}
${BSD_RD}: ${CBIN} ${IMAGE} bsd rdsetroot
cp bsd ${BSD_RD}
${.OBJDIR}/rdsetroot ${BSD_RD} < ${IMAGE}
- rm ${IMAGE}
+
+${BSDOFW_RD}: ${CBIN} ${IMAGE} bsdofw rdsetroot
+ cp bsdofw ${BSDOFW_RD}
+ ${.OBJDIR}/rdsetroot ${BSDOFW_RD} < ${IMAGE}
${IMAGE}: rd_setup do_files rd_teardown
.endif
+bsdofw:
+ cd ${.TOP}/../../sys/arch/powerpc/conf && config RAMDISKOFW
+ cd ${.TOP}/../../sys/arch/powerpc/compile/RAMDISKOFW && \
+ make clean && make
+ cp ${.TOP}/../../sys/arch/powerpc/compile/RAMDISKOFW/bsd bsdofw
+
bsd:
cd ${.TOP}/../../sys/arch/powerpc/conf && config RAMDISK
cd ${.TOP}/../../sys/arch/powerpc/compile/RAMDISK && \
@@ -49,8 +58,8 @@ bsd:
cp ${.TOP}/../../sys/arch/powerpc/compile/RAMDISK/bsd bsd
rd_setup:
- dd if=/dev/zero of=${REALIMAGE} bs=512 count=${NBLKS}
- vnconfig -v -c ${VND} ${REALIMAGE}
+ dd if=/dev/zero of=${IMAGE} bs=512 count=${NBLKS}
+ vnconfig -v -c ${VND} ${IMAGE}
disklabel -w -r ${VND} ${DISKTYPE}
newfs ${NEWFSARGS} ${VND_RDEV}
fsck ${VND_RDEV}
@@ -60,8 +69,6 @@ rd_teardown:
@df -i ${MOUNT_POINT}
-umount ${MOUNT_POINT}
-vnconfig -u ${VND}
- cp ${REALIMAGE} ${IMAGE}
- rm ${REALIMAGE}
rdsetroot: ${TOP}/common/rdsetroot.c
${HOSTCC} -DDEBUG -o rdsetroot ${TOP}/common/rdsetroot.c
@@ -69,12 +76,12 @@ rdsetroot: ${TOP}/common/rdsetroot.c
unconfig:
-umount -f ${MOUNT_POINT}
-vnconfig -u ${VND}
- -/bin/rm -f ${IMAGE}
.PRECIOUS: ${IMAGE}
install:
cp ${BSD_RD} ${DESTDIR}/snapshot/${BSD_RD}
+ cp ${BSDOFW_RD} ${DESTDIR}/snapshot/${BSDOFW_RD}
${CBIN}.conf: ${LISTS}
awk -f ${UTILS}/makeconf.awk CBIN=${CBIN} ${LISTS} > ${CBIN}.conf
diff --git a/distrib/powerpc/ramdisk/install.sh b/distrib/powerpc/ramdisk/install.sh
new file mode 100644
index 00000000000..f918fe5b198
--- /dev/null
+++ b/distrib/powerpc/ramdisk/install.sh
@@ -0,0 +1,578 @@
+#!/bin/sh
+# $OpenBSD: install.sh,v 1.1 1998/05/29 04:34:20 rahnds Exp $
+# $NetBSD: install.sh,v 1.5.2.8 1996/08/27 18:15:05 gwr Exp $
+#
+# Copyright (c) 1997,1998 Todd Miller, Theo de Raadt
+# 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 Todd Miller and
+# Theo de Raadt
+# 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.
+#
+# Copyright (c) 1996 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Jason R. Thorpe.
+#
+# 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 the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``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 REGENTS OR CONTRIBUTORS 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.
+#
+
+# OpenBSD installation script.
+# In a perfect world, this would be a nice C program, with a reasonable
+# user interface.
+
+FILESYSTEMS="/tmp/filesystems" # used thoughout
+FQDN="" # domain name
+
+trap "umount /tmp > /dev/null 2>&1" 0
+
+MODE="install"
+
+# include machine-dependent functions
+# The following functions must be provided:
+# md_copy_kernel() - copy a kernel to the installed disk
+# md_get_diskdevs() - return available disk devices
+# md_get_cddevs() - return available CD-ROM devices
+# md_get_ifdevs() - return available network interfaces
+# md_get_partition_range() - return range of valid partition letters
+# md_installboot() - install boot-blocks on disk
+# md_labeldisk() - put label on a disk
+# md_prep_disklabel() - label the root disk
+# md_welcome_banner() - display friendly message
+# md_not_going_to_install() - display friendly message
+# md_congrats() - display friendly message
+# md_native_fstype() - native filesystem type for disk installs
+# md_native_fsopts() - native filesystem options for disk installs
+# md_makerootwritable() - make root writable (at least /tmp)
+# md_machine_arch() - get machine architecture
+
+# include machine dependent subroutines
+. install.md
+
+# include common subroutines
+. install.sub
+
+# which sets?
+THESETS="$ALLSETS $MDSETS"
+
+if [ "`df /`" = "`df /mnt`" ]; then
+ # Good {morning,afternoon,evening,night}.
+ echo ==================================================
+ md_welcome_banner
+ echo -n "Proceed with installation? [n] "
+else
+ echo "You seem to be trying to restart an interrupted installation!"
+ echo ""
+ echo "You can try to skip the disk preparation steps and continue,"
+ echo "otherwise you should reboot the miniroot and start over..."
+ echo -n "Skip disk initialization? [n] "
+fi
+getresp "n"
+case "$resp" in
+ y*|Y*)
+ echo ""
+ echo "Cool! Let's get to it..."
+ ;;
+ *)
+ md_not_going_to_install
+ exit
+ ;;
+esac
+
+# XXX Work around vnode aliasing bug (thanks for the tip, Chris...)
+ls -l /dev > /dev/null 2>&1
+
+# Deal with terminal issues
+md_set_term
+
+# Get timezone info
+get_timezone
+
+# Make sure we can write files (at least in /tmp)
+# This might make an MFS mount on /tmp, or it may
+# just re-mount the root with read-write enabled.
+if [ "`df /`" = "`df /tmp`" ]; then
+ md_makerootwritable
+fi
+
+# Get the machine architecture (must be done after md_makerootwritable)
+ARCH=`md_machine_arch`
+
+if [ "`df /`" = "`df /mnt`" ]; then
+ # Install the shadowed disktab file; lets us write to it for temporary
+ # purposes without mounting the miniroot read-write.
+ if [ -f /etc/disktab.shadow ]; then
+ cp /etc/disktab.shadow /tmp/disktab.shadow
+ fi
+
+ while : ; do
+ if [ "X${ROOTDISK}" = "X" ]; then
+ while [ "X${ROOTDISK}" = "X" ]; do
+ getrootdisk
+ done
+ DISK=$ROOTDISK
+ else
+ DISK=""
+ while [ "X${DISK}" = "X" ]; do
+ getanotherdisk
+ done
+ if [ "${DISK}" = "done" ]; then
+ break
+ fi
+ fi
+
+ # Deal with disklabels, including editing the root disklabel
+ # and labeling additional disks. This is machine-dependent since
+ # some platforms may not be able to provide this functionality.
+ md_prep_disklabel ${DISK}
+
+ # Assume partition 'a' of $ROOTDISK is for the root filesystem.
+ # Loop and get the rest.
+ # XXX ASSUMES THAT THE USER DOESN'T PROVIDE BOGUS INPUT.
+ cat << __get_filesystems_1
+
+You will now have the opportunity to enter filesystem information for ${DISK}.
+You will be prompted for the mount point (full path, including the prepending
+'/' character) for each BSD partition on ${DISK}. Enter "none" to skip a
+partition or "done" when you are finished.
+__get_filesystems_1
+
+ if [ "${DISK}" = "${ROOTDISK}" ]; then
+ echo
+ echo "The following partitions will be used for the root filesystem and swap:"
+ echo " ${ROOTDISK}a /"
+ echo " ${ROOTDISK}b swap"
+
+ echo "${ROOTDISK}a /" > ${FILESYSTEMS}
+ fi
+
+ # XXX - allow the user to name mount points on disks other than ROOTDISK
+ # also allow a way to enter non-BSD partitions (but don't newfs!)
+ # Get the list of BSD partitions and store sizes
+ _npartitions=0
+ for _p in `disklabel ${DISK} 2>&1 | grep '^ *[a-p]:.*BSD' | sed 's/^ *\([a-p]\): *\([0-9][0-9]*\) .*/\1\2/'`; do
+ _pp=`firstchar ${_p}`
+ if [ "${DISK}" = "${ROOTDISK}" -a "$_pp" = "a" ]; then
+ continue
+ fi
+ _ps=`echo ${_p} | sed 's/^.//'`
+ _partitions[${_npartitions}]=${_pp}
+ _psizes[${_npartitions}]=${_ps}
+ _npartitions=$(( ${_npartitions} + 1 ))
+ done
+
+ # Now prompt the user for the mount points. Loop until "done"
+ echo ""
+ _i=0
+ resp="X"
+ while [ $_npartitions -gt 0 -a X${resp} != X"done" ]; do
+ _pp=${_partitions[${_i}]}
+ _ps=$(( ${_psizes[${_i}]} / 2 ))
+ _mp=${_mount_points[${_i}]}
+
+ # Get the mount point from the user
+ while : ; do
+ echo -n "Mount point for ${DISK}${_pp} (size=${_ps}k) [$_mp, RET, none, or done]? "
+ getresp "$_mp"
+ case "X${resp}" in
+ X/*) _mount_points[${_i}]=$resp
+ break ;;
+ Xdone|X)
+ break ;;
+ Xnone) _mount_points[${_i}]=
+ break;;
+ *) echo "mount point must be an absolute path!";;
+ esac
+ done
+ _i=$(( ${_i} + 1 ))
+ if [ $_i -ge $_npartitions ]; then
+ _i=0
+ fi
+ done
+
+ # Now write it out
+ _i=0
+ while test $_i -lt $_npartitions; do
+ if [ -n "${_mount_points[${_i}]}" ]; then
+ echo "${DISK}${_partitions[${_i}]} ${_mount_points[${_i}]}" >> ${FILESYSTEMS}
+ _mount_points[${_i}]=""
+ fi
+ _i=$(( ${_i} + 1 ))
+ done
+ done
+
+ echo ""
+ echo "You have configured the following devices and mount points:"
+ echo ""
+ cat ${FILESYSTEMS}
+ echo ""
+ echo "Filesystems will now be created on these devices."
+ echo "If you made any mistakes, you may edit this now."
+ echo -n "Edit using ${EDITOR}? [n] "
+ getresp "n"
+ case "$resp" in
+ y*|Y*)
+ ${EDITOR} ${FILESYSTEMS}
+ ;;
+ *)
+ ;;
+ esac
+ echo
+ echo "============================================================"
+ echo "The next step will overwrite any existing data on:"
+ (
+ echo -n " "
+ while read _device_name _junk; do
+ echo -n "${_device_name} "
+ done
+ echo ""
+ ) < ${FILESYSTEMS}
+ echo ""
+
+ echo -n "Are you really sure that you're ready to proceed? [n] "
+ getresp "n"
+ case "$resp" in
+ y*|Y*)
+ ;;
+ *)
+ echo "ok, try again later..."
+ exit
+ ;;
+ esac
+
+ # Loop though the file, place filesystems on each device.
+ echo "Creating filesystems..."
+ (
+ while read _device_name _junk; do
+ newfs /dev/r${_device_name}
+ done
+ ) < ${FILESYSTEMS}
+else
+ # Get the root device
+ ROOTDISK=`df /mnt | sed -e '/^\//!d' -e 's/\/dev\/\([^ ]*\)[a-p] .*/\1/'`
+ while [ "X${ROOTDISK}" = "X" ]; do
+ getrootdisk
+ done
+fi
+
+# Get network configuration information, and store it for placement in the
+# root filesystem later.
+cat << \__network_config_1
+
+You will now be given the opportunity to configure the network. This will be
+useful if you need to transfer the installation sets via FTP, HTTP, or NFS.
+Even if you choose not to transfer installation sets that way, this information
+will be preserved and copied into the new root filesystem.
+
+__network_config_1
+echo -n "Configure the network? [y] "
+getresp "y"
+case "$resp" in
+ y*|Y*)
+ resp="" # force at least one iteration
+ _nam=""
+ if [ -f /tmp/myname ]; then
+ _nam=`cat /tmp/myname`
+ fi
+ while [ "X${resp}" = X"" ]; do
+ echo -n "Enter system hostname (short form): [$_nam] "
+ getresp "$_nam"
+ done
+ hostname $resp
+ echo $resp > /tmp/myname
+
+ resp="" # force at least one iteration
+ if [ -f /tmp/resolv.conf ]; then
+ FQDN=`grep '^domain ' /tmp/resolv.conf | \
+ sed -e 's/^domain //'`
+ fi
+ while [ "X${resp}" = X"" ]; do
+ echo -n "Enter DNS domain name: [$FQDN] "
+ getresp "$FQDN"
+ done
+ FQDN=$resp
+
+ configurenetwork
+
+ resp="none"
+ if [ -f /tmp/mygate ]; then
+ resp=`cat /tmp/mygate`
+ fi
+ echo -n "Enter IP address of default route: [$resp] "
+ getresp "$resp"
+ if [ "X${resp}" != X"none" ]; then
+ route delete default > /dev/null 2>&1
+ if route add default $resp > /dev/null ; then
+ echo $resp > /tmp/mygate
+ fi
+ fi
+
+ resp="none"
+ if [ -f /tmp/resolv.conf ]; then
+ resp=`grep '^nameserver ' /tmp/resolv.conf | \
+ sed -e 's/^nameserver //'`
+ fi
+ echo -n "Enter IP address of primary nameserver: [$resp] "
+ getresp "$resp"
+ if [ "X${resp}" != X"none" ]; then
+ echo "domain $FQDN" > /tmp/resolv.conf
+ echo "nameserver $resp" >> /tmp/resolv.conf
+ echo "search $FQDN" >> /tmp/resolv.conf
+ echo "lookup file bind" >> /tmp/resolv.conf
+
+ echo -n "Would you like to use the nameserver now? [y] "
+ getresp "y"
+ case "$resp" in
+ y*|Y*)
+ cp /tmp/resolv.conf \
+ /tmp/resolv.conf.shadow
+ ;;
+
+ *)
+ ;;
+ esac
+ fi
+
+ if [ ! -f /tmp/resolv.conf.shadow ]; then
+ echo ""
+ echo "The host table is as follows:"
+ echo ""
+ cat /tmp/hosts
+ cat << __hosts_table_1
+
+You may want to edit the host table in the event that you are doing an
+NFS installation or an FTP installation without a name server and want
+to refer to the server by name rather than by its numeric ip address.
+__hosts_table_1
+ echo -n "Would you like to edit the host table with ${EDITOR}? [n] "
+ getresp "n"
+ case "$resp" in
+ y*|Y*)
+ ${EDITOR} /tmp/hosts
+ ;;
+
+ *)
+ ;;
+ esac
+ fi
+
+ cat << \__network_config_2
+
+You will now be given the opportunity to escape to the command shell to do
+any additional network configuration you may need. This may include adding
+additional routes, if needed. In addition, you might take this opportunity
+to redo the default route in the event that it failed above.
+__network_config_2
+ echo -n "Escape to shell? [n] "
+ getresp "n"
+ case "$resp" in
+ y*|Y*)
+ echo "Type 'exit' to return to install."
+ sh
+ ;;
+
+ *)
+ ;;
+ esac
+ ;;
+ *)
+ ;;
+esac
+
+if [ "`df /`" = "`df /mnt`" ]; then
+ # Now that the network has been configured, it is safe to configure the
+ # fstab.
+ (
+ while read _dev _mp; do
+ if [ "$_mp" = "/" ]; then
+ echo /dev/$_dev $_mp ffs rw 1 1
+ else
+ echo /dev/$_dev $_mp ffs rw 1 2
+ fi
+ done
+ ) < ${FILESYSTEMS} > /tmp/fstab
+
+# XXX We no longer do the following. It is not neccessary. It can be done
+# XXX after the install is complete.
+#
+# echo "The fstab is configured as follows:"
+# echo ""
+# cat /tmp/fstab
+# cat << \__fstab_config_1
+#
+#You may wish to edit the fstab. You may also wish to take this opportunity to
+#place NFS mounts in the fstab (this would be especially useful if you plan to
+#keep '/usr' on an NFS server.
+#__fstab_config_1
+# echo -n "Edit the fstab with ${EDITOR}? [n] "
+# getresp "n"
+# case "$resp" in
+# y*|Y*)
+# ${EDITOR} /tmp/fstab
+# ;;
+#
+# *)
+# ;;
+# esac
+#
+# echo ""
+
+ munge_fstab /tmp/fstab /tmp/fstab.shadow
+ mount_fs /tmp/fstab.shadow
+fi
+
+mount | while read line; do
+ set -- $line
+ if [ "$2" = "/" -a "$3" = "nfs" ]; then
+ echo "You appear to be running diskless."
+ echo -n "Are the install sets on one of your currently mounted filesystems? [n] "
+ getresp "n"
+ case "$resp" in
+ y*|Y*)
+ get_localdir
+ ;;
+ *)
+ ;;
+ esac
+ fi
+done
+
+resp="" # force one iteration
+echo
+echo 'Please enter the initial password that the root acount will have.'
+while [ "X${resp}" = X"" ]; do
+ echo -n "Password (will not echo): "
+ stty -echo
+ getresp "${_password}"
+ stty echo
+ echo ""
+ _password=$resp
+
+ echo -n "Password (again): "
+ stty -echo
+ getresp "${_password}"
+ stty echo
+ echo ""
+ if [ "${_password}" != "${resp}" ]; then
+ echo "Passwords do not match, try again."
+ resp=""
+ fi
+done
+
+install_sets $THESETS
+
+# Copy in configuration information and make devices in target root.
+
+if [ ! -d /mnt/etc -o ! -d /mnt/usr/share/zoneinfo -o ! -d /mnt/dev ]; then
+ echo "Something needed to complete the installation seems"
+ echo "to be missing, did you forget to extract a required set?"
+ echo ""
+ echo "Please review the installation notes and try again..."
+ echo ""
+ echo "You *may* be able to correct the problem and type 'install'"
+ echo "without having to extract all of the distribution sets again."
+ exit
+fi
+
+cd /tmp
+for file in fstab hostname.* hosts myname mygate resolv.conf; do
+ if [ -f $file ]; then
+ echo -n "Copying $file..."
+ cp $file /mnt/etc/$file
+ echo "done."
+ fi
+done
+
+# If no zoneinfo on the installfs, give them a second chance
+if [ ! -e /usr/share/zoneinfo ]; then
+ get_timezone
+fi
+if [ ! -e /mnt/usr/share/zoneinfo ]; then
+ echo "Cannot install timezone link..."
+else
+ echo -n "Installing timezone link..."
+ rm -f /mnt/etc/localtime
+ ln -s /usr/share/zoneinfo/$TZ /mnt/etc/localtime
+ echo "done."
+fi
+
+
+md_copy_kernel
+
+md_installboot ${ROOTDISK}
+
+if [ ! -x /mnt/dev/MAKEDEV ]; then
+ echo "No /dev/MAKEDEV installed, something is wrong here..."
+ exit
+fi
+
+echo -n "Making all devices..."
+#pid=`twiddle`
+cd /mnt/dev
+sh MAKEDEV all
+#kill $pid
+echo "done."
+cd /
+
+_encr=`echo ${_password} | /mnt/usr/bin/encrypt -b 7`
+echo "1,s@^root::@root:${_encr}:@
+w
+q" | ed /mnt/etc/master.passwd 2> /dev/null
+/mnt/usr/sbin/pwd_mkdb -p -d /mnt/etc /etc/master.passwd
+
+unmount_fs /tmp/fstab.shadow
+
+# Pat on the back.
+md_congrats
+
+# ALL DONE!
+exit 0
diff --git a/distrib/powerpc/ramdisk/install.sub b/distrib/powerpc/ramdisk/install.sub
new file mode 100644
index 00000000000..692fac312c5
--- /dev/null
+++ b/distrib/powerpc/ramdisk/install.sub
@@ -0,0 +1,2071 @@
+#!/bin/sh
+# $OpenBSD: install.sub,v 1.1 1998/05/29 04:34:20 rahnds Exp $
+# $NetBSD: install.sub,v 1.5.2.8 1996/09/02 23:25:02 pk Exp $
+#
+# Copyright (c) 1997,1998 Todd Miller, Theo de Raadt
+# 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 Todd Miller and
+# Theo de Raadt
+# 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.
+#
+# Copyright (c) 1996 The NetBSD Foundation, Inc.
+# All rights reserved.
+#
+# This code is derived from software contributed to The NetBSD Foundation
+# by Jason R. Thorpe.
+#
+# 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 the NetBSD
+# Foundation, Inc. and its contributors.
+# 4. Neither the name of The NetBSD Foundation nor the names of its
+# contributors may be used to endorse or promote products derived
+# from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+# ``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 REGENTS OR CONTRIBUTORS 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.
+#
+
+# OpenBSD installation/upgrade script - common subroutines.
+
+ROOTDISK="" # filled in below
+VERSION=
+VERSION_MAJOR=$(( $VERSION / 10 ))
+VERSION_MINOR=$(( $VERSION % 10 ))
+export VERSION VERSION_MAJOR VERSION_MINOR
+
+ALLSETS="base etc misc comp text man game xbase xfont xserv" # default install sets
+UPGRSETS="base misc comp text man game xbase xfont xserv" # default upgrade sets
+SNAPSETS="bin dev etc games man misc sbin text \
+ usr.bin usr.binutils usr.games usr.include \
+ usr.lib usr.libexec usr.misc usr.sbin usr.share var"
+THESETS= # one of the above
+
+local_sets_dir="" # Path searched for sets by install_sets
+ # on the local filesystems
+
+# decide upon an editor
+if [ X$EDITOR = X ]; then
+ if [ -x /usr/bin/vi ]; then
+ EDITOR=vi
+ else
+ EDITOR=ed
+ fi
+ export EDITOR
+fi
+
+# Please don't use the 1 of n form below, good idea, wrong implementation!
+# get a reponse with default[s]
+getresp() {
+ set -o noglob
+ valid="false"
+ while [ "X$valid" = "Xfalse" ]; do
+ read resp
+ if [ "X$resp" = "X" ]; then
+ resp=$1
+ fi
+ if [ $# -gt 1 ]; then
+ for i in $@; do
+ if [ "X$resp" = "X$i" ]; then
+ valid="true"
+ fi
+ done
+ else
+ valid="true"
+ fi
+ if [ "X$valid" = "Xfalse" ]; then
+ echo "Try again: Enter one of [$@]"
+ fi
+ done
+ set +o noglob
+}
+
+isin() {
+# test the first argument against the remaining ones, return succes on a match
+ local _a
+
+ _a=$1; shift
+ while [ $# != 0 ]; do
+ if [ "$_a" = "$1" ]; then return 0; fi
+ shift
+ done
+ return 1
+}
+
+addel() {
+# add first argument to list formed by the remaining arguments
+# adds to the tail if the element does not already exist
+ local _a
+ local _seen
+
+ _seen=""
+ _a=$1; shift
+ while [ $# != 0 ]; do
+ echo "$1"
+ if [ "$_a" = "$1" ]; then
+ _seen="yes"
+ fi
+ shift
+ done
+ if [ "X$_seen" = "X" ]; then
+ echo "$_a"
+ fi
+}
+
+rmel() {
+# remove first argument from list formed by the remaining arguments
+ local _a
+
+ _a=$1; shift
+ while [ $# != 0 ]; do
+ if [ "$_a" != "$1" ]; then
+ echo "$1"
+ fi
+ shift
+ done
+}
+
+cutword () {
+# read a line of data, return Nth element.
+ local _a
+ local _n
+ local _oifs
+
+ # optional field separator
+ _oifs="$IFS"
+ case "$1" in
+ -t?*) IFS=${1#-t}; shift;;
+ esac
+
+ _n=$1
+ read _a; set -- $_a
+ IFS="$_oifs"
+ if [ "$1" = "" ]; then return; fi
+ eval echo \$$_n
+}
+
+cutlast () {
+# read a line of data, return last element. Equiv. of awk '{print $NF}'.
+ local _a
+ local _oifs
+
+ # optional field separator
+ _oifs="$IFS"
+ case "$1" in
+ -t?*) IFS=${1#-t}; shift;;
+ esac
+
+ read _a; set -- $_a
+ IFS="$_oifs"
+ if [ "$1" = "" ]; then return; fi
+ while [ "$#" -gt 10 ]; do shift 10; done
+ eval echo \$$#
+}
+
+firstchar () {
+# return first character of argument
+ local _a
+ _a=$1
+ while [ ${#_a} != 1 ]; do
+ _a=${_a%?}
+ done
+ echo $_a
+}
+
+basename () {
+ local _oifs
+ if [ "$1" = "" ]; then return; fi
+ _oifs="$IFS"
+ IFS="/"
+ set -- $1
+ IFS="$_oifs"
+ while [ "$#" -gt 10 ]; do shift 10; done
+ eval echo \$$#
+}
+
+dir_has_sets() {
+ # return true when the directory $1 contains a set for $2...$n
+ local _dir
+ local _file
+
+ _dir=$1; shift
+ for _file in $*
+ do
+ if [ -f $_dir/${_file}${VERSION}.tar.gz ]; then
+ return 0
+ fi
+ # Try for stupid msdos convention
+ if [ -f $_dir/${_file}${VERSION}.tgz ]; then
+ return 0
+ fi
+ # Special check for kernel
+ if [ $_file = "kernel" -a -f $_dir/bsd ]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+list_has_sets() {
+ # return true when the list $1 contains a set, given dir $2 for $3...$n
+ local _list
+ local _file
+
+ _list=$1; shift
+ for _file in $*
+ do
+ if isin ${_file}${VERSION}.tar.gz $_list; then
+ return 0
+ fi
+ # Try for stupid msdos convention
+ if isin ${_file}${VERSION}.tgz $_list; then
+ return 0
+ fi
+ # Special check for kernel
+ if test $_file = "kernel" && isin bsd $_list; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+ftp_list_files() {
+ # log in via ftp to host $1 as user $2 with password $3
+ # and return a list of all files in the directory $4 on stdout
+ local _host
+ local _user
+ local _pass
+ local _dir
+
+ _host=$1; shift
+ _user=$1; shift
+ _pass=$1; shift
+ _dir=$1; shift
+
+ ftp ${_ftp_active} -V -n $_host <<__ptf
+user $_user $_pass
+cd $_dir
+ls
+quit
+__ptf
+}
+
+twiddle() {
+# spin the propeller so we don't get bored
+ while : ; do
+ sleep 1; echo -n "/";
+ sleep 1; echo -n "-";
+ sleep 1; echo -n "\\";
+ sleep 1; echo -n "|";
+ done > /dev/tty & echo $!
+}
+
+get_localdir() {
+ # $1 is relative mountpoint
+ local _mp
+ local _dir
+
+ _mp=$1
+ _dir=
+ while : ; do
+ echo -n "Enter the pathname where the sets are stored [$_dir] "
+ getresp "$_dir"
+ _dir=$resp
+
+ # Allow break-out with empty response
+ if [ -z "$_dir" ]; then
+ echo -n "Are you sure you don't want to set the pathname? [n] "
+ getresp "n"
+ case "$resp" in
+ y*|Y*)
+ break
+ ;;
+ *)
+ continue
+ ;;
+ esac
+ fi
+
+ if dir_has_sets "$_mp/$_dir" $THESETS
+ then
+ local_sets_dir="$_mp/$_dir"
+ break
+ else
+ cat << __get_reldir_1
+The directory \"$local_sets_dir\" does not exist, or does not hold any of the
+upgrade sets.
+__get_reldir_1
+ echo -n "Re-enter pathname? [y] "
+ getresp "y"
+ case "$resp" in
+ y*|Y*)
+ ;;
+ *)
+ local_sets_dir=""
+ break
+ ;;
+ esac
+ fi
+ done
+}
+
+getanotherdisk() {
+ cat << \__getanotherdisk_1
+
+Now you can select another disk to initialize. (Do not re-select a disk
+you have already entered information for). Available disks are:
+
+__getanotherdisk_1
+ _DKDEVS=`md_get_diskdevs`
+ echo "$_DKDEVS"
+ echo ""
+ echo -n "Which one? [done] "
+ getresp ""
+ if [ "X${resp}" = "X" ]; then
+ DISK=done
+ elif isin $resp $_DKDEVS ; then
+ DISK="$resp"
+ else
+ echo ""
+ echo "The disk $resp does not exist."
+ DISK=""
+ fi
+}
+
+getrootdisk() {
+ cat << \__getrootdisk_1
+
+The installation program needs to know which disk to consider the root disk.
+Note the unit number may be different than the unit number you used in the
+boot program (especially on a PC with multiple disk controllers).
+Available disks are:
+
+__getrootdisk_1
+ local _defdsk;
+
+ _DKDEVS=`md_get_diskdevs`
+ _defdsk=`echo $_DKDEVS | cutlast`
+ if [ "${_defdsk}" != "${_DKDEVS}" ]; then
+ _defdsk=""
+ fi
+ echo "$_DKDEVS"
+ echo ""
+ echo -n "Which disk is the root disk [${_defdsk}]? "
+ getresp "${_defdsk}"
+ if isin $resp $_DKDEVS ; then
+ ROOTDISK="$resp"
+ else
+ echo ""
+ echo "The disk $resp does not exist."
+ ROOTDISK=""
+ fi
+}
+
+labelmoredisks() {
+ cat << \__labelmoredisks_1
+
+You may label the following disks:
+
+__labelmoredisks_1
+ echo "$_DKDEVS"
+ echo ""
+ echo -n "Label which disk? [done] "
+ getresp "done"
+ case "$resp" in
+ done)
+ ;;
+
+ *)
+ if isin $resp $_DKDEVS ; then
+ md_labeldisk $resp
+ else
+ echo ""
+ echo "The disk $resp does not exist."
+ fi
+ ;;
+ esac
+}
+
+addhostent() {
+ # $1 - IP address
+ # $2 - symbolic name
+
+ # Create an entry in the hosts table. If no host table
+ # exists, create one. If the IP address already exists,
+ # replace it's entry.
+ if [ ! -f /tmp/hosts ]; then
+ echo "127.0.0.1 localhost" > /tmp/hosts
+ fi
+
+ sed "/^$1 /d" < /tmp/hosts > /tmp/hosts.new
+ mv /tmp/hosts.new /tmp/hosts
+
+ echo "$1 $2 $2.$FQDN" >> /tmp/hosts
+}
+
+addifconfig() {
+ # $1 - interface name
+ # $2 - interface symbolic name
+ # $3 - interface IP address
+ # $4 - interface netmask
+ # $5 - (optional) interface link-layer directives
+
+ # Create a hostname.* file for the interface.
+ echo "inet $2 $4 NONE $5" > /tmp/hostname.$1
+
+ addhostent $3 $2
+}
+
+configurenetwork() {
+ local _ifsdone
+ local _ifs
+ local _ouranswer
+ local _reprompt
+
+ _IFS=`md_get_ifdevs`
+ _ifsdone=""
+ _ouranswer=""
+ _reprompt=1
+ resp="" # force at least one iteration
+ while [ "X${resp}" != X"done" ]; do
+ if [ $_reprompt = 1 ]; then
+ cat << \__configurenetwork_1
+
+You may configure the following network interfaces (the interfaces
+marked with [X] have been succesfully configured):
+
+__configurenetwork_1
+
+ for _ifs in $_IFS; do
+ if [ "X${_ouranswer}" = "X" ]; then
+ _ouranswer=$_ifs
+ fi
+ if isin $_ifs $_ifsdone ; then
+ echo -n " [X] "
+ else
+ echo -n " [ ] "
+ fi
+ echo $_ifs
+ done
+ echo ""
+ fi
+ echo -n "Configure which interface? (or, enter 'done') [$_ouranswer] "
+ getresp "$_ouranswer"
+ case "$resp" in
+ "done")
+ ;;
+ "")
+ _reprompt=0
+ ;;
+ *)
+ _ifs=$resp
+ if isin $_ifs $_IFS ; then
+ if configure_ifs $_ifs ; then
+ _ifsdone="$_ifs $_ifsdone"
+ fi
+ else
+ echo "Invalid response: \"$resp\" is not in list"
+ fi
+ _ouranswer="done"
+ _reprompt=1
+ ;;
+ esac
+
+ done
+}
+
+configure_ifs() {
+
+ local _up
+ local _interface_name
+ local _interface_ip
+ local _interface_mask
+ local _interface_symname
+ local _interface_extra
+ local _hostname
+
+ _interface_name=$1
+
+ set -- `ifconfig $_interface_name | sed -n '
+ 1s/.*<UP,.*$/UP/p
+ 1s/.*<.*>*$/DOWN/p
+ 2s/inet//
+ 2s/--> [0-9.][0-9.]*//
+ 2s/netmask//
+ 2s/broadcast//
+ 2p'`
+
+ _up=$1
+ _interface_ip=$2
+ _interface_mask=$3
+
+ # Get IP address
+ resp="" # force one iteration
+ while [ "X${resp}" = X"" ]; do
+ echo -n "IP address? [$_interface_ip] "
+ getresp "$_interface_ip"
+ _interface_ip=$resp
+ done
+
+ # Get symbolic name
+ _hostname=`hostname`
+ resp="" # force one iteration
+ while [ "X${resp}" = X"" ]; do
+ echo -n "Symbolic (host) name? [$_hostname] "
+ getresp "$_hostname"
+ _interface_symname=$resp
+ done
+
+ # Get netmask
+ resp=""
+ if [ "X${_interface_mask}" = X"" ]; then
+ _interface_mask=255.255.255.0
+ fi
+ while [ "X${resp}" = X"" ]; do
+ echo -n "Netmask ? [$_interface_mask] "
+ getresp "$_interface_mask"
+ _interface_mask=$resp
+ done
+
+ echo "Your network interface might require additional link-layer"
+ echo "directives (like \`link0'). If this is the case you can enter"
+ echo "these at the next prompt. Values used by some drivers are:"
+ echo " -link0 BNC"
+ echo " link0 -link1 AUI"
+ echo " link0 link1 UTP"
+ echo "(But please keep in mind not all drivers use flags like this)."
+ echo -n "Additional link-layer arguments? [$_interface_extra] "
+ getresp "$_interface_extra"
+ if [ "X${resp}" != X"" ]; then
+ _interface_extra=$resp
+ fi
+
+ # Configure the interface. If it
+ # succeeds, add it to the permanent
+ # network configuration info.
+ if [ $_up != "UP" ]; then
+ ifconfig ${_interface_name} down
+ if ifconfig ${_interface_name} inet \
+ ${_interface_ip} \
+ netmask ${_interface_mask} ${_interface_extra} up ; then
+ addifconfig \
+ ${_interface_name} \
+ ${_interface_symname} \
+ ${_interface_ip} \
+ ${_interface_mask} "${_interface_extra}"
+ return 0
+ fi
+ else
+ echo "Interface ${_interface_name} is already active."
+ echo "Just saving configuration on new root filesystem."
+ addifconfig \
+ ${_interface_name} \
+ ${_interface_symname} \
+ ${_interface_ip} \
+ ${_interface_mask} "${_interface_extra}"
+ fi
+ return 1
+}
+
+# Much of this is gratuitously stolen from /etc/netstart.
+enable_network() {
+
+ # Set up the hostname.
+ if [ ! -f /mnt/etc/myname ]; then
+ echo "ERROR: no /etc/myname!"
+ return 1
+ fi
+ hostname=`cat /mnt/etc/myname`
+ hostname $hostname
+
+ # configure all the interfaces which we know about.
+(
+ tmp="$IFS"
+ IFS="$IFS."
+ set -- `echo /mnt/etc/hostname*`
+ IFS=$tmp
+ unset tmp
+
+ while [ $# -ge 2 ] ; do
+ shift # get rid of "hostname"
+ (
+ read af name mask bcaddr extras
+ read dt dtaddr
+
+ if [ ! -n "$name" ]; then
+ echo "/etc/hostname.$1: invalid network configuration file"
+ exit
+ fi
+
+ cmd="ifconfig $1 $af $name "
+ if [ "${dt}" = "dest" ]; then cmd="$cmd $dtaddr"; fi
+ if [ -n "$mask" ]; then cmd="$cmd netmask $mask"; fi
+ if [ -n "$bcaddr" -a "X$bcaddr" != "XNONE" ]; then
+ cmd="$cmd broadcast $bcaddr";
+ fi
+ cmd="$cmd $extras"
+
+ $cmd
+ ) < /mnt/etc/hostname.$1
+ shift
+ done
+)
+
+ # set the address for the loopback interface
+ ifconfig lo0 inet localhost
+
+ # use loopback, not the wire
+ route add $hostname localhost
+
+ # /etc/mygate, if it exists, contains the name of my gateway host
+ # that name must be in /etc/hosts.
+ if [ -f /mnt/etc/mygate ]; then
+ route delete default > /dev/null 2>&1
+ route add default `cat /mnt/etc/mygate`
+ fi
+
+ # enable the resolver, if appropriate.
+ if [ -f /mnt/etc/resolv.conf ]; then
+ _resolver_enabled="TRUE"
+ cp /mnt/etc/resolv.conf /tmp/resolv.conf.shadow
+ fi
+
+ # Display results...
+ echo "Network interface configuration:"
+ ifconfig -a
+
+ echo ""
+
+ if [ "X${_resolver_enabled}" = X"TRUE" ]; then
+ route show
+ echo ""
+ echo "Resolver enabled."
+ else
+ route -n show
+ echo ""
+ echo "Resolver not enabled."
+ fi
+
+ return 0
+}
+
+# Print the selector and get a response
+# The list of sets is passed in as $1, sets $resp
+get_selection() {
+ local _next
+ local _f
+ local _sets
+
+ _sets=$1
+ _next=""
+ for _f in $_sets ; do
+ if isin $_f $_setsdone ; then
+ echo -n " [X] "
+ _next=""
+ else
+ echo -n " [ ] "
+ if [ -z "$_next" ]; then
+ _next=$_f
+ fi
+ fi
+ echo $_f
+ done
+
+ # Get the name of the file.
+ echo -n "File name [$_next]? "
+ getresp "$_next"
+}
+
+install_url() {
+# Get several parameters from the user, and xfer
+# files from the server.
+# Note: _ftp_server_ip, _ftp_server_dir, _ftp_server_login,
+# _ftp_server_password, and _ftp_active must be global.
+
+local _sets
+local _kernel
+local _f
+local _file_list
+local _get_files
+local _failed_files
+local _osetsdone
+local _url_type
+local _url_base
+local _tfile
+local _matched
+local _action
+
+# Is this an ftp or http install?
+_url_type=$1; shift
+
+echo
+echo "This is an automated ${_url_type}-based installation process. You will be asked"
+echo "questions and then the files will be retrieved iteratively via ftp(1)."
+echo
+
+# Proxy the connections?
+if [ "X${_proxy_host}" = X"" ]; then
+ _proxy_host=none
+fi
+echo -n "HTTP/FTP proxy URL? (if you use a proxy) [${_proxy_host}] "
+getresp "${_proxy_host}"
+if [ "X${resp}" = X"none" ]; then
+ unset _proxy_host ftp_proxy http_proxy
+else
+ _proxy_host=$resp
+ export ftp_proxy=${_proxy_host}
+ export http_proxy=${_proxy_host}
+fi
+if [ "${_url_type}" = "ftp" -a "X$ftp_proxy" = "X" ]; then
+ # Use active mode ftp? (irrelevant if using a proxy)
+ case "${_ftp_active}" in
+ -A) resp=y ;;
+ *) resp=n ;;
+ esac
+ echo "By default, ftp will attempt a passive connection and fall back to a normal"
+ echo "(active) connection if that doesn't work. However, there are some very"
+ echo "old ftp servers that claim to support passive mode, but really do not."
+ echo "In this case, you should explicately request an active session."
+ echo -n "Do you want to use active ftp? [${resp}] "
+ getresp "${resp}"
+ case "$resp" in
+ y*|Y*) _ftp_active=-A ;;
+ *) unset _ftp_active ;;
+ esac
+fi
+
+# Provide a list of possible servers
+echo -n "Do you want a list of potential ${_url_type} servers? [y] "
+getresp "y"
+case "$resp" in
+n*|N*) ;;
+*)
+ ftp ${_ftp_active} -V -a -o - ftp://ftp.openbsd.org/pub/OpenBSD/${VERSION_MAJOR}.${VERSION_MINOR}/ftplist | grep "^${_url_type}:"
+ ;;
+esac
+
+# Get server IP address
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ eval echo -n "Server IP address or hostname? [\$_${_url_type}_server_ip]\ "
+ eval getresp "\$_${_url_type}_server_ip"
+ eval _${_url_type}_server_ip=$resp
+done
+
+# Get server directory
+if [ "${_url_type}" = "ftp" -a "X${_ftp_server_dir}" = X"" ]; then
+ # Default ftp dir
+ _ftp_server_dir="pub/OpenBSD/${VERSION_MAJOR}.${VERSION_MINOR}/${ARCH}"
+fi
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ eval echo -n "Server directory? [\$_${_url_type}_server_dir]\ "
+ eval getresp "\$_${_url_type}_server_dir"
+ eval _${_url_type}_server_dir=$resp
+done
+
+if [ "${_url_type}" = "ftp" ]; then
+ # Need default values even if we proxy ftp...
+ if [ "X${_ftp_server_login}" = X"" ]; then
+ _ftp_server_login=anonymous
+ fi
+ if [ "X${_ftp_server_password}" = X"" ]; then
+ _ftp_server_password=root@`hostname`.${FQDN}
+ fi
+
+ # Get login name
+ resp="" # force one iteration
+ while [ "X${resp}" = X"" ]; do
+ echo -n "Login? [${_ftp_server_login}] "
+ getresp "${_ftp_server_login}"
+ _ftp_server_login=$resp
+ done
+
+ # Get password unless anonymous
+ if [ ${_ftp_server_login} != "anonymous" ]; then
+ resp="" # force one iteration
+ while [ "X${resp}" = X"" ]; do
+ echo -n "Password (will not echo): "
+ stty -echo
+ getresp "${_ftp_server_password}"
+ stty echo
+ echo ""
+ _ftp_server_password=$resp
+
+ echo -n "Password (again): "
+ stty -echo
+ getresp "${_ftp_server_password}"
+ stty echo
+ echo ""
+ if [ "${_ftp_server_password}" != "${resp}" ]; then
+ echo "Passwords do not match, try again."
+ resp=""
+ fi
+ done
+ else
+ # only used by ftp_list_files()
+ _ftp_server_password=root@`hostname`.${FQDN}
+ fi
+fi
+
+# Build up the base url since it is so nasty...
+if [ "${_url_type}" = "ftp" -a "${_ftp_server_login}" != "anonymous" ]; then
+ eval _url_base=${_url_type}://${_ftp_server_login}:${_ftp_server_password}@\$_${_url_type}_server_ip/\$_${_url_type}_server_dir
+else
+ eval _url_base=${_url_type}://\$_${_url_type}_server_ip/\$_${_url_type}_server_dir
+fi
+
+# Get list of files from the server.
+# XXX - check for nil $_file_list and deal
+if [ "${_url_type}" = "ftp" -a "X${ftp_proxy}" = X"" ]; then
+ _file_list=`ftp_list_files "$_ftp_server_ip" "$_ftp_server_login" "$_ftp_server_password" "$_ftp_server_dir"`
+else
+ # Assumes index file is "index.txt" for http (or proxy)
+ # We can't use index.html since the format is server-dependent
+ _file_list=`ftp -o - -V ${_url_base}/index.txt | sed 's/ //'`
+fi
+
+_sets=""
+if list_has_sets "$_file_list" $THESETS; then
+ for _f in $THESETS ; do
+ if [ "X${_f}" = "Xkernel" ]; then
+ if isin bsd $_file_list; then
+ _kernel=bsd
+ fi
+ elif isin ${_f}${VERSION}.tar.gz $_file_list; then
+ _sets="$_sets ${_f}${VERSION}.tar.gz"
+ elif isin ${_f}${VERSION}.tgz $_file_list; then
+ _sets="$_sets ${_f}${VERSION}.tgz"
+ fi
+ done
+else
+ eval echo "There are no OpenBSD install sets available in \"\$_${_url_type}_server_dir\"."
+ echo -n "Search for *.tar.gz and *.tgz files? [y] "
+ getresp "y"
+ case "$resp" in
+ n*|N*) return ;;
+ *) ;;
+ esac
+ # *.tar.gz and *.tgz are possible sets
+ _sets=""
+ _kernel=""
+ for _f in ${_file_list} ; do
+ case "$_f" in
+ *.tar.gz|*.tgz) _sets="$_sets ${_f}"
+ esac
+ done
+ if [ "X${_sets}" = X"" ]; then
+ echo "There are no *.tar.gz or *.tgz files in that dir."
+ echo -n "See a directory listing? [y] "
+ getresp "y"
+ case "$resp" in
+ n*|N*) return ;;
+ *) ;;
+ esac
+ echo ""
+ echo "${_file_list}"
+ echo ""
+ return
+ else
+ echo "Adding *.tar.gz and *.tgz files to selector."
+ fi
+fi
+
+# Yes, all those blackslashes really are necesary...
+eval echo "\\\\n"\
+"You will now be asked for files to extract. In addition to the\\\\n"\
+"files listed in the selector you may enter any file located at\\\\n"\
+"\$_${_url_type}_server_ip:\$_${_url_type}_server_dir. You can also enter\\\\n"\
+"'all' to install all the standard sets, or 'list' to list the\\\\n"\
+"files avilable at \$_${_url_type}_server_ip:\$_${_url_type}_server_dir.\\\\n"\
+"When you are done selecting files, enter 'done'.\\\\n"\
+"Some of these sets are required for your ${MODE} and some are optional --\\\\n"\
+"You will want at least the base and bsd sets.\\\\n"\
+"Consult the installation notes if you are not sure which sets are required!"
+_osetsdone="$_setsdone"
+# Set a minimal default
+for _f in $_sets $_kernel; do
+ case "$_f" in
+ base*.tar.gz|base*.tgz|etc*.tar.gz|etc*.tgz|bsd)
+ if ! isin ${_f} ${_setsdone}; then
+ _get_files=`addel ${_f} ${_get_files}`
+ _setsdone=`addel ${_f} ${_setsdone}`
+ fi
+ ;;
+ esac
+done
+
+# Allow the user to select/de-select additional sets
+while : ; do
+ echo ""
+ echo "The following sets are available for extraction."
+ echo "Enter filename, \`list', \`all', or \`done'."
+ echo "You may de-select a set by prepending a '-' to it's name."
+ echo ""
+ get_selection "$_sets $_kernel"
+
+ if [ "X${resp}" = X"done" ]; then
+ break
+ elif [ "X${resp}" = X"list" ]; then
+ echo ""
+ eval echo "\$_${_url_type}_server_dir:"
+ echo "${_file_list}"
+ continue
+ elif [ "X${resp}" = X"all" ]; then
+ _get_files="$_sets $_kernel"
+ _setsdone="$_sets $_kernel"
+ break
+ fi
+
+ # Change +/- into add/remove
+ _action=add
+ case "$resp" in
+ +*) resp="${resp#?}"
+ ;;
+ -*) resp="${resp#?}"
+ _action=remove
+ ;;
+ esac
+
+ # Major hack to allow the user to select globbing patterns
+ set -o noglob
+ _tfile=/tmp/install_case.$$ # safe in single user mode
+ cat >$_tfile << OOF
+ case \$_f in
+ $resp) # Add/remove file to extraction list
+ if [ "\$_action" = "add" ]; then
+ _get_files=\`addel \${_f} \${_get_files}\`
+ _setsdone=\`addel \${_f} \${_setsdone}\`
+ elif [ "\$_action" = "remove" ]; then
+ _get_files=\`rmel \${_f} \${_get_files}\`
+ _setsdone=\`rmel \${_f} \${_setsdone}\`
+ else
+ echo "Unknown action: \$_action"
+ fi
+ _matched=\$(( \$_matched + 1 ))
+ ;;
+ esac
+OOF
+ set +o noglob
+
+ # Eww.
+ _matched=0
+ for _f in $_sets $_kernel; do
+ . $_tfile
+ done
+ rm -f $_tfile
+
+ if [ $_matched -eq 0 ]; then
+ eval echo "File \$_${_url_type}_server_dir/$resp does not exist. Check to make"
+ echo "sure you entered the information properly or enter 'list' for a file list."
+ fi
+done
+
+# User may have said "done" without selecting any files
+if [ "X${_get_files}" = X"" ]; then
+ return
+fi
+
+echo
+echo "Fetching files via ${_url_type} may take a long time, especially over a slow network"
+echo -n "connection. Ready to download files? [y] "
+getresp "y"
+case "$resp" in
+ y*|Y*)
+ ;;
+ *)
+ _setsdone="$_osetsdone"
+ return
+ ;;
+esac
+
+# Download the files one at a time and keep track of which ones failed
+while test -n "${_get_files}" ; do
+ _failed_files=""
+ for _f in $_get_files ; do
+ echo ""
+ if [ "X${_f}" = "X${_kernel}" ]; then
+ ( cd /mnt ; ftp ${_ftp_active} -V ${_url_base}/${_f} )
+ else
+ ( cd /mnt ; ftp ${_ftp_active} -o - -V ${_url_base}/${_f} | tar zxvpf - )
+ fi
+ if [ $? -ne 0 ]; then
+ # Mark xfer as having failed,.
+ _setsdone=`rmel $_f $_setsdone`
+ _failed_files="${_failed_files} ${_f}"
+ fi
+ done
+
+ # Give them the option of refetching failed files.
+ _get_files=""
+ while test -n "${_failed_files}" ; do
+ echo ""
+ echo "The following files failed to transfer and extract correctly:"
+ echo "Choose which one(s) to refetch or 'done' to exit selector."
+ echo "You may de-select a file by prepending a '-' to it's name."
+ echo ""
+ get_selection "$_failed_files"
+
+ if [ "X${resp}" = X"done" ]; then
+ break
+ elif [ "X${resp}" = X"list" ]; then
+ echo ""
+ eval echo "\$_${_url_type}_server_dir:"
+ echo "${_file_list}"
+ echo ""
+ continue
+ fi
+
+ # Change +/- into add/remove
+ _action=add
+ case "$resp" in
+ +*) resp="${resp#?}"
+ ;;
+ -*) resp="${resp#?}"
+ _action=remove
+ ;;
+ esac
+
+ # Major hack to allow the user to select globbing patterns
+ set -o noglob
+ _tfile=/tmp/install_case.$$ # safe in single user mode
+ cat >$_tfile << OOF
+ case \$_f in
+ $resp) # Add/remove file to extraction list
+ if [ "\$_action" = "add" ]; then
+ _get_files=\`addel \${_f} \${_get_files}\`
+ _setsdone=\`addel \${_f} \${_setsdone}\`
+ elif [ "\$_action" = "remove" ]; then
+ _get_files=\`rmel \${_f} \${_get_files}\`
+ _setsdone=\`rmel \${_f} \${_setsdone}\`
+ else
+ echo "Unknown action: \$_action"
+ fi
+ _matched=\$(( \$_matched + 1 ))
+ ;;
+ esac
+OOF
+ set +o noglob
+
+ # Eww.
+ _matched=0
+ for _f in $_failed_files; do
+ . $_tfile
+ done
+ rm -f $_tfile
+
+ if [ $_matched -eq 0 ]; then
+ eval echo "File \$_${_url_type}_server_dir/$resp does not exist. Check to make"
+ echo "sure you entered the information properly or enter 'list' for a file list."
+ fi
+ done
+done
+}
+
+install_from_mounted_fs() {
+# $1 - directory containing installation sets
+local _sets
+local _kernel
+local _f
+local _get_files
+local _failed_files
+local _osetsdone
+local _tfile
+local _matched
+local _action
+
+if [ ! -d $1 ]; then
+ echo "No such directory: $1"
+ return
+fi
+
+_sets=""
+if dir_has_sets $1 $THESETS; then
+ for _f in $THESETS ; do
+ if [ "X${_f}" = "Xkernel" ]; then
+ if [ -f $1/bsd ]; then
+ _kernel=bsd
+ fi
+ elif [ -f $1/${_f}${VERSION}.tar.gz ]; then
+ _sets="$_sets ${_f}${VERSION}.tar.gz"
+ elif [ -f $1/${_f}${VERSION}.tgz ]; then
+ _sets="$_sets ${_f}${VERSION}.tgz"
+ fi
+ done
+else
+ echo "There are no OpenBSD install sets available in \"$1\"."
+ echo -n "Search for *.tar.gz and *.tgz files? [y] "
+ getresp "y"
+ case "$resp" in
+ n*|N*) return ;;
+ *) ;;
+ esac
+ # *.tar.gz and *.tgz are possible sets
+ _sets=""
+ _kernel=""
+ _sets=`cd $1 ; echo *.tar.gz *.tgz`
+ if [ "X${_sets}" = X'*.tar.gz *.tgz' ]; then
+ echo "There are no *.tar.gz or *.tgz files in that dir."
+ echo -n "See a directory listing? [y] "
+ getresp "y"
+ case "$resp" in
+ n*|N*) return ;;
+ *) ;;
+ esac
+ echo ""
+ ( cd $1 && ls )
+ echo ""
+ return
+ else
+ echo "Adding *.tar.gz and *.tgz files to selector."
+ fi
+fi
+
+echo "\n"\
+"You will now be asked for files to extract. In addition to the\n"\
+"files listed in the selector you may enter any file located in\n"\
+"$1. You can also enter 'all' to install all the standard\n"\
+"sets, or 'list' to list the files avilable in $1.\n"\
+"When you are done selecting files, enter 'done'.\n"\
+"Some of these sets are required for your ${MODE} and some are optional --\n"\
+"You will want at least the base and bsd sets.\n"\
+"Consult the intallation notes if you are not sure which sets are required!"
+_osetsdone="$_setsdone"
+# Set a minimal default
+for _f in $_sets $_kernel; do
+ case "$_f" in
+ base*.tar.gz|base*.tgz|etc*.tar.gz|etc*.tgz|bsd)
+ if ! isin ${_f} ${_setsdone}; then
+ _get_files=`addel ${_f} ${_get_files}`
+ _setsdone=`addel ${_f} ${_setsdone}`
+ fi
+ ;;
+ esac
+done
+
+# Allow the user to select/de-select additional sets
+while : ; do
+ echo ""
+ echo "The following sets are available for extraction."
+ echo "Enter filename, \`list', \`all', or \`done'."
+ echo "You may de-select a set by prepending a '-' to it's name."
+ echo ""
+ get_selection "$_sets $_kernel"
+
+ if [ "X${resp}" = X"done" ]; then
+ break
+ elif [ "X${resp}" = X"list" ]; then
+ echo ""
+ echo "${1}:"
+ ( cd $1 && ls )
+ continue
+ elif [ "X${resp}" = X"all" ]; then
+ _get_files="$_sets $_kernel"
+ _setsdone="$_sets $_kernel"
+ break
+ fi
+
+ # Change +/- into add/remove
+ _action=add
+ case "$resp" in
+ +*) resp="${resp#?}"
+ ;;
+ -*) resp="${resp#?}"
+ _action=remove
+ ;;
+ esac
+
+ # Major hack to allow the user to select globbing patterns
+ set -o noglob
+ _tfile=/tmp/install_case.$$ # safe in single user mode
+ cat >$_tfile << OOF
+ case \$_f in
+ $resp) # Add/remove file to extraction list
+ if [ "\$_action" = "add" ]; then
+ _get_files=\`addel \${_f} \${_get_files}\`
+ _setsdone=\`addel \${_f} \${_setsdone}\`
+ elif [ "\$_action" = "remove" ]; then
+ _get_files=\`rmel \${_f} \${_get_files}\`
+ _setsdone=\`rmel \${_f} \${_setsdone}\`
+ else
+ echo "Unknown action: \$_action"
+ fi
+ _matched=\$(( \$_matched + 1 ))
+ ;;
+ esac
+OOF
+ set +o noglob
+
+ # Eww.
+ _matched=0
+ for _f in $_sets $_kernel; do
+ . $_tfile
+ done
+ rm -f $_tfile
+
+ if [ $_matched = 0 ]; then
+ echo "File $1/$resp does not exist. Check to make"
+ echo "sure you entered the information properly or enter 'list' for a file list."
+ fi
+done
+
+# User may have said "done" without selecting any files
+if [ "X${_get_files}" = X"" ]; then
+ return
+fi
+
+echo
+echo -n "Ready to extract selected file sets? [y] "
+getresp "y"
+case "$resp" in
+ y*|Y*)
+ ;;
+ *)
+ _setsdone="$_osetsdone"
+ return
+ ;;
+esac
+
+# Extract the files one at a time and keep track of which ones failed
+while test -n "${_get_files}" ; do
+ _failed_files=""
+ for _f in $_get_files ; do
+ echo ""
+ echo "$1/${_f}:"
+ if [ "X${_f}" = "X${_kernel}" ]; then
+ cp $1/$_f /mnt/$_f
+ else
+ cat $1/$_f | (cd /mnt; tar -zxvpf -)
+ fi
+ if [ $? -ne 0 ]; then
+ # Mark xfer as having failed,.
+ _setsdone=`rmel $_f $_setsdone`
+ _failed_files="${_failed_files} ${_f}"
+ fi
+ done
+
+ # Give them the option of retrying failed files.
+ _get_files=""
+ while test -n "${_failed_files}" ; do
+ echo ""
+ echo "The following files failed to extract correctly:"
+ echo "Choose which one(s) to retry or 'done' to exit selector."
+ echo "You may de-select a file by prepending a '-' to it's name."
+ echo ""
+ get_selection "$_failed_files"
+
+ if [ "X${resp}" = X"done" ]; then
+ break
+ elif [ "X${resp}" = X"list" ]; then
+ echo ""
+ echo "${1}:"
+ ( cd $1 && ls )
+ echo ""
+ continue
+ fi
+
+ # Change +/- into add/remove
+ _action=add
+ case "$resp" in
+ +*) resp="${resp#?}"
+ ;;
+ -*) resp="${resp#?}"
+ _action=remove
+ ;;
+ esac
+
+ # Major hack to allow the user to select globbing patterns
+ set -o noglob
+ _tfile=/tmp/install_case.$$ # safe in single user mode
+ cat >$_tfile << OOF
+ case \$_f in
+ $resp) # Add/remove file to extraction list
+ if [ "\$_action" = "add" ]; then
+ _get_files=\`addel \${_f} \${_get_files}\`
+ _setsdone=\`addel \${_f} \${_setsdone}\`
+ elif [ "\$_action" = "remove" ]; then
+ _get_files=\`rmel \${_f} \${_get_files}\`
+ _setsdone=\`rmel \${_f} \${_setsdone}\`
+ else
+ echo "Unknown action: \$_action"
+ fi
+ _matched=\$(( \$_matched + 1 ))
+ ;;
+ esac
+OOF
+ set +o noglob
+
+ # Eww.
+ _matched=0
+ for _f in $_failed_files; do
+ . $_tfile
+ done
+ rm -f $_tfile
+
+ if [ $_matched = 0 ]; then
+ echo "File $1/$resp does not exist. Check to make"
+ echo "sure you entered the information properly or enter 'list' for a file list."
+ fi
+ done
+done
+}
+
+install_cdrom() {
+local _drive
+local _partition_range
+local _partition
+local _fstype
+local _directory
+
+# Get the cdrom device info
+cat << \__install_cdrom_1
+
+The following CD-ROM devices are installed on your system; please select
+the CD-ROM device containing the partition with the installation sets:
+
+__install_cdrom_1
+_CDDEVS=`md_get_cddevs`
+echo "$_CDDEVS"
+echo ""
+echo -n "Which is the CD-ROM with the installation media? [abort] "
+getresp "abort"
+case "$resp" in
+ abort)
+ echo "Aborting."
+ return
+ ;;
+
+ *)
+ if isin $resp $_CDDEVS ; then
+ _drive=$resp
+ else
+ echo ""
+ echo "The CD-ROM $resp does not exist."
+ echo "Aborting."
+ return
+ fi
+ ;;
+esac
+
+# Get partition
+_partition_range=`md_get_partition_range`
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "Partition? [c] "
+ getresp "c"
+ case "$resp" in
+ $_partition_range)
+ _partition=$resp
+ ;;
+
+ *)
+ echo "Invalid response: $resp"
+ resp="" # force loop to repeat
+ ;;
+ esac
+done
+
+# Ask for filesystem type
+cat << \__install_cdrom_2
+
+There are two CD-ROM filesystem types currently supported by this program:
+cd9660 ISO-9660
+ffs Berkeley Fast Filesystem
+
+__install_cdrom_2
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "Which filesystem type? [cd9660] "
+ getresp "cd9660"
+ case "$resp" in
+ cd9660|ffs)
+ _fstype=$resp
+ ;;
+
+ *)
+ echo "Invalid response: $resp"
+ resp="" # force loop to repeat
+ ;;
+ esac
+done
+
+# Mount the CD-ROM
+if ! mount -t ${_fstype} -o ro \
+ /dev/${_drive}${_partition} /mnt2 ; then
+ echo "Cannot mount CD-ROM drive. Aborting."
+ return
+fi
+
+# Get the directory where the file lives
+if [ "X${_directory}" = X"" ]; then
+ _directory="/${VERSION_MAJOR}.${VERSION_MINOR}/${ARCH}"
+fi
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo "Enter the directory relative to the mount point that"
+ echo -n "contains the file. [${_directory}] "
+ getresp "${_directory}"
+done
+_directory=$resp
+
+install_from_mounted_fs /mnt2/${_directory}
+umount -f /mnt2 > /dev/null 2>&1
+}
+
+mount_a_disk() {
+# Mount a disk on /mnt2. The set of disk devices to choose from
+# is $_DKDEVS.
+# returns 0 on failure.
+
+local _drive
+local _def_partition
+local _partition_range
+local _partition
+local _fstype
+local _fsopts
+local _directory
+local _md_fstype
+local _md_fsopts
+
+getresp "abort"
+case "$resp" in
+ abort)
+ echo "Aborting."
+ return 0
+ ;;
+
+ *)
+ if isin $resp $_DKDEVS ; then
+ _drive=$resp
+ else
+ echo ""
+ echo "The disk $resp does not exist."
+ echo "Aborting."
+ return 0
+ fi
+ ;;
+esac
+
+# Get partition
+cat <<__mount_a_disk_1
+
+The following partitions have been found on $_drive:
+
+__mount_a_disk_1
+disklabel $_drive 2>/dev/null | grep '^ .:'
+echo
+_likely_partition_range=`disklabel $_drive 2>/dev/null | \
+ sed -n -e '/swap/s/.*//' -e '/unused/s/.*//' \
+ -e '/^ .:/{s/^ \(.\).*/\1/;H;}' \
+ -e '${g;s/\n//g;s/^/[/;s/$/]/p;}'`
+_partition_range=`disklabel $_drive 2>/dev/null | \
+ sed -n -e '/^ .:/{s/^ \(.\).*/\1/;H;}' \
+ -e '${g;s/\n//g;s/^/[/;s/$/]/p;}'`
+_def_partition=`echo $_likely_partition_range | \
+ sed -n 's/^\[\(.\).*\]/\1/p'`
+if [ -z "$_def_partition" ]; then
+ _def_partition=`echo $_partition_range | \
+ sed -n 's/^\[\(.\).*\]/\1/p'`
+ if [ -z "$_def_partition" ]; then
+ echo "There are no usable partitions on that disk"
+ return 0
+ fi
+fi
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "Partition? [$_def_partition] "
+ getresp "$_def_partition"
+ case "$resp" in
+ $_partition_range)
+ _partition=$resp
+ ;;
+
+ *)
+ echo "Invalid response: $resp"
+ resp="" # force loop to repeat
+ ;;
+ esac
+done
+
+# Ask for filesystem type
+cat << \__mount_a_disk_2
+
+The following filesystem types are supported:
+default (deduced from the disklabel)
+ffs
+__mount_a_disk_2
+_md_fstype=`md_native_fstype`
+_md_fsopts=`md_native_fsopts`
+if [ ! -z "$_md_fstype" ]; then
+ echo " $_md_fstype"
+else
+ _md_fstype="_undefined_"
+fi
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "Which filesystem type? [default] "
+ getresp "default"
+ case "$resp" in
+ default)
+ _fstype=""
+ _fsopts="ro"
+ ;;
+ ffs)
+ _fstype="-t $resp"
+ _fsopts="ro"
+ ;;
+ $_md_fstype)
+ _fstype="-t $resp"
+ _fsopts=$_md_fsopts
+ ;;
+ *)
+ echo "Invalid response: $resp"
+ resp="" # force loop to repeat
+ ;;
+ esac
+done
+
+# Mount the disk
+if ! mount $_fstype -o $_fsopts /dev/${_drive}${_partition} /mnt2; then
+ echo "Cannot mount disk. Aborting."
+ return 0
+fi
+return 1
+}
+
+install_disk() {
+local _directory
+
+cat << \__install_disk_1
+
+The following disk devices are installed on your system; please select
+the disk device containing the partition with the installation sets:
+
+__install_disk_1
+_DKDEVS=`md_get_diskdevs`
+echo "$_DKDEVS"
+echo ""
+echo -n "Which is the disk with the installation sets? [abort] "
+
+if mount_a_disk ; then
+ return
+fi
+
+# Get the directory where the file lives
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo "Enter the directory relative to the mount point that"
+ echo -n "contains the file. [${_directory}] "
+ getresp "${_directory}"
+done
+_directory=$resp
+
+install_from_mounted_fs /mnt2/${_directory}
+umount -f /mnt2 > /dev/null 2>&1
+}
+
+install_nfs() {
+# Get the IP address of the server
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "Server IP address or hostname? [${_nfs_server_ip}] "
+ getresp "${_nfs_server_ip}"
+done
+_nfs_server_ip=$resp
+
+# Get server path to mount
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "Filesystem on server to mount? [${_nfs_server_path}] "
+ getresp "${_nfs_server_path}"
+done
+_nfs_server_path=$resp
+
+# Determine use of TCP
+echo -n "Use TCP transport (only works with capable NFS server)? [n] "
+getresp "n"
+case "$resp" in
+ y*|Y*)
+ _nfs_tcp="-T"
+ ;;
+
+ *)
+ _nfs_tcp=""
+ ;;
+esac
+
+# Mount the server
+mkdir /mnt2 > /dev/null 2>&1
+if ! mount_nfs $_nfs_tcp ${_nfs_server_ip}:${_nfs_server_path} \
+ /mnt2 ; then
+ echo "Cannot mount NFS server. Aborting."
+ return
+fi
+
+# Get the directory where the file lives
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo "Enter the directory relative to the mount point that"
+ echo -n "contains the file. [${_nfs_directory}] "
+ getresp "${_nfs_directory}"
+done
+_nfs_directory=$resp
+
+install_from_mounted_fs /mnt2/${_nfs_directory}
+umount -f /mnt2 > /dev/null 2>&1
+}
+
+install_tape() {
+local _xcmd
+
+# Get the name of the tape from the user.
+cat << \__install_tape_1
+
+The installation program needs to know which tape device to use. Make
+sure you use a "no rewind on close" device.
+
+__install_tape_1
+_tape=`basename $TAPE`
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "Name of tape device? [${_tape}]"
+ getresp "${_tape}"
+done
+_tape=`basename $resp`
+TAPE="/dev/${_tape}"
+if [ ! -c $TAPE ]; then
+ echo "$TAPE does not exist or is not a character special file."
+ echo "Aborting."
+ return
+fi
+export TAPE
+
+# Rewind the tape device
+echo -n "Rewinding tape..."
+if ! mt rewind ; then
+ echo "$TAPE may not be attached to the system or may not be"
+ echo "a tape device. Aborting."
+ return
+fi
+echo "done."
+
+# Get the file number
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "File number? "
+ getresp ""
+ case "$resp" in
+ [1-9]*)
+ _nskip=`expr $resp - 1`
+ ;;
+
+ *)
+ echo "Invalid file number ${resp}."
+ resp="" # fore loop to repeat
+ ;;
+ esac
+done
+
+# Skip to correct file.
+echo -n "Skipping to source file..."
+if [ "X${_nskip}" != X"0" ]; then
+ if ! mt fsf $_nskip ; then
+ echo "Could not skip $_nskip files. Aborting."
+ return
+ fi
+fi
+echo "done."
+
+cat << \__install_tape_2
+
+There are 2 different ways the file can be stored on tape:
+
+1) an image of a gzipped tar file
+2) a standard tar image
+
+__install_tape_2
+resp="" # force one iteration
+while [ "X${resp}" = X"" ]; do
+ echo -n "Which way is it? [1] "
+ getresp "1"
+ case "$resp" in
+ 1)
+ _xcmd="tar -zxvpf -"
+ ;;
+
+ 2)
+ _xcmd="tar -xvpf -"
+ ;;
+
+ *)
+ echo "Invalid response: $resp."
+ resp="" # force loop to repeat
+ ;;
+ esac
+ ( cd /mnt; dd if=$TAPE | $_xcmd )
+done
+echo "Extraction complete."
+}
+
+get_timezone() {
+local _a
+local _zonepath
+
+#
+# If the zoneinfo is not on the installation medium or on the
+# installed filesystem, set TZ to GMT and return immediatly.
+#
+if [ ! -e /usr/share/zoneinfo -a ! -e /mnt/usr/share/zoneinfo ]; then
+ TZ=GMT
+ return
+fi
+if [ ! -d /usr/share/zoneinfo ]; then
+ _zonepath=/mnt
+else
+ _zonepath=""
+fi
+
+cat << \__get_timezone_1
+
+Select a time zone for your location. Timezones are represented on the
+system by a directory structure rooted in "/usr/share/timezone". Most
+timezones can be selected by entering a token like "MET" or "GMT-6".
+Other zones are grouped by continent, with detailed zone information
+separated by a slash ("/"), e.g. "US/Pacific" or "Canada/Mountain".
+
+To get a listing of what's available in /usr/share/zoneinfo, enter "?"
+at the prompts below.
+
+__get_timezone_1
+if [ X$TZ = X ]; then
+ TZ=`ls -l /mnt/etc/localtime 2>/dev/null | cutlast`
+ TZ=${TZ#/usr/share/zoneinfo/}
+fi
+while : ; do
+ echo -n "What timezone are you in [\`?' for list] [$TZ]? "
+ getresp "$TZ"
+ case "$resp" in
+ "")
+ echo "Timezone defaults to GMT"
+ TZ="GMT"
+ break;
+ ;;
+ "?")
+ ls -F ${_zonepath}/usr/share/zoneinfo
+ ;;
+ *)
+ _a=$resp
+ while [ -d ${_zonepath}/usr/share/zoneinfo/$_a ]; do
+ echo -n "There are several timezones available"
+ echo " within zone '$_a'"
+ echo -n "Select a sub-timezone [\`?' for list]: "
+ getresp ""
+ case "$resp" in
+ "?") ls -F ${_zonepath}/usr/share/zoneinfo/$_a ;;
+ *) _a=${_a}/${resp}
+ if [ -f ${_zonepath}/usr/share/zoneinfo/$_a ]; then
+ break;
+ fi
+ ;;
+ esac
+ done
+ if [ -f ${_zonepath}/usr/share/zoneinfo/$_a ]; then
+ TZ="$_a"
+ echo "You have selected timezone \"$_a\"".
+ return
+ fi
+ echo "'/usr/share/zoneinfo/$_a' is not a valid timezone on this system."
+ ;;
+ esac
+done
+}
+
+install_sets()
+{
+local _yup
+_yup="FALSE"
+
+# Ask the user which media to load the distribution from.
+cat << \__install_sets_1
+
+It is now time to extract the installation sets onto the hard disk. Make sure
+the sets are either on a local device (i.e. tape, CD-ROM) or on a network
+server. You will have the chance to repeat this step or to extract sets from
+several places, so you don't have to try to load all the sets in one try and
+can recover from some errors.
+
+__install_sets_1
+
+if [ "X$local_sets_dir" != "X" ]; then
+ install_from_mounted_fs ${local_sets_dir}
+ if [ X"$_setsdone" != X ]; then
+ _yup="TRUE"
+ fi
+fi
+
+# Go on prodding for alternate locations
+resp="" # force at least one iteration
+while [ X"${resp}" = X ]; do
+ # If _yup is not FALSE, it means that we extracted sets above.
+ # If that's the case, bypass the menu the first time.
+ if [ X"$_yup" = X"FALSE" ]; then
+ echo -n "Install from (f)tp, h(ttp), (t)ape, (C)D-ROM,"
+ echo -n " (N)FS or local (d)isk? "
+ getresp ""
+ case "$resp" in
+ d*|D*)
+ install_disk
+ resp=d
+ ;;
+ f*|F*)
+ install_url ftp
+ resp=f
+ ;;
+ h*|H*)
+ install_url http
+ resp=h
+ ;;
+ t*|T*)
+ install_tape
+ resp=t
+ ;;
+ c*|C*)
+ install_cdrom
+ resp=c
+ ;;
+ n*|N*)
+ install_nfs
+ resp=n
+ ;;
+ *)
+ echo "Invalid response: $resp"
+ resp=""
+ ;;
+ esac
+ else
+ _yup="FALSE" # So we'll ask next time
+ fi
+
+ if [ ! -f /mnt/bsd ]; then
+ cat << \__install_sets_2
+
+You still do not have a /bsd in your filesystem (ie. the kernel), which
+seems to indicate that you are still missing important distribution files.
+So please continue installing...
+__install_sets_2
+ resp=""
+ fi
+ if [ ! -f /mnt/bin/cat ]; then
+ cat << \__install_sets_3
+
+You still do not have a /bin/cat in your filesystem (ie. a sample random file
+which you probably want). This seems to indicate that you are still missing
+important distribution files. So please continue installing...
+__install_sets_3
+ resp=""
+ fi
+
+ # Give the user the opportunity to extract more sets. They
+ # don't necessarily have to come from the same media.
+ echo ""
+ echo -n "Extract more sets? [n] "
+ getresp "n"
+ case "$resp" in
+ y*|Y*)
+ # Force loop to repeat
+ resp=""
+ ;;
+
+ *)
+ ;;
+ esac
+done
+}
+
+munge_fstab()
+{
+local _fstab
+local _fstab_shadow
+local _dev
+local _mp
+local _fstype
+local _rest
+
+# Now that the 'real' fstab is configured, we munge it into a 'shadow'
+# fstab which we'll use for mounting and unmounting all of the target
+# filesystems relative to /mnt. Mount all filesystems.
+_fstab=$1
+_fstab_shadow=$2
+( while read _dev _mp _fstype _rest; do
+ # Skip comment lines
+ case "$_dev" in
+ \#*) continue;;
+ *) ;;
+ esac
+ # and some filesystem types (like there are swap,kernfs,...)
+ case "$_fstype" in
+ ffs|ufs|nfs) ;;
+ *) continue;;
+ esac
+ if [ "$_mp" = "/" ]; then
+ echo $_dev /mnt $_fstype $_rest
+ else
+ echo $_dev /mnt$_mp $_fstype $_rest
+ fi
+ done ) < $_fstab > $_fstab_shadow
+}
+
+mount_fs()
+{
+# Must mount filesystems manually, one at a time, so we can make
+# sure the mount points exist.
+# $1 is a file in fstab format
+local _fstab
+
+_fstab=$1
+
+( while read line; do
+ set -- $line
+ _dev=$1
+ _mp=$2
+ _fstype=$3
+ _opt=$4
+
+ # If not the root filesystem, make sure the mount
+ # point is present.
+ if [ "X{$_mp}" != X"/mnt" ]; then
+ mkdir -p $_mp
+ fi
+
+ # Mount the filesystem. If the mount fails, exit
+ # with an error condition to tell the outer
+ # later to bail.
+ if ! mount -v -t $_fstype -o $_opt $_dev $_mp ; then
+ # error message displated by mount
+ exit 1
+ fi
+done ) < $_fstab
+
+if [ "X${?}" != X"0" ]; then
+ cat << \__mount_filesystems_1
+
+FATAL ERROR: Cannot mount filesystems. Double-check your configuration
+and restart the installation process.
+__mount_filesystems_1
+ exit
+fi
+}
+
+unmount_fs()
+{
+# Unmount all filesystems and check their integrity.
+# Usage: [-check] <fstab file>
+local _check
+local _fstab
+local _pid
+
+if [ "$1" = "-check" ]; then
+ _check=1
+ _fstab=$2
+else
+ _check=0
+ _fstab=$1
+fi
+
+if [ ! \( -f $_fstab -a -s $_fstab \) ]; then
+ echo "fstab empty" > /dev/tty
+ return
+fi
+
+(
+ _devs=""
+ _mps=""
+ # maintain reverse order
+ while read line; do
+ set -- $line
+ _devs="$1 ${_devs}"
+ _mps="$2 ${_mps}"
+ done
+ echo -n "Umounting filesystems... "
+ for _mp in ${_mps}; do
+ echo -n "${_mp} "
+ umount ${_mp}
+ done
+ echo "Done."
+
+ if [ $_check = 1 ]; then
+ echo "Checking filesystem integrity..."
+ for _dev in ${_devs}; do
+ echo "${_dev}"
+ fsck -f ${_dev}
+ done
+ fi
+ echo "Done."
+) < $_fstab
+}
+
+check_fs()
+{
+# Check filesystem integrity.
+# $1 is a file in fstab format
+local _fstab
+
+_fstab=$1
+
+(
+ _devs=""
+ _mps=""
+ while read line; do
+ set -- $line
+ _devs="$1 ${_devs}"
+ _mps="$2 ${_mps}"
+ done
+
+ echo "Checking filesystem integrity..."
+ for _dev in ${_devs}; do
+ echo "${_dev}"
+ fsck -f ${_dev}
+ done
+ echo "Done."
+) < $_fstab
+}
diff --git a/distrib/powerpc/ramdisk/list b/distrib/powerpc/ramdisk/list
index df756d88ea9..00f5aa7142f 100644
--- a/distrib/powerpc/ramdisk/list
+++ b/distrib/powerpc/ramdisk/list
@@ -1,4 +1,4 @@
-# $OpenBSD: list,v 1.4 1998/04/06 20:27:31 pefo Exp $
+# $OpenBSD: list,v 1.5 1998/05/29 04:34:20 rahnds Exp $
SRCDIRS distrib/special
SRCDIRS usr.bin bin sbin usr.sbin gnu/usr.bin
@@ -66,7 +66,7 @@ SYMLINK ../../instbin usr/bin/build usr/bin/vi
# copy the MAKEDEV script and make some devices
COPY ${DESTDIR}/dev/MAKEDEV dev/MAKEDEV
SPECIAL cd dev; sh MAKEDEV ramdisk
-SPECIAL /bin/rm dev/MAKEDEV
+#SPECIAL /bin/rm dev/MAKEDEV
# we need the contents of /usr/mdec
COPY ${DESTDIR}/usr/mdec/ofwboot usr/mdec/ofwboot