xref: /openbsd/distrib/i386/common/install.md (revision 274d7c50)
1#	$OpenBSD: install.md,v 1.73 2017/07/28 18:15:44 rpe Exp $
2#
3# Copyright (c) 1996 The NetBSD Foundation, Inc.
4# All rights reserved.
5#
6# This code is derived from software contributed to The NetBSD Foundation
7# by Jason R. Thorpe.
8#
9# Redistribution and use in source and binary forms, with or without
10# modification, are permitted provided that the following conditions
11# are met:
12# 1. Redistributions of source code must retain the above copyright
13#    notice, this list of conditions and the following disclaimer.
14# 2. Redistributions in binary form must reproduce the above copyright
15#    notice, this list of conditions and the following disclaimer in the
16#    documentation and/or other materials provided with the distribution.
17#
18# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
22# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28# POSSIBILITY OF SUCH DAMAGE.
29#
30#
31# machine dependent section of installation/upgrade script.
32#
33
34MDXAPERTURE=2
35MDXDM=y
36NCPU=$(sysctl -n hw.ncpufound)
37
38md_installboot() {
39	if ! installboot -r /mnt ${1}; then
40		echo "\nFailed to install bootblocks."
41		echo "You will not be able to boot OpenBSD from ${1}."
42		exit
43	fi
44}
45
46md_prep_fdisk() {
47	local _disk=$1 _q _d
48
49	while :; do
50		_d=whole
51		if disk_has $_disk mbr; then
52			fdisk $_disk
53			if disk_has $_disk mbr openbsd; then
54				_q=", use the (O)penBSD area"
55				_d=OpenBSD
56			fi
57		else
58			echo "MBR has invalid signature; not showing it."
59		fi
60		ask "Use (W)hole disk$_q or (E)dit the MBR?" "$_d"
61		case $resp in
62		[wW]*)
63			echo -n "Setting OpenBSD MBR partition to whole $_disk..."
64			fdisk -iy $_disk >/dev/null
65			echo "done."
66			return ;;
67		[eE]*)
68			# Manually configure the MBR.
69			cat <<__EOT
70
71You will now create a single MBR partition to contain your OpenBSD data. This
72partition must have an id of 'A6'; must *NOT* overlap other partitions; and
73must be marked as the only active partition.  Inside the fdisk command, the
74'manual' command describes all the fdisk commands in detail.
75
76$(fdisk ${_disk})
77__EOT
78			fdisk -e ${_disk}
79			disk_has $_disk mbr openbsd && return
80			echo No OpenBSD partition in MBR, try again. ;;
81		[oO]*)
82			[[ $_d == OpenBSD ]] || continue
83			return ;;
84		esac
85	done
86}
87
88md_prep_disklabel() {
89	local _disk=$1 _f=/tmp/i/fstab.$1
90
91	md_prep_fdisk $_disk
92
93	disklabel_autolayout $_disk $_f || return
94	[[ -s $_f ]] && return
95
96	# Edit disklabel manually.
97	# Abandon all hope, ye who enter here.
98	disklabel -F $_f -E $_disk
99}
100
101md_congrats() {
102}
103
104md_consoleinfo() {
105	local _u _d=com
106
107	for _u in $(scan_dmesg "/^$_d\([0-9]\) .*/s//\1/p"); do
108		if [[ $_d$_u == $CONSOLE || -z $CONSOLE ]]; then
109			CDEV=$_d$_u
110			CPROM=com$_u
111			CTTY=tty0$_u
112			return
113		fi
114	done
115}
116