install.md revision 1.8.2.1 1 #!/bin/sh
2 #
3 # $NetBSD: install.md,v 1.8.2.1 2020/12/14 17:26:37 martin Exp $
4 #
5 # Copyright (c) 1996 The NetBSD Foundation, Inc.
6 # All rights reserved.
7 #
8 # This code is derived from software contributed to The NetBSD Foundation
9 # by Jason R. Thorpe.
10 #
11 # Redistribution and use in source and binary forms, with or without
12 # modification, are permitted provided that the following conditions
13 # are met:
14 # 1. Redistributions of source code must retain the above copyright
15 # notice, this list of conditions and the following disclaimer.
16 # 2. Redistributions in binary form must reproduce the above copyright
17 # notice, this list of conditions and the following disclaimer in the
18 # documentation and/or other materials provided with the distribution.
19 #
20 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 # POSSIBILITY OF SUCH DAMAGE.
31 #
32
33 #
34 # machine dependent section of installation/upgrade script
35 #
36
37 # Machine-dependent install sets
38 MDSETS="kern-GENERIC xbase xcomp xetc xfont xserver"
39
40 md_set_term() {
41 if [ ! -z "$TERM" ]; then
42 return
43 fi
44 echo -n "Specify terminal type [vt100]: "
45 getresp "vt100"
46 TERM="$resp"
47 export TERM
48 # XXX call tset?
49 }
50
51 md_makerootwritable() {
52 # Just remount the root device read-write.
53 mi_mount_kernfs
54 echo "Remounting root read-write..."
55 mount -t ffs -u /kern/rootdev /
56 }
57
58 md_get_diskdevs() {
59 # return available disk devices
60 mi_mount_kernfs
61 mi_filter_msgbuf | sed -ne '/^sd[0-9] /s/ .*//p'
62 }
63
64 md_get_cddevs() {
65 # return available CDROM devices
66 mi_mount_kernfs
67 mi_filter_msgbuf | sed -ne '/^cd[0-9] /s/ .*//p'
68 }
69
70 md_get_ifdevs() {
71 # return available network devices
72 mi_filter_msgbuf | sed -ne '/^[il]e[0-9] /s/ .*//p'
73 }
74
75 md_get_partition_range() {
76 # return an expression describing the valid partition id's
77 echo '[a-h]'
78 }
79
80 md_installboot() {
81 # install the boot block on disk $1
82 echo "Installing boot block..."
83 ( cd /usr/mdec ;\
84 cp -p ./bootsd /mnt/.bootsd ;\
85 sync ; sleep 1 ; sync ;\
86 ./installboot -v /mnt/.bootsd bootxx /dev/r${1}a )
87 echo "done."
88 }
89
90 md_native_fstype() {
91 }
92
93 md_native_fsopts() {
94 }
95
96 grep_check () {
97 pattern=$1; shift
98 awk 'BEGIN{ es=1; } /'"$pattern"'/{ print; es=0; } END{ exit es; }' "$@"
99 }
100
101 md_checkfordisklabel() {
102 # $1 is the disk to check
103 local rval
104
105 disklabel $1 > /dev/null 2> /tmp/checkfordisklabel
106 if grep_check "no disklabel" /tmp/checkfordisklabel; then
107 rval=1
108 elif grep_check "disk label corrupted" /tmp/checkfordisklabel; then
109 rval=2
110 else
111 rval=0
112 fi
113
114 rm -f /tmp/checkfordisklabel
115 return $rval
116 }
117
118 md_prep_disklabel()
119 {
120 local _disk
121
122 _disk=$1
123 md_checkfordisklabel $_disk
124 case $? in
125 0)
126 echo -n "Do you wish to edit the disklabel on $_disk? [y]"
127 ;;
128 1)
129 echo "WARNING: Disk $_disk has no label"
130 echo -n "Do you want to create one with the disklabel editor? [y]"
131 ;;
132 2)
133 echo "WARNING: Label on disk $_disk is corrupted"
134 echo -n "Do you want to try and repair the damage using the disklabel editor? [y]"
135 ;;
136 esac
137
138 getresp "y"
139 case "$resp" in
140 y*|Y*) ;;
141 *) return ;;
142 esac
143
144 # display example
145 cat << \__md_prep_disklabel_1
146
147 Here is an example of what the partition information will look like once
148 you have entered the disklabel editor. Disk partition sizes and offsets
149 are in sector (most likely 512 bytes) units. Make sure these size/offset
150 pairs are on cylinder boundaries (the number of sector per cylinder is
151 given in the 'sectors/cylinder' entry, which is not shown here).
152
153 Do not change any parameters except the partition layout and the label name.
154 It's probably also wisest not to touch the '8 partitions:' line, even
155 in case you have defined less than eight partitions.
156
157 [Example]
158 8 partitions:
159 # size offset fstype [fsize bsize cpg]
160 a: 50176 0 4.2BSD 1024 8192 16 # (Cyl. 0 - 111)
161 b: 64512 50176 swap # (Cyl. 112 - 255)
162 c: 640192 0 unknown # (Cyl. 0 - 1428)
163 d: 525504 114688 4.2BSD 1024 8192 16 # (Cyl. 256 - 1428)
164 [End of example]
165
166 __md_prep_disklabel_1
167 echo -n "Press [Enter] to continue "
168 getresp ""
169 disklabel -i -I /dev/r${_disk}c
170 }
171
172 md_copy_kernel() {
173 echo -n "Copying kernel..."
174 cp -p /netbsd /mnt/netbsd
175 echo "done."
176 }
177
178 md_welcome_banner() {
179 echo "Welcome to the NetBSD/${MACHINE} ${RELEASE} installation program."
180 cat << \__welcome_banner_1
181
182 This program is designed to help you install NetBSD on your system in a simple
183 and rational way. You'll be asked several questions, and it would probably be
184 useful to have your disk's hardware manual, the installation notes, and a
185 calculator handy.
186
187 In particular, you will need to know some reasonably detailed information
188 about your disk's geometry. The kernel will attempt to display geometry
189 information for SCSI disks during boot, if possible. If you did not make it
190 note of it before, you may wish to reboot and jot down your disk's geometry
191 before proceeding.
192
193 As with anything which modifies your hard disk's contents, this program can
194 cause SIGNIFICANT data loss, and you are advised to make sure your hard drive
195 is backed up before beginning the installation process.
196
197 Default answers are displyed in brackets after the questions. You can hit
198 Control-C at any time to quit, but if you do so at a prompt, you may have to
199 hit return. Also, quitting in the middle of installation may leave your
200 system in an inconsistent state.
201 __welcome_banner_1
202 }
203
204 md_not_going_to_install() {
205 cat << \__not_going_to_install_1
206
207 OK, then. Enter 'halt' at the prompt to halt the machine. Once the
208 machine has halted, power-cycle the system to load new boot code.
209
210 __not_going_to_install_1
211 }
212
213 md_congrats() {
214 cat << \__congratulations_1
215
216 CONGRATULATIONS! You have successfully installed NetBSD! To boot the
217 installed system, enter halt at the command prompt. Once the system has
218 halted, power-cycle the machine in order to load new boot code. Make sure
219 you boot from the root disk.
220
221 __congratulations_1
222 }
223
224 md_native_fstype() {
225 # Nothing to do.
226 }
227
228 md_native_fsopts() {
229 # Nothing to do.
230 }
231