install.md revision 1.20 1 1.1 thorpej #!/bin/sh
2 1.1 thorpej #
3 1.20 tsutsui # $NetBSD: install.md,v 1.20 2020/12/05 18:52:06 tsutsui Exp $
4 1.1 thorpej #
5 1.1 thorpej # Copyright (c) 1996 The NetBSD Foundation, Inc.
6 1.1 thorpej # All rights reserved.
7 1.1 thorpej #
8 1.1 thorpej # This code is derived from software contributed to The NetBSD Foundation
9 1.1 thorpej # by Jason R. Thorpe.
10 1.1 thorpej #
11 1.1 thorpej # Redistribution and use in source and binary forms, with or without
12 1.1 thorpej # modification, are permitted provided that the following conditions
13 1.1 thorpej # are met:
14 1.1 thorpej # 1. Redistributions of source code must retain the above copyright
15 1.1 thorpej # notice, this list of conditions and the following disclaimer.
16 1.1 thorpej # 2. Redistributions in binary form must reproduce the above copyright
17 1.1 thorpej # notice, this list of conditions and the following disclaimer in the
18 1.1 thorpej # documentation and/or other materials provided with the distribution.
19 1.1 thorpej #
20 1.1 thorpej # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21 1.1 thorpej # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 1.1 thorpej # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 1.6 jtc # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24 1.6 jtc # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 1.1 thorpej # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 1.1 thorpej # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 1.1 thorpej # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 1.1 thorpej # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 1.1 thorpej # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 1.1 thorpej # POSSIBILITY OF SUCH DAMAGE.
31 1.1 thorpej #
32 1.1 thorpej
33 1.1 thorpej #
34 1.1 thorpej # machine dependent section of installation/upgrade script
35 1.1 thorpej #
36 1.1 thorpej
37 1.4 thorpej # Machine-dependent install sets
38 1.18 tsutsui MDSETS="kern-GENERIC xbase xcomp xetc xfont xserver"
39 1.4 thorpej
40 1.1 thorpej md_set_term() {
41 1.1 thorpej if [ ! -z "$TERM" ]; then
42 1.1 thorpej return
43 1.1 thorpej fi
44 1.15 tsutsui echo -n "Specify terminal type [vt100]: "
45 1.15 tsutsui getresp "vt100"
46 1.1 thorpej TERM="$resp"
47 1.1 thorpej export TERM
48 1.1 thorpej # XXX call tset?
49 1.5 thorpej }
50 1.5 thorpej
51 1.5 thorpej md_makerootwritable() {
52 1.5 thorpej # Was: do_mfs_mount "/tmp" "2048"
53 1.5 thorpej # /tmp is the mount point
54 1.5 thorpej # 2048 is the size in DEV_BIZE blocks
55 1.5 thorpej
56 1.5 thorpej umount /tmp > /dev/null 2>&1
57 1.5 thorpej if ! mount_mfs -s 2048 swap /tmp ; then
58 1.5 thorpej cat << \__mfs_failed_1
59 1.5 thorpej
60 1.5 thorpej FATAL ERROR: Can't mount the memory filesystem.
61 1.5 thorpej
62 1.5 thorpej __mfs_failed_1
63 1.5 thorpej exit
64 1.5 thorpej fi
65 1.5 thorpej
66 1.5 thorpej # Bleh. Give mount_mfs a chance to DTRT.
67 1.5 thorpej sleep 2
68 1.1 thorpej }
69 1.1 thorpej
70 1.1 thorpej md_get_diskdevs() {
71 1.1 thorpej # return available disk devices
72 1.17 christos mi_filter_dmesg | awk -F : '/^rd[0-9]*:./ { print $1; }' | sort -u
73 1.17 christos mi_filter_dmesg | awk -F : '/^sd[0-9]*:.*sectors/ { print $1; }' | sort -u
74 1.1 thorpej }
75 1.1 thorpej
76 1.1 thorpej md_get_cddevs() {
77 1.1 thorpej # return available CD-ROM devices
78 1.17 christos mi_filter_dmesg | awk -F : '/^cd[0-9]*:/ { print $1; }' | sort -u
79 1.1 thorpej }
80 1.1 thorpej
81 1.1 thorpej md_get_ifdevs() {
82 1.1 thorpej # return available network interfaces
83 1.17 christos mi_filter_dmesg | awk -F : '/^le[0-9]*:/ { print $1; }' | sort -u
84 1.1 thorpej }
85 1.1 thorpej
86 1.19 tsutsui md_get_partition_range() {
87 1.19 tsutsui # return an expression describing the valid partition id's
88 1.19 tsutsui echo '[a-h]'
89 1.19 tsutsui }
90 1.19 tsutsui
91 1.1 thorpej md_installboot() {
92 1.1 thorpej # $1 is the root disk
93 1.1 thorpej
94 1.1 thorpej echo -n "Installing boot block..."
95 1.11 tsutsui /usr/sbin/installboot -v /dev/r${1}c /usr/mdec/uboot.lif
96 1.1 thorpej echo "done."
97 1.1 thorpej }
98 1.1 thorpej
99 1.8 he grep_check_q () {
100 1.8 he pattern=$1; shift
101 1.8 he awk 'BEGIN{ es=1; } /'"$pattern"'/{ es=0; } END{ exit es; }' "$@"
102 1.8 he }
103 1.8 he
104 1.8 he plain_grep () {
105 1.8 he pattern=$1; shift
106 1.8 he awk "/$pattern/"'{ print; }' "$@"
107 1.8 he }
108 1.8 he
109 1.1 thorpej md_checkfordisklabel() {
110 1.1 thorpej # $1 is the disk to check
111 1.1 thorpej
112 1.1 thorpej disklabel -r $1 > /dev/null 2> /tmp/checkfordisklabel
113 1.8 he if grep_check_q "no disk label" /tmp/checkfordisklabel; then
114 1.1 thorpej rval="1"
115 1.8 he elif grep_check_q "disk label corrupted" /tmp/checkfordisklabel; then
116 1.1 thorpej rval="2"
117 1.1 thorpej else
118 1.1 thorpej rval="0"
119 1.1 thorpej fi
120 1.1 thorpej
121 1.1 thorpej rm -f /tmp/checkfordisklabel
122 1.1 thorpej }
123 1.1 thorpej
124 1.1 thorpej hp300_init_label_scsi_disk() {
125 1.1 thorpej # $1 is the disk to label
126 1.1 thorpej
127 1.1 thorpej # Name the disks we install in the temporary fstab.
128 1.16 christos if [ -z "${_disk_instance}" ]; then
129 1.1 thorpej _disk_instance="0"
130 1.1 thorpej else
131 1.16 christos _disk_instance=$(expr $_disk_instance + 1)
132 1.1 thorpej fi
133 1.1 thorpej _cur_disk_name="install-disk-${_disk_instance}"
134 1.1 thorpej
135 1.1 thorpej # Get geometry information from the user.
136 1.1 thorpej more << \__scsi_label_1
137 1.1 thorpej
138 1.1 thorpej You will need to provide some information about your disk's geometry.
139 1.1 thorpej Geometry info for SCSI disks was printed at boot time. If that information
140 1.1 thorpej is not available, use the information provided in your disk's manual.
141 1.1 thorpej Please note that the geometry printed at boot time is preferred.
142 1.1 thorpej
143 1.1 thorpej IMPORTANT NOTE: due to a limitation in the disklabel(8) program, the
144 1.1 thorpej number of cylinders on the disk will be increased by 1 so that the initial
145 1.1 thorpej label can be placed on disk for editing. When the disklabel editor appears,
146 1.1 thorpej make absolutely certain you subtract 1 from the total number of cylinders,
147 1.1 thorpej and adjust the size of partition 'c' such that:
148 1.1 thorpej
149 1.1 thorpej size = (sectors per track) * (tracks per cyl) * (total cylinders)
150 1.1 thorpej
151 1.1 thorpej Note that the disklabel editor will be run twice; once to set the size of
152 1.1 thorpej partition 'c' and correct the geometry, and again so that you may correctly
153 1.1 thorpej edit the partition map. This is to work around the afore mentioned
154 1.1 thorpej limitation in disklabel(8). Apologies offered in advance.
155 1.1 thorpej
156 1.1 thorpej __scsi_label_1
157 1.1 thorpej
158 1.1 thorpej # Give the opportunity to review the boot messages.
159 1.1 thorpej echo -n "Review boot messages now? [y] "
160 1.1 thorpej getresp "y"
161 1.1 thorpej case "$resp" in
162 1.1 thorpej y*|Y*)
163 1.1 thorpej (echo ""; dmesg; echo "") | more
164 1.1 thorpej ;;
165 1.1 thorpej
166 1.1 thorpej *)
167 1.1 thorpej ;;
168 1.1 thorpej esac
169 1.1 thorpej
170 1.1 thorpej echo ""
171 1.1 thorpej echo -n "Number of bytes per disk sector? [512] "
172 1.1 thorpej getresp "512"
173 1.1 thorpej _secsize="$resp"
174 1.1 thorpej
175 1.1 thorpej resp="" # force one iteration
176 1.16 christos while [ -z "${resp}" ]; do
177 1.1 thorpej echo -n "Number of cylinders? "
178 1.1 thorpej getresp ""
179 1.1 thorpej done
180 1.1 thorpej _cylinders="$resp"
181 1.16 christos _fudge_cyl=$(expr $_cylinders + 1)
182 1.1 thorpej
183 1.1 thorpej resp="" # force one iteration
184 1.16 christos while [ -z "${resp}" ]; do
185 1.1 thorpej echo -n "Number of tracks (heads)? "
186 1.1 thorpej getresp ""
187 1.1 thorpej done
188 1.1 thorpej _tracks_per_cyl="$resp"
189 1.1 thorpej
190 1.1 thorpej resp="" # force one iteration
191 1.16 christos while [ -z "${resp}" ]; do
192 1.1 thorpej echo -n "Number of disk sectors (blocks)? "
193 1.1 thorpej getresp ""
194 1.1 thorpej done
195 1.1 thorpej _nsectors="$resp"
196 1.1 thorpej
197 1.1 thorpej # Calculate some values we need.
198 1.16 christos _sec_per_cyl=$(expr $_nsectors / $_cylinders)
199 1.16 christos _sec_per_track=$(expr $_sec_per_cyl / $_tracks_per_cyl)
200 1.16 christos _new_c_size=$(expr $_sec_per_track \* $_tracks_per_cyl \* $_cylinders)
201 1.1 thorpej
202 1.1 thorpej # Emit a disktab entry, suitable for getting started.
203 1.16 christos # What we have is a 'c' partition with the total number of
204 1.16 christos # blocks, and an 'a' partition with 1 sector; just large enough
205 1.1 thorpej # to open. Don't ask.
206 1.1 thorpej echo "" >> /etc/disktab
207 1.1 thorpej echo "# Created by install" >> /etc/disktab
208 1.1 thorpej echo "${_cur_disk_name}:\\" >> /etc/disktab
209 1.1 thorpej echo -n " :ty=winchester:ns#${_sec_per_track}:" >> /etc/disktab
210 1.1 thorpej echo "nt#${_tracks_per_cyl}:nc#${_fudge_cyl}:\\" >> /etc/disktab
211 1.1 thorpej echo " :pa#1:\\" >> /etc/disktab
212 1.1 thorpej echo " :pc#${_nsectors}:" >> /etc/disktab
213 1.1 thorpej
214 1.1 thorpej # Ok, here's what we need to do. First of all, we install
215 1.16 christos # this initial label by opening the 'c' partition of the disk
216 1.16 christos # and using the '-r' flag for disklabel(8). However, because
217 1.1 thorpej # of limitations in disklabel(8), we've had to fudge the number
218 1.1 thorpej # of cylinders up 1 so that disklabel(8) doesn't complain about
219 1.16 christos # 'c' running past the end of the disk, which can be quite
220 1.1 thorpej # common even with OEM HP drives! So, we've given ourselves
221 1.16 christos # an 'a' partition, which is the minimum needed to open the disk
222 1.1 thorpej # so that we can perform the DIOCWDLABEL ioctl. So, once the
223 1.16 christos # initial label is installed, we open the 'a' partition so that
224 1.1 thorpej # we can fix up the number of cylinders and make the size of
225 1.16 christos # 'c' come out to (ncyl * ntracks_per_cyl * nsec_per_track).
226 1.16 christos # After that's done, we re-open 'c' and let the user actually
227 1.1 thorpej # edit the partition table. It's horrible, I know. Bleh.
228 1.1 thorpej
229 1.1 thorpej disklabel -W ${1}
230 1.1 thorpej if ! disklabel -w -r ${1} ${_cur_disk_name}; then
231 1.1 thorpej echo ""
232 1.1 thorpej echo "ERROR: can't bootstrap disklabel!"
233 1.1 thorpej rval="1"
234 1.1 thorpej return
235 1.1 thorpej fi
236 1.1 thorpej
237 1.1 thorpej echo ""
238 1.1 thorpej echo "The disklabel editor will now start. During this phase, you"
239 1.1 thorpej echo "must reset the 'cylinders' value to ${_cylinders}, and adjust"
240 1.1 thorpej echo "the size of partition 'c' to ${_new_c_size}. Do not modify"
241 1.1 thorpej echo "the partition map at this time. You will have the opportunity"
242 1.1 thorpej echo "to do so in a moment."
243 1.1 thorpej echo ""
244 1.1 thorpej echo -n "Press <return> to continue. "
245 1.1 thorpej getresp ""
246 1.1 thorpej
247 1.1 thorpej disklabel -W ${1}
248 1.1 thorpej if ! disklabel -e /dev/r${1}a; then
249 1.1 thorpej echo ""
250 1.1 thorpej echo "ERROR: can't fixup geometry!"
251 1.1 thorpej rval="1"
252 1.1 thorpej return
253 1.1 thorpej fi
254 1.1 thorpej
255 1.1 thorpej cat << \__explain_motives_2
256 1.1 thorpej
257 1.1 thorpej Now that you have corrected the geometry of your disk, you may edit the
258 1.1 thorpej partition map. Don't forget to fill in the fsize (frag size), bsize
259 1.1 thorpej (filesystem block size), and cpg (cylinders per group) values. If you
260 1.1 thorpej are unsure what these should be, use:
261 1.1 thorpej
262 1.1 thorpej fsize: 1024
263 1.1 thorpej bsize: 4096
264 1.1 thorpej cpg: 16
265 1.1 thorpej
266 1.1 thorpej __explain_motives_2
267 1.1 thorpej echo -n "Press <return> to continue. "
268 1.1 thorpej getresp ""
269 1.1 thorpej
270 1.1 thorpej rval="0"
271 1.1 thorpej return
272 1.1 thorpej }
273 1.1 thorpej
274 1.1 thorpej hp300_init_label_hpib_disk() {
275 1.1 thorpej # $1 is the disk to label
276 1.1 thorpej
277 1.1 thorpej # We look though the boot messages attempting to find
278 1.1 thorpej # the model number for the provided disk.
279 1.1 thorpej _hpib_disktype=""
280 1.8 he if dmesg | grep_check_q "${1}: "; then
281 1.16 christos _hpib_disktype=HP$(dmesg | plain_grep "${1}: " | sort -u | \
282 1.16 christos awk '{print $2}')
283 1.1 thorpej fi
284 1.16 christos if [ -z "${_hpib_disktype}" ]; then
285 1.1 thorpej echo ""
286 1.1 thorpej echo "ERROR: $1 doesn't appear to exist?!"
287 1.1 thorpej rval="1"
288 1.1 thorpej return
289 1.1 thorpej fi
290 1.1 thorpej
291 1.1 thorpej # Peer through /etc/disktab to see if the disk has a "default"
292 1.1 thorpej # layout. If it doesn't, we have to treat it like a SCSI disk;
293 1.1 thorpej # i.e. prompt for geometry, and create a default to place
294 1.1 thorpej # on the disk.
295 1.8 he if ! grep_check_q "${_hpib_disktype}[:|]" /etc/disktab; then
296 1.1 thorpej echo ""
297 1.1 thorpej echo "WARNING: can't find defaults for $1 ($_hpib_disktype)"
298 1.1 thorpej echo ""
299 1.1 thorpej hp300_init_label_scsi_disk $1
300 1.1 thorpej return
301 1.1 thorpej fi
302 1.1 thorpej
303 1.1 thorpej # We've found the defaults. Now use them to place an initial
304 1.1 thorpej # disklabel on the disk.
305 1.1 thorpej # XXX What kind of ugliness to we have to deal with to get around
306 1.1 thorpej # XXX stupidity on the part of disklabel semantics?
307 1.1 thorpej disklabel -W ${1}
308 1.1 thorpej if ! disklabel -r -w ${1} $_hpib_disktype; then
309 1.1 thorpej # Error message displayed by disklabel(8)
310 1.1 thorpej echo ""
311 1.1 thorpej echo "ERROR: can't install default label!"
312 1.1 thorpej echo ""
313 1.1 thorpej echo -n "Try a different method? [y] "
314 1.1 thorpej getresp "y"
315 1.1 thorpej case "$resp" in
316 1.1 thorpej y*|Y*)
317 1.1 thorpej hp300_init_label_scsi_disk $1
318 1.1 thorpej return
319 1.1 thorpej ;;
320 1.1 thorpej
321 1.1 thorpej *)
322 1.1 thorpej rval="1"
323 1.1 thorpej return
324 1.1 thorpej ;;
325 1.1 thorpej esac
326 1.1 thorpej fi
327 1.1 thorpej
328 1.1 thorpej rval="0"
329 1.1 thorpej return
330 1.1 thorpej }
331 1.1 thorpej
332 1.1 thorpej md_labeldisk() {
333 1.1 thorpej # $1 is the disk to label
334 1.1 thorpej
335 1.1 thorpej # Check to see if there is a disklabel present on the device.
336 1.1 thorpej # If so, we can just edit it. If not, we must first install
337 1.1 thorpej # a default label.
338 1.1 thorpej md_checkfordisklabel $1
339 1.1 thorpej case "$rval" in
340 1.1 thorpej 0)
341 1.1 thorpej # Go ahead and just edit the disklabel.
342 1.1 thorpej disklabel -W $1
343 1.1 thorpej disklabel -e $1
344 1.1 thorpej ;;
345 1.1 thorpej
346 1.1 thorpej *)
347 1.1 thorpej echo -n "No disklabel present, installing a default for type: "
348 1.1 thorpej case "$1" in
349 1.1 thorpej rd*)
350 1.1 thorpej echo "HP-IB"
351 1.1 thorpej hp300_init_label_hpib_disk $1
352 1.1 thorpej ;;
353 1.1 thorpej
354 1.1 thorpej sd*)
355 1.1 thorpej echo "SCSI"
356 1.1 thorpej hp300_init_label_scsi_disk $1
357 1.1 thorpej ;;
358 1.1 thorpej
359 1.1 thorpej *)
360 1.1 thorpej # Shouldn't happen, but...
361 1.1 thorpej echo "unknown?! Giving up."
362 1.1 thorpej return;
363 1.1 thorpej ;;
364 1.1 thorpej esac
365 1.1 thorpej
366 1.1 thorpej # Check to see if installing the default was
367 1.1 thorpej # successful. If so, go ahead and pop into the
368 1.1 thorpej # disklabel editor.
369 1.16 christos if [ "${rval}" != "0" ]; then
370 1.1 thorpej echo "Sorry, can't label this disk."
371 1.1 thorpej echo ""
372 1.1 thorpej return;
373 1.1 thorpej fi
374 1.1 thorpej
375 1.1 thorpej # We have some defaults installed. Pop into
376 1.1 thorpej # the disklabel editor.
377 1.1 thorpej disklabel -W $1
378 1.1 thorpej if ! disklabel -e $1; then
379 1.1 thorpej echo ""
380 1.1 thorpej echo "ERROR: couldn't set partition map for $1"
381 1.1 thorpej echo ""
382 1.1 thorpej fi
383 1.1 thorpej esac
384 1.1 thorpej }
385 1.1 thorpej
386 1.1 thorpej md_prep_disklabel() {
387 1.1 thorpej # $1 is the root disk
388 1.1 thorpej
389 1.1 thorpej # Make sure there's a disklabel there. If there isn't, puke after
390 1.1 thorpej # disklabel prints the error message.
391 1.1 thorpej md_checkfordisklabel $1
392 1.1 thorpej case "$resp" in
393 1.1 thorpej 1)
394 1.1 thorpej cat << \__md_prep_disklabel_1
395 1.1 thorpej
396 1.1 thorpej FATAL ERROR: There is no disklabel present on the root disk! You must
397 1.1 thorpej label the disk with SYS_INST before continuing.
398 1.1 thorpej
399 1.1 thorpej __md_prep_disklabel_1
400 1.1 thorpej exit
401 1.1 thorpej ;;
402 1.1 thorpej
403 1.1 thorpej 2)
404 1.1 thorpej cat << \__md_prep_disklabel_2
405 1.1 thorpej
406 1.1 thorpej FATAL ERROR: The disklabel on the root disk is corrupted! You must
407 1.1 thorpej re-label the disk with SYS_INST before continuing.
408 1.1 thorpej
409 1.1 thorpej __md_prep_disklabel_2
410 1.1 thorpej exit
411 1.1 thorpej ;;
412 1.1 thorpej
413 1.1 thorpej *)
414 1.1 thorpej ;;
415 1.1 thorpej esac
416 1.1 thorpej
417 1.1 thorpej # Give the user the opportinuty to edit the root disklabel.
418 1.1 thorpej cat << \__md_prep_disklabel_3
419 1.1 thorpej
420 1.1 thorpej You have already placed a disklabel onto the target root disk.
421 1.1 thorpej However, due to the limitations of the standalone program used
422 1.1 thorpej you may want to edit that label to change partition type information.
423 1.1 thorpej You will be given the opporunity to do that now. Note that you may
424 1.1 thorpej not change the size or location of any presently open partition.
425 1.1 thorpej
426 1.1 thorpej __md_prep_disklabel_3
427 1.1 thorpej echo -n "Do you wish to edit the root disklabel? [y] "
428 1.1 thorpej getresp "y"
429 1.1 thorpej case "$resp" in
430 1.1 thorpej y*|Y*)
431 1.1 thorpej disklabel -W $1
432 1.1 thorpej disklabel -e $1
433 1.1 thorpej ;;
434 1.1 thorpej
435 1.1 thorpej *)
436 1.1 thorpej ;;
437 1.1 thorpej esac
438 1.1 thorpej
439 1.1 thorpej cat << \__md_prep_disklabel_4
440 1.1 thorpej
441 1.1 thorpej You will now be given the opportunity to place disklabels on any additional
442 1.1 thorpej disks on your system.
443 1.1 thorpej __md_prep_disklabel_4
444 1.1 thorpej
445 1.16 christos _DKDEVS=$(rmel ${ROOTDISK} ${_DKDEVS})
446 1.16 christos resp="not-done" # force at least one iteration
447 1.16 christos while [ "$resp" != "done" ]; do
448 1.1 thorpej labelmoredisks
449 1.1 thorpej done
450 1.2 thorpej }
451 1.2 thorpej
452 1.2 thorpej md_copy_kernel() {
453 1.12 tsutsui if [ ! -f /mnt/netbsd ]; then
454 1.12 tsutsui echo -n "No kernel set extracted. Copying miniroot kernel..."
455 1.12 tsutsui cp -p /netbsd /mnt/netbsd
456 1.12 tsutsui echo "done."
457 1.7 gmcgarry
458 1.12 tsutsui cat << __md_copy_kernel_1
459 1.7 gmcgarry
460 1.7 gmcgarry The INSTALL kernel from the miniroot has been copied to your root disk.
461 1.7 gmcgarry It has minimal facilities enabled. The first thing you should do after
462 1.7 gmcgarry installation is install an appropriate kernel for your machine (such as
463 1.7 gmcgarry the GENERIC kernel).
464 1.7 gmcgarry
465 1.7 gmcgarry __md_copy_kernel_1
466 1.12 tsutsui echo -n "Press <return> to continue. "
467 1.12 tsutsui getresp ""
468 1.12 tsutsui fi
469 1.1 thorpej }
470 1.1 thorpej
471 1.1 thorpej # Note, while they might not seem machine-dependent, the
472 1.1 thorpej # welcome banner and the punt message may contain information
473 1.1 thorpej # and/or instructions specific to the type of machine.
474 1.1 thorpej
475 1.1 thorpej md_welcome_banner() {
476 1.1 thorpej (
477 1.1 thorpej echo ""
478 1.20 tsutsui echo "Welcome to the NetBSD/${MACHINE} ${RELEASE} installation program."
479 1.1 thorpej cat << \__welcome_banner_1
480 1.1 thorpej
481 1.1 thorpej This program is designed to help you install NetBSD on your system in a
482 1.1 thorpej simple and rational way. You'll be asked several questions, and it would
483 1.1 thorpej probably be useful to have your disk's hardware manual, the installation
484 1.1 thorpej notes, and a calculator handy.
485 1.1 thorpej
486 1.1 thorpej In particular, you will need to know some reasonably detailed
487 1.1 thorpej information about your disk's geometry. This program can determine
488 1.1 thorpej some limited information about certain specific types of HP-IB disks.
489 1.1 thorpej If you have SCSI disks, however, prior knowledge of disk geometry
490 1.1 thorpej is absolutely essential. The kernel will attempt to display geometry
491 1.1 thorpej information for SCSI disks during boot, if possible. If you did not
492 1.1 thorpej make it note of it before, you may wish to reboot and jot down your
493 1.1 thorpej disk's geometry before proceeding.
494 1.1 thorpej
495 1.1 thorpej As with anything which modifies your hard disk's contents, this
496 1.1 thorpej program can cause SIGNIFICANT data loss, and you are advised
497 1.1 thorpej to make sure your hard drive is backed up before beginning the
498 1.1 thorpej installation process.
499 1.1 thorpej
500 1.1 thorpej Default answers are displyed in brackets after the questions.
501 1.1 thorpej You can hit Control-C at any time to quit, but if you do so at a
502 1.1 thorpej prompt, you may have to hit return. Also, quitting in the middle of
503 1.1 thorpej installation may leave your system in an inconsistent state.
504 1.1 thorpej
505 1.1 thorpej __welcome_banner_1
506 1.1 thorpej ) | more
507 1.1 thorpej }
508 1.1 thorpej
509 1.1 thorpej md_not_going_to_install() {
510 1.1 thorpej cat << \__not_going_to_install_1
511 1.1 thorpej
512 1.1 thorpej OK, then. Enter 'halt' at the prompt to halt the machine. Once the
513 1.1 thorpej machine has halted, power-cycle the system to load new boot code.
514 1.1 thorpej
515 1.1 thorpej __not_going_to_install_1
516 1.1 thorpej }
517 1.1 thorpej
518 1.1 thorpej md_congrats() {
519 1.1 thorpej cat << \__congratulations_1
520 1.1 thorpej
521 1.1 thorpej CONGRATULATIONS! You have successfully installed NetBSD! To boot the
522 1.1 thorpej installed system, enter halt at the command prompt. Once the system has
523 1.1 thorpej halted, power-cycle the machine in order to load new boot code. Make sure
524 1.1 thorpej you boot from the root disk.
525 1.1 thorpej
526 1.1 thorpej __congratulations_1
527 1.1 thorpej }
528 1.1 thorpej
529 1.4 thorpej md_native_fstype() {
530 1.4 thorpej # Nothing to do.
531 1.4 thorpej }
532 1.4 thorpej
533 1.4 thorpej md_native_fsopts() {
534 1.4 thorpej # Nothing to do.
535 1.4 thorpej }
536