install.md revision 1.9 1 # $NetBSD: install.md,v 1.9 2021/06/26 00:38:16 tsutsui Exp $
2 #
3 #
4 # Copyright (c) 1996 The NetBSD Foundation, Inc.
5 # All rights reserved.
6 #
7 # This code is derived from software contributed to The NetBSD Foundation
8 # by Jason R. Thorpe.
9 #
10 # Redistribution and use in source and binary forms, with or without
11 # modification, are permitted provided that the following conditions
12 # are met:
13 # 1. Redistributions of source code must retain the above copyright
14 # notice, this list of conditions and the following disclaimer.
15 # 2. Redistributions in binary form must reproduce the above copyright
16 # notice, this list of conditions and the following disclaimer in the
17 # documentation and/or other materials provided with the distribution.
18 #
19 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
20 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
21 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
22 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
23 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29 # POSSIBILITY OF SUCH DAMAGE.
30 #
31
32 #
33 # machine dependent section of installation/upgrade script.
34 #
35
36 # Machine-dependent install sets
37 # MDSETS="xbin xman xinc xcon" XXX
38 MDSETS="kern-GENERIC"
39
40 md_set_term() {
41 if [ ! -z "$TERM" ]; then
42 return
43 fi
44 echo -n "Specify terminal type [sun]: "
45 getresp "sun"
46 TERM="$resp"
47 export TERM
48 }
49
50 md_makerootwritable() {
51 # Just remount the root device read-write.
52 if ! cp /dev/null /tmp/.root_writable >/dev/null 2>&1; then
53 echo "Remounting root read-write..."
54 mi_mount_kernfs
55 mount -u -t ffs /kern/rootdev /
56 fi
57 }
58
59 md_get_diskdevs() {
60 # return available disk devices
61 mi_mount_kernfs
62 mi_filter_msgbuf | sed -ne '/^[xs]d[0-9] /s/ .*//p' \
63 -e '/^xy[0-9] /s/ .*//p'
64 }
65
66 md_get_cddevs() {
67 # return available CDROM devices
68 mi_mount_kernfs
69 mi_filter_msgbuf | sed -ne '/^cd[0-9] /s/ .*//p'
70 }
71
72 md_get_ifdevs() {
73 # return available network devices
74 mi_mount_kernfs
75 mi_filter_msgbuf | sed -ne '/^[il]e[0-9] /s/ .*//p'
76 }
77
78 md_get_partition_range() {
79 # return an expression describing the valid partition id's
80 echo '[a-h]'
81 }
82
83 md_installboot() {
84 # install the boot block on disk $1
85 echo "Installing boot block..."
86 ( cd /usr/mdec ;\
87 cp -p ./ufsboot /mnt/ufsboot ;\
88 sync ; sleep 1 ; sync ;\
89 /usr/sbin/installboot -v /dev/r${1}a bootxx ufsboot )
90 echo "done."
91 }
92
93 md_native_fstype() {
94 }
95
96 md_native_fsopts() {
97 }
98
99 md_prep_disklabel() {
100 # $1 is the root disk
101 echo -n "Do you wish to edit the disklabel on ${1}? [y]"
102 getresp "y"
103 case "$resp" in
104 y*|Y*) ;;
105 *) return ;;
106 esac
107
108 # display example
109 cat << \__md_prep_disklabel_1
110 Here is an example of what the partition information will look like once
111 you have entered the disklabel editor. Disk partition sizes and offsets
112 are in sector (most likely 512 bytes) units. Make sure all partitions
113 start on a cylinder boundary (c/t/s == XXX/0/0).
114
115 [Example]
116 partition start (c/t/s) nblks (c/t/s) type
117
118 a (root) 0 (0/00/00) 31392 (109/00/00) 4.2BSD
119 b (swap) 31392 (109/00/00) 73440 (255/00/00) swap
120 c (disk) 0 (0/00/00) 1070496 (3717/00/00) unused
121 d (user) 104832 (364/00/00) 30528 (106/00/00) 4.2BSD
122 e (user) 135360 (470/00/00) 40896 (142/00/00) 4.2BSD
123 f (user) 176256 (612/00/00) 92160 (320/00/00) 4.2BSD
124 g (user) 268416 (932/00/00) 802080 (2785/00/00) 4.2BSD
125
126 [End of example]
127
128 Hit the <return> key when you have read this...
129
130 __md_prep_disklabel_1
131 getresp ""
132 edlabel /dev/r${1}c
133 }
134
135 md_copy_kernel() {
136 if [ ! -f /mnt/netbsd ]; then
137 echo -n "No kernel set extracted. Copying miniroot kernel..."
138 cp -p /netbsd /mnt/netbsd
139 echo "done."
140 fi
141 ln /mnt/netbsd /mnt/vmunix
142 }
143
144 md_welcome_banner() {
145 if [ "$MODE" = "install" ]; then
146 echo ""
147 echo "Welcome to the NetBSD/${MACHINE} ${RELEASE} installation program."
148 cat << \__welcome_banner_1
149
150 This program is designed to help you put NetBSD on your disk,
151 in a simple and rational way. You'll be asked several questions,
152 and it would probably be useful to have your disk's hardware
153 manual, the installation notes, and a calculator handy.
154 __welcome_banner_1
155
156 else
157 echo ""
158 echo "Welcome to the NetBSD/${MACHINE} ${VERSION} upgrade program."
159 cat << \__welcome_banner_2
160
161 This program is designed to help you upgrade your NetBSD system in a
162 simple and rational way.
163
164 As a reminder, installing the 'etc' binary set is NOT recommended.
165 Once the rest of your system has been upgraded, you should manually
166 merge any changes to files in the 'etc' set into those files which
167 already exist on your system.
168 __welcome_banner_2
169 fi
170
171 cat << \__welcome_banner_3
172
173 As with anything which modifies your disk's contents, this
174 program can cause SIGNIFICANT data loss, and you are advised
175 to make sure your data is backed up before beginning the
176 installation process.
177
178 Default answers are displayed in brackets after the questions.
179 You can hit Control-C at any time to quit, but if you do so at a
180 prompt, you may have to hit return. Also, quitting in the middle of
181 installation may leave your system in an inconsistent state.
182
183 __welcome_banner_3
184 }
185
186 md_not_going_to_install() {
187 cat << \__not_going_to_install_1
188
189 OK, then. Enter 'halt' at the prompt to halt the machine. Once the
190 machine has halted, power-cycle the system to load new boot code.
191
192 __not_going_to_install_1
193 }
194
195 md_congrats() {
196 local what;
197 if [ "$MODE" = "install" ]; then
198 what="installed";
199 else
200 what="upgraded";
201 fi
202 cat << __congratulations_1
203
204 CONGRATULATIONS! You have successfully $what NetBSD!
205 To boot the installed system, enter halt at the command prompt. Once the
206 system has halted, reset the machine and boot from the disk.
207
208 __congratulations_1
209 }
210