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 38MDSETS="kern-GENERIC kern-GENERIC3X xbase xcomp xetc xfont xserver" 39 40md_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 50md_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 /kern/rootdev / 56 fi 57} 58 59md_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 66md_get_cddevs() { 67 # return available CDROM devices 68 mi_mount_kernfs 69 mi_filter_msgbuf | sed -ne '/^cd[0-9] /s/ .*//p' 70} 71 72md_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 78md_get_partition_range() { 79 # return an expression describing the valid partition id's 80 echo '[a-h]' 81} 82 83md_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 93md_native_fstype() { 94} 95 96md_native_fsopts() { 97} 98 99md_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 110Here is an example of what the partition information will look like once 111you have entered the disklabel editor. Disk partition sizes and offsets 112are in sector (most likely 512 bytes) units. Make sure all partitions 113start on a cylinder boundary (c/t/s == XXX/0/0). 114 115[Example] 116partition 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 128Hit the <return> key when you have read this... 129 130__md_prep_disklabel_1 131 getresp "" 132 edlabel /dev/r${1}c 133} 134 135md_copy_kernel() { 136 if [ ! -f /mnt/netbsd ]; then 137 set -- $(sysctl -n hw.model) 138 echo -n "No kernel set extracted. Copying $1 miniroot kernel..." 139 cp -p /netbsd.$1 /mnt/netbsd 140 echo "done." 141 fi 142} 143 144md_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 150This program is designed to help you put NetBSD on your disk, 151in a simple and rational way. You'll be asked several questions, 152and it would probably be useful to have your disk's hardware 153manual, the installation notes, and a calculator handy. 154__welcome_banner_1 155 156 else 157 echo "" 158 echo "Welcome to the NetBSD/${MACHINE} ${RELEASE} upgrade program." 159 cat << \__welcome_banner_2 160 161This program is designed to help you upgrade your NetBSD system in a 162simple and rational way. 163 164As a reminder, installing the 'etc' binary set is NOT recommended. 165Once the rest of your system has been upgraded, you should manually 166merge any changes to files in the 'etc' set into those files which 167already exist on your system. 168__welcome_banner_2 169 fi 170 171cat << \__welcome_banner_3 172 173As with anything which modifies your disk's contents, this 174program can cause SIGNIFICANT data loss, and you are advised 175to make sure your data is backed up before beginning the 176installation process. 177 178Default answers are displayed in brackets after the questions. 179You can hit Control-C at any time to quit, but if you do so at a 180prompt, you may have to hit return. Also, quitting in the middle of 181installation may leave your system in an inconsistent state. 182 183__welcome_banner_3 184} 185 186md_not_going_to_install() { 187 cat << \__not_going_to_install_1 188 189OK, then. Enter 'halt' at the prompt to halt the machine. Once the 190machine has halted, power-cycle the system to load new boot code. 191 192__not_going_to_install_1 193} 194 195md_congrats() { 196 local what; 197 if [ "$MODE" = "install" ]; then 198 what="installed"; 199 else 200 what="upgraded"; 201 fi 202 cat << __congratulations_1 203 204CONGRATULATIONS! You have successfully $what NetBSD! 205To boot the installed system, enter halt at the command prompt. Once the 206system has halted, reset the machine and boot from the disk. 207 208__congratulations_1 209} 210