diff options
author | Dale Rahn <drahn@cvs.openbsd.org> | 2001-09-01 16:47:04 +0000 |
---|---|---|
committer | Dale Rahn <drahn@cvs.openbsd.org> | 2001-09-01 16:47:04 +0000 |
commit | 6045d5bb00b12a1d49c45cf8fc91d13b2ec1ab0d (patch) | |
tree | 15914a003f9e3260a244479c8057231d5f8456ba /distrib/powerpc/ramdisk | |
parent | 5cd95bbee8e1e0fd211b3f68255c23edbc21b8e0 (diff) |
Move the powerpc ramdisk building support from powerpc to macppc.
Diffstat (limited to 'distrib/powerpc/ramdisk')
-rw-r--r-- | distrib/powerpc/ramdisk/Makefile | 106 | ||||
-rw-r--r-- | distrib/powerpc/ramdisk/Makefile.inc | 4 | ||||
-rw-r--r-- | distrib/powerpc/ramdisk/dot.profile | 72 | ||||
-rw-r--r-- | distrib/powerpc/ramdisk/install.md | 439 | ||||
-rw-r--r-- | distrib/powerpc/ramdisk/install.sub | 2071 | ||||
-rw-r--r-- | distrib/powerpc/ramdisk/instbin.conf | 34 | ||||
-rw-r--r-- | distrib/powerpc/ramdisk/list | 105 | ||||
-rw-r--r-- | distrib/powerpc/ramdisk/mtree.conf | 90 |
8 files changed, 0 insertions, 2921 deletions
diff --git a/distrib/powerpc/ramdisk/Makefile b/distrib/powerpc/ramdisk/Makefile deleted file mode 100644 index 23f9eab9871..00000000000 --- a/distrib/powerpc/ramdisk/Makefile +++ /dev/null @@ -1,106 +0,0 @@ -# $OpenBSD: Makefile,v 1.18 2001/07/11 05:23:58 drahn Exp $ - -TOP= ${.CURDIR}/.. - -.include "${TOP}/Makefile.inc" -BSD_RD= bsd.rd -IMAGE= mr.fs -CBIN?= instbin -LISTS= ${.CURDIR}/list -UTILS?= ${.CURDIR}/../../miniroot - -MOUNT_POINT= /mnt -MTREE= ${.CURDIR}/mtree.conf - -VND?= svnd0 -VND_DEV= /dev/${VND}a -VND_RDEV= /dev/r${VND}a -VND_CRDEV= /dev/r${VND}c -PID!= echo $$$$ - - -DISKTYPE= rdroot -NBLKS= 8192 -# minfree, opt, b/i trks, sects, cpg -NEWFSARGS= -m 0 -o space -c 16 -i 4096 - -.ifndef DESTDIR -all ${IMAGE}: - @echo setenv DESTDIR before making a ramdisk! - @false -.else - -# mix config is not needed. -all: ${BSD_RD} cd - -${BSD_RD}: ${CBIN} ${IMAGE} bsd rdsetroot - cp bsd ${BSD_RD} - ${.OBJDIR}/rdsetroot ${BSD_RD} < ${IMAGE} - -cd: ${BSD_RD} - -rm -rf ${.OBJDIR}/cd-dir/ - -@mkdir -p ${.OBJDIR}/cd-dir/${OSREV}/powerpc/ - cp bsd.rd ${.OBJDIR}/cd-dir/${OSREV}/powerpc/bsd.rd - strip ${.OBJDIR}/cd-dir/${OSREV}/powerpc/bsd.rd - gzip -9 ${.OBJDIR}/cd-dir/${OSREV}/powerpc/bsd.rd - mv ${.OBJDIR}/cd-dir/${OSREV}/powerpc/bsd.rd.gz ${.OBJDIR}/cd-dir/${OSREV}/powerpc/bsd.rd - cp ${DESTDIR}/usr/mdec/ofwboot ${.OBJDIR}/cd-dir/ - mkhybrid -r -part -hfs -o ${.OBJDIR}/cd${OSrev}.fs ${.OBJDIR}/cd-dir - - -${IMAGE}: rd_setup do_files rd_teardown - -.endif - -bsd: - cd ${TOP}/../../sys/arch/powerpc/conf && config RAMDISK - cd ${TOP}/../../sys/arch/powerpc/compile/RAMDISK && \ - make clean && make depend && make - cp ${TOP}/../../sys/arch/powerpc/compile/RAMDISK/bsd bsd - -rd_setup: - dd if=/dev/zero of=${IMAGE} bs=512 count=${NBLKS} - vnconfig -v -c ${VND} ${IMAGE} - disklabel -w -r ${VND} ${DISKTYPE} - newfs ${NEWFSARGS} ${VND_RDEV} - fsck ${VND_RDEV} - mount ${VND_DEV} ${MOUNT_POINT} - -rd_teardown: - @df -i ${MOUNT_POINT} - -umount ${MOUNT_POINT} - -vnconfig -u ${VND} - -rdsetroot: ${TOP}/common/rdsetroot.c - ${HOSTCC} -DDEBUG -o rdsetroot ${TOP}/common/rdsetroot.c - -unconfig: - -umount -f ${MOUNT_POINT} - -vnconfig -u ${VND} - -.PRECIOUS: ${IMAGE} - -install: - cp ${BSD_RD} cd${REV}.fs ${DESTDIR}/snapshot/ - -${CBIN}.mk ${CBIN}.cache ${CBIN}.c: ${CBIN}.conf - crunchgen -E -D ${.CURDIR}/../../.. -L ${DESTDIR}/usr/lib ${.ALLSRC} - -${CBIN}: ${CBIN}.mk ${CBIN}.cache ${CBIN}.c - make -f ${CBIN}.mk all - -do_files: - mtree -def ${MTREE} -p ${MOUNT_POINT}/ -u - TOPDIR=${TOP} CURDIR=${.CURDIR} OBJDIR=${.OBJDIR} \ - REV=${REV} TARGDIR=${MOUNT_POINT} sh ${TOP}/runlist.sh ${LISTS} - -clean cleandir: - /bin/rm -f core ${IMAGE} ${CBIN} ${CBIN}.mk ${CBIN}.cache \ - *.o *.lo *.c bsd ${BSD_RD} \ - rdsetroot - -beforeinstall: - cp ${BSD.RD} cd${REV}.fs ${DESTDIR}/snapshot - -.include <bsd.obj.mk> -.include <bsd.subdir.mk> diff --git a/distrib/powerpc/ramdisk/Makefile.inc b/distrib/powerpc/ramdisk/Makefile.inc deleted file mode 100644 index 3000e414ea4..00000000000 --- a/distrib/powerpc/ramdisk/Makefile.inc +++ /dev/null @@ -1,4 +0,0 @@ -# $OpenBSD: Makefile.inc,v 1.1 1997/10/10 10:16:54 pefo Exp $ - -CRUNCHGENOPTS= -E - diff --git a/distrib/powerpc/ramdisk/dot.profile b/distrib/powerpc/ramdisk/dot.profile deleted file mode 100644 index f527ff43e44..00000000000 --- a/distrib/powerpc/ramdisk/dot.profile +++ /dev/null @@ -1,72 +0,0 @@ -# $OpenBSD: dot.profile,v 1.6 2001/06/23 19:44:54 deraadt Exp $ -# -# Copyright (c) 1994 Christopher G. Demetriou -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by Christopher G. Demetriou. -# 4. The name of the author may not be used to endorse or promote products -# derived from this software without specific prior written permission -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# - -export PATH=/sbin:/bin:/usr/bin:/usr/sbin:/ -export HISTFILE=/.sh_history -export HOME=/ - -umask 022 - -set -o emacs # emacs-style command line editing - -if [ "X${DONEPROFILE}" = "X" ]; then - DONEPROFILE=YES - - mount_ffs -o update /dev/rd0a / - - # set up some sane defaults - echo 'erase ^?, werase ^W, kill ^U, intr ^C, status ^T' - stty newcrt werase ^W intr ^C kill ^U erase ^? status ^T 9600 - - - # Installing or upgrading? - _forceloop="" - while [ "X$_forceloop" = X"" ]; do - echo -n '(I)nstall, (U)pgrade or (S)hell? ' - read _forceloop - case "$_forceloop" in - i*|I*) - /install - ;; - - u*|U*) - /upgrade - ;; - - s*|S*) - ;; - - *) - _forceloop="" - ;; - esac - done -fi diff --git a/distrib/powerpc/ramdisk/install.md b/distrib/powerpc/ramdisk/install.md deleted file mode 100644 index 69ffa16630d..00000000000 --- a/distrib/powerpc/ramdisk/install.md +++ /dev/null @@ -1,439 +0,0 @@ -# $OpenBSD: install.md,v 1.25 2001/06/23 19:44:54 deraadt Exp $ -# -# -# Copyright rc) 1996 The NetBSD Foundation, Inc. -# All rights reserved. -# -# This code is derived from software contributed to The NetBSD Foundation -# by Jason R. Thorpe. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by the NetBSD -# Foundation, Inc. and its contributors. -# 4. Neither the name of The NetBSD Foundation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS -# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -# -# machine dependent section of installation/upgrade script. -# - -# Machine-dependent install sets -MDSETS="kernel" -ARCH=ARCH - -md_set_term() { - test -n "$TERM" && return - echo -n "Specify terminal type [vt220]: " - getresp vt220 - TERM=$resp - export TERM -} - -md_get_diskdevs() { - # return available disk devices - bsort `dmesg | egrep -a "^[sw]d[0-9]+ " | cutword 1` -} - -md_get_cddevs() { - # return available CDROM devices - bsort `dmesg | egrep -a "^cd[0-9]+ " | cutword 1` -} - -md_get_partition_range() { - # return range of valid partition letters - echo [a-p] -} - -md_questions() { - : -} - -md_installboot() { - if [[ $disklabeltype = "HFS" ]] - then - echo "the 'ofwboot' program needs to be copied to the first HFS partition" - echo "of the disk to allow booting of OpenBSD" - elif [[ $disklabeltype = "MBR" ]] - then - echo "Installing boot in the msdos partition /dev/${1}i" - if mount -t msdos /dev/${1}i /mnt2 ; then - cp /usr/mdec/ofwboot /mnt2 - umount /mnt2 - else - echo "Failed, you will not be able to boot from /dev/${1}." - fi - fi -} - -md_native_fstype() { - echo "msdos" -} - -md_native_fsopts() { - echo "ro" -} - -md_init_mbr() { - # $1 is the disk to init - echo - echo "You will now be asked if you want to initialize the disk with a 1Mb" - echo "MSDOS partition. This is the recomended setup and will allow you to" - echo "store the boot and other interesting things here." - echo - echo "If you want to have a different setup, exit 'install' now and do" - echo "the MBR initialization by hand using the 'fdisk' program." - echo - echo "If you choose to manually setup the MSDOS partition, " - echo "consult your PowerPC OpenFirmware manual -and- the" - echo "PowerPC OpenBSD Installation Guide for doing setup this way." - echo - echo -n "Do you want to init the MBR and the MSDOS partition? [y] " - getresp "y" - case "$resp" in - n*|N*) - exit 0;; - *) - echo - echo "An MBR record with an OpenBSD usable partition table will now be copied" - echo "to your disk. Unless you have special requirements you will not need" - echo "to edit this MBR. After the MBR is copied an empty 1Mb MSDOS partition" - echo "will be created on the disk. You *MUST* setup the OpenBSD disklabel" - echo "to have a partition include this MSDOS partition." - echo "You will have an opportunity to do this shortly." - echo - echo "You will probably see a few '...: no disk label' messages" - echo "It's completely normal. The disk has no label yet." - echo "This will take a minute or two..." - sleep 2 - echo -n "Creating Master Boot Record (MBR)..." - fdisk -i -f /usr/mdec/mbr $1 - echo "..done." - echo -n "Copying 1MB MSDOS partition to disk..." - gunzip < /usr/mdec/msdos1mb.gz | dd of=/dev/r$1c bs=512 seek=1 >/dev/null 2>&1 - echo "..done." - ;; - esac -} - -md_init_hfs() { - pdisk /dev/${1}c -} -md_checkfordisklabel() { - # $1 is the disk to check - local rval - - echo - echo "Apple systems have two methods to label/partition a boot disk." - echo "Either the disk can be partitioned with Apple HFS partition" - echo "tools to contain an \"Unused\" partition, or without any" - echo "MacOS tools, the disk can be labled using an MBR partition table" - echo "If the HFS (DPME) partition table is used, after the disk is" - echo "partitioned with the Apple software, the \"Unused\" section" - echo "must be changed to type \"OpenBSD\" name \"OpenBSD\" using the" - echo "pdisk tool contained on this ramdisk. The disklabel can" - echo "then be edited normally" - echo "WARNING: the MBR partitioning code will HAPPILY overwrite/destroy" - echo "any HFS partitions on the disk, including the partition table." - echo "Choose the MBR option carefully, knowing this fact." - - echo -n "Do you want to choose (H)FS labeling or (M)BR labeling [H] " - getresp "h" - case "$resp" in - m*|M*) - export disklabeltype=MBR - md_checkforMBRdisklabel $1 - rval=$? - ;; - *) - export disklabeltype=HFS - md_init_hfs $1 - rval=$? - ;; - esac - return $rval -} -md_checkforMBRdisklabel() { - - echo "You have chosen to put a MBR disklabel on the disk." - echo -n "Is this correct? [n] " - getresp "n" - case "$resp" in - n*|N*) - echo "aborting install" - exit 0;; - *) - ;; - esac - - echo -n "Have you initialized an MSDOS partition using OpenFirmware? [n] " - getresp "n" - case "$resp" in - n*|N*) - md_init_mbr $1;; - *) - echo - echo "You may keep your current setup if you want to be able to use any" - echo "already loaded OS. However you will be asked to prepare an empty" - echo "partition for OpenBSD later. There must also be at least ~0.5Mb free space" - echo "in the boot partition to hold the OpenBSD bootloader." - echo - echo "Also note that the boot partition must be included as partition" - echo "'i' in the OpenBSD disklabel." - echo - echo -n "Do you want to keep the current MSDOS partition setup? [y]" - getresp "y" - case "$resp" in - n*|N*) - md_init_mbr $1;; - *) - ;; - esac - ;; - esac - - disklabel -r $1 > /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 - else - rval=0 - fi - - rm -f /tmp/checkfordisklabel - return $rval -} - -md_prep_fdisk() -{ - local _disk - local _done - - _disk=$1 - echo - echo "This disk has not previously been used with OpenBSD. You may share" - echo "this disk with other operating systems. However, to be able to boot" - echo "the system you will need a small DOS partition in the beginning of" - echo "the disk to hold the kernel boot. OpenFirmware understands" - echo "how to read an MSDOS style format from the disk." - echo - echo "This DOS style partitioning has been taken care of if" - echo "you chose to do that initialization earlier in the install." - echo - echo "WARNING: Wrong information in the BIOS partition table might" - echo "render the disk unusable." - - echo -n "Press [Enter] to continue " - getresp "" - - echo - echo "Current partition information is:" - fdisk ${_disk} - echo -n "Press [Enter] to continue " - getresp "" - - _done=0 - while [ $_done = 0 ]; do - echo - cat << \__md_prep_fdisk_1 - -An OpenBSD partition should have type (i.d.) 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. -__md_prep_fdisk_1 - echo - echo -n "Press [Enter] to continue " - getresp "" - - fdisk -e ${_disk} - - echo - echo "The new partition information is:" - fdisk ${_disk} - - echo - echo "(You will be permitted to edit this information again.)" - echo "-------------------------------------------------------" - echo -n "Is the above information correct? [n] " - getresp "n" - - case "$resp" in - n*|N*) ;; - *) _done=1 ;; - esac - done - - echo - echo "Please take note of the offset and size of the OpenBSD partition" - echo "*AND* the MSDOS partitions you may want to access from OpenBSD." - echo "At least the MSDOS partition used for booting must be accessible" - echo "by OpenBSD as partition 'i'. You may need this information to " - echo "fill in the OpenBSD disk label later." - echo -n "Press [Enter] to continue " - getresp "" -} - -md_prep_disklabel() -{ - local _disk - - _disk=$1 - md_checkfordisklabel $_disk - case $? in - 0) - echo -n "Do you wish to edit the disklabel on $_disk? [y] " - ;; - 1) - md_prep_fdisk ${_disk} - echo "WARNING: Disk $_disk has no label" - echo -n "Do you want to create one with the disklabel editor? [y] " - ;; - 2) - echo "WARNING: Label on disk $_disk is corrupted" - echo -n "Do you want to try and repair the damage using the disklabel editor? [y] " - ;; - - esac - - getresp "y" - case "$resp" in - y*|Y*) ;; - *) return ;; - esac - - # display example - cat << \__md_prep_disklabel_1 - -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] -__md_prep_disklabel_1 - echo -n "Press [Enter] to continue " - getresp "" - 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_welcome_banner() { -{ - if [ "$MODE" = install ]; then - cat << __EOT -Welcome to the OpenBSD/powerpc ${VERSION_MAJOR}.${VERSION_MINOR} installation program. - -This program is designed to help you put OpenBSD on your disk in a simple and -rational way. -__EOT - - else - cat << __EOT -Welcome to the OpenBSD/powerpc ${VERSION_MAJOR}.${VERSION_MINOR} upgrade program. - -This program is designed to help you upgrade your OpenBSD system in a simple -and rational way. As a reminder, installing the 'etc' binary set is NOT -recommended. Once the rest of your system has been upgraded, you should -manually merge any changes to files in the 'etc' set into those files which -already exist on your system. - -__EOT - fi - -cat << __EOT - -As with anything which modifies your disk's contents, this program can cause -SIGNIFICANT data loss, and you are advised to make sure your data is backed -up before beginning the installation process. - -Default answers are displayed in brackets after the questions. You can hit -Control-C at any time to quit, but if you do so at a prompt, you may have -to hit return. Also, quitting in the middle of installation may leave your -system in an inconsistent state. If you hit Control-C and restart the -install, the install program will remember many of your old answers. - -__EOT -} | more -} - -md_not_going_to_install() { - cat << __EOT - -OK, then. Enter 'reboot' at the prompt to reset the machine. Once the machine -has rebooted, use Open Firmware to load the new boot code. - -__EOT -} - -md_congrats() { - local what; - if [ "$MODE" = install ]; then - what=installed - else - what=upgraded - fi - cat << __EOT - -CONGRATULATIONS! You have successfully $what OpenBSD! To boot the -installed system, enter reboot at the command prompt. Once the machine -has rebooted, use Open Firmware to boot into OpenBSD. - -__EOT -} diff --git a/distrib/powerpc/ramdisk/install.sub b/distrib/powerpc/ramdisk/install.sub deleted file mode 100644 index 32816c74008..00000000000 --- a/distrib/powerpc/ramdisk/install.sub +++ /dev/null @@ -1,2071 +0,0 @@ -#!/bin/sh -# $OpenBSD: install.sub,v 1.7 2001/08/07 15:00:09 markus Exp $ -# $NetBSD: install.sub,v 1.5.2.8 1996/09/02 23:25:02 pk Exp $ -# -# Copyright (c) 1997,1998 Todd Miller, Theo de Raadt -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by Todd Miller and -# Theo de Raadt -# 4. The name of the author may not be used to endorse or promote products -# derived from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# -# Copyright (c) 1996 The NetBSD Foundation, Inc. -# All rights reserved. -# -# This code is derived from software contributed to The NetBSD Foundation -# by Jason R. Thorpe. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# 1. Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# 2. Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in the -# documentation and/or other materials provided with the distribution. -# 3. All advertising materials mentioning features or use of this software -# must display the following acknowledgement: -# This product includes software developed by the NetBSD -# Foundation, Inc. and its contributors. -# 4. Neither the name of The NetBSD Foundation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS -# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED -# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. -# - -# OpenBSD installation/upgrade script - common subroutines. - -ROOTDISK="" # filled in below -VERSION= -VERSION_MAJOR=$(( $VERSION / 10 )) -VERSION_MINOR=$(( $VERSION % 10 )) -export VERSION VERSION_MAJOR VERSION_MINOR - -ALLSETS="base etc misc comp man game xbase xshare xfont xserv" # install -UPGRSETS="base misc comp man game xbase xshare xfont xserv" # upgrade -SNAPSETS="bin dev etc games man misc sbin \ - usr.bin usr.binutils usr.games usr.include \ - usr.lib usr.libexec usr.misc usr.sbin usr.share var" -THESETS= # one of the above - -local_sets_dir="" # Path searched for sets by install_sets - # on the local filesystems - -# decide upon an editor -if [ X$EDITOR = X ]; then - if [ -x /usr/bin/vi ]; then - EDITOR=vi - else - EDITOR=ed - fi - export EDITOR -fi - -# Please don't use the 1 of n form below, good idea, wrong implementation! -# get a reponse with default[s] -getresp() { - set -o noglob - valid="false" - while [ "X$valid" = "Xfalse" ]; do - read resp - if [ "X$resp" = "X" ]; then - resp=$1 - fi - if [ $# -gt 1 ]; then - for i in $@; do - if [ "X$resp" = "X$i" ]; then - valid="true" - fi - done - else - valid="true" - fi - if [ "X$valid" = "Xfalse" ]; then - echo "Try again: Enter one of [$@] " - fi - done - set +o noglob -} - -isin() { -# test the first argument against the remaining ones, return succes on a match - local _a - - _a=$1; shift - while [ $# != 0 ]; do - if [ "$_a" = "$1" ]; then return 0; fi - shift - done - return 1 -} - -addel() { -# add first argument to list formed by the remaining arguments -# adds to the tail if the element does not already exist - local _a - local _seen - - _seen="" - _a=$1; shift - while [ $# != 0 ]; do - echo "$1" - if [ "$_a" = "$1" ]; then - _seen="yes" - fi - shift - done - if [ "X$_seen" = "X" ]; then - echo "$_a" - fi -} - -rmel() { -# remove first argument from list formed by the remaining arguments - local _a - - _a=$1; shift - while [ $# != 0 ]; do - if [ "$_a" != "$1" ]; then - echo "$1" - fi - shift - done -} - -cutword () { -# read a line of data, return Nth element. - local _a - local _n - local _oifs - - # optional field separator - _oifs="$IFS" - case "$1" in - -t?*) IFS=${1#-t}; shift;; - esac - - _n=$1 - read _a; set -- $_a - IFS="$_oifs" - if [ "$1" = "" ]; then return; fi - eval echo \$$_n -} - -cutlast () { -# read a line of data, return last element. Equiv. of awk '{print $NF}'. - local _a - local _oifs - - # optional field separator - _oifs="$IFS" - case "$1" in - -t?*) IFS=${1#-t}; shift;; - esac - - read _a; set -- $_a - IFS="$_oifs" - if [ "$1" = "" ]; then return; fi - while [ "$#" -gt 10 ]; do shift 10; done - eval echo \$$# -} - -firstchar () { -# return first character of argument - local _a - _a=$1 - while [ ${#_a} != 1 ]; do - _a=${_a%?} - done - echo $_a -} - -basename () { - local _oifs - if [ "$1" = "" ]; then return; fi - _oifs="$IFS" - IFS="/" - set -- $1 - IFS="$_oifs" - while [ "$#" -gt 10 ]; do shift 10; done - eval echo \$$# -} - -dir_has_sets() { - # return true when the directory $1 contains a set for $2...$n - local _dir - local _file - - _dir=$1; shift - for _file in $* - do - if [ -f $_dir/${_file}${VERSION}.tar.gz ]; then - return 0 - fi - # Try for stupid msdos convention - if [ -f $_dir/${_file}${VERSION}.tgz ]; then - return 0 - fi - # Special check for kernel - if [ $_file = "kernel" -a -f $_dir/bsd ]; then - return 0 - fi - done - return 1 -} - -list_has_sets() { - # return true when the list $1 contains a set, given dir $2 for $3...$n - local _list - local _file - - _list=$1; shift - for _file in $* - do - if isin ${_file}${VERSION}.tar.gz $_list; then - return 0 - fi - # Try for stupid msdos convention - if isin ${_file}${VERSION}.tgz $_list; then - return 0 - fi - # Special check for kernel - if test $_file = "kernel" && isin bsd $_list; then - return 0 - fi - done - return 1 -} - -ftp_list_files() { - # log in via ftp to host $1 as user $2 with password $3 - # and return a list of all files in the directory $4 on stdout - local _host - local _user - local _pass - local _dir - - _host=$1; shift - _user=$1; shift - _pass=$1; shift - _dir=$1; shift - - ftp ${_ftp_active} -V -n $_host <<__ptf -user $_user $_pass -cd $_dir -ls -quit -__ptf -} - -twiddle() { -# spin the propeller so we don't get bored - while : ; do - sleep 1; echo -n "/"; - sleep 1; echo -n "-"; - sleep 1; echo -n "\\"; - sleep 1; echo -n "|"; - done > /dev/tty & echo $! -} - -get_localdir() { - # $1 is relative mountpoint - local _mp - local _dir - - _mp=$1 - _dir= - while : ; do - echo -n "Enter the pathname where the sets are stored [$_dir] " - getresp "$_dir" - _dir=$resp - - # Allow break-out with empty response - if [ -z "$_dir" ]; then - echo -n "Are you sure you don't want to set the pathname? [n] " - getresp "n" - case "$resp" in - y*|Y*) - break - ;; - *) - continue - ;; - esac - fi - - if dir_has_sets "$_mp/$_dir" $THESETS - then - local_sets_dir="$_mp/$_dir" - break - else - cat << __get_reldir_1 -The directory \"$local_sets_dir\" does not exist, or does not hold any of the -upgrade sets. -__get_reldir_1 - echo -n "Re-enter pathname? [y] " - getresp "y" - case "$resp" in - y*|Y*) - ;; - *) - local_sets_dir="" - break - ;; - esac - fi - done -} - -getanotherdisk() { - cat << \__getanotherdisk_1 - -Now you can select another disk to initialize. (Do not re-select a disk -you have already entered information for). Available disks are: - -__getanotherdisk_1 - _DKDEVS=`md_get_diskdevs` - echo "$_DKDEVS" - echo "" - echo -n "Which one? [done] " - getresp "" - if [ "X${resp}" = "X" ]; then - DISK=done - elif isin $resp $_DKDEVS ; then - DISK="$resp" - else - echo "" - echo "The disk $resp does not exist." - DISK="" - fi -} - -getrootdisk() { - cat << \__getrootdisk_1 - -The installation program needs to know which disk to consider the root disk. -Note the unit number may be different than the unit number you used in the -boot program (especially on a PC with multiple disk controllers). -Available disks are: - -__getrootdisk_1 - local _defdsk; - - _DKDEVS=`md_get_diskdevs` - _defdsk=`echo $_DKDEVS | cutlast` - if [ "${_defdsk}" != "${_DKDEVS}" ]; then - _defdsk="" - fi - echo "$_DKDEVS" - echo "" - echo -n "Which disk is the root disk [${_defdsk}]? " - getresp "${_defdsk}" - if isin $resp $_DKDEVS ; then - ROOTDISK="$resp" - else - echo "" - echo "The disk $resp does not exist." - ROOTDISK="" - fi -} - -labelmoredisks() { - cat << \__labelmoredisks_1 - -You may label the following disks: - -__labelmoredisks_1 - echo "$_DKDEVS" - echo "" - echo -n "Label which disk? [done] " - getresp "done" - case "$resp" in - done) - ;; - - *) - if isin $resp $_DKDEVS ; then - md_labeldisk $resp - else - echo "" - echo "The disk $resp does not exist." - fi - ;; - esac -} - -addhostent() { - # $1 - IP address - # $2 - symbolic name - - # Create an entry in the hosts table. If no host table - # exists, create one. If the IP address already exists, - # replace its entry. - if [ ! -f /tmp/hosts ]; then - echo "127.0.0.1 localhost" > /tmp/hosts - fi - - sed "/^$1 /d" < /tmp/hosts > /tmp/hosts.new - mv /tmp/hosts.new /tmp/hosts - - echo "$1 $2 $2.$FQDN" >> /tmp/hosts -} - -addifconfig() { - # $1 - interface name - # $2 - interface symbolic name - # $3 - interface IP address - # $4 - interface netmask - # $5 - (optional) interface link-layer directives - - # Create a hostname.* file for the interface. - echo "inet $2 $4 NONE $5" > /tmp/hostname.$1 - - addhostent $3 $2 -} - -configurenetwork() { - local _ifsdone - local _ifs - local _ouranswer - local _reprompt - - _IFS=`md_get_ifdevs` - _ifsdone="" - _ouranswer="" - _reprompt=1 - resp="" # force at least one iteration - while [ "X${resp}" != X"done" ]; do - if [ $_reprompt = 1 ]; then - cat << \__configurenetwork_1 - -You may configure the following network interfaces (the interfaces -marked with [X] have been succesfully configured): - -__configurenetwork_1 - - for _ifs in $_IFS; do - if [ "X${_ouranswer}" = "X" ]; then - _ouranswer=$_ifs - fi - if isin $_ifs $_ifsdone ; then - echo -n " [X] " - else - echo -n " [ ] " - fi - echo $_ifs - done - echo "" - fi - echo -n "Configure which interface? (or, enter 'done') [$_ouranswer] " - getresp "$_ouranswer" - case "$resp" in - "done") - ;; - "") - _reprompt=0 - ;; - *) - _ifs=$resp - if isin $_ifs $_IFS ; then - if configure_ifs $_ifs ; then - _ifsdone="$_ifs $_ifsdone" - fi - else - echo "Invalid response: \"$resp\" is not in list" - fi - _ouranswer="done" - _reprompt=1 - ;; - esac - - done -} - -configure_ifs() { - - local _up - local _interface_name - local _interface_ip - local _interface_mask - local _interface_symname - local _interface_extra - local _hostname - - _interface_name=$1 - - set -- `ifconfig $_interface_name | sed -n ' - 1s/.*<UP,.*$/UP/p - 1s/.*<.*>*$/DOWN/p - 2s/inet// - 2s/--> [0-9.][0-9.]*// - 2s/netmask// - 2s/broadcast// - 2p'` - - _up=$1 - _interface_ip=$2 - _interface_mask=$3 - - # Get IP address - resp="" # force one iteration - while [ "X${resp}" = X"" ]; do - echo -n "IP address? [$_interface_ip] " - getresp "$_interface_ip" - _interface_ip=$resp - done - - # Get symbolic name - _hostname=`hostname` - resp="" # force one iteration - while [ "X${resp}" = X"" ]; do - echo -n "Symbolic (host) name? [$_hostname] " - getresp "$_hostname" - _interface_symname=$resp - done - - # Get netmask - resp="" - if [ "X${_interface_mask}" = X"" ]; then - _interface_mask=255.255.255.0 - fi - while [ "X${resp}" = X"" ]; do - echo -n "Netmask ? [$_interface_mask] " - getresp "$_interface_mask" - _interface_mask=$resp - done - - echo "Your network interface might require additional link-layer" - echo "directives (like \`link0'). If this is the case you can enter" - echo "these at the next prompt. Values used by some drivers are:" - echo " -link0 BNC" - echo " link0 -link1 AUI" - echo " link0 link1 UTP" - echo "(But please keep in mind not all drivers use flags like this)." - echo -n "Additional link-layer arguments? [$_interface_extra] " - getresp "$_interface_extra" - if [ "X${resp}" != X"" ]; then - _interface_extra=$resp - fi - - # Configure the interface. If it - # succeeds, add it to the permanent - # network configuration info. - if [ $_up != "UP" ]; then - ifconfig ${_interface_name} down - if ifconfig ${_interface_name} inet \ - ${_interface_ip} \ - netmask ${_interface_mask} ${_interface_extra} up ; then - addifconfig \ - ${_interface_name} \ - ${_interface_symname} \ - ${_interface_ip} \ - ${_interface_mask} "${_interface_extra}" - return 0 - fi - else - echo "Interface ${_interface_name} is already active." - echo "Just saving configuration on new root filesystem." - addifconfig \ - ${_interface_name} \ - ${_interface_symname} \ - ${_interface_ip} \ - ${_interface_mask} "${_interface_extra}" - fi - return 1 -} - -# Much of this is gratuitously stolen from /etc/netstart. -enable_network() { - - # Set up the hostname. - if [ ! -f /mnt/etc/myname ]; then - echo "ERROR: no /etc/myname!" - return 1 - fi - hostname=`cat /mnt/etc/myname` - hostname $hostname - - # configure all the interfaces which we know about. -( - tmp="$IFS" - IFS="$IFS." - set -- `echo /mnt/etc/hostname*` - IFS=$tmp - unset tmp - - while [ $# -ge 2 ] ; do - shift # get rid of "hostname" - ( - read af name mask bcaddr extras - read dt dtaddr - - if [ ! -n "$name" ]; then - echo "/etc/hostname.$1: invalid network configuration file" - exit - fi - - cmd="ifconfig $1 $af $name " - if [ "${dt}" = "dest" ]; then cmd="$cmd $dtaddr"; fi - if [ -n "$mask" ]; then cmd="$cmd netmask $mask"; fi - if [ -n "$bcaddr" -a "X$bcaddr" != "XNONE" ]; then - cmd="$cmd broadcast $bcaddr"; - fi - cmd="$cmd $extras" - - $cmd - ) < /mnt/etc/hostname.$1 - shift - done -) - - # set the address for the loopback interface - ifconfig lo0 inet localhost - - # use loopback, not the wire - route add $hostname localhost - - # /etc/mygate, if it exists, contains the name of my gateway host - # that name must be in /etc/hosts. - if [ -f /mnt/etc/mygate ]; then - route delete default > /dev/null 2>&1 - route add default `cat /mnt/etc/mygate` - fi - - # enable the resolver, if appropriate. - if [ -f /mnt/etc/resolv.conf ]; then - _resolver_enabled="TRUE" - cp /mnt/etc/resolv.conf /tmp/resolv.conf.shadow - fi - - # Display results... - echo "Network interface configuration:" - ifconfig -a - - echo "" - - if [ "X${_resolver_enabled}" = X"TRUE" ]; then - route show - echo "" - echo "Resolver enabled." - else - route -n show - echo "" - echo "Resolver not enabled." - fi - - return 0 -} - -# Print the selector and get a response -# The list of sets is passed in as $1, sets $resp -get_selection() { - local _next - local _f - local _sets - - _sets=$1 - _next="" - for _f in $_sets ; do - if isin $_f $_setsdone ; then - echo -n " [X] " - _next="" - else - echo -n " [ ] " - if [ -z "$_next" ]; then - _next=$_f - fi - fi - echo $_f - done - - # Get the name of the file. - echo -n "File name [$_next]? " - getresp "$_next" -} - -install_url() { -# Get several parameters from the user, and xfer -# files from the server. -# Note: _ftp_server_ip, _ftp_server_dir, _ftp_server_login, -# _ftp_server_password, and _ftp_active must be global. - -local _sets -local _kernel -local _f -local _file_list -local _get_files -local _failed_files -local _osetsdone -local _url_type -local _url_base -local _tfile -local _matched -local _action - -# Is this an ftp or http install? -_url_type=$1; shift - -echo -echo "This is an automated ${_url_type}-based installation process. You will be asked" -echo "questions and then the files will be retrieved iteratively via ftp(1)." -echo - -# Proxy the connections? -if [ "X${_proxy_host}" = X"" ]; then - _proxy_host=none -fi -echo -n "HTTP/FTP proxy URL? (if you use a proxy) [${_proxy_host}] " -getresp "${_proxy_host}" -if [ "X${resp}" = X"none" ]; then - unset _proxy_host ftp_proxy http_proxy -else - _proxy_host=$resp - export ftp_proxy=${_proxy_host} - export http_proxy=${_proxy_host} -fi -if [ "${_url_type}" = "ftp" -a "X$ftp_proxy" = "X" ]; then - # Use active mode ftp? (irrelevant if using a proxy) - case "${_ftp_active}" in - -A) resp=y ;; - *) resp=n ;; - esac - echo "By default, ftp will attempt a passive connection and fall back to a normal" - echo "(active) connection if that doesn't work. However, there are some very" - echo "old ftp servers that claim to support passive mode, but really do not." - echo "In this case, you should explicately request an active session." - echo -n "Do you want to use active ftp? [${resp}] " - getresp "${resp}" - case "$resp" in - y*|Y*) _ftp_active=-A ;; - *) unset _ftp_active ;; - esac -fi - -# Provide a list of possible servers -echo -n "Do you want a list of potential ${_url_type} servers? [y] " -getresp "y" -case "$resp" in -n*|N*) ;; -*) - ftp ${_ftp_active} -V -a -o - ftp://ftp.openbsd.org/pub/OpenBSD/${VERSION_MAJOR}.${VERSION_MINOR}/ftplist | grep "^${_url_type}:" - ;; -esac - -# Get server IP address -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - eval echo -n "Server IP address or hostname? [\$_${_url_type}_server_ip]\ " - eval getresp "\$_${_url_type}_server_ip" - eval _${_url_type}_server_ip=$resp -done - -# Get server directory -if [ "${_url_type}" = "ftp" -a "X${_ftp_server_dir}" = X"" ]; then - # Default ftp dir - _ftp_server_dir="pub/OpenBSD/${VERSION_MAJOR}.${VERSION_MINOR}/${ARCH}" -fi -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - eval echo -n "Server directory? [\$_${_url_type}_server_dir]\ " - eval getresp "\$_${_url_type}_server_dir" - eval _${_url_type}_server_dir=$resp -done - -if [ "${_url_type}" = "ftp" ]; then - # Need default values even if we proxy ftp... - if [ "X${_ftp_server_login}" = X"" ]; then - _ftp_server_login=anonymous - fi - if [ "X${_ftp_server_password}" = X"" ]; then - _ftp_server_password=root@`hostname`.${FQDN} - fi - - # Get login name - resp="" # force one iteration - while [ "X${resp}" = X"" ]; do - echo -n "Login? [${_ftp_server_login}] " - getresp "${_ftp_server_login}" - _ftp_server_login=$resp - done - - # Get password unless anonymous - if [ ${_ftp_server_login} != "anonymous" ]; then - resp="" # force one iteration - while [ "X${resp}" = X"" ]; do - echo -n "Password (will not echo): " - stty -echo - getresp "${_ftp_server_password}" - stty echo - echo "" - _ftp_server_password=$resp - - echo -n "Password (again): " - stty -echo - getresp "${_ftp_server_password}" - stty echo - echo "" - if [ "${_ftp_server_password}" != "${resp}" ]; then - echo "Passwords do not match, try again." - resp="" - fi - done - else - # only used by ftp_list_files() - _ftp_server_password=root@`hostname`.${FQDN} - fi -fi - -# Build up the base url since it is so nasty... -if [ "${_url_type}" = "ftp" -a "${_ftp_server_login}" != "anonymous" ]; then - eval _url_base=${_url_type}://${_ftp_server_login}:${_ftp_server_password}@\$_${_url_type}_server_ip/\$_${_url_type}_server_dir -else - eval _url_base=${_url_type}://\$_${_url_type}_server_ip/\$_${_url_type}_server_dir -fi - -# Get list of files from the server. -# XXX - check for nil $_file_list and deal -if [ "${_url_type}" = "ftp" -a "X${ftp_proxy}" = X"" ]; then - _file_list=`ftp_list_files "$_ftp_server_ip" "$_ftp_server_login" "$_ftp_server_password" "$_ftp_server_dir"` -else - # Assumes index file is "index.txt" for http (or proxy) - # We can't use index.html since the format is server-dependent - _file_list=`ftp -o - -V ${_url_base}/index.txt | sed 's/
//'` -fi - -_sets="" -if list_has_sets "$_file_list" $THESETS; then - for _f in $THESETS ; do - if [ "X${_f}" = "Xkernel" ]; then - if isin bsd $_file_list; then - _kernel=bsd - fi - elif isin ${_f}${VERSION}.tar.gz $_file_list; then - _sets="$_sets ${_f}${VERSION}.tar.gz" - elif isin ${_f}${VERSION}.tgz $_file_list; then - _sets="$_sets ${_f}${VERSION}.tgz" - fi - done -else - eval echo "There are no OpenBSD install sets available in \"\$_${_url_type}_server_dir\"." - echo -n "Search for *.tar.gz and *.tgz files? [y] " - getresp "y" - case "$resp" in - n*|N*) return ;; - *) ;; - esac - # *.tar.gz and *.tgz are possible sets - _sets="" - _kernel="" - for _f in ${_file_list} ; do - case "$_f" in - *.tar.gz|*.tgz) _sets="$_sets ${_f}" - esac - done - if [ "X${_sets}" = X"" ]; then - echo "There are no *.tar.gz or *.tgz files in that dir." - echo -n "See a directory listing? [y] " - getresp "y" - case "$resp" in - n*|N*) return ;; - *) ;; - esac - echo "" - echo "${_file_list}" - echo "" - return - else - echo "Adding *.tar.gz and *.tgz files to selector." - fi -fi - -# Yes, all those blackslashes really are necesary... -eval echo "\\\\n"\ -"You will now be asked for files to extract. In addition to the\\\\n"\ -"files listed in the selector you may enter any file located at\\\\n"\ -"\$_${_url_type}_server_ip:\$_${_url_type}_server_dir. You can also enter\\\\n"\ -"'all' to install all the standard sets, or 'list' to list the\\\\n"\ -"files avilable at \$_${_url_type}_server_ip:\$_${_url_type}_server_dir.\\\\n"\ -"When you are done selecting files, enter 'done'.\\\\n"\ -"Some of these sets are required for your ${MODE} and some are optional --\\\\n"\ -"You will want at least the base and bsd sets.\\\\n"\ -"Consult the installation notes if you are not sure which sets are required!" -_osetsdone="$_setsdone" -# Set a minimal default -for _f in $_sets $_kernel; do - case "$_f" in - base*.tar.gz|base*.tgz|etc*.tar.gz|etc*.tgz|bsd|bsdofw) - if ! isin ${_f} ${_setsdone}; then - _get_files=`addel ${_f} ${_get_files}` - _setsdone=`addel ${_f} ${_setsdone}` - fi - ;; - esac -done - -# Allow the user to select/de-select additional sets -while : ; do - echo "" - echo "The following sets are available for extraction." - echo "Enter filename, \`list', \`all', or \`done'." - echo "You may de-select a set by prepending a '-' to its name." - echo "" - get_selection "$_sets $_kernel" - - if [ "X${resp}" = X"done" ]; then - break - elif [ "X${resp}" = X"list" ]; then - echo "" - eval echo "\$_${_url_type}_server_dir:" - echo "${_file_list}" - continue - elif [ "X${resp}" = X"all" ]; then - _get_files="$_sets $_kernel" - _setsdone="$_sets $_kernel" - break - fi - - # Change +/- into add/remove - _action=add - case "$resp" in - +*) resp="${resp#?}" - ;; - -*) resp="${resp#?}" - _action=remove - ;; - esac - - # Major hack to allow the user to select globbing patterns - set -o noglob - _tfile=/tmp/install_case.$$ # safe in single user mode - cat >$_tfile << OOF - case \$_f in - $resp) # Add/remove file to extraction list - if [ "\$_action" = "add" ]; then - _get_files=\`addel \${_f} \${_get_files}\` - _setsdone=\`addel \${_f} \${_setsdone}\` - elif [ "\$_action" = "remove" ]; then - _get_files=\`rmel \${_f} \${_get_files}\` - _setsdone=\`rmel \${_f} \${_setsdone}\` - else - echo "Unknown action: \$_action" - fi - _matched=\$(( \$_matched + 1 )) - ;; - esac -OOF - set +o noglob - - # Eww. - _matched=0 - for _f in $_sets $_kernel; do - . $_tfile - done - rm -f $_tfile - - if [ $_matched -eq 0 ]; then - eval echo "File \$_${_url_type}_server_dir/$resp does not exist. Check to make" - echo "sure you entered the information properly or enter 'list' for a file list." - fi -done - -# User may have said "done" without selecting any files -if [ "X${_get_files}" = X"" ]; then - return -fi - -echo -echo "Fetching files via ${_url_type} may take a long time, especially over a slow network" -echo -n "connection. Ready to download files? [y] " -getresp "y" -case "$resp" in - y*|Y*) - ;; - *) - _setsdone="$_osetsdone" - return - ;; -esac - -# Download the files one at a time and keep track of which ones failed -while test -n "${_get_files}" ; do - _failed_files="" - for _f in $_get_files ; do - echo "" - if [ "X${_f}" = "X${_kernel}" ]; then - ( cd /mnt ; ftp ${_ftp_active} -V ${_url_base}/${_f} ) - else - ( cd /mnt ; ftp ${_ftp_active} -o - -V ${_url_base}/${_f} | tar zxvpf - ) - fi - if [ $? -ne 0 ]; then - # Mark xfer as having failed,. - _setsdone=`rmel $_f $_setsdone` - _failed_files="${_failed_files} ${_f}" - fi - done - - # Give them the option of refetching failed files. - _get_files="" - while test -n "${_failed_files}" ; do - echo "" - echo "The following files failed to transfer and extract correctly:" - echo "Choose which one(s) to refetch or 'done' to exit selector." - echo "You may de-select a file by prepending a '-' to its name." - echo "" - get_selection "$_failed_files" - - if [ "X${resp}" = X"done" ]; then - break - elif [ "X${resp}" = X"list" ]; then - echo "" - eval echo "\$_${_url_type}_server_dir:" - echo "${_file_list}" - echo "" - continue - fi - - # Change +/- into add/remove - _action=add - case "$resp" in - +*) resp="${resp#?}" - ;; - -*) resp="${resp#?}" - _action=remove - ;; - esac - - # Major hack to allow the user to select globbing patterns - set -o noglob - _tfile=/tmp/install_case.$$ # safe in single user mode - cat >$_tfile << OOF - case \$_f in - $resp) # Add/remove file to extraction list - if [ "\$_action" = "add" ]; then - _get_files=\`addel \${_f} \${_get_files}\` - _setsdone=\`addel \${_f} \${_setsdone}\` - elif [ "\$_action" = "remove" ]; then - _get_files=\`rmel \${_f} \${_get_files}\` - _setsdone=\`rmel \${_f} \${_setsdone}\` - else - echo "Unknown action: \$_action" - fi - _matched=\$(( \$_matched + 1 )) - ;; - esac -OOF - set +o noglob - - # Eww. - _matched=0 - for _f in $_failed_files; do - . $_tfile - done - rm -f $_tfile - - if [ $_matched -eq 0 ]; then - eval echo "File \$_${_url_type}_server_dir/$resp does not exist. Check to make" - echo "sure you entered the information properly or enter 'list' for a file list." - fi - done -done -} - -install_from_mounted_fs() { -# $1 - directory containing installation sets -local _sets -local _kernel -local _f -local _get_files -local _failed_files -local _osetsdone -local _tfile -local _matched -local _action - -if [ ! -d $1 ]; then - echo "No such directory: $1" - return -fi - -_sets="" -if dir_has_sets $1 $THESETS; then - for _f in $THESETS ; do - if [ "X${_f}" = "Xkernel" ]; then - if [ -f $1/bsd ]; then - _kernel=bsd - fi - elif [ -f $1/${_f}${VERSION}.tar.gz ]; then - _sets="$_sets ${_f}${VERSION}.tar.gz" - elif [ -f $1/${_f}${VERSION}.tgz ]; then - _sets="$_sets ${_f}${VERSION}.tgz" - fi - done -else - echo "There are no OpenBSD install sets available in \"$1\"." - echo -n "Search for *.tar.gz and *.tgz files? [y] " - getresp "y" - case "$resp" in - n*|N*) return ;; - *) ;; - esac - # *.tar.gz and *.tgz are possible sets - _sets="" - _kernel="" - _sets=`cd $1 ; echo *.tar.gz *.tgz` - if [ "X${_sets}" = X'*.tar.gz *.tgz' ]; then - echo "There are no *.tar.gz or *.tgz files in that dir." - echo -n "See a directory listing? [y] " - getresp "y" - case "$resp" in - n*|N*) return ;; - *) ;; - esac - echo "" - ( cd $1 && ls ) - echo "" - return - else - echo "Adding *.tar.gz and *.tgz files to selector." - fi -fi - -echo "\n"\ -"You will now be asked for files to extract. In addition to the\n"\ -"files listed in the selector you may enter any file located in\n"\ -"$1. You can also enter 'all' to install all the standard\n"\ -"sets, or 'list' to list the files avilable in $1.\n"\ -"When you are done selecting files, enter 'done'.\n"\ -"Some of these sets are required for your ${MODE} and some are optional --\n"\ -"You will want at least the base and bsd sets.\n"\ -"Consult the intallation notes if you are not sure which sets are required!" -_osetsdone="$_setsdone" -# Set a minimal default -for _f in $_sets $_kernel; do - case "$_f" in - base*.tar.gz|base*.tgz|etc*.tar.gz|etc*.tgz|bsd|bsdofw) - if ! isin ${_f} ${_setsdone}; then - _get_files=`addel ${_f} ${_get_files}` - _setsdone=`addel ${_f} ${_setsdone}` - fi - ;; - esac -done - -# Allow the user to select/de-select additional sets -while : ; do - echo "" - echo "The following sets are available for extraction." - echo "Enter filename, \`list', \`all', or \`done'." - echo "You may de-select a set by prepending a '-' to its name." - echo "" - get_selection "$_sets $_kernel" - - if [ "X${resp}" = X"done" ]; then - break - elif [ "X${resp}" = X"list" ]; then - echo "" - echo "${1}:" - ( cd $1 && ls ) - continue - elif [ "X${resp}" = X"all" ]; then - _get_files="$_sets $_kernel" - _setsdone="$_sets $_kernel" - break - fi - - # Change +/- into add/remove - _action=add - case "$resp" in - +*) resp="${resp#?}" - ;; - -*) resp="${resp#?}" - _action=remove - ;; - esac - - # Major hack to allow the user to select globbing patterns - set -o noglob - _tfile=/tmp/install_case.$$ # safe in single user mode - cat >$_tfile << OOF - case \$_f in - $resp) # Add/remove file to extraction list - if [ "\$_action" = "add" ]; then - _get_files=\`addel \${_f} \${_get_files}\` - _setsdone=\`addel \${_f} \${_setsdone}\` - elif [ "\$_action" = "remove" ]; then - _get_files=\`rmel \${_f} \${_get_files}\` - _setsdone=\`rmel \${_f} \${_setsdone}\` - else - echo "Unknown action: \$_action" - fi - _matched=\$(( \$_matched + 1 )) - ;; - esac -OOF - set +o noglob - - # Eww. - _matched=0 - for _f in $_sets $_kernel; do - . $_tfile - done - rm -f $_tfile - - if [ $_matched = 0 ]; then - echo "File $1/$resp does not exist. Check to make" - echo "sure you entered the information properly or enter 'list' for a file list." - fi -done - -# User may have said "done" without selecting any files -if [ "X${_get_files}" = X"" ]; then - return -fi - -echo -echo -n "Ready to extract selected file sets? [y] " -getresp "y" -case "$resp" in - y*|Y*) - ;; - *) - _setsdone="$_osetsdone" - return - ;; -esac - -# Extract the files one at a time and keep track of which ones failed -while test -n "${_get_files}" ; do - _failed_files="" - for _f in $_get_files ; do - echo "" - echo "$1/${_f}:" - if [ "X${_f}" = "X${_kernel}" ]; then - cp $1/$_f /mnt/$_f - else - cat $1/$_f | (cd /mnt; tar -zxvpf -) - fi - if [ $? -ne 0 ]; then - # Mark xfer as having failed,. - _setsdone=`rmel $_f $_setsdone` - _failed_files="${_failed_files} ${_f}" - fi - done - - # Give them the option of retrying failed files. - _get_files="" - while test -n "${_failed_files}" ; do - echo "" - echo "The following files failed to extract correctly:" - echo "Choose which one(s) to retry or 'done' to exit selector." - echo "You may de-select a file by prepending a '-' to its name." - echo "" - get_selection "$_failed_files" - - if [ "X${resp}" = X"done" ]; then - break - elif [ "X${resp}" = X"list" ]; then - echo "" - echo "${1}:" - ( cd $1 && ls ) - echo "" - continue - fi - - # Change +/- into add/remove - _action=add - case "$resp" in - +*) resp="${resp#?}" - ;; - -*) resp="${resp#?}" - _action=remove - ;; - esac - - # Major hack to allow the user to select globbing patterns - set -o noglob - _tfile=/tmp/install_case.$$ # safe in single user mode - cat >$_tfile << OOF - case \$_f in - $resp) # Add/remove file to extraction list - if [ "\$_action" = "add" ]; then - _get_files=\`addel \${_f} \${_get_files}\` - _setsdone=\`addel \${_f} \${_setsdone}\` - elif [ "\$_action" = "remove" ]; then - _get_files=\`rmel \${_f} \${_get_files}\` - _setsdone=\`rmel \${_f} \${_setsdone}\` - else - echo "Unknown action: \$_action" - fi - _matched=\$(( \$_matched + 1 )) - ;; - esac -OOF - set +o noglob - - # Eww. - _matched=0 - for _f in $_failed_files; do - . $_tfile - done - rm -f $_tfile - - if [ $_matched = 0 ]; then - echo "File $1/$resp does not exist. Check to make" - echo "sure you entered the information properly or enter 'list' for a file list." - fi - done -done -} - -install_cdrom() { -local _drive -local _partition_range -local _partition -local _fstype -local _directory - -# Get the cdrom device info -cat << \__install_cdrom_1 - -The following CD-ROM devices are installed on your system; please select -the CD-ROM device containing the partition with the installation sets: - -__install_cdrom_1 -_CDDEVS=`md_get_cddevs` -echo "$_CDDEVS" -echo "" -echo -n "Which is the CD-ROM with the installation media? [abort] " -getresp "abort" -case "$resp" in - abort) - echo "Aborting." - return - ;; - - *) - if isin $resp $_CDDEVS ; then - _drive=$resp - else - echo "" - echo "The CD-ROM $resp does not exist." - echo "Aborting." - return - fi - ;; -esac - -# Get partition -_partition_range=`md_get_partition_range` -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "Partition? [c] " - getresp "c" - case "$resp" in - $_partition_range) - _partition=$resp - ;; - - *) - echo "Invalid response: $resp" - resp="" # force loop to repeat - ;; - esac -done - -# Ask for filesystem type -cat << \__install_cdrom_2 - -There are two CD-ROM filesystem types currently supported by this program: -cd9660 ISO-9660 -ffs Berkeley Fast Filesystem - -__install_cdrom_2 -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "Which filesystem type? [cd9660] " - getresp "cd9660" - case "$resp" in - cd9660|ffs) - _fstype=$resp - ;; - - *) - echo "Invalid response: $resp" - resp="" # force loop to repeat - ;; - esac -done - -# Mount the CD-ROM -if ! mount -t ${_fstype} -o ro \ - /dev/${_drive}${_partition} /mnt2 ; then - echo "Cannot mount CD-ROM drive. Aborting." - return -fi - -# Get the directory where the file lives -if [ "X${_directory}" = X"" ]; then - _directory="/${VERSION_MAJOR}.${VERSION_MINOR}/${ARCH}" -fi -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo "Enter the directory relative to the mount point that" - echo -n "contains the file. [${_directory}] " - getresp "${_directory}" -done -_directory=$resp - -install_from_mounted_fs /mnt2/${_directory} -umount -f /mnt2 > /dev/null 2>&1 -} - -mount_a_disk() { -# Mount a disk on /mnt2. The set of disk devices to choose from -# is $_DKDEVS. -# returns 0 on failure. - -local _drive -local _def_partition -local _partition_range -local _partition -local _fstype -local _fsopts -local _directory -local _md_fstype -local _md_fsopts - -getresp "abort" -case "$resp" in - abort) - echo "Aborting." - return 0 - ;; - - *) - if isin $resp $_DKDEVS ; then - _drive=$resp - else - echo "" - echo "The disk $resp does not exist." - echo "Aborting." - return 0 - fi - ;; -esac - -# Get partition -cat <<__mount_a_disk_1 - -The following partitions have been found on $_drive: - -__mount_a_disk_1 -disklabel $_drive 2>/dev/null | grep '^ .:' -echo -_likely_partition_range=`disklabel $_drive 2>/dev/null | \ - sed -n -e '/swap/s/.*//' -e '/unused/s/.*//' \ - -e '/^ .:/{s/^ \(.\).*/\1/;H;}' \ - -e '${g;s/\n//g;s/^/[/;s/$/]/p;}'` -_partition_range=`disklabel $_drive 2>/dev/null | \ - sed -n -e '/^ .:/{s/^ \(.\).*/\1/;H;}' \ - -e '${g;s/\n//g;s/^/[/;s/$/]/p;}'` -_def_partition=`echo $_likely_partition_range | \ - sed -n 's/^\[\(.\).*\]/\1/p'` -if [ -z "$_def_partition" ]; then - _def_partition=`echo $_partition_range | \ - sed -n 's/^\[\(.\).*\]/\1/p'` - if [ -z "$_def_partition" ]; then - echo "There are no usable partitions on that disk" - return 0 - fi -fi -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "Partition? [$_def_partition] " - getresp "$_def_partition" - case "$resp" in - $_partition_range) - _partition=$resp - ;; - - *) - echo "Invalid response: $resp" - resp="" # force loop to repeat - ;; - esac -done - -# Ask for filesystem type -cat << \__mount_a_disk_2 - -The following filesystem types are supported: -default (deduced from the disklabel) -ffs -__mount_a_disk_2 -_md_fstype=`md_native_fstype` -_md_fsopts=`md_native_fsopts` -if [ ! -z "$_md_fstype" ]; then - echo " $_md_fstype" -else - _md_fstype="_undefined_" -fi -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "Which filesystem type? [default] " - getresp "default" - case "$resp" in - default) - _fstype="" - _fsopts="ro" - ;; - ffs) - _fstype="-t $resp" - _fsopts="ro" - ;; - $_md_fstype) - _fstype="-t $resp" - _fsopts=$_md_fsopts - ;; - *) - echo "Invalid response: $resp" - resp="" # force loop to repeat - ;; - esac -done - -# Mount the disk -if ! mount $_fstype -o $_fsopts /dev/${_drive}${_partition} /mnt2; then - echo "Cannot mount disk. Aborting." - return 0 -fi -return 1 -} - -install_disk() { -local _directory - -cat << \__install_disk_1 - -The following disk devices are installed on your system; please select -the disk device containing the partition with the installation sets: - -__install_disk_1 -_DKDEVS=`md_get_diskdevs` -echo "$_DKDEVS" -echo "" -echo -n "Which is the disk with the installation sets? [abort] " - -if mount_a_disk ; then - return -fi - -# Get the directory where the file lives -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo "Enter the directory relative to the mount point that" - echo -n "contains the file. [${_directory}] " - getresp "${_directory}" -done -_directory=$resp - -install_from_mounted_fs /mnt2/${_directory} -umount -f /mnt2 > /dev/null 2>&1 -} - -install_nfs() { -# Get the IP address of the server -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "Server IP address or hostname? [${_nfs_server_ip}] " - getresp "${_nfs_server_ip}" -done -_nfs_server_ip=$resp - -# Get server path to mount -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "Filesystem on server to mount? [${_nfs_server_path}] " - getresp "${_nfs_server_path}" -done -_nfs_server_path=$resp - -# Determine use of TCP -echo -n "Use TCP transport (only works with capable NFS server)? [n] " -getresp "n" -case "$resp" in - y*|Y*) - _nfs_tcp="-T" - ;; - - *) - _nfs_tcp="" - ;; -esac - -# Mount the server -mkdir /mnt2 > /dev/null 2>&1 -if ! mount_nfs $_nfs_tcp ${_nfs_server_ip}:${_nfs_server_path} \ - /mnt2 ; then - echo "Cannot mount NFS server. Aborting." - return -fi - -# Get the directory where the file lives -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo "Enter the directory relative to the mount point that" - echo -n "contains the file. [${_nfs_directory}] " - getresp "${_nfs_directory}" -done -_nfs_directory=$resp - -install_from_mounted_fs /mnt2/${_nfs_directory} -umount -f /mnt2 > /dev/null 2>&1 -} - -install_tape() { -local _xcmd - -# Get the name of the tape from the user. -cat << \__install_tape_1 - -The installation program needs to know which tape device to use. Make -sure you use a "no rewind on close" device. - -__install_tape_1 -_tape=`basename $TAPE` -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "Name of tape device? [${_tape}] " - getresp "${_tape}" -done -_tape=`basename $resp` -TAPE="/dev/${_tape}" -if [ ! -c $TAPE ]; then - echo "$TAPE does not exist or is not a character special file." - echo "Aborting." - return -fi -export TAPE - -# Rewind the tape device -echo -n "Rewinding tape..." -if ! mt rewind ; then - echo "$TAPE may not be attached to the system or may not be" - echo "a tape device. Aborting." - return -fi -echo "done." - -# Get the file number -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "File number? " - getresp "" - case "$resp" in - [1-9]*) - _nskip=`expr $resp - 1` - ;; - - *) - echo "Invalid file number ${resp}." - resp="" # fore loop to repeat - ;; - esac -done - -# Skip to correct file. -echo -n "Skipping to source file..." -if [ "X${_nskip}" != X"0" ]; then - if ! mt fsf $_nskip ; then - echo "Could not skip $_nskip files. Aborting." - return - fi -fi -echo "done." - -cat << \__install_tape_2 - -There are 2 different ways the file can be stored on tape: - -1) an image of a gzipped tar file -2) a standard tar image - -__install_tape_2 -resp="" # force one iteration -while [ "X${resp}" = X"" ]; do - echo -n "Which way is it? [1] " - getresp "1" - case "$resp" in - 1) - _xcmd="tar -zxvpf -" - ;; - - 2) - _xcmd="tar -xvpf -" - ;; - - *) - echo "Invalid response: $resp." - resp="" # force loop to repeat - ;; - esac - ( cd /mnt; dd if=$TAPE | $_xcmd ) -done -echo "Extraction complete." -} - -get_timezone() { -local _a -local _zonepath - -# -# If the zoneinfo is not on the installation medium or on the -# installed filesystem, set TZ to GMT and return immediatly. -# -if [ ! -e /usr/share/zoneinfo -a ! -e /mnt/usr/share/zoneinfo ]; then - TZ=GMT - return -fi -if [ ! -d /usr/share/zoneinfo ]; then - _zonepath=/mnt -else - _zonepath="" -fi - -cat << \__get_timezone_1 - -Select a time zone for your location. Timezones are represented on the -system by a directory structure rooted in "/usr/share/timezone". Most -timezones can be selected by entering a token like "CET" or "GMT-6". -Other zones are grouped by continent, with detailed zone information -separated by a slash ("/"), e.g. "US/Pacific" or "Canada/Mountain". - -To get a listing of what's available in /usr/share/zoneinfo, enter "?" -at the prompts below. - -__get_timezone_1 -if [ X$TZ = X ]; then - TZ=`ls -l /mnt/etc/localtime 2>/dev/null | cutlast` - TZ=${TZ#/usr/share/zoneinfo/} -fi -while : ; do - echo -n "What timezone are you in [\`?' for list] [$TZ]? " - getresp "$TZ" - case "$resp" in - "") - echo "Timezone defaults to GMT" - TZ="GMT" - break; - ;; - "?") - ls -F ${_zonepath}/usr/share/zoneinfo - ;; - *) - _a=$resp - while [ -d ${_zonepath}/usr/share/zoneinfo/$_a ]; do - echo -n "There are several timezones available" - echo " within zone '$_a'" - echo -n "Select a sub-timezone [\`?' for list]: " - getresp "" - case "$resp" in - "?") ls -F ${_zonepath}/usr/share/zoneinfo/$_a ;; - *) _a=${_a}/${resp} - if [ -f ${_zonepath}/usr/share/zoneinfo/$_a ]; then - break; - fi - ;; - esac - done - if [ -f ${_zonepath}/usr/share/zoneinfo/$_a ]; then - TZ="$_a" - echo "You have selected timezone \"$_a\"". - return - fi - echo "'/usr/share/zoneinfo/$_a' is not a valid timezone on this system." - ;; - esac -done -} - -install_sets() -{ -local _yup -_yup="FALSE" - -# Ask the user which media to load the distribution from. -cat << \__install_sets_1 - -It is now time to extract the installation sets onto the hard disk. Make sure -the sets are either on a local device (i.e. tape, CD-ROM) or on a network -server. You will have the chance to repeat this step or to extract sets from -several places, so you don't have to try to load all the sets in one try and -can recover from some errors. - -__install_sets_1 - -if [ "X$local_sets_dir" != "X" ]; then - install_from_mounted_fs ${local_sets_dir} - if [ X"$_setsdone" != X ]; then - _yup="TRUE" - fi -fi - -# Go on prodding for alternate locations -resp="" # force at least one iteration -while [ X"${resp}" = X ]; do - # If _yup is not FALSE, it means that we extracted sets above. - # If that's the case, bypass the menu the first time. - if [ X"$_yup" = X"FALSE" ]; then - echo -n "Install from (f)tp, h(ttp), (t)ape, (C)D-ROM," - echo -n " (N)FS or local (d)isk? " - getresp "" - case "$resp" in - d*|D*) - install_disk - resp=d - ;; - f*|F*) - install_url ftp - resp=f - ;; - h*|H*) - install_url http - resp=h - ;; - t*|T*) - install_tape - resp=t - ;; - c*|C*) - install_cdrom - resp=c - ;; - n*|N*) - install_nfs - resp=n - ;; - *) - echo "Invalid response: $resp" - resp="" - ;; - esac - else - _yup="FALSE" # So we'll ask next time - fi - - if [ ! -f /mnt/bsd ]; then - cat << \__install_sets_2 - -You still do not have a /bsd in your filesystem (ie. the kernel), which -seems to indicate that you are still missing important distribution files. -So please continue installing... -__install_sets_2 - resp="" - fi - if [ ! -f /mnt/bin/cat ]; then - cat << \__install_sets_3 - -You still do not have a /bin/cat in your filesystem (ie. a sample random file -which you probably want). This seems to indicate that you are still missing -important distribution files. So please continue installing... -__install_sets_3 - resp="" - fi - - # Give the user the opportunity to extract more sets. They - # don't necessarily have to come from the same media. - echo "" - echo -n "Extract more sets? [n] " - getresp "n" - case "$resp" in - y*|Y*) - # Force loop to repeat - resp="" - ;; - - *) - ;; - esac -done -} - -munge_fstab() -{ -local _fstab -local _fstab_shadow -local _dev -local _mp -local _fstype -local _rest - -# Now that the 'real' fstab is configured, we munge it into a 'shadow' -# fstab which we'll use for mounting and unmounting all of the target -# filesystems relative to /mnt. Mount all filesystems. -_fstab=$1 -_fstab_shadow=$2 -( while read _dev _mp _fstype _rest; do - # Skip comment lines - case "$_dev" in - \#*) continue;; - *) ;; - esac - # and some filesystem types (like there are swap,kernfs,...) - case "$_fstype" in - ffs|ufs|nfs) ;; - *) continue;; - esac - if [ "$_mp" = "/" ]; then - echo $_dev /mnt $_fstype $_rest - else - echo $_dev /mnt$_mp $_fstype $_rest - fi - done ) < $_fstab > $_fstab_shadow -} - -mount_fs() -{ -# Must mount filesystems manually, one at a time, so we can make -# sure the mount points exist. -# $1 is a file in fstab format -local _fstab - -_fstab=$1 - -( while read line; do - set -- $line - _dev=$1 - _mp=$2 - _fstype=$3 - _opt=$4 - - # If not the root filesystem, make sure the mount - # point is present. - if [ "X{$_mp}" != X"/mnt" ]; then - mkdir -p $_mp - fi - - # Mount the filesystem. If the mount fails, exit - # with an error condition to tell the outer - # later to bail. - if ! mount -v -t $_fstype -o $_opt $_dev $_mp ; then - # error message displated by mount - exit 1 - fi -done ) < $_fstab - -if [ "X${?}" != X"0" ]; then - cat << \__mount_filesystems_1 - -FATAL ERROR: Cannot mount filesystems. Double-check your configuration -and restart the installation process. -__mount_filesystems_1 - exit -fi -} - -unmount_fs() -{ -# Unmount all filesystems and check their integrity. -# Usage: [-check] <fstab file> -local _check -local _fstab -local _pid - -if [ "$1" = "-check" ]; then - _check=1 - _fstab=$2 -else - _check=0 - _fstab=$1 -fi - -if [ ! \( -f $_fstab -a -s $_fstab \) ]; then - echo "fstab empty" > /dev/tty - return -fi - -( - _devs="" - _mps="" - # maintain reverse order - while read line; do - set -- $line - _devs="$1 ${_devs}" - _mps="$2 ${_mps}" - done - echo -n "Umounting filesystems... " - for _mp in ${_mps}; do - echo -n "${_mp} " - umount ${_mp} - done - echo "Done." - - if [ $_check = 1 ]; then - echo "Checking filesystem integrity..." - for _dev in ${_devs}; do - echo "${_dev}" - fsck -f ${_dev} - done - fi - echo "Done." -) < $_fstab -} - -check_fs() -{ -# Check filesystem integrity. -# $1 is a file in fstab format -local _fstab - -_fstab=$1 - -( - _devs="" - _mps="" - while read line; do - set -- $line - _devs="$1 ${_devs}" - _mps="$2 ${_mps}" - done - - echo "Checking filesystem integrity..." - for _dev in ${_devs}; do - echo "${_dev}" - fsck -f ${_dev} - done - echo "Done." -) < $_fstab -} diff --git a/distrib/powerpc/ramdisk/instbin.conf b/distrib/powerpc/ramdisk/instbin.conf deleted file mode 100644 index 43bfed53f50..00000000000 --- a/distrib/powerpc/ramdisk/instbin.conf +++ /dev/null @@ -1,34 +0,0 @@ -# $OpenBSD: instbin.conf,v 1.7 2001/06/26 23:50:38 drahn Exp $ -# -# instbin.conf - unified binary for the inst/upgr floppies -# - -srcdirs distrib/special -srcdirs usr.bin bin sbin usr.sbin gnu/usr.bin - -progs dd mount_cd9660 df dhclient mount mount_ext2fs sync restore newfs_msdos -progs stty ln disklabel pax ping cat ifconfig dmesg ls -progs less mount_nfs pdisk fdisk grep umount mount_msdos rsh fsck -progs scsi mknod route ftp mount_ffs reboot ed -progs cp gzip chmod fsck_ffs sort init newfs mount_kernfs -progs tip rm mt mkdir sed ksh sleep -progs mv expr test hostname -progs wicontrol ancontrol -progs mg - -ln mt eject -ln chmod chgrp -ln chmod chown -ln pax tar -ln pax cpio -ln less more -ln grep fgrep -ln grep egrep -ln reboot halt -ln gzip gunzip -ln gzip gzcat -ln ksh sh -ln ksh -sh -ln test [ - -libs -ledit -lutil -lcurses -ll -lm -lkvm -lz -lkrb -ldes diff --git a/distrib/powerpc/ramdisk/list b/distrib/powerpc/ramdisk/list deleted file mode 100644 index f24c1049954..00000000000 --- a/distrib/powerpc/ramdisk/list +++ /dev/null @@ -1,105 +0,0 @@ -# $OpenBSD: list,v 1.24 2001/08/29 15:01:17 krw Exp $ - -SRCDIRS distrib/special -SRCDIRS usr.bin bin sbin usr.sbin gnu/usr.bin -#SRCDIRS usr.bin/vi - -# copy the crunched binary, link to it, and kill it -COPY ${OBJDIR}/instbin instbin -LINK instbin bin/cat -LINK instbin bin/chmod bin/chgrp sbin/chown -LINK instbin bin/cp -LINK instbin bin/dd -LINK instbin bin/df -LINK instbin bin/ed -LINK instbin bin/expr -LINK instbin bin/hostname -LINK instbin bin/ln -LINK instbin bin/ls -LINK instbin bin/mkdir -LINK instbin bin/mt bin/eject -LINK instbin bin/mv -LINK instbin bin/pax bin/tar bin/cpio -LINK instbin bin/rm -LINK instbin bin/ksh bin/sh -ARGVLINK ksh -sh -LINK instbin bin/sleep -LINK instbin bin/stty -LINK instbin bin/sync -LINK instbin bin/test bin/[ -LINK instbin sbin/disklabel -LINK instbin sbin/ancontrol -LINK instbin sbin/pdisk -LINK instbin sbin/fdisk -LINK instbin sbin/fsck -LINK instbin sbin/fsck_ffs -LINK instbin sbin/reboot sbin/halt -LINK instbin sbin/ifconfig -LINK instbin sbin/init -LINK instbin sbin/dhclient -LINK instbin sbin/dmesg -LINK instbin sbin/mknod -LINK instbin sbin/mount -LINK instbin sbin/mount_cd9660 -LINK instbin sbin/mount_ffs -LINK instbin sbin/mount_msdos -LINK instbin sbin/mount_nfs -LINK instbin sbin/mount_kernfs -LINK instbin sbin/mount_ext2fs -LINK instbin sbin/newfs -LINK instbin sbin/newfs_msdos -LINK instbin sbin/ping -LINK instbin sbin/restore -LINK instbin sbin/route -#LINK instbin sbin/slattach -LINK instbin sbin/scsi -LINK instbin sbin/umount -LINK instbin sbin/wicontrol -LINK instbin usr/bin/grep usr/bin/fgrep usr/bin/egrep -LINK instbin usr/bin/mg -LINK instbin usr/bin/ftp -LINK instbin usr/bin/gzip usr/bin/gunzip usr/bin/gzcat -LINK instbin usr/bin/less usr/bin/more -LINK instbin usr/bin/rsh -LINK instbin usr/bin/sed -LINK instbin usr/bin/sort -LINK instbin usr/bin/tip -LINK instbin usr/sbin/chat -#SYMLINK ../../instbin usr/bin/build usr/bin/vi - -# copy the MAKEDEV script and make some devices -COPY ${DESTDIR}/dev/MAKEDEV dev/MAKEDEV -SPECIAL cd dev; sh MAKEDEV ramdisk -#SPECIAL /bin/rm dev/MAKEDEV - -# we need the contents of /usr/mdec -COPY ${DESTDIR}/usr/mdec/ofwboot usr/mdec/ofwboot -COPY ${DESTDIR}/usr/mdec/mbr usr/mdec/mbr -COPY ${DESTDIR}/usr/mdec/msdos1mb.gz usr/mdec/msdos1mb.gz - -# various files that we need in /etc for the install -COPY ${DESTDIR}/etc/group etc/group -COPY ${DESTDIR}/etc/protocols etc/protocols -COPY ${DESTDIR}/etc/services etc/services -COPY ${DESTDIR}/etc/spwd.db etc/spwd.db -COPY ${DESTDIR}/etc/disktab etc/disktab -SYMLINK /tmp/disktab.shadow etc/disktab -SYMLINK /tmp/fstab.shadow etc/fstab -SYMLINK /tmp/resolv.conf.shadow etc/resolv.conf -SYMLINK /tmp/hosts etc/hosts - -# dhcp things -COPY ${DESTDIR}/sbin/dhclient-script sbin/dhclient-script - -# and the common installation tools -COPY ${TOPDIR}/common/termcap.vt usr/share/misc/termcap -#COPY ${DESTDIR}/usr/share/misc/scsi_modes usr/share/misc/scsi_modes - -# and the installation tools -COPY dot.profile .profile -SPECIAL sed -e '/^[ ]*#[ ].*$/d' -e '/^[ ]*#$/d' -e "s/^ARCH=ARCH$/ARCH=`arch -s`/" < ${CURDIR}/install.md > install.md -COPY ${CURDIR}/../../miniroot/install.sh install -COPY ${CURDIR}/../../miniroot/upgrade.sh upgrade -#SPECIAL sed "/^VERSION=/s/=.*/=${REV}/" < ${CURDIR}/install.sub > install.sub -SPECIAL sed "/^VERSION=/s/=.*/=${REV}/" < ${CURDIR}/../../miniroot/install.sub > install.sub -SPECIAL chmod 755 install upgrade diff --git a/distrib/powerpc/ramdisk/mtree.conf b/distrib/powerpc/ramdisk/mtree.conf deleted file mode 100644 index 3ba422240e0..00000000000 --- a/distrib/powerpc/ramdisk/mtree.conf +++ /dev/null @@ -1,90 +0,0 @@ -# $OpenBSD: mtree.conf,v 1.4 2001/06/23 19:44:54 deraadt Exp $ - -/set type=dir uname=root gname=wheel mode=0755 -# . -. - -# ./bin -bin -# ./bin -.. - -# ./dev -dev -# ./dev -.. - -# ./etc -etc - -# ./etc -.. - -# ./mnt -mnt -# ./mnt -.. - -# ./mnt2 -mnt2 -# ./mnt2 -.. - -# ./sbin -sbin -# ./sbin -.. - -# ./tmp -tmp mode=01777 -# ./tmp -.. - -# ./usr -usr - -# ./usr/bin -bin -# ./usr/bin -.. - -# ./usr/mdec -mdec -# ./usr/mdec -.. - -# ./usr/sbin -sbin -# ./usr/sbin -.. - -# ./usr/share -share - -# ./usr/share/misc -misc -# ./usr/share/misc -.. - -# ./usr/share -.. - -# ./usr -.. - -# ./var -var - -# ./var/tmp -tmp mode=0177 - -# ./var/tmp -.. - -# ./var/db -db -# ./var/db -.. - -# ./var -.. |