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