summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkrw <krw@openbsd.org>2003-10-10 02:41:26 +0000
committerkrw <krw@openbsd.org>2003-10-10 02:41:26 +0000
commitdb73cdadb0d0c6c5427e95914733c8c2c2021605 (patch)
treeac42a60a52c7aeab79b298545f40219bdc795fa5
parentTypo, iquiry->inquiry (diff)
downloadwireguard-openbsd-db73cdadb0d0c6c5427e95914733c8c2c2021605.tar.xz
wireguard-openbsd-db73cdadb0d0c6c5427e95914733c8c2c2021605.zip
Basically a rewrite to eliminate confusing logic and excess verbiage.
Testing by nick@, 'just put it in' drahn@.
-rw-r--r--distrib/macppc/ramdisk/install.md317
1 files changed, 114 insertions, 203 deletions
diff --git a/distrib/macppc/ramdisk/install.md b/distrib/macppc/ramdisk/install.md
index 0337e00343a..5315028b8eb 100644
--- a/distrib/macppc/ramdisk/install.md
+++ b/distrib/macppc/ramdisk/install.md
@@ -1,4 +1,4 @@
-# $OpenBSD: install.md,v 1.22 2003/09/22 01:31:39 krw Exp $
+# $OpenBSD: install.md,v 1.23 2003/10/10 02:41:26 krw Exp $
#
#
# Copyright (c) 1996 The NetBSD Foundation, Inc.
@@ -49,267 +49,178 @@ md_set_term() {
md_installboot() {
local _disk=$1
- case $disklabeltype in
- HFS) cat << __EOT
-The 'ofwboot' program needs to be copied to the first HFS partition of $_disk
-to allow booting of OpenBSD.
-__EOT
- ;;
+ [[ $disklabeltype == MBR ]] || return
- MBR) echo "Installing boot in the msdos partition ${_disk}i"
- if mount -t msdos /dev/${_disk}i /mnt2 ; then
- cp /usr/mdec/ofwboot /mnt2
+ echo -n "Copying 'ofwboot' to the boot partition (${_disk}i)..."
+ if mount -t msdos /dev/${_disk}i /mnt2 ; then
+ if cp /usr/mdec/ofwboot /mnt2; then
umount /mnt2
- else
- echo "Failed, you will not be able to boot from $_disk."
+ echo "done."
+ return
fi
- ;;
- esac
-}
-
-md_init_mbr() {
- local _disk=$1
-
- cat << __EOT
-
-You will now be asked if you want to initialize $_disk with a 1MB MSDOS
-partition. This is the recommended setup and will allow you to store the boot
-and other interesting things here.
-
-If you want to have a different setup, exit 'install' now and do the MBR
-initialization by hand using the 'fdisk' program.
-
-If you choose to manually setup the MSDOS partition, consult your PowerPC
-OpenFirmware manual -and- the PowerPC OpenBSD Installation Guide for doing
-setup this way.
-
-__EOT
- ask_yn "Do you want to initialize the MBR and the MSDOS partition?" yes
- [[ $resp == n ]] && exit
-
- cat << __EOT
-An MBR record with an OpenBSD usable partition table will now be copied to your
-disk. Unless you have special requirements, you will not need to edit this MBR.
-After the MBR is copied an empty 1MB MSDOS partition will be created on the
-disk. You *MUST* setup the OpenBSD disklabel to have a partition include this
-MSDOS partition. You will have an opportunity to do this shortly.
-
-You will probably see a few '...: no disk label' messages. It's completely
-normal. The disk has no label yet. This may take a minute or two...
-__EOT
- sleep 2
-
- echo -n "Creating Master Boot Record (MBR)..."
- fdisk -i -f /usr/mdec/mbr $_disk
- echo "done."
+ fi
- echo -n "Copying 1MB MSDOS partition to disk..."
- gunzip < /usr/mdec/msdos1mb.gz | dd of=/dev/r${_disk}c bs=512 seek=1 >/dev/null 2>&1
- echo "done."
+ echo "FAILED.\nYou will not be able to boot OpenBSD from $_disk."
+ exit
}
-md_checkfordisklabel() {
- local rval _disk=$1
+md_prep_disk() {
+ local _disk=$1 _resp
+ typeset -l _resp
cat << __EOT
-Apple systems have two methods to label/partition a boot disk.
+$_disk must be partitioned using an HFS or an MBR partition table.
-Either the disk can be partitioned with Apple HFS partition tools to contain an
-"Unused" partition, or without any MacOS tools, the disk can be labeled using
-an MBR partition table.
+HFS partition tables are created with MacOS. Existing partitions in the HFS
+partition table can be modified by OpenBSD for use by OpenBSD.
-If the HFS (DPME) partition table is used, after the disk is partitioned with
-the Apple software, the "Unused" section must be changed to type "OpenBSD" name
-"OpenBSD" using the pdisk tool contained on this ramdisk. The disklabel can
-then be edited normally.
+MBR partition tables are created with OpenBSD. MacOS *cannot* be booted from a
+disk partitioned with an MBR partition table.
-WARNING: the MBR partitioning code will HAPPILY overwrite/destroy any HFS
- partitions on the disk, including the partition table. Choose the
- MBR option carefully, knowing this fact.
__EOT
- ask "Do you want to use (H)FS labeling or (M)BR labeling" H
- case $resp in
- m*|M*) export disklabeltype=MBR
- md_checkforMBRdisklabel $_disk
- rval=$?
- ;;
- *) export disklabeltype=HFS
- pdisk /dev/${_disk}c
- rval=$?
- ;;
- esac
- return $rval
+ while : ; do
+ ask "Use HFS or MBR partition table?" HFS
+ _resp=$resp
+ case $_resp in
+ m|mbr) export disklabeltype=MBR
+ md_prep_MBR $_disk
+ break
+ ;;
+ h|hfs) export disklabeltype=HFS
+ md_prep_HFS $_disk
+ break
+ ;;
+ esac
+ done
}
-md_checkforMBRdisklabel() {
- local _disk=$1 rval=0
-
- ask_yn "Are you *sure* you want to put a MBR disklabel on the disk?"
- [[ $resp == n ]] && exit
+md_prep_MBR () {
+ local _disk=$1
- ask_yn "Have you initialized an MSDOS partition using OpenFirmware?"
- case $resp in
- n) md_init_mbr $_disk;;
- y) cat << __EOT
-You may keep your current setup if you want to be able to use any already
-loaded OS. However you will be asked to prepare an empty partition for OpenBSD
-later. There must also be at least ~0.5MB free space in the boot partition to
-hold the OpenBSD bootloader.
+ if [[ -n $(disklabel -c $_disk 2>/dev/null | grep ' HFS ') ]]; then
+ cat << __EOT
-Also note that the boot partition must be included as partition 'i' in the
-OpenBSD disklabel.
+WARNING: putting an MBR partition table on $_disk will DESTROY the existing HFS
+ partitions and HFS partition table.
__EOT
- ask_yn "Keep the current MSDOS partition setup?" yes
- [[ $resp == n ]] && md_init_mbr $_disk
- ;;
- esac
-
- disklabel -r $_disk >/dev/null 2>/tmp/checkfordisklabel
-
- if grep "no disk label" /tmp/checkfordisklabel; then
- rval=1
- elif grep "disk label corrupted" /tmp/checkfordisklabel; then
- rval=2
- fi >/dev/null 2>&1
+ ask_yn "Are you *sure* you want an MBR partition table on $_disk?"
+ [[ $resp == n ]] && exit
+ fi
- rm -f /tmp/checkfordisklabel
- return $rval
-}
+ ask_yn "Use *all* of $_disk for OpenBSD?"
+ if [[ $resp == y ]]; then
+ echo -n "Creating Master Boot Record (MBR)..."
+ fdisk -e $_disk >/dev/null 2>&1 << __EOT
+reinit
+update
+write
+quit
+__EOT
+ echo "done."
-md_prep_fdisk() {
- local _disk=$1
+ echo -n "Formatting 1MB MSDOS boot partition..."
+ gunzip < /usr/mdec/msdos1mb.gz | \
+ dd of=/dev/r${_disk}c bs=512 seek=1 >/dev/null 2>&1
+ echo "done."
+ return
+ fi
+
+ # Manual MBR setup. The user is basically on their own. Give a few
+ # hints and let the user rip.
cat << __EOT
-This disk has not previously been used with OpenBSD. You may share this disk
-with other operating systems. However, to be able to boot the system you will
-need a small DOS partition in the beginning of the disk to hold the kernel
-boot. OpenFirmware understands how to read an MSDOS style format from the disk.
+**** NOTE ****
-This DOS style partitioning has been taken care of if you chose to do that
-initialization earlier in the install.
+A valid MBR for an OpenBSD bootable disk must contain at least:
-WARNING: Wrong information in the BIOS partition table might render the disk
- unusable.
-__EOT
+a) One DOS (id '06') partition at least 1MB in size. This is where OpenFirmware
+will look for the 'ofwboot' program used to boot OpenBSD. Consult your PowerPC
+OpenFirmware manual -and- the INSTALL.$ARCH file for directions on setting up
+this partition correctly.
- ask "Press [Enter] to continue"
+b) One OpenBSD (id 'A6') partition.
- echo "\nCurrent partition information is:"
- fdisk $_disk
- ask "Press [Enter] to continue"
+**************
- while : ; do
- cat << __EOT
+Current partition information is:
-An OpenBSD partition should have a type (id) of 166 (A6), and should be the
-only partition marked as active. Also make sure that the size of the partition
-to be used by OpenBSD is correct, otherwise OpenBSD disklabel installation will
-fail. Furthermore, the partitions must NOT overlap each others.
-
-The fdisk utility will be started update mode (interactive.) You will be able
-to add / modify this information as needed. If you make a mistake, simply exit
-fdisk without storing the new information, and you will be allowed to start
-over.
+$(fdisk $_disk)
__EOT
- ask "Press [Enter] to continue"
- fdisk -e $_disk
- cat << __EOT
+ fdisk -e $_disk
-The new partition information is:
+ cat << __EOT
+Here is the MBR configuration you chose:
$(fdisk $_disk)
-(You will be permitted to edit this information again.)
--------------------------------------------------------
+Please take note of the offsets and sizes of the DOS partition, the OpenBSD
+partition, and any other partitions you want to access from OpenBSD. You will
+need this information to fill in the OpenBSD disklabel.
+
__EOT
- ask_yn "Is the above information correct?"
- [[ $resp == y ]] && break
- done
+}
+
+md_prep_HFS () {
+ local _disk=$1
cat << __EOT
-Please take note of the offset and size of the OpenBSD partition *AND* the
-MSDOS partitions you may want to access from OpenBSD. At least the MSDOS
-partition used for booting must be accessible by OpenBSD as partition 'i'. You
-may need this information to fill in the OpenBSD disklabel later.
+You must modify an existing partition to be of type "OpenBSD" and have the name
+"OpenBSD". If the partition does not exist you must create it with the Apple
+MacOS tools before attempting to install OpenBSD.
__EOT
- ask "Press [Enter] to continue"
+
+ pdisk /dev/${_disk}c
}
md_prep_disklabel() {
local _disk=$1 _q
- md_checkfordisklabel $_disk
- case $? in
- 0) _q="Do you wish to edit the existing disklabel on $_disk?"
- ;;
- 1) md_prep_fdisk $_disk
- echo "WARNING: $_disk has no label"
- _q="Do you want to create one with the disklabel editor?"
+ md_prep_disk $_disk
+
+ case $disklabeltype in
+ HFS) ;;
+ MBR) cat << __EOT
+
+You *MUST* setup the OpenBSD disklabel to include the MSDOS-formatted boot
+partition as the 'i' partition. If the 'i' partition is missing or not the
+MSDOS-formatted boot partition, then the 'ofwboot' file required to boot
+OpenBSD cannot be installed.
+
+__EOT
;;
- 2) echo "WARNING: The disklabel on $_disk is invalid."
- _q="Do you want to try and repair the damage using the disklabel editor?"
+ *) echo "Disk label type ('$disklabeltype') is not 'HFS' or 'MBR'."
+ exit
;;
esac
- if [[ -n $_q ]]; then
- ask_yn "$_q" yes
- [[ $resp == n ]] && return
- fi
+ disklabel -W $_disk >/dev/null 2>&1
+ disklabel -c -f /tmp/fstab.$_disk -E $_disk
+}
- # display example
- cat << __EOT
+md_congrats() {
+ if [[ $disklabeltype == HFS ]]; then
+ cat << __EOT
-Disk partition sizes and offsets are in sector (most likely 512 bytes) units.
-You may set these size/offset pairs on cylinder boundaries
- (the number of sector per cylinder is given in )
- (the 'sectors/cylinder' entry, which is not shown here)
-Also, you *must* make sure that the 'i' partition points at the MSDOS partition
-that will be used for booting. The 'c' partition shall start at offset 0 and
-include the entire disk. This is most likely correct when you see the default
-label in the editor.
-
-Do not change any parameters except the partition layout and the label name.
-
- [Here is an example of what the partition information may look like.]
-10 partitions:
-# size offset fstype [fsize bsize cpg]
- a: 120832 10240 4.2BSD 1024 8192 16 # (Cyl. 11*- 142*)
- b: 131072 131072 swap # (Cyl. 142*- 284*)
- c: 6265200 0 unused 1024 8192 # (Cyl. 0 - 6809)
- e: 781250 262144 4.2BSD 1024 8192 16 # (Cyl. 284*- 1134*)
- f: 1205000 1043394 4.2BSD 1024 8192 16 # (Cyl. 1134*- 2443*)
- g: 2008403 2248394 4.2BSD 1024 8192 16 # (Cyl. 2443*- 4626*)
- h: 2008403 4256797 4.2BSD 1024 8192 16 # (Cyl. 4626*- 6809*)
- i: 10208 32 MSDOS # (Cyl. 0*- 11*)
-[End of example]
+To boot OpenBSD, the 'ofwboot' program must be present in the first HFS
+partition of $ROOTDISK. If it is not currently present you must boot MacOS and
+use MacOS tools to copy it from the OpenBSD install media. Then reboot the
+machine.
__EOT
- ask "Press [Enter] to continue"
-
- if [[ $disklabeltype == HFS ]]; then
- disklabel -c -f /tmp/fstab.$_disk -E $_disk
- elif [[ $disklabeltype == MBR ]]; then
- disklabel -W $_disk
- disklabel $_disk >/tmp/label.$$
- disklabel -r -R $_disk /tmp/label.$$
- rm -f /tmp/label.$$
- disklabel -f /tmp/fstab.$_disk -E $_disk
- else
- echo "unknown disk label type"
fi
-}
-md_congrats() {
cat << __EOT
-Once the machine has rebooted use Open Firmware to boot into OpenBSD, as
-described in the install document.
+Once the machine has rebooted use OpenFirmware to boot into OpenBSD, as
+described in the INSTALL.$ARCH document. The command to boot OpenBSD will be
+something like 'boot hd:,ofwboot /bsd'.
+
__EOT
}