diff options
author | 2003-10-10 02:41:26 +0000 | |
---|---|---|
committer | 2003-10-10 02:41:26 +0000 | |
commit | db73cdadb0d0c6c5427e95914733c8c2c2021605 (patch) | |
tree | ac42a60a52c7aeab79b298545f40219bdc795fa5 | |
parent | Typo, iquiry->inquiry (diff) | |
download | wireguard-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.md | 317 |
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 } |