Home | History | Annotate | Line # | Download | only in miniroot
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