install.md revision 1.1
1#	$OpenBSD: install.md,v 1.1 2021/04/27 23:57:38 drahn 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 REGENTS OR CONTRIBUTORS BE
23# 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# machine dependent section of installation/upgrade script.
33#
34
35NCPU=$(sysctl -n hw.ncpufound)
36NEWFSARGS_msdos="-F 16 -L boot"
37MOUNT_ARGS_msdos="-o-l"
38
39md_installboot() {
40	local _disk=/dev/$1
41
42	mount ${MOUNT_ARGS_msdos} ${_disk}i /mnt/mnt
43	mkdir -p /mnt/mnt/efi/boot
44	cp /mnt/usr/mdec/BOOTRISCV64.EFI /mnt/mnt/efi/boot/bootriscv64.efi
45	echo bootriscv64.efi > /mnt/mnt/efi/boot/startup.nsh
46}
47
48md_prep_fdisk() {
49	local _disk=$1 _d
50
51	local bootparttype="C"
52	local bootsectorstart="32768"
53	local bootsectorsize="32768"
54	local bootsectorend=$(($bootsectorstart + $bootsectorsize))
55	local bootfstype="msdos"
56	local newfs_args=${NEWFSARGS_msdos}
57
58	while :; do
59		_d=whole
60		if disk_has $_disk mbr; then
61			fdisk $_disk
62		else
63			echo "MBR has invalid signature; not showing it."
64		fi
65		ask "Use (W)hole disk or (E)dit the MBR?" "$_d"
66		case $resp in
67		[wW]*)
68			echo -n "Creating a ${bootfstype} partition and an OpenBSD partition for rest of $_disk..."
69			fdisk -e ${_disk} <<__EOT >/dev/null
70reinit
71e 0
72${bootparttype}
73n
74${bootsectorstart}
75${bootsectorsize}
76f 0
77e 3
78A6
79n
80${bootsectorend}
81
82write
83quit
84__EOT
85			echo "done."
86			disklabel $_disk 2>/dev/null | grep -q "^  i:" || disklabel -w -d $_disk
87			newfs -t ${bootfstype} ${newfs_args} ${_disk}i
88			return ;;
89		[eE]*)
90			# Manually configure the MBR.
91			cat <<__EOT
92
93You will now create one MBR partition to contain your OpenBSD data
94and one MBR partition on which the OpenBSD boot program is located.
95Neither partition will overlap any other partition.
96
97The OpenBSD MBR partition will have an id of 'A6' and the boot MBR
98partition will have an id of '${bootparttype}' (${bootfstype}).
99The boot partition will be at least 16MB and be the first 'MSDOS'
100partition on the disk.
101
102$(fdisk ${_disk})
103__EOT
104			fdisk -e ${_disk}
105			disk_has $_disk mbr openbsd && return
106			echo No OpenBSD partition in MBR, try again. ;;
107		esac
108	done
109}
110
111md_prep_disklabel() {
112	local _disk=$1 _f=/tmp/i/fstab.$1
113
114	md_prep_fdisk $_disk
115
116	disklabel_autolayout $_disk $_f || return
117	[[ -s $_f ]] && return
118
119	# Edit disklabel manually.
120	# Abandon all hope, ye who enter here.
121	disklabel -F $_f -E $_disk
122}
123
124md_congrats() {
125}
126
127md_consoleinfo() {
128	CTTY=console
129	DEFCONS=y
130	case $CSPEED in
131	9600|19200|38400|57600|115200|1500000)
132		;;
133	*)
134		CSPEED=115200;;
135	esac
136}
137