xref: /netbsd/distrib/sparc/ramdisk/dot.profile (revision bf9ec67e)
1# $NetBSD: dot.profile,v 1.16 2001/06/17 11:57:23 pk Exp $
2#
3# Copyright (c) 2000 The NetBSD Foundation, Inc.
4# All rights reserved.
5#
6# This code is derived from software contributed to The NetBSD Foundation
7# by Paul Kranenburg.
8#
9# Redistribution and use in source and binary forms, with or without
10# modification, are permitted provided that the following conditions
11# are met:
12# 1. Redistributions of source code must retain the above copyright
13#    notice, this list of conditions and the following disclaimer.
14# 2. Redistributions in binary form must reproduce the above copyright
15#    notice, this list of conditions and the following disclaimer in the
16#    documentation and/or other materials provided with the distribution.
17# 3. All advertising materials mentioning features or use of this software
18#    must display the following acknowledgement:
19#        This product includes software developed by the NetBSD
20#        Foundation, Inc. and its contributors.
21# 4. Neither the name of The NetBSD Foundation nor the names of its
22#    contributors may be used to endorse or promote products derived
23#    from this software without specific prior written permission.
24#
25# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
26# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
29# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35# POSSIBILITY OF SUCH DAMAGE.
36#
37
38PATH=/sbin:/bin:/usr/bin:/usr/sbin:/
39export PATH
40HOME=/
41export HOME
42
43umask 022
44
45MACHINE=sparc
46INSTFS_MP=/instfs
47MINIROOT_FSSIZE=10000
48
49if [ "${BOOTFS_DONEPROFILE}" != "YES" ]; then
50
51	BOOTFS_DONEPROFILE=YES
52	export BOOTFS_DONEPROFILE
53
54	# mount root read-write
55	mount_ffs -o update /dev/md0a /
56
57	# mount /instfs
58	mount_mfs -s $MINIROOT_FSSIZE swap $INSTFS_MP
59fi
60
61# A cat simulator
62cat()
63{
64	local l
65	while read l; do
66		echo "$l"
67	done
68}
69
70_resp=""
71getresp() {
72	read _resp
73	if [ "$_resp" = "" ]; then
74		_resp=$1
75	fi
76}
77
78# Load instfs
79
80floppy()
81{
82	local dev rval
83
84	rval=0
85
86	echo "Ejecting floppy disk"
87	eject floppy
88
89	cat <<EOF
90Remove the boot disk from the floppy station and insert the second disk of
91the floppy installation set into the disk drive.
92
93The question below allows you to specify the device name of the floppy
94drive.  Usually, the default device will do just fine.
95EOF
96	dev="/dev/rfd0a"
97	echo -n "Floppy device to load the installation utilities from [$dev]: "
98	getresp "$dev"; dev="$_resp"
99
100	echo "Extracting installation utilities... "
101	(cd $INSTFS_MP && tar zxpf $dev) || rval=1
102
103	echo "Ejecting floppy disk"
104	eject floppy
105	return $rval
106}
107
108tape()
109{
110	local dev fn bsa
111	cat <<EOF
112By default, the installation utilities are located in the second tape file
113on the NetBSD/sparc installation tape. In case your tape layout is different,
114choose the appropriate tape file number below.
115
116EOF
117	dev="/dev/nrst0"
118	echo -n "Tape device to load the installation utilities from [$dev]: "
119	getresp "$dev"; dev="$_resp"
120
121	fn=2
122	echo -n "Tape file number [$fn]: "
123	getresp "$fn"; fn="$_resp"
124
125	echo -n "Tape block size (use only if you know you need it): "
126	getresp ""; if [ "$_resp" != "" ]; then
127		bsa="-b $_resp"
128	fi
129
130	echo "Positioning tape... "
131	mt -f $dev asf $(($fn - 1))
132	[ $? = 0 ] || return 1
133
134	echo "Extracting installation utilities... "
135	(cd $INSTFS_MP && tar $bsa -z -x -p -f $dev) || return 1
136}
137
138cdrom()
139{
140	local dev tf rval
141	cat <<EOF
142The installation utilities are located on the ISO CD9660 filesystem on the
143NetBSD/sparc CD-ROM. We need to mount the filesystem from the CD-ROM device
144which you can specify below. Note: after the installation utilities are
145extracted this filesystem will be unmounted again.
146
147EOF
148
149	rval=0
150	dev="/dev/cd0a"
151	echo -n "CD-ROM device to use [$dev]: "
152	getresp "$dev"; dev="$_resp"
153
154	mount_cd9660 -o rdonly $dev /cdrom || return 1
155
156	# Look for instfs.tgz in MACHINE subdirectory first
157	tf=/cdrom/$MACHINE/installation/bootfs/instfs.tgz
158	[ -f $tf ] || tf=/cdrom/installation/bootfs/instfs.tgz
159	[ -f $tf ] || {
160		echo "Note: instfs.tgz image not found in default location"
161		tf=""
162	}
163
164	while :; do
165		echo -n "Path to instfs.tgz [$tf] "
166		[ -z "$tf" ] && echo -n "(<return> to abort) "
167		getresp "$tf"; tf="$_resp"
168		[ -z "$tf" ] && { rval=1; break; }
169		[ -f "$tf" ] && break;
170		echo "$tf not found"
171		tf=""
172	done
173
174	[ $rval = 0 ] && (cd $INSTFS_MP && tar zxpf $tf) || rval=1
175
176	umount /cdrom
177	return $rval
178}
179
180cat <<EOF
181Welcome to the NetBSD/sparc microroot setup utility.
182
183We've just completed the first stage of a two-stage procedure to load a
184fully functional NetBSD installation environment on your machine.  In the
185second stage which is to follow now, a set of additional installation
186utilities must be load from your NetBSD/sparc installation medium.
187
188EOF
189
190while :; do
191	cat <<EOF
192This procedure supports one of the following media:
193
194	1) cdrom
195	2) tape
196	3) floppy
197
198EOF
199	echo -n "Installation medium to load the additional utilities from: "
200	read answer
201	echo ""
202	case "$answer" in
203		1|cdrom)	_func=cdrom;;
204		2|tape)		_func=tape;;
205		3|floppy)	_func=floppy;;
206		*)		echo "option not supported"; continue;;
207	esac
208	$_func && break
209done
210
211# switch to /instfs, and pretend we logged in there.
212chroot $INSTFS_MP /bin/sh /.profile
213
214#
215echo "Back in microroot; halting machine..."
216halt
217