1# $OpenBSD: install.md,v 1.3 2021/08/02 21:46:39 kettenis 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