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