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