1# $OpenBSD: install.md,v 1.74 2023/03/07 17:29:42 kn 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 34MDBOOTSR=y 35MDXAPERTURE=2 36MDXDM=y 37NCPU=$(sysctl -n hw.ncpufound) 38 39md_installboot() { 40 if ! installboot -r /mnt ${1}; then 41 echo "\nFailed to install bootblocks." 42 echo "You will not be able to boot OpenBSD from ${1}." 43 exit 44 fi 45} 46 47md_prep_fdisk() { 48 local _disk=$1 _q _d 49 50 while :; do 51 _d=whole 52 if disk_has $_disk mbr; then 53 fdisk $_disk 54 if disk_has $_disk mbr openbsd; then 55 _q=", use the (O)penBSD area" 56 _d=OpenBSD 57 fi 58 else 59 echo "MBR has invalid signature; not showing it." 60 fi 61 ask "Use (W)hole disk$_q or (E)dit the MBR?" "$_d" 62 case $resp in 63 [wW]*) 64 echo -n "Setting OpenBSD MBR partition to whole $_disk..." 65 fdisk -iy $_disk >/dev/null 66 echo "done." 67 return ;; 68 [eE]*) 69 # Manually configure the MBR. 70 cat <<__EOT 71 72You will now create a single MBR partition to contain your OpenBSD data. This 73partition must have an id of 'A6'; must *NOT* overlap other partitions; and 74must be marked as the only active partition. Inside the fdisk command, the 75'manual' command describes all the fdisk commands in detail. 76 77$(fdisk ${_disk}) 78__EOT 79 fdisk -e ${_disk} 80 disk_has $_disk mbr openbsd && return 81 echo No OpenBSD partition in MBR, try again. ;; 82 [oO]*) 83 [[ $_d == OpenBSD ]] || continue 84 return ;; 85 esac 86 done 87} 88 89md_prep_disklabel() { 90 local _disk=$1 _f=/tmp/i/fstab.$1 91 92 md_prep_fdisk $_disk 93 94 disklabel_autolayout $_disk $_f || return 95 [[ -s $_f ]] && return 96 97 # Edit disklabel manually. 98 # Abandon all hope, ye who enter here. 99 disklabel -F $_f -E $_disk 100} 101 102md_congrats() { 103} 104 105md_consoleinfo() { 106 local _u _d=com 107 108 for _u in $(scan_dmesg "/^$_d\([0-9]\) .*/s//\1/p"); do 109 if [[ $_d$_u == $CONSOLE || -z $CONSOLE ]]; then 110 CDEV=$_d$_u 111 CPROM=com$_u 112 CTTY=tty0$_u 113 return 114 fi 115 done 116} 117