1#!/bin/sh 2#- 3# Copyright (c) 2013 Nathan Whitehorn 4# All rights reserved. 5# 6# Redistribution and use in source and binary forms, with or without 7# modification, are permitted provided that the following conditions 8# are met: 9# 1. Redistributions of source code must retain the above copyright 10# notice, this list of conditions and the following disclaimer. 11# 2. Redistributions in binary form must reproduce the above copyright 12# notice, this list of conditions and the following disclaimer in the 13# documentation and/or other materials provided with the distribution. 14# 15# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 16# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 17# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 18# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 19# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 20# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 21# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 23# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 24# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 25# SUCH DAMAGE. 26# 27# $FreeBSD$ 28 29# VARIABLES: 30# PARTITIONS 31# DISTRIBUTIONS 32# BSDINSTALL_DISTDIR 33 34error() { 35 test -f $PATH_FSTAB && bsdinstall umount 36 echo "Installation Error!" 37 cat $BSDINSTALL_LOG 38 echo "Installation Error!" 39 exit 1 40} 41 42set -e 43trap error EXIT 44 45SCRIPT="$1" 46shift 47 48echo "Begun Installation at $(date)" > $BSDINSTALL_LOG 49rm -rf $BSDINSTALL_TMPETC 50mkdir $BSDINSTALL_TMPETC 51 52split -a 2 -p '^#!.*' "$SCRIPT" /tmp/bsdinstall-installscript- 53 54. /tmp/bsdinstall-installscript-aa 55: ${DISTRIBUTIONS="kernel.txz base.txz"}; export DISTRIBUTIONS 56export BSDINSTALL_DISTDIR 57 58# Make partitions 59rm -f $PATH_FSTAB 60touch $PATH_FSTAB 61bsdinstall scriptedpart "$PARTITIONS" 62bsdinstall mount 63 64# Unpack distributions 65bsdinstall checksum 66bsdinstall distextract 67 68# Finalize install 69bsdinstall config 70 71# Make sure networking is functional, if we can arrange that 72if [ ! -f $BSDINSTALL_CHROOT/etc/resolv.conf -a -f /etc/resolv.conf ]; then 73 cp /etc/resolv.conf $BSDINSTALL_CHROOT/etc/resolv.conf 74fi 75 76# Run post-install script 77if [ -f /tmp/bsdinstall-installscript-ab ]; then 78 cp /tmp/bsdinstall-installscript-ab $BSDINSTALL_CHROOT/tmp/installscript 79 chmod a+x $BSDINSTALL_CHROOT/tmp/installscript 80 mount -t devfs devfs "$BSDINSTALL_CHROOT/dev" 81 chroot $BSDINSTALL_CHROOT /tmp/installscript $@ 2>&1 82 umount "$BSDINSTALL_CHROOT/dev" 83 rm $BSDINSTALL_CHROOT/tmp/installscript 84fi 85 86bsdinstall umount 87 88echo "Installation Completed at $(date)" >> $BSDINSTALL_LOG 89 90trap true EXIT 91