summaryrefslogtreecommitdiffstats
path: root/usr/sbin/pc-sysinstall/backend
diff options
context:
space:
mode:
authorErmal LUÇI <eri@pfsense.org>2015-06-15 16:42:10 +0200
committerErmal LUÇI <eri@pfsense.org>2015-06-15 16:42:10 +0200
commitf80e099f20ba464f105b60a75b84d7d4675c3bde (patch)
tree569671c1df2cd037dccb1b81440b17a88c84902c /usr/sbin/pc-sysinstall/backend
parentd20f28db6212090f174e828f766871e68cf84c11 (diff)
downloadpfsense-f80e099f20ba464f105b60a75b84d7d4675c3bde.zip
pfsense-f80e099f20ba464f105b60a75b84d7d4675c3bde.tar.gz
Remove pc-sysinstall since it was never finished and probably will be not the choice. If needed can be resurrected
Diffstat (limited to 'usr/sbin/pc-sysinstall/backend')
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/Makefile15
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-bsdlabel.sh819
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-cleanup.sh418
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-disk.sh827
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-extractimage.sh457
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-ftp.sh417
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-installcomponents.sh167
-rw-r--r--usr/sbin/pc-sysinstall/backend/functions-installpackages.sh125
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-localize.sh511
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-mountdisk.sh191
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-mountoptical.sh153
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-networking.sh357
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-newfs.sh217
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-packages.sh376
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-parse.sh232
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-runcommands.sh110
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-unmount.sh209
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-upgrade.sh247
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions-users.sh175
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/functions.sh497
-rw-r--r--usr/sbin/pc-sysinstall/backend/installimage.sh34
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/parseconfig.sh120
-rwxr-xr-xusr/sbin/pc-sysinstall/backend/startautoinstall.sh136
23 files changed, 0 insertions, 6810 deletions
diff --git a/usr/sbin/pc-sysinstall/backend/Makefile b/usr/sbin/pc-sysinstall/backend/Makefile
deleted file mode 100755
index 2b4693d..0000000
--- a/usr/sbin/pc-sysinstall/backend/Makefile
+++ /dev/null
@@ -1,15 +0,0 @@
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/Makefile,v 1.6 2010/09/08 20:10:24 imp Exp $
-
-FILES= functions-bsdlabel.sh functions-cleanup.sh functions-disk.sh \
- functions-extractimage.sh functions-ftp.sh functions-installcomponents.sh \
- functions-installpackages.sh functions-localize.sh functions-mountdisk.sh \
- functions-mountoptical.sh functions-networking.sh \
- functions-newfs.sh functions-packages.sh functions-parse.sh \
- functions-runcommands.sh functions-unmount.sh \
- functions-upgrade.sh functions-users.sh \
- functions.sh parseconfig.sh startautoinstall.sh installimage.sh
-FILESMODE= ${BINMODE}
-FILESDIR=${SHAREDIR}/pc-sysinstall/backend
-NO_OBJ=
-
-.include <bsd.prog.mk>
diff --git a/usr/sbin/pc-sysinstall/backend/functions-bsdlabel.sh b/usr/sbin/pc-sysinstall/backend/functions-bsdlabel.sh
deleted file mode 100755
index 25dfcc5..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-bsdlabel.sh
+++ /dev/null
@@ -1,819 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh,v 1.9 2010/10/21 22:46:10 imp Exp $
-
-# Functions related to disk operations using bsdlabel
-
-# Check if we are are provided a geli password on the nextline of the config
-check_for_enc_pass()
-{
- CURLINE="${1}"
-
- get_next_cfg_line "${CFGF}" "${CURLINE}"
- echo ${VAL} | grep "^encpass=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- # Found a password, return it
- get_value_from_string "${VAL}"
- return
- fi
-
- VAL="" ; export VAL
- return
-};
-
-# On check on the disk-label line if we have any extra vars for this device
-# Only enabled for ZFS devices now, may add other xtra options in future for other FS's
-get_fs_line_xvars()
-{
- ACTIVEDEV="${1}"
- LINE="${2}"
-
- echo $LINE | grep ' (' >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
-
- # See if we are looking for ZFS specific options
- echo $LINE | grep '^ZFS' >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- ZTYPE="NONE"
- ZFSVARS="`echo $LINE | cut -d '(' -f 2- | cut -d ')' -f 1 | xargs`"
-
- echo $ZFSVARS | grep -E "^(disk|file|mirror|raidz(1|2)?|spare|log|cache):" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- ZTYPE=`echo $ZFSVARS | cut -f1 -d:`
- ZFSVARS=`echo $ZFSVARS | sed "s|$ZTYPE: ||g" | sed "s|$ZTYPE:||g"`
- fi
-
- # Return the ZFS options
- if [ "${ZTYPE}" = "NONE" ] ; then
- VAR="${ACTIVEDEV} ${ZFSVARS}"
- else
- VAR="${ZTYPE} ${ACTIVEDEV} ${ZFSVARS}"
- fi
- export VAR
- return
- fi # End of ZFS block
-
- fi # End of xtra-options block
-
- # If we got here, set VAR to empty and export
- VAR=""
- export VAR
- return
-};
-
-# Init each zfs mirror disk with a boot sector so we can failover
-setup_zfs_mirror_parts()
-{
- _nZFS=""
-
- # Using mirroring, setup boot partitions on each disk
- _mirrline="`echo ${1} | sed 's|mirror ||g'`"
- for _zvars in $_mirrline
- do
- echo "Looping through _zvars: $_zvars" >>${LOGOUT}
- echo "$_zvars" | grep "${2}" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then continue ; fi
- if [ -z "$_zvars" ] ; then continue ; fi
-
- is_disk "$_zvars" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- echo "Setting up ZFS mirror disk $_zvars" >>${LOGOUT}
- init_gpt_full_disk "$_zvars" >/dev/null 2>/dev/null
- rc_halt "gpart bootcode -p /boot/gptzfsboot -i 1 ${_zvars}" >/dev/null 2>/dev/null
- rc_halt "gpart add -t freebsd-zfs ${_zvars}" >/dev/null 2>/dev/null
- _nZFS="$_nZFS ${_zvars}p2"
- else
- _nZFS="$_nZFS ${_zvars}"
- fi
- done
- echo "mirror $2 `echo $_nZFS | tr -s ' '`"
-} ;
-
-# Function which creates a unique label name for the specified mount
-gen_glabel_name()
-{
- MOUNT="$1"
- TYPE="$2"
- NUM="0"
- MAXNUM="20"
-
- # Check if we are doing /, and rename it
- if [ "$MOUNT" = "/" ]
- then
- NAME=`cat /etc/inc/globals.inc | grep product_name | awk '{ print $3 }' | cut -d'"' -f2`
- else
- # If doing a swap partition, also rename it
- if [ "${TYPE}" = "SWAP" ]
- then
- NAME="swap"
- else
- NAME="`echo $MOUNT | sed 's|/||g' | sed 's| ||g'`"
- fi
- fi
-
- # Loop through and break when we find our first available label
- while
- Z=1
- do
- glabel status | grep "${NAME}${NUM}" >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- break
- else
- NUM="`expr ${NUM} + 1`"
- fi
-
- if [ $NUM -gt $MAXNUM ]
- then
- exit_err "Cannot allocate additional glabel name for $NAME"
- break
- fi
- done
-
-
- VAL="${NAME}${NUM}"
- export VAL
-};
-
-# Function to setup / stamp a legacy MBR bsdlabel
-setup_mbr_partitions()
-{
- DISKTAG="$1"
- WRKSLICE="$2"
- FOUNDPARTS="1"
-
- # Lets setup the BSDLABEL
- BSDLABEL="${TMPDIR}/bsdLabel-${WRKSLICE}"
- export BSDLABEL
- rm $BSDLABEL >/dev/null 2>/dev/null
- echo "# /dev/${WRKSLICE}" >>$BSDLABEL
- echo "8 partitions:" >>$BSDLABEL
- echo "# size offset fstype bsize bps/cpg" >>$BSDLABEL
-
- PARTLETTER="a"
-
- # Lets read in the config file now and populate this
- while read line
- do
- # Check for data on this slice
- echo $line | grep "^${DISKTAG}-part=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Found a slice- entry, lets get the slice info
- get_value_from_string "${line}"
- STRING="$VAL"
- FOUNDPARTS="0"
-
- # We need to split up the string now, and pick out the variables
- FS=`echo $STRING | tr -s '\t' ' ' | cut -d ' ' -f 1`
- SIZE=`echo $STRING | tr -s '\t' ' ' | cut -d ' ' -f 2`
- MNT=`echo $STRING | tr -s '\t' ' ' | cut -d ' ' -f 3`
-
- if echo $STRING | grep -E '^/.+' >/dev/null 2>&1
- then
- IMAGE=`echo ${STRING} | cut -f1 -d' '`
- fi
-
- # Check if we have a .eli extension on this FS
- echo ${FS} | grep ".eli" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- FS="`echo ${FS} | cut -d '.' -f 1`"
- ENC="ON"
- check_for_enc_pass "${line}"
- if [ "${VAL}" != "" ] ; then
- # We have a user supplied password, save it for later
- ENCPASS="${VAL}"
- fi
- else
- ENC="OFF"
- fi
-
- # Check if the user tried to setup / as an encrypted partition
- check_for_mount "${MNT}" "/"
- if [ "${?}" = "0" -a "${ENC}" = "ON" ]
- then
- USINGENCROOT="0" ; export USINGENCROOT
- fi
-
- if [ -n "${IMAGE}" ]
- then
- FS="IMAGE"
- SIZE=`ls -l "${IMAGE}" | awk '{ print $5 }'`
- MNT=`echo $STRING | tr -s '\t' ' ' | cut -d ' ' -f 2`
- SIZE=`convert_byte_to_megabyte $SIZE`
- fi
-
- # Now check that these values are sane
- case $FS in
- UFS|UFS+S|UFS+J|UFS+SUJ|ZFS|SWAP|IMAGE) ;;
- *) exit_err "ERROR: Invalid file system specified on $line" ;;
- esac
-
- # Check that we have a valid size number
- expr $SIZE + 1 >/dev/null 2>/dev/null
- if [ "$?" != "0" ]; then
- exit_err "ERROR: The size specified on $line is invalid"
- fi
-
- # Check that the mount-point starts with /
- echo "$MNT" | grep -e "^/" -e "^none" >/dev/null 2>/dev/null
- if [ "$?" != "0" ]; then
- exit_err "ERROR: The mount-point specified on $line is invalid"
- fi
-
- if [ "$SIZE" = "0" ]
- then
- SOUT="*"
- else
- SOUT="${SIZE}M"
- fi
-
- # OK, we passed all tests, now lets put these values into a config
- # If the part
- if [ "${PARTLETTER}" = "a" ]
- then
- if [ "$FS" = "SWAP" ]
- then
- echo "a: ${SOUT} * swap 0 0" >>${BSDLABEL}
- else
- echo "a: ${SOUT} 0 4.2BSD 0 0" >>${BSDLABEL}
- fi
-
- # Check if we found a valid root partition
- check_for_mount "${MNT}" "/"
- if [ "$?" = "0" ] ; then
- FOUNDROOT="0" ; export FOUNDROOT
- fi
-
- # Check if we have a "/boot" instead
- check_for_mount "${MNT}" "/boot"
- if [ "${?}" = "0" ] ; then
- USINGBOOTPART="0" ; export USINGBOOTPART
- if [ "${FS}" != "UFS" -a "${FS}" != "UFS+S" -a "${FS}" != "UFS+J" -a "${FS}" != "UFS+SUJ" ]
- then
- exit_err "/boot partition must be formatted with UFS"
- fi
- fi
-
- else
- # Done with the a: partitions
-
- # Check if we found a valid root partition not on a:
- check_for_mount "${MNT}" "/"
- if [ "${?}" = "0" ] ; then
- FOUNDROOT="1" ; export FOUNDROOT
- fi
-
- # Check if we have a /boot partition, and fail since its not first
- check_for_mount "${MNT}" "/boot"
- if [ "${?}" = "0" ] ; then
- exit_err "/boot partition must be first partition"
- fi
-
-
- if [ "$FS" = "SWAP" ]
- then
- echo "${PARTLETTER}: ${SOUT} * swap" >>${BSDLABEL}
- else
- echo "${PARTLETTER}: ${SOUT} * 4.2BSD" >>${BSDLABEL}
- fi
- fi
-
- # Generate a unique label name for this mount
- gen_glabel_name "${MNT}" "${FS}"
- PLABEL="${VAL}"
-
- # Get any extra options for this fs / line
- get_fs_line_xvars "${WRKSLICE}${PARTLETTER}" "${STRING}"
- XTRAOPTS="${VAR}"
-
- # Check if using zfs mirror
- echo ${XTRAOPTS} | grep "mirror" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- XTRAOPTS=$(setup_zfs_mirror_parts "$XTRAOPTS" "${WRKSLICE}${PARTLETTER}")
- fi
-
- # Save this data to our partition config dir
- echo "${FS}:${MNT}:${ENC}:${PLABEL}:MBR:${XTRAOPTS}:${IMAGE}" >${PARTDIR}/${WRKSLICE}${PARTLETTER}
-
- # If we have a enc password, save it as well
- if [ ! -z "${ENCPASS}" ] ; then
- echo "${ENCPASS}" >${PARTDIR}-enc/${WRKSLICE}${PARTLETTER}-encpass
- fi
-
- # This partition letter is used, get the next one
- case ${PARTLETTER} in
- a) PARTLETTER="b" ;;
- b) # When we hit b, add the special c: setup for bsdlabel
- echo "c: * * unused" >>${BSDLABEL}
- PARTLETTER="d" ;;
- d) PARTLETTER="e" ;;
- e) PARTLETTER="f" ;;
- f) PARTLETTER="g" ;;
- g) PARTLETTER="h" ;;
- h) PARTLETTER="ERR" ;;
- *) exit_err "ERROR: bsdlabel only supports up to letter h for partitions." ;;
- esac
-
- unset IMAGE
-
- fi # End of subsection locating a slice in config
-
- echo $line | grep "^commitDiskLabel" >/dev/null 2>/dev/null
- if [ "$?" = "0" -a "${FOUNDPARTS}" = "0" ]
- then
- # Found our flag to commit this label setup, check that we found at least 1 partition and do it
- if [ "${PARTLETTER}" != "a" ]
- then
- # Check if we only had 1 partition, and make sure we add "c:" section to label
- if [ "${PARTLETTER}" = "b" ]
- then
- echo "c: * * unused" >>${BSDLABEL}
- fi
-
- echo "bsdlabel -R -B /dev/${WRKSLICE} ${BSDLABEL}"
- bsdlabel -R -B ${WRKSLICE} ${BSDLABEL}
-
- break
- else
- exit_err "ERROR: commitDiskLabel was called without any partition entries for it!"
- fi
- fi
- done <${CFGF}
-};
-
-# Function to setup partitions using gpt
-setup_gpt_partitions()
-{
- DISKTAG="$1"
- DISK="$2"
- FOUNDPARTS="1"
-
- # Lets read in the config file now and setup our GPT partitions
- CURPART="2"
- while read line
- do
- # Check for data on this slice
- echo $line | grep "^${DISKTAG}-part=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- FOUNDPARTS="0"
- # Found a slice- entry, lets get the slice info
- get_value_from_string "${line}"
- STRING="$VAL"
-
- # We need to split up the string now, and pick out the variables
- FS=`echo $STRING | tr -s '\t' ' ' | cut -d ' ' -f 1`
- SIZE=`echo $STRING | tr -s '\t' ' ' | cut -d ' ' -f 2`
- MNT=`echo $STRING | tr -s '\t' ' ' | cut -d ' ' -f 3`
-
- # Check if we have a .eli extension on this FS
- echo ${FS} | grep ".eli" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- FS="`echo ${FS} | cut -d '.' -f 1`"
- ENC="ON"
- check_for_enc_pass "${line}"
- if [ "${VAL}" != "" ] ; then
- # We have a user supplied password, save it for later
- ENCPASS="${VAL}"
- fi
- else
- ENC="OFF"
- fi
-
- # Check if the user tried to setup / as an encrypted partition
- check_for_mount "${MNT}" "/"
- if [ "${?}" = "0" -a "${ENC}" = "ON" ]
- then
- USINGENCROOT="0" ; export USINGENCROOT
- fi
-
- # Now check that these values are sane
- case $FS in
- UFS|UFS+S|UFS+J|UFS+SUJ|ZFS|SWAP) ;;
- *) exit_err "ERROR: Invalid file system specified on $line" ;;
- esac
-
- # Check that we have a valid size number
- expr $SIZE + 1 >/dev/null 2>/dev/null
- if [ "$?" != "0" ]; then
- exit_err "ERROR: The size specified on $line is invalid"
- fi
-
- # Check that the mount-point starts with /
- echo "$MNT" | grep -e "^/" -e "^none" >/dev/null 2>/dev/null
- if [ "$?" != "0" ]; then
- exit_err "ERROR: The mount-point specified on $line is invalid"
- fi
-
- if [ "$SIZE" = "0" ]
- then
- SOUT=""
- else
- SOUT="-s ${SIZE}M"
- fi
-
- # Check if we found a valid root partition
- check_for_mount "${MNT}" "/"
- if [ "${?}" = "0" ] ; then
- if [ "${CURPART}" = "2" ] ; then
- FOUNDROOT="0" ; export FOUNDROOT
- else
- FOUNDROOT="1" ; export FOUNDROOT
- fi
- fi
-
- check_for_mount "${MNT}" "/boot"
- if [ "${?}" = "0" ] ; then
- if [ "${CURPART}" = "2" ] ; then
- USINGBOOTPART="0" ; export USINGBOOTPART
- if [ "${FS}" != "UFS" -a "${FS}" != "UFS+S" -a "${FS}" != "UFS+J" -a "${FS}" != "UFS+SUJ" ]
- then
- exit_err "/boot partition must be formatted with UFS"
- fi
- else
- exit_err "/boot partition must be first partition"
- fi
- fi
-
- # Generate a unique label name for this mount
- gen_glabel_name "${MNT}" "${FS}"
- PLABEL="${VAL}"
-
- # Get any extra options for this fs / line
- get_fs_line_xvars "${DISK}p${CURPART}" "${STRING}"
- XTRAOPTS="${VAR}"
-
- # Check if using zfs mirror
- echo ${XTRAOPTS} | grep "mirror" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- XTRAOPTS=$(setup_zfs_mirror_parts "$XTRAOPTS" "${DISK}p${CURPART}")
- fi
-
- # Figure out the gpart type to use
- case ${FS} in
- ZFS) PARTYPE="freebsd-zfs" ;;
- SWAP) PARTYPE="freebsd-swap" ;;
- *) PARTYPE="freebsd-ufs" ;;
- esac
-
- # Create the partition
- rc_halt "gpart add ${SOUT} -t ${PARTYPE} ${DISK}"
-
- # Check if this is a root / boot partition, and stamp the right loader
- for TESTMNT in `echo ${MNT} | sed 's|,| |g'`
- do
- if [ "${TESTMNT}" = "/" -a -z "${BOOTTYPE}" ] ; then
- BOOTTYPE="${PARTYPE}"
- fi
- if [ "${TESTMNT}" = "/boot" ] ; then
- BOOTTYPE="${PARTYPE}"
- fi
- done
-
- # Save this data to our partition config dir
- echo "${FS}:${MNT}:${ENC}:${PLABEL}:GPT:${XTRAOPTS}" >${PARTDIR}/${DISK}p${CURPART}
-
- # Clear out any headers
- sleep 2
- dd if=/dev/zero of=${DISK}p${CURPART} count=2048 >/dev/null 2>/dev/null
-
- # If we have a enc password, save it as well
- if [ ! -z "${ENCPASS}" ] ; then
- echo "${ENCPASS}" >${PARTDIR}-enc/${DISK}p${CURPART}-encpass
- fi
-
- # Increment our parts counter
- CURPART="`expr ${CURPART} + 1`"
-
- fi # End of subsection locating a slice in config
-
- echo $line | grep "^commitDiskLabel" >/dev/null 2>/dev/null
- if [ "$?" = "0" -a "${FOUNDPARTS}" = "0" ]
- then
-
- # If this is the boot disk, stamp the right gptboot
- if [ ! -z "${BOOTTYPE}" ] ; then
- case ${BOOTTYPE} in
- freebsd-ufs) rc_halt "gpart bootcode -p /boot/gptboot -i 1 ${DISK}" ;;
- freebsd-zfs) rc_halt "gpart bootcode -p /boot/gptzfsboot -i 1 ${DISK}" ;;
- esac
- fi
-
-
- # Found our flag to commit this label setup, check that we found at least 1 partition
- if [ "${CURPART}" = "2" ] ; then
- exit_err "ERROR: commitDiskLabel was called without any partition entries for it!"
- fi
-
- break
- fi
- done <${CFGF}
-};
-
-# Reads through the config and sets up a BSDLabel for the given slice
-populate_disk_label()
-{
- if [ -z "${1}" ]
- then
- exit_err "ERROR: populate_disk_label() called without argument!"
- fi
-
- # Set some vars from the given working slice
- disk="`echo $1 | cut -d '-' -f 1`"
- slicenum="`echo $1 | cut -d '-' -f 2`"
- type="`echo $1 | cut -d '-' -f 3`"
-
- # Set WRKSLICE based upon format we are using
- if [ "$type" = "mbr" ] ; then
- wrkslice="${disk}s${slicenum}"
- fi
- if [ "$type" = "gpt" ] ; then
- wrkslice="${disk}p${slicenum}"
- fi
-
- if [ -e "${SLICECFGDIR}/${wrkslice}" ]
- then
- disktag="`cat ${SLICECFGDIR}/${wrkslice}`"
- else
- exit_err "ERROR: Missing SLICETAG data. This shouldn't happen - please let the developers know"
- fi
-
- # Using Traditional MBR for dual-booting
- if [ "$type" = "mbr" ] ; then
- setup_mbr_partitions "${disktag}" "${wrkslice}"
- fi
-
- # Using entire disk mode, use GPT for this
- if [ "$type" = "gpt" ] ; then
- setup_gpt_partitions "${disktag}" "${disk}"
- fi
-
-};
-
-# Function which reads in the disk slice config, and performs it
-setup_disk_label()
-{
- # We are ready to start setting up the label, lets read the config and do the actions
- # First confirm that we have a valid WORKINGSLICES
- if [ -z "${WORKINGSLICES}" ]; then
- exit_err "ERROR: No slices were setup! Please report this to the maintainers"
- fi
-
- # Check that the slices we have did indeed get setup and gpart worked
- for i in $WORKINGSLICES
- do
- disk="`echo $i | cut -d '-' -f 1`"
- pnum="`echo $i | cut -d '-' -f 2`"
- type="`echo $i | cut -d '-' -f 3`"
- if [ "$type" = "mbr" -a ! -e "/dev/${disk}s${pnum}" ] ; then
- exit_err "ERROR: The partition ${i} doesn't exist! gpart failure!"
- fi
- if [ "$type" = "gpt" -a ! -e "/dev/${disk}p${pnum}" ] ; then
- exit_err "ERROR: The partition ${i} doesn't exist! gpart failure!"
- fi
- done
-
- # Setup some files which we'll be referring to
- LABELLIST="${TMPDIR}/workingLabels"
- export LABELLIST
- rm $LABELLIST >/dev/null 2>/dev/null
-
- # Set our flag to determine if we've got a valid root partition in this setup
- FOUNDROOT="-1"
- export FOUNDROOT
-
- # Check if we are using a /boot partition
- USINGBOOTPART="1"
- export USINGBOOTPART
-
- # Set encryption on root check
- USINGENCROOT="1" ; export USINGENCROOT
-
- # Make the tmp directory where we'll store FS info & mount-points
- rm -rf ${PARTDIR} >/dev/null 2>/dev/null
- mkdir -p ${PARTDIR} >/dev/null 2>/dev/null
- rm -rf ${PARTDIR}-enc >/dev/null 2>/dev/null
- mkdir -p ${PARTDIR}-enc >/dev/null 2>/dev/null
-
- for i in $WORKINGSLICES
- do
- populate_disk_label "${i}"
- done
-
- # Check if we made a root partition
- if [ "$FOUNDROOT" = "-1" ]
- then
- exit_err "ERROR: No root (/) partition specified!!"
- fi
-
- # Check if we made a root partition
- if [ "$FOUNDROOT" = "1" -a "${USINGBOOTPART}" != "0" ]
- then
- exit_err "ERROR: (/) partition isn't first partition on disk!"
- fi
-
- if [ "${USINGENCROOT}" = "0" -a "${USINGBOOTPART}" != "0" ]
- then
- exit_err "ERROR: Can't encrypt (/) with no (/boot) partition!"
- fi
-};
-
-check_fstab_mbr()
-{
- local SLICE
- local FSTAB
-
- if [ -z "$2" ]
- then
- return 1
- fi
-
- SLICE="$1"
- FSTAB="$2/etc/fstab"
-
- if [ -f "${FSTAB}" ]
- then
- PARTLETTER=`echo "$SLICE" | sed -E 's|^.+([a-h])$|\1|'`
-
- cat "${FSTAB}" | awk '{ print $2 }' | grep -E '^/$' >/dev/null 2>&1
- if [ "$?" = "0" ]
- then
- if [ "${PARTLETTER}" = "a" ]
- then
- FOUNDROOT="0"
- else
- FOUNDROOT="1"
- fi
-
- ROOTIMAGE="1"
-
- export FOUNDROOT
- export ROOTIMAGE
- fi
-
- cat "${FSTAB}" | awk '{ print $2 }' | grep -E '^/boot$' >/dev/null 2>&1
- if [ "$?" = "0" ]
- then
- if [ "${PARTLETTER}" = "a" ]
- then
- USINGBOOTPART="0"
- else
- exit_err "/boot partition must be first partition"
- fi
- export USINGBOOTPART
- fi
-
- return 0
- fi
-
- return 1
-};
-
-check_fstab_gpt()
-{
- local SLICE
- local FSTAB
-
- if [ -z "$2" ]
- then
- return 1
- fi
-
- SLICE="$1"
- FSTAB="$2/etc/fstab"
-
- if [ -f "${FSTAB}" ]
- then
- PARTNUMBER=`echo "${SLICE}" | sed -E 's|^.+p([0-9]*)$|\1|'`
-
- cat "${FSTAB}" | awk '{ print $2 }' | grep -E '^/$' >/dev/null 2>&1
- if [ "$?" = "0" ]
- then
- if [ "${PARTNUMBER}" = "2" ]
- then
- FOUNDROOT="0"
- else
- FOUNDROOT="1"
- fi
-
- ROOTIMAGE="1"
-
- export FOUNDROOT
- export ROOTIMAGE
- fi
-
- cat "${FSTAB}" | awk '{ print $2 }' | grep -E '^/boot$' >/dev/null 2>&1
- if [ "$?" = "0" ]
- then
- if [ "${PARTNUMBER}" = "2" ]
- then
- USINGBOOTPART="0"
- else
- exit_err "/boot partition must be first partition"
- fi
- export USINGBOOTPART
- fi
-
- return 0
- fi
-
-
- return 1
-};
-
-check_disk_layout()
-{
- local SLICES
- local TYPE
- local DISK
- local RES
- local F
-
- DISK="$1"
- TYPE="MBR"
-
- if [ -z "${DISK}" ]
- then
- return 1
- fi
-
- SLICES_MBR=`ls /dev/${DISK}s[1-4]*[a-h]* 2>/dev/null`
- SLICES_GPT=`ls /dev/${DISK}p[0-9]* 2>/dev/null`
- SLICES_SLICE=`ls /dev/${DISK}[a-h]* 2>/dev/null`
-
- if [ -n "${SLICES_MBR}" ]
- then
- SLICES="${SLICES_MBR}"
- TYPE="MBR"
- RES=0
- fi
- if [ -n "${SLICES_GPT}" ]
- then
- SLICES="${SLICES_GPT}"
- TYPE="GPT"
- RES=0
- fi
- if [ -n "${SLICES_SLICE}" ]
- then
- SLICES="${SLICES_SLICE}"
- TYPE="MBR"
- RES=0
- fi
-
- for slice in ${SLICES}
- do
- F=1
- mount ${slice} /mnt 2>/dev/null
- if [ "$?" != "0" ]
- then
- continue
- fi
-
- if [ "${TYPE}" = "MBR" ]
- then
- check_fstab_mbr "${slice}" "/mnt"
- F="$?"
-
- elif [ "${TYPE}" = "GPT" ]
- then
- check_fstab_gpt "${slice}" "/mnt"
- F="$?"
- fi
-
- if [ "${F}" = "0" ]
- then
- #umount /mnt
- break
- fi
-
- #umount /mnt
- done
-
- return ${RES}
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-cleanup.sh b/usr/sbin/pc-sysinstall/backend/functions-cleanup.sh
deleted file mode 100755
index be316c4..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-cleanup.sh
+++ /dev/null
@@ -1,418 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-cleanup.sh,v 1.5 2010/10/21 17:14:44 imp Exp $
-
-# Functions which perform the final cleanup after an install
-
-# Finishes up with ZFS setup before unmounting
-zfs_cleanup_unmount()
-{
- # Loop through our FS and see if we have any ZFS partitions to cleanup
- for PART in `ls ${PARTDIR}`
- do
- PARTFS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 1`"
- PARTMNT="`cat ${PARTDIR}/${PART} | cut -d ':' -f 2`"
- ZPOOLNAME=$(get_zpool_name "${PART}")
-
- if [ "$PARTFS" = "ZFS" ]
- then
- # Check if we have multiple zfs mounts specified
- for ZMNT in `echo ${PARTMNT} | sed 's|,| |g'`
- do
- if [ "${ZMNT}" = "/" ]
- then
- # Make sure we haven't already added the zfs boot line when
- # Creating a dedicated "/boot" partition
- cat ${FSMNT}/boot/loader.conf 2>/dev/null | grep "vfs.root.mountfrom=" >/dev/null 2>/dev/null
- if [ "$?" != "0" ] ; then
- echo "vfs.root.mountfrom=\"zfs:${ZPOOLNAME}\"" >> ${FSMNT}/boot/loader.conf
- fi
- FOUNDZFSROOT="${ZPOOLNAME}" ; export FOUNDZFSROOT
- fi
- done
- FOUNDZFS="1"
- fi
- done
-
- if [ ! -z "${FOUNDZFS}" ]
- then
- # Check if we need to add our ZFS flags to rc.conf, src.conf and loader.conf
- cat ${FSMNT}/boot/loader.conf 2>/dev/null | grep 'zfs_load="YES"' >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- echo 'zfs_load="YES"' >>${FSMNT}/boot/loader.conf
- fi
- cat ${FSMNT}/etc/rc.conf 2>/dev/null | grep 'zfs_enable="YES"' >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- echo 'zfs_enable="YES"' >>${FSMNT}/etc/rc.conf
- fi
-
- sleep 2
- # Copy over any ZFS cache data
- cp /boot/zfs/* ${FSMNT}/boot/zfs/
-
- # Copy the hostid so that our zfs cache works
- cp /etc/hostid ${FSMNT}/etc/hostid
- fi
-
- # Loop through our FS and see if we have any ZFS partitions to cleanup
- for PART in `ls ${PARTDIR}`
- do
- PARTFS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 1`"
- PARTMNT="`cat ${PARTDIR}/${PART} | cut -d ':' -f 2`"
- PARTENC="`cat ${PARTDIR}/${PART} | cut -d ':' -f 3`"
- ZPOOLNAME=$(get_zpool_name "${PART}")
-
- if [ "$PARTFS" = "ZFS" ]
- then
- # Check if we have multiple zfs mounts specified
- for ZMNT in `echo ${PARTMNT} | sed 's|,| |g'`
- do
- PARTMNTREV="${ZMNT} ${PARTMNTREV}"
- done
-
- for ZMNT in ${PARTMNTREV}
- do
- if [ "${ZMNT}" != "/" ]
- then
- rc_halt "zfs set mountpoint=${ZMNT} ${ZPOOLNAME}${ZMNT}"
- rc_halt "zfs unmount ${ZPOOLNAME}${ZMNT}"
- sleep 2
- fi
- done
- fi
- done
-
-};
-
-# Function which performs the specific setup for using a /boot partition
-setup_dedicated_boot_part()
-{
- ROOTFS="${1}"
- ROOTFSTYPE="${2}"
- BOOTFS="${3}"
- BOOTMNT="${4}"
-
- # Set the root mount in loader.conf
- echo "vfs.root.mountfrom=\"${ROOTFSTYPE}:${ROOTFS}\"" >> ${FSMNT}/boot/loader.conf
- rc_halt "mkdir -p ${FSMNT}/${BOOTMNT}/boot"
- rc_halt "mv ${FSMNT}/boot/* ${FSMNT}${BOOTMNT}/boot/"
- rc_halt "mv ${FSMNT}${BOOTMNT}/boot ${FSMNT}/boot/"
- rc_halt "umount /dev/${BOOTFS}"
- rc_halt "mount /dev/${BOOTFS} ${FSMNT}${BOOTMNT}"
- rc_halt "rmdir ${FSMNT}/boot"
-
- # Strip the '/' from BOOTMNT before making symlink
- BOOTMNTNS="`echo ${BOOTMNT} | sed 's|/||g'`"
- rc_halt "chroot ${FSMNT} ln -s ${BOOTMNTNS}/boot /boot"
-
-};
-
-# Function which creates the /etc/fstab for the installed system
-setup_fstab()
-{
- FSTAB="${FSMNT}/etc/fstab"
- rm ${FSTAB} >/dev/null 2>/dev/null
-
- # Create the header
- echo "# Device Mountpoint FStype Options Dump Pass" >> ${FSTAB}
-
- # Loop through the partitions, and start creating /etc/fstab
- for PART in `ls ${PARTDIR}`
- do
- PARTFS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 1`"
- PARTMNT="`cat ${PARTDIR}/${PART} | cut -d ':' -f 2`"
- PARTENC="`cat ${PARTDIR}/${PART} | cut -d ':' -f 3`"
- PARTLABEL="`cat ${PARTDIR}/${PART} | cut -d ':' -f 4`"
-
- DRIVE="`echo ${PART} | rev | cut -b 4- | rev`"
- # Check if this device is being mirrored
- if [ -e "${MIRRORCFGDIR}/${DRIVE}" ]
- then
- # This device is apart of a gmirror, lets reset PART to correct value
- MDRIVE="mirror/`cat ${MIRRORCFGDIR}/${DRIVE} | cut -d ':' -f 3`"
- TMP="`echo ${PART} | rev | cut -b -3 | rev`"
- PART="${MDRIVE}${TMP}"
- PARTLABEL=""
- fi
-
- # Unset EXT
- EXT=""
-
- # Set mount options for file-systems
- case $PARTFS in
- UFS+J) MNTOPTS="rw,noatime,async" ;;
- SWAP) MNTOPTS="sw" ;;
- *) MNTOPTS="rw,noatime" ;;
- esac
-
-
- # Figure out if we are using a glabel, or the raw name for this entry
- if [ ! -z "${PARTLABEL}" ]
- then
- DEVICE="label/${PARTLABEL}"
- else
- # Check if using encryption
- if [ "${PARTENC}" = "ON" ] ; then
- EXT=".eli"
- fi
-
- if [ "${PARTFS}" = "UFS+J" ] ; then
- EXT="${EXT}.journal"
- fi
- DEVICE="${PART}${EXT}"
- fi
-
-
- # Set our ROOTFSTYPE for loader.conf if necessary
- check_for_mount "${PARTMNT}" "/"
- if [ "$?" = "0" ] ; then
- if [ "${PARTFS}" = "ZFS" ] ; then
- ROOTFSTYPE="zfs"
- XPOOLNAME=$(get_zpool_name "${PART}")
- ROOTFS="${ZPOOLNAME}"
- else
- ROOTFS="${DEVICE}"
- ROOTFSTYPE="ufs"
- fi
- fi
-
- # Only create non-zfs partitions
- if [ "${PARTFS}" != "ZFS" ]
- then
-
- # Make sure geom_journal is loaded
- if [ "${PARTFS}" = "UFS+J" ] ; then
- setup_gjournal
- fi
-
- # Save the BOOTFS for call at the end
- if [ "${PARTMNT}" = "/boot" ] ; then
- BOOTFS="${PART}${EXT}"
- BOOTMNT="${BOOT_PART_MOUNT}"
- PARTMNT="${BOOTMNT}"
- fi
-
- # Echo out the fstab entry now
- if [ "${PARTFS}" = "SWAP" ]
- then
- echo "/dev/${DEVICE} none swap ${MNTOPTS} 0 0" >> ${FSTAB}
- else
- echo "/dev/${DEVICE} ${PARTMNT} ufs ${MNTOPTS} 1 1" >> ${FSTAB}
- fi
-
- fi # End of ZFS Check
- done
-
- # Setup some specific PC-BSD fstab options
- if [ "$INSTALLTYPE" != "FreeBSD" ]
- then
- echo "procfs /proc procfs rw 0 0" >> ${FSTAB}
- echo "linprocfs /compat/linux/proc linprocfs rw 0 0" >> ${FSTAB}
- echo "tmpfs /tmp tmpfs rw,mode=1777 0 0" >> ${FSTAB}
- fi
-
- # If we have a dedicated /boot, run the post-install setup of it now
- if [ ! -z "${BOOTMNT}" ] ; then
- setup_dedicated_boot_part "${ROOTFS}" "${ROOTFSTYPE}" "${BOOTFS}" "${BOOTMNT}"
- fi
-
-};
-
-# Setup our disk mirroring with gmirror
-setup_gmirror()
-{
- NUM="0"
-
- cd ${MIRRORCFGDIR}
- for DISK in `ls *`
- do
- MIRRORDISK="`cat ${DISK} | cut -d ':' -f 1`"
- MIRRORBAL="`cat ${DISK} | cut -d ':' -f 2`"
-
- # Create this mirror device
- gmirror label -vb $MIRRORBAL gm${NUM} /dev/${DISK}
-
- sleep 3
-
- # Save the gm<num> device in our config
- echo "${MIRRORDISK}:${MIRRORBAL}:gm${NUM}" > ${DISK}
-
- sleep 3
-
- NUM="`expr ${NUM} + 1`"
- done
-
-
- cat ${FSMNT}/boot/loader.conf 2>/dev/null | grep 'geom_mirror_load="YES"' >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- echo 'geom_mirror_load="YES"' >>${FSMNT}/boot/loader.conf
- fi
-
-};
-
-# Function which saves geli keys and sets up loading of them at boot
-setup_geli_loading()
-{
-
- # Make our keys dir
- mkdir -p ${FSMNT}/boot/keys >/dev/null 2>/dev/null
-
- cd ${GELIKEYDIR}
- for KEYFILE in `ls *`
- do
- # Figure out the partition name based on keyfile name removing .key
- PART="`echo ${KEYFILE} | cut -d '.' -f 1`"
-
- # Add the entries to loader.conf to start this geli provider at boot
- echo "geli_${PART}_keyfile0_load=\"YES\"" >> ${FSMNT}/boot/loader.conf
- echo "geli_${PART}_keyfile0_type=\"${PART}:geli_keyfile0\"" >> ${FSMNT}/boot/loader.conf
- echo "geli_${PART}_keyfile0_name=\"/boot/keys/${KEYFILE}\"" >> ${FSMNT}/boot/loader.conf
-
- # If we have a passphrase, set it up now
- if [ -e "${PARTDIR}-enc/${PART}-encpass" ] ; then
- geli setkey -J ${PARTDIR}-enc/${PART}-encpass -n 0 -p -k ${KEYFILE} -K ${KEYFILE} ${PART}
- geli configure -b ${PART}
- fi
-
- # Copy the key to the disk
- cp ${KEYFILE} ${FSMNT}/boot/keys/${KEYFILE}
- done
-
- # Make sure we have geom_eli set to load at boot
- cat ${FSMNT}/boot/loader.conf 2>/dev/null | grep 'geom_eli_load="YES"' >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- echo 'geom_eli_load="YES"' >>${FSMNT}/boot/loader.conf
- fi
-
-};
-
-
-# Function to generate a random hostname if none was specified
-gen_hostname()
-{
- RAND="`jot -r 1 1 9000`"
-
- if [ "$INSTALLTYPE" = "FreeBSD" ]
- then
- VAL="freebsd-${RAND}"
- else
- VAL="pcbsd-${RAND}"
- fi
-
- export VAL
-
-};
-
-# Function which sets up the hostname for the system
-setup_hostname()
-{
-
- get_value_from_cfg hostname
- HOSTNAME="${VAL}"
-
- # If we don't have a hostname, make one up
- if [ -z "${HOSTNAME}" ]
- then
- gen_hostname
- HOSTNAME="${VAL}"
- fi
-
- # Clean up any saved hostname
- cat ${FSMNT}/etc/rc.conf | grep -v "hostname=" >${FSMNT}/etc/rc.conf.new
- mv ${FSMNT}/etc/rc.conf.new ${FSMNT}/etc/rc.conf
-
- # Set the hostname now
- echo_log "Setting hostname: ${HOSTNAME}"
- echo "hostname=\"${HOSTNAME}\"" >> ${FSMNT}/etc/rc.conf
- sed -i -e "s|my.domain|${HOSTNAME} ${HOSTNAME}|g" ${FSMNT}/etc/hosts
-
-};
-
-
-# Check and make sure geom_journal is enabled on the system
-setup_gjournal()
-{
-
- # Make sure we have geom_journal set to load at boot
- cat ${FSMNT}/boot/loader.conf 2>/dev/null | grep 'geom_journal_load="YES"' >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- echo 'geom_journal_load="YES"' >>${FSMNT}/boot/loader.conf
- fi
-
-};
-
-# Function which sets the root password from the install config
-set_root_pw()
-{
- get_value_from_cfg_with_spaces rootPass
- PW="${VAL}"
-
- # If we don't have a root pass, return
- if [ -z "${PW}" ]
- then
- return 0
- fi
-
- echo_log "Setting root password"
- echo "${PW}" > ${FSMNT}/.rootpw
- run_chroot_cmd "cat /.rootpw | pw usermod root -h 0"
- rc_halt "rm ${FSMNT}/.rootpw"
-
-};
-
-
-run_final_cleanup()
-{
- # Check if we need to run any gmirror setup
- ls ${MIRRORCFGDIR}/* >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Lets setup gmirror now
- setup_gmirror
- fi
-
- # Check if we need to save any geli keys
- ls ${GELIKEYDIR}/* >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Lets setup geli loading
- setup_geli_loading
- fi
-
- # Set a hostname on the install system
- setup_hostname
-
- # Set the root_pw if it is specified
- set_root_pw
-
- # Generate the fstab for the installed system
- setup_fstab
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-disk.sh b/usr/sbin/pc-sysinstall/backend/functions-disk.sh
deleted file mode 100755
index 2bb3ecc..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-disk.sh
+++ /dev/null
@@ -1,827 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-disk.sh,v 1.8 2010/11/10 05:32:36 imp Exp $
-
-# Functions related to disk operations using gpart
-
-# See if device is a full disk or partition/slice
-is_disk()
-{
- for _dsk in `sysctl -n kern.disks`
- do
- if [ "$_dsk" = "${1}" ] ; then return 0 ; fi
- done
-
- return 1
-}
-
-# Get a MBR partitions sysid
-get_partition_sysid_mbr()
-{
- INPART="0"
- DISK="$1"
- PARTNUM=`echo ${2} | sed "s|${DISK}s||g"`
- fdisk ${DISK} >${TMPDIR}/disk-${DISK} 2>/dev/null
- while read i
- do
- echo "$i" | grep "The data for partition" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- INPART="0"
- PART="`echo ${i} | cut -d ' ' -f 5`"
- if [ "$PART" = "$PARTNUM" ] ; then
- INPART="1"
- fi
- fi
-
- # In the partition section
- if [ "$INPART" = "1" ] ; then
- echo "$i" | grep "^sysid" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- SYSID="`echo ${i} | tr -s '\t' ' ' | cut -d ' ' -f 2`"
- break
- fi
-
- fi
-
- done < ${TMPDIR}/disk-${DISK}
- rm ${TMPDIR}/disk-${DISK}
-
- VAL="${SYSID}"
- export VAL
-};
-
-# Get the partitions MBR label
-get_partition_label_mbr()
-{
- INPART="0"
- DISK="$1"
- PARTNUM=`echo ${2} | sed "s|${DISK}s||g"`
- fdisk ${DISK} >${TMPDIR}/disk-${DISK} 2>/dev/null
- while read i
- do
- echo "$i" | grep "The data for partition" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- INPART="0"
- PART="`echo ${i} | cut -d ' ' -f 5`"
- if [ "$PART" = "$PARTNUM" ] ; then
- INPART="1"
- fi
- fi
-
- # In the partition section
- if [ "$INPART" = "1" ] ; then
- echo "$i" | grep "^sysid" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- LABEL="`echo ${i} | tr -s '\t' ' ' | cut -d ',' -f 2-10`"
- break
- fi
-
- fi
-
- done < ${TMPDIR}/disk-${DISK}
- rm ${TMPDIR}/disk-${DISK}
-
- VAL="${LABEL}"
- export VAL
-};
-
-# Get a GPT partitions label
-get_partition_label_gpt()
-{
- DISK="${1}"
- PARTNUM=`echo ${2} | sed "s|${DISK}p||g"`
-
- gpart show ${DISK} >${TMPDIR}/disk-${DISK}
- while read i
- do
- SLICE="`echo ${i} | grep -v ${DISK} | grep -v ' free ' |tr -s '\t' ' ' | cut -d ' ' -f 3`"
- if [ "${SLICE}" = "${PARTNUM}" ] ; then
- LABEL="`echo ${i} | grep -v ${DISK} | grep -v ' free ' |tr -s '\t' ' ' | cut -d ' ' -f 4`"
- break
- fi
- done <${TMPDIR}/disk-${DISK}
- rm ${TMPDIR}/disk-${DISK}
-
- VAL="${LABEL}"
- export VAL
-};
-
-# Get a partitions startblock
-get_partition_startblock()
-{
- DISK="${1}"
- PARTNUM=`echo ${2} | sed "s|${DISK}p||g" | sed "s|${DISK}s||g"`
-
- gpart show ${DISK} >${TMPDIR}/disk-${DISK}
- while read i
- do
- SLICE="`echo ${i} | grep -v ${DISK} | grep -v ' free ' |tr -s '\t' ' ' | cut -d ' ' -f 3`"
- if [ "$SLICE" = "${PARTNUM}" ] ; then
- SB="`echo ${i} | grep -v ${DISK} | grep -v ' free ' |tr -s '\t' ' ' | cut -d ' ' -f 1`"
- break
- fi
- done <${TMPDIR}/disk-${DISK}
- rm ${TMPDIR}/disk-${DISK}
-
- VAL="${SB}"
- export VAL
-};
-
-# Get a partitions blocksize
-get_partition_blocksize()
-{
- DISK="${1}"
- PARTNUM=`echo ${2} | sed "s|${DISK}p||g" | sed "s|${DISK}s||g"`
-
- gpart show ${DISK} >${TMPDIR}/disk-${DISK}
- while read i
- do
- SLICE="`echo ${i} | grep -v ${DISK} | grep -v ' free ' |tr -s '\t' ' ' | cut -d ' ' -f 3`"
- if [ "$SLICE" = "${PARTNUM}" ] ; then
- BS="`echo ${i} | grep -v ${DISK} | grep -v ' free ' |tr -s '\t' ' ' | cut -d ' ' -f 2`"
- break
- fi
- done <${TMPDIR}/disk-${DISK}
- rm ${TMPDIR}/disk-${DISK}
-
- VAL="${BS}"
- export VAL
-};
-
-# Function which returns the partitions on a target disk
-get_disk_partitions()
-{
- gpart show ${1} >/dev/null 2>/dev/null
- if [ "$?" != "0" ] ; then
- VAL="" ; export VAL
- return
- fi
-
- gpart show ${1} | grep "MBR" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- type="MBR"
- else
- type="GPT"
- fi
-
- SLICES="`gpart show ${1} | grep -v ${1} | grep -v ' free ' |tr -s '\t' ' ' | cut -d ' ' -f 4 | sed '/^$/d'`"
- for i in ${SLICES}
- do
- case $type in
- MBR) name="${1}s${i}" ;;
- GPT) name="${1}p${i}";;
- *) name="${1}s${i}";;
- esac
- if [ -z "${RSLICES}" ]
- then
- RSLICES="${name}"
- else
- RSLICES="${RSLICES} ${name}"
- fi
- done
-
- VAL="${RSLICES}" ; export VAL
-};
-
-# Function which returns a target disks cylinders
-get_disk_cyl()
-{
- cyl=`diskinfo -v ${1} | grep "# Cylinders" | tr -s ' ' | cut -f 2`
- VAL="${cyl}" ; export VAL
-};
-
-# Function which returns a target disks sectors
-get_disk_sectors()
-{
- sec=`diskinfo -v ${1} | grep "# Sectors" | tr -s ' ' | cut -f 2`
- VAL="${sec}" ; export VAL
-};
-
-# Function which returns a target disks heads
-get_disk_heads()
-{
- head=`diskinfo -v ${1} | grep "# Heads" | tr -s ' ' | cut -f 2`
- VAL="${head}" ; export VAL
-};
-
-# Function which returns a target disks mediasize in sectors
-get_disk_mediasize()
-{
- mediasize=`diskinfo -v ${1} | grep "# mediasize in sectors" | tr -s ' ' | cut -f 2`
- VAL="${mediasize}" ; export VAL
-};
-
-# Function which exports all zpools, making them safe to overwrite potentially
-export_all_zpools()
-{
- # Export any zpools
- for i in `zpool list -H -o name`
- do
- zpool export -f ${i}
- done
-};
-
-# Function to delete all gparts before starting an install
-delete_all_gpart()
-{
- echo_log "Deleting all gparts"
- DISK="$1"
-
- # Check for any swaps to stop
- for i in `gpart show ${DISK} 2>/dev/null | grep 'freebsd-swap' | tr -s ' ' | cut -d ' ' -f 4`
- do
- swapoff /dev/${DISK}s${i}b >/dev/null 2>/dev/null
- swapoff /dev/${DISK}p${i} >/dev/null 2>/dev/null
- done
-
- # Delete the gparts now
- for i in `gpart show ${DISK} 2>/dev/null | tr -s ' ' | cut -d ' ' -f 4`
- do
- if [ "${i}" != "${DISK}" -a "${i}" != "-" ] ; then
- rc_nohalt "gpart delete -i ${i} ${DISK}"
- fi
- done
-
- rc_nohalt "dd if=/dev/zero of=/dev/${DISK} count=3000"
-
-};
-
-# Function to export all zpools before starting an install
-stop_all_zfs()
-{
- # Export all zpools again, so that we can overwrite these partitions potentially
- for i in `zpool list -H -o name`
- do
- zpool export -f ${i}
- done
-};
-
-# Function which stops all gmirrors before doing any disk manipulation
-stop_all_gmirror()
-{
- DISK="${1}"
- GPROV="`gmirror list | grep ". Name: mirror/" | cut -d '/' -f 2`"
- for gprov in $GPROV
- do
- gmirror list | grep "Name: ${DISK}" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- echo_log "Stopping mirror $gprov $DISK"
- rc_nohalt "gmirror remove $gprov $DISK"
- rc_nohalt "dd if=/dev/zero of=/dev/${DISK} count=4096"
- fi
- done
-};
-
-# Make sure we don't have any geli providers active on this disk
-stop_all_geli()
-{
- _geld="${1}"
- cd /dev
-
- for i in `ls ${_geld}*`
- do
- echo $i | grep '.eli' >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- echo_log "Detaching GELI on ${i}"
- rc_halt "geli detach ${i}"
- fi
- done
-
-};
-
-# Function which reads in the disk slice config, and performs it
-setup_disk_slice()
-{
-
- # Cleanup any slice / mirror dirs
- rm -rf ${SLICECFGDIR} >/dev/null 2>/dev/null
- mkdir ${SLICECFGDIR}
- rm -rf ${MIRRORCFGDIR} >/dev/null 2>/dev/null
- mkdir ${MIRRORCFGDIR}
-
- # Start with disk0
- disknum="0"
-
- # Make sure all zpools are exported
- export_all_zpools
-
- # We are ready to start setting up the disks, lets read the config and do the actions
- while read line
- do
- echo $line | grep "^disk${disknum}=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
-
- # Found a disk= entry, lets get the disk we are working on
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- DISK="$VAL"
-
- # Before we go further, lets confirm this disk really exists
- if [ ! -e "/dev/${DISK}" ]
- then
- exit_err "ERROR: The disk ${DISK} does not exist!"
- fi
-
- # Make sure we stop any gmirrors on this disk
- stop_all_gmirror ${DISK}
-
- # Make sure we stop any geli stuff on this disk
- stop_all_geli ${DISK}
-
- # Make sure we don't have any zpools loaded
- stop_all_zfs
-
- fi
-
- # Lets look if this device will be mirrored on another disk
- echo $line | grep "^mirror=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
-
- # Found a disk= entry, lets get the disk we are working on
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- MIRRORDISK="$VAL"
-
- # Before we go further, lets confirm this disk really exists
- if [ ! -e "/dev/${MIRRORDISK}" ]
- then
- exit_err "ERROR: The mirror disk ${MIRRORDISK} does not exist!"
- fi
- fi
-
- # Lets see if we have been given a mirror balance choice
- echo $line | grep "^mirrorbal=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
-
- # Found a disk= entry, lets get the disk we are working on
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- MIRRORBAL="$VAL"
- fi
-
- echo $line | grep "^partition=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Found a partition= entry, lets read / set it
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- PTYPE=`echo $VAL|tr A-Z a-z`
-
- # We are using free space, figure out the slice number
- if [ "${PTYPE}" = "free" ]
- then
- # Lets figure out what number this slice will be
- LASTSLICE="`gpart show ${DISK} \
- | grep -v ${DISK} \
- | grep -v ' free' \
- | tr -s '\t' ' ' \
- | cut -d ' ' -f 4 \
- | sed '/^$/d' \
- | tail -n 1`"
-
- if [ -z "${LASTSLICE}" ]
- then
- LASTSLICE="1"
- else
- LASTSLICE="`expr $LASTSLICE + 1`"
- fi
-
- if [ $LASTSLICE -gt 4 ]
- then
- exit_err "ERROR: BSD only supports primary partitions, and there are none availble on $DISK"
- fi
-
- fi
- fi
-
- # Check if we have an image file defined
- echo $line | grep "^image=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- # Found an image= entry, lets read / set it
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- IMAGE="$VAL"
- if [ ! -f "$IMAGE" ] ; then
- exit_err "$IMAGE file does not exist"
- fi
- fi
-
- # Check if we have a partscheme specified
- echo $line | grep "^partscheme=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- # Found a partscheme= entry, lets read / set it
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- PSCHEME="$VAL"
- if [ "$PSCHEME" != "GPT" -a "$PSCHEME" != "MBR" ] ; then
- exit_err "Unknown partition scheme: $PSCHEME"
- fi
- fi
-
- echo $line | grep "^bootManager=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Found a bootManager= entry, lets read /set it
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- BMANAGER="$VAL"
- fi
-
- echo $line | grep "^commitDiskPart" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Found our flag to commit this disk setup / lets do sanity check and do it
- if [ ! -z "${DISK}" -a ! -z "${PTYPE}" ]
- then
- case ${PTYPE} in
- all)
- if [ "$PSCHEME" = "MBR" -o -z "$PSCHEME" ] ; then
- PSCHEME="MBR"
- tmpSLICE="${DISK}s1"
- else
- tmpSLICE="${DISK}p1"
- fi
-
- run_gpart_full "${DISK}" "${BMANAGER}" "${PSCHEME}"
- ;;
-
- s1|s2|s3|s4)
- tmpSLICE="${DISK}${PTYPE}"
- # Get the number of the slice we are working on
- s="`echo ${PTYPE} | awk '{print substr($0,length,1)}'`"
- run_gpart_slice "${DISK}" "${BMANAGER}" "${s}"
- ;;
-
- free)
- tmpSLICE="${DISK}s${LASTSLICE}"
- run_gpart_free "${DISK}" "${LASTSLICE}" "${BMANAGER}"
- ;;
-
- image)
- if [ -z "${IMAGE}" ]
- then
- exit_err "ERROR: partition type image specified with no image!"
- fi
- ;;
-
- *) exit_err "ERROR: Unknown PTYPE: $PTYPE" ;;
- esac
-
-
- if [ -n "${IMAGE}" ]
- then
- local DEST
-
- if [ -n "${tmpSLICE}" ]
- then
- DEST="${tmpSLICE}"
- else
- DEST="${DISK}"
- fi
-
- write_image "${IMAGE}" "${DEST}"
- check_disk_layout "${DEST}"
- fi
-
- # Now save which disk<num> this is, so we can parse it later during slice partition setup
- if [ -z "${IMAGE}" ]
- then
- echo "disk${disknum}" >${SLICECFGDIR}/$tmpSLICE
- fi
-
- # Save any mirror config
- if [ ! -z "$MIRRORDISK" ]
- then
- # Default to round-robin if the user didn't specify
- if [ -z "$MIRRORBAL" ]
- then
- MIRRORBAL="round-robin"
- fi
- echo "$MIRRORDISK:$MIRRORBAL" >${MIRRORCFGDIR}/$DISK
- fi
-
- # Increment our disk counter to look for next disk and unset
- unset BMANAGER PTYPE DISK MIRRORDISK MIRRORBAL PSCHEME IMAGE
- disknum="`expr $disknum + 1`"
- else
- exit_err "ERROR: commitDiskPart was called without procceding disk<num>= and partition= entries!!!"
- fi
- fi
-
- done <${CFGF}
-
-};
-
-# Stop all gjournals on disk / slice
-stop_gjournal()
-{
- _gdsk="$1"
- # Check if we need to shutdown any journals on this drive
- ls /dev/${_gdsk}*.journal >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- cd /dev
- for i in `ls ${_gdsk}*.journal`
- do
- rawjournal="`echo ${i} | cut -d '.' -f 1`"
- gjournal stop -f ${rawjournal} >>${LOGOUT} 2>>${LOGOUT}
- gjournal clear ${rawjournal} >>${LOGOUT} 2>>${LOGOUT}
- done
- fi
-} ;
-
-# Function which runs gpart and creates a single large GPT partition scheme
-init_gpt_full_disk()
-{
- _intDISK=$1
-
- # Set our sysctl so we can overwrite any geom using drives
- sysctl kern.geom.debugflags=16 >>${LOGOUT} 2>>${LOGOUT}
-
- # Stop any journaling
- stop_gjournal "${_intDISK}"
-
- # Remove any existing partitions
- delete_all_gpart "${_intDISK}"
-
- #Erase any existing bootloader
- echo_log "Cleaning up ${_intDISK}"
- rc_halt "dd if=/dev/zero of=/dev/${_intDISK} count=2048"
-
- sleep 2
-
- echo_log "Running gpart on ${_intDISK}"
- rc_halt "gpart create -s GPT ${_intDISK}"
- rc_halt "gpart add -b 34 -s 128 -t freebsd-boot ${_intDISK}"
-
- echo_log "Stamping boot sector on ${_intDISK}"
- rc_halt "gpart bootcode -b /boot/pmbr ${_intDISK}"
-
-}
-
-# Function which runs gpart and creates a single large MBR partition scheme
-init_mbr_full_disk()
-{
- _intDISK=$1
- _intBOOT=$2
-
- startblock="63"
-
- # Set our sysctl so we can overwrite any geom using drives
- sysctl kern.geom.debugflags=16 >>${LOGOUT} 2>>${LOGOUT}
-
- # Stop any journaling
- stop_gjournal "${_intDISK}"
-
- # Remove any existing partitions
- delete_all_gpart "${_intDISK}"
-
- #Erase any existing bootloader
- echo_log "Cleaning up ${_intDISK}"
- rc_halt "dd if=/dev/zero of=/dev/${_intDISK} count=2048"
-
- sleep 2
-
- echo_log "Running gpart on ${_intDISK}"
- rc_halt "gpart create -s mbr ${_intDISK}"
-
- # Lets figure out disk size in blocks
- # Get the cyl of this disk
- get_disk_cyl "${_intDISK}"
- cyl="${VAL}"
-
- # Get the heads of this disk
- get_disk_heads "${_intDISK}"
- head="${VAL}"
-
- # Get the tracks/sectors of this disk
- get_disk_sectors "${_intDISK}"
- sec="${VAL}"
-
- # Multiply them all together to get our total blocks
- totalblocks="`expr ${cyl} \* ${head}`"
- totalblocks="`expr ${totalblocks} \* ${sec}`"
- if [ -z "${totalblocks}" ]
- then
- totalblocks=`gpart show "${_intDISK}"|tail -2|head -1|awk '{ print $2 }'`
- fi
-
- # Now set the ending block to the total disk block size
- sizeblock="`expr ${totalblocks} - ${startblock}`"
-
- # Install new partition setup
- echo_log "Running gpart add on ${_intDISK}"
- rc_halt "gpart add -b ${startblock} -s ${sizeblock} -t freebsd -i 1 ${_intDISK}"
- sleep 2
-
- echo_log "Cleaning up ${_intDISK}s1"
- rc_halt "dd if=/dev/zero of=/dev/${_intDISK}s1 count=1024"
-
- if [ "$_intBOOT" = "bsd" ] ; then
- echo_log "Stamping boot0 on ${_intDISK}"
- rc_halt "gpart bootcode -b /boot/boot0 ${_intDISK}"
- else
- echo_log "Stamping boot1 on ${_intDISK}"
- rc_halt "gpart bootcode -b /boot/boot1 ${_intDISK}"
- fi
-
-}
-
-# Function which runs gpart and creates a single large slice
-run_gpart_full()
-{
- DISK=$1
- BOOT=$2
- SCHEME=$3
-
- if [ "$SCHEME" = "MBR" ] ; then
- init_mbr_full_disk "$DISK" "$BOOT"
- slice="${DISK}-1-mbr"
- else
- init_gpt_full_disk "$DISK"
- slice="${DISK}-1-gpt"
- fi
-
- # Lets save our slice, so we know what to look for in the config file later on
- if [ -z "$WORKINGSLICES" ]
- then
- WORKINGSLICES="${slice}"
- export WORKINGSLICES
- else
- WORKINGSLICES="${WORKINGSLICES} ${slice}"
- export WORKINGSLICES
- fi
-};
-
-# Function which runs gpart on a specified s1-4 slice
-run_gpart_slice()
-{
- DISK=$1
- if [ ! -z "$2" ]
- then
- BMANAGER="$2"
- fi
-
- # Set the slice we will use later
- slice="${1}s${3}"
-
- # Set our sysctl so we can overwrite any geom using drives
- sysctl kern.geom.debugflags=16 >>${LOGOUT} 2>>${LOGOUT}
-
- # Get the number of the slice we are working on
- slicenum="$3"
-
- # Stop any journaling
- stop_gjournal "${slice}"
-
- # Make sure we have disabled swap on this drive
- if [ -e "${slice}b" ]
- then
- swapoff ${slice}b >/dev/null 2>/dev/null
- swapoff ${slice}b.eli >/dev/null 2>/dev/null
- fi
-
- # Modify partition type
- echo_log "Running gpart modify on ${DISK}"
- rc_halt "gpart modify -t freebsd -i ${slicenum} ${DISK}"
- sleep 2
-
- # Clean up old partition
- echo_log "Cleaning up $slice"
- rc_halt "dd if=/dev/zero of=/dev/${DISK}s${slicenum} count=1024"
-
- sleep 1
-
- if [ "${BMANAGER}" = "bsd" ]
- then
- echo_log "Stamping boot sector on ${DISK}"
- rc_halt "gpart bootcode -b /boot/boot0 ${DISK}"
- fi
-
- # Set the slice to the format we'll be using for gpart later
- slice="${1}-${3}-mbr"
-
- # Lets save our slice, so we know what to look for in the config file later on
- if [ -z "$WORKINGSLICES" ]
- then
- WORKINGSLICES="${slice}"
- export WORKINGSLICES
- else
- WORKINGSLICES="${WORKINGSLICES} ${slice}"
- export WORKINGSLICES
- fi
-};
-
-# Function which runs gpart and creates a new slice from free disk space
-run_gpart_free()
-{
- DISK=$1
- SLICENUM=$2
- if [ ! -z "$3" ]
- then
- BMANAGER="$3"
- fi
-
- # Set our sysctl so we can overwrite any geom using drives
- sysctl kern.geom.debugflags=16 >>${LOGOUT} 2>>${LOGOUT}
-
- slice="${DISK}s${SLICENUM}"
- slicenum="${SLICENUM}"
-
- # Working on the first slice, make sure we have MBR setup
- gpart show ${DISK} >/dev/null 2>/dev/null
- if [ "$?" != "0" -a "$SLICENUM" = "1" ] ; then
- echo_log "Initializing disk, no existing MBR setup"
- rc_halt "gpart create -s mbr ${DISK}"
- fi
-
- # Lets get the starting block first
- if [ "${slicenum}" = "1" ]
- then
- startblock="63"
- else
- # Lets figure out where the prior slice ends
- checkslice="`expr ${slicenum} - 1`"
-
- # Get starting block of this slice
- sblk=`gpart show ${DISK} | grep -v ${DISK} | tr -s '\t' ' ' | sed '/^$/d' | grep " ${checkslice} " | cut -d ' ' -f 2`
- blksize=`gpart show ${DISK} | grep -v ${DISK} | tr -s '\t' ' ' | sed '/^$/d' | grep " ${checkslice} " | cut -d ' ' -f 3`
- startblock="`expr ${sblk} + ${blksize}`"
- fi
-
- # No slice after the new slice, lets figure out the free space remaining and use it
- # Get the cyl of this disk
- get_disk_cyl "${DISK}"
- cyl="${VAL}"
-
- # Get the heads of this disk
- get_disk_heads "${DISK}"
- head="${VAL}"
-
- # Get the tracks/sectors of this disk
- get_disk_sectors "${DISK}"
- sec="${VAL}"
-
- # Multiply them all together to get our total blocks
- totalblocks="`expr ${cyl} \* ${head}`"
- totalblocks="`expr ${totalblocks} \* ${sec}`"
-
-
- # Now set the ending block to the total disk block size
- sizeblock="`expr ${totalblocks} - ${startblock}`"
-
- # Install new partition setup
- echo_log "Running gpart on ${DISK}"
- rc_halt "gpart add -b ${startblock} -s ${sizeblock} -t freebsd -i ${slicenum} ${DISK}"
- sleep 2
-
- echo_log "Cleaning up $slice"
- rc_halt "dd if=/dev/zero of=/dev/${slice} count=1024"
-
- sleep 1
-
- if [ "${BMANAGER}" = "bsd" ]
- then
- echo_log "Stamping boot sector on ${DISK}"
- rc_halt "gpart bootcode -b /boot/boot0 ${DISK}"
- fi
-
- slice="${DISK}-${SLICENUM}-mbr"
- # Lets save our slice, so we know what to look for in the config file later on
- if [ -z "$WORKINGSLICES" ]
- then
- WORKINGSLICES="${slice}"
- export WORKINGSLICES
- else
- WORKINGSLICES="${WORKINGSLICES} ${slice}"
- export WORKINGSLICES
- fi
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-extractimage.sh b/usr/sbin/pc-sysinstall/backend/functions-extractimage.sh
deleted file mode 100755
index 76cb247..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-extractimage.sh
+++ /dev/null
@@ -1,457 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh,v 1.8 2010/10/21 23:08:42 imp Exp $
-
-# Functions which perform the extraction / installation of system to disk
-
-. ${BACKEND}/functions-mountoptical.sh
-
-# Performs the extraction of data to disk from a uzip or tar archive
-start_extract_uzip_tar()
-{
- if [ -z "$INSFILE" ]
- then
- exit_err "ERROR: Called extraction with no install file set!"
- fi
-
- # Check if we have a .count file, and echo it out for a front-end to use in progress bars
- if [ -e "${INSFILE}.count" ]
- then
- echo "INSTALLCOUNT: `cat ${INSFILE}.count`"
- fi
-
- # Check if we are doing an upgrade, and if so use our exclude list
- if [ "${INSTALLMODE}" = "upgrade" ]
- then
- TAROPTS="-X ${PROGDIR}/conf/exclude-from-upgrade"
- else
- TAROPTS=""
- fi
-
- echo_log "pc-sysinstall: Starting Extraction"
-
- case ${PACKAGETYPE} in
- uzip)
- # Start by mounting the uzip image
- MDDEVICE=`mdconfig -a -t vnode -o readonly -f ${INSFILE}`
- mkdir -p ${FSMNT}.uzip
- mount -r /dev/${MDDEVICE}.uzip ${FSMNT}.uzip
- if [ "$?" != "0" ]
- then
- exit_err "ERROR: Failed mounting the ${INSFILE}"
- fi
- cd ${FSMNT}.uzip
-
- # Copy over all the files now!
- tar cvf - . 2>/dev/null | tar -xpv -C ${FSMNT} ${TAROPTS} -f - 2>&1 | tee -a ${FSMNT}/.tar-extract.log
- if [ "$?" != "0" ]
- then
- cd /
- echo "TAR failure occurred:" >>${LOGOUT}
- cat ${FSMNT}/.tar-extract.log | grep "tar:" >>${LOGOUT}
- umount ${FSMNT}.uzip
- mdconfig -d -u ${MDDEVICE}
- exit_err "ERROR: Failed extracting the tar image"
- fi
-
- # All finished, now lets umount and cleanup
- cd /
- umount ${FSMNT}.uzip
- mdconfig -d -u ${MDDEVICE}
- ;;
- tar)
- tar -xpv -C ${FSMNT} -f ${INSFILE} ${TAROPTS} >&1 2>&1
- if [ "$?" != "0" ]
- then
- exit_err "ERROR: Failed extracting the tar image"
- fi
- ;;
- esac
-
- # Check if this was a FTP download and clean it up now
- if [ "${INSTALLMEDIUM}" = "ftp" ]
- then
- echo_log "Cleaning up downloaded archive"
- rm ${INSFILE}
- rm ${INSFILE}.count >/dev/null 2>/dev/null
- rm ${INSFILE}.md5 >/dev/null 2>/dev/null
- fi
-
- echo_log "pc-sysinstall: Extraction Finished"
-
-};
-
-# Performs the extraction of data to disk from a directory with split files
-start_extract_split()
-{
- if [ -z "${INSDIR}" ]
- then
- exit_err "ERROR: Called extraction with no install directory set!"
- fi
-
- echo_log "pc-sysinstall: Starting Extraction"
-
- # Used by install.sh
- DESTDIR="${FSMNT}"
- export DESTDIR
-
- HERE=`pwd`
- DIRS=`ls -d ${INSDIR}/*|grep -Ev '(uzip|kernels|src)'`
- for dir in ${DIRS}
- do
- cd "${dir}"
- if [ -f "install.sh" ]
- then
- echo_log "Extracting" `basename ${dir}`
- echo "y" | sh install.sh >/dev/null
- if [ "$?" != "0" ]
- then
- exit_err "ERROR: Failed extracting ${dir}"
- fi
- else
- exit_err "ERROR: ${dir}/install.sh does not exist"
- fi
- done
- cd "${HERE}"
-
- KERNELS=`ls -d ${INSDIR}/*|grep kernels`
- cd "${KERNELS}"
- if [ -f "install.sh" ]
- then
- echo_log "Extracting" `basename ${KERNELS}`
- echo "y" | sh install.sh generic >/dev/null
- if [ "$?" != "0" ]
- then
- exit_err "ERROR: Failed extracting ${KERNELS}"
- fi
- rm -rf "${FSMNT}/boot/kernel"
- mv "${FSMNT}/boot/GENERIC" "${FSMNT}/boot/kernel"
- else
- exit_err "ERROR: ${KERNELS}/install.sh does not exist"
- fi
- cd "${HERE}"
-
- SOURCE=`ls -d ${INSDIR}/*|grep src`
- cd "${SOURCE}"
- if [ -f "install.sh" ]
- then
- echo_log "Extracting" `basename ${SOURCE}`
- echo "y" | sh install.sh all >/dev/null
- if [ "$?" != "0" ]
- then
- exit_err "ERROR: Failed extracting ${SOURCE}"
- fi
- else
- exit_err "ERROR: ${SOURCE}/install.sh does not exist"
- fi
- cd "${HERE}"
-
- echo_log "pc-sysinstall: Extraction Finished"
-};
-
-# Function which will attempt to fetch the install file before we start
-# the install
-fetch_install_file()
-{
- get_value_from_cfg ftpPath
- if [ -z "$VAL" ]
- then
- exit_err "ERROR: Install medium was set to ftp, but no ftpPath was provided!"
- fi
-
- FTPPATH="${VAL}"
-
- # Check if we have a /usr partition to save the download
- if [ -d "${FSMNT}/usr" ]
- then
- OUTFILE="${FSMNT}/usr/.fetch-${INSFILE}"
- else
- OUTFILE="${FSMNT}/.fetch-${INSFILE}"
- fi
-
- # Do the fetch of the archive now
- fetch_file "${FTPPATH}/${INSFILE}" "${OUTFILE}" "1"
-
- # Check to see if there is a .count file for this install
- fetch_file "${FTPPATH}/${INSFILE}.count" "${OUTFILE}.count" "0"
-
- # Check to see if there is a .md5 file for this install
- fetch_file "${FTPPATH}/${INSFILE}.md5" "${OUTFILE}.md5" "0"
-
- # Done fetching, now reset the INSFILE to our downloaded archived
- INSFILE="${OUTFILE}" ; export INSFILE
-
-};
-
-# Function which will download freebsd install files
-fetch_split_files()
-{
- get_ftpHost
- if [ -z "$VAL" ]
- then
- exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!"
- fi
- FTPHOST="${VAL}"
-
- get_ftpDir
- if [ -z "$VAL" ]
- then
- exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!"
- fi
- FTPDIR="${VAL}"
-
- # Check if we have a /usr partition to save the download
- if [ -d "${FSMNT}/usr" ]
- then
- OUTFILE="${FSMNT}/usr/.fetch-${INSFILE}"
- else
- OUTFILE="${FSMNT}/.fetch-${INSFILE}"
- fi
-
- DIRS="base catpages dict doc games info manpages proflibs kernels src"
- if [ "${FBSD_ARCH}" = "amd64" ]
- then
- DIRS="${DIRS} lib32"
- fi
-
- for d in ${DIRS}
- do
- mkdir -p "${OUTFILE}/${d}"
- done
-
-
- NETRC="${OUTFILE}/.netrc"
- cat<<EOF>"${NETRC}"
-machine ${FTPHOST}
-login anonymous
-password anonymous
-macdef INSTALL
-bin
-prompt
-EOF
-
- for d in ${DIRS}
- do
- cat<<EOF>>"${NETRC}"
-cd ${FTPDIR}/${d}
-lcd ${OUTFILE}/${d}
-mreget *
-EOF
- done
-
- cat<<EOF>>"${NETRC}"
-bye
-
-
-EOF
-
- # Fetch the files via ftp
- echo "$ INSTALL" | ftp -N "${NETRC}" "${FTPHOST}"
-
- # Done fetching, now reset the INSFILE to our downloaded archived
- INSFILE="${OUTFILE}" ; export INSFILE
-}
-
-# Function which does the rsync download from the server specified in cfg
-start_rsync_copy()
-{
- # Load our rsync config values
- get_value_from_cfg rsyncPath
- if [ -z "${VAL}" ]; then
- exit_err "ERROR: rsyncPath is unset! Please check your config and try again."
- fi
- RSYNCPATH="${VAL}" ; export RSYNCPATH
-
- get_value_from_cfg rsyncHost
- if [ -z "${VAL}" ]; then
- exit_err "ERROR: rsyncHost is unset! Please check your config and try again."
- fi
- RSYNCHOST="${VAL}" ; export RSYNCHOST
-
- get_value_from_cfg rsyncUser
- if [ -z "${VAL}" ]; then
- exit_err "ERROR: rsyncUser is unset! Please check your config and try again."
- fi
- RSYNCUSER="${VAL}" ; export RSYNCUSER
-
- get_value_from_cfg rsyncPort
- if [ -z "${VAL}" ]; then
- exit_err "ERROR: rsyncPort is unset! Please check your config and try again."
- fi
- RSYNCPORT="${VAL}" ; export RSYNCPORT
-
- COUNT="1"
- while
- z=1
- do
- if [ ${COUNT} -gt ${RSYNCTRIES} ]
- then
- exit_err "ERROR: Failed rsync command!"
- break
- fi
-
- rsync -avvzHsR \
- --rsync-path="rsync --fake-super" \
- -e "ssh -p ${RSYNCPORT}" \
- ${RSYNCUSER}@${RSYNCHOST}:${RSYNCPATH}/./ ${FSMNT}
- if [ "$?" != "0" ]
- then
- echo "Rsync failed! Tries: ${COUNT}"
- else
- break
- fi
-
- COUNT="`expr ${COUNT} + 1`"
- done
-
-};
-
-start_image_install()
-{
- if [ -z "${IMAGE_FILE}" ]
- then
- exit_err "ERROR: installMedium set to image but no image file specified!"
- fi
-
- # We are ready to start mounting, lets read the config and do it
- while read line
- do
- echo $line | grep "^disk0=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Found a disk= entry, lets get the disk we are working on
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- DISK="$VAL"
- fi
-
- echo $line | grep "^commitDiskPart" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Found our flag to commit this disk setup / lets do sanity check and do it
- if [ ! -z "${DISK}" ]
- then
-
- # Write the image
- write_image "${IMAGE_FILE}" "${DISK}"
-
- # Increment our disk counter to look for next disk and unset
- unset DISK
- break
-
- else
- exit_err "ERROR: commitDiskPart was called without procceding disk<num>= and partition= entries!!!"
- fi
- fi
-
- done <${CFGF}
-};
-
-# Entrance function, which starts the installation process
-init_extraction()
-{
- # Figure out what file we are using to install from via the config
- get_value_from_cfg installFile
-
- if [ ! -z "${VAL}" ]
- then
- INSFILE="${VAL}" ; export INSFILE
- else
- # If no installFile specified, try our defaults
- if [ "$INSTALLTYPE" = "FreeBSD" ]
- then
- case $PACKAGETYPE in
- uzip) INSFILE="${FBSD_UZIP_FILE}" ;;
- tar) INSFILE="${FBSD_TAR_FILE}" ;;
- split)
- INSDIR="${FBSD_BRANCH_DIR}"
-
- # This is to trick opt_mount into not failing
- INSFILE="${INSDIR}"
- ;;
- esac
- else
- case $PACKAGETYPE in
- uzip) INSFILE="${UZIP_FILE}" ;;
- tar) INSFILE="${TAR_FILE}" ;;
- esac
- fi
- export INSFILE
- fi
-
- # Lets start by figuring out what medium we are using
- case ${INSTALLMEDIUM} in
- LiveCD) # Copies files using cpdup. Ideal for pre-staged fs
- if [ ! -f /usr/local/bin/cpdup ]
- then
- echo "Could not locate cpdup binary" >>${LOGOUT}
- exit_err "Could not locate cpdup binary (pkg_add -r cpdup)?"
- fi
- get_value_from_cfg cpdupPathsPrefix
- if [ ! -z "${VAL}" ]
- CPDUPPATHPREFIX=""
- then
- CPDUPPATHPREFIX="${VAL}" ; export CPDUPPATHPREFIX
- fi
- get_value_from_cfg cpdupPaths
- if [ ! -z "${VAL}" ]
- then
- CPDUPDIR="${VAL}" ; export CPDUPDIR
- fi
- oIFS=$IFS
- IFS=","
- for FILE in $CPDUPDIR; do
- echo_log "pc-sysinstall: Running cpdup -o ${CPDUPPATHPREFIX}/${FILE} /mnt/${FILE}"
- /usr/local/bin/cpdup -o ${CPDUPPATHPREFIX}/${FILE} /mnt/${FILE} >&1 2>&1
- if [ "$?" != "0" ]
- then
- echo "cpdup failure occurred:" >>${LOGOUT}
- exit_err "ERROR: Error occurred during cpdup"
- fi
- done
- IFS=$oIFS
- return
- ;;
- dvd|usb) # Lets start by mounting the disk
- opt_mount
- if [ ! -z "${INSDIR}" ]
- then
- INSDIR="${CDMNT}/${INSDIR}" ; export INSDIR
- start_extract_split
- else
- INSFILE="${CDMNT}/${INSFILE}" ; export INSFILE
- start_extract_uzip_tar
- fi
- ;;
- ftp) fetch_install_file
- start_extract_uzip_tar
- ;;
- rsync) start_rsync_copy
- ;;
- *) exit_err "ERROR: Unknown install medium" ;;
- esac
-
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-ftp.sh b/usr/sbin/pc-sysinstall/backend/functions-ftp.sh
deleted file mode 100755
index fa05e3f..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-ftp.sh
+++ /dev/null
@@ -1,417 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-ftp.sh,v 1.4 2010/08/24 06:11:46 imp Exp $
-
-# Functions which runs commands on the system
-
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-parse.sh
-
-DEFAULT_FTP_SERVER="ftp.freebsd.org"
-
-MAIN_FTP_SERVERS="\
-Main Site: ftp.freebsd.org"
-
-IPV6_FTP_SERVERS="\
-IPv6 Main Site: ftp.freebsd.org|\
-IPv6 Ireland: ftp3.ie.freebsd.org|\
-IPv6 Israel: ftp.il.freebsd.org|\
-IPv6 Japan: ftp2.jp.freebsd.org|\
-IPv6 USA: ftp4.us.freebsd.org|\
-IPv6 Turkey: ftp2.tr.freebsd.org"
-
-PRIMARY_FTP_SERVERS="\
-Primary: ftp1.freebsd.org|\
-Primary #2: ftp2.freebsd.org|\
-Primary #3: ftp3.freebsd.org|\
-Primary #4: ftp4.freebsd.org|\
-Primary #5: ftp5.freebsd.org|\
-Primary #6: ftp6.freebsd.org|\
-Primary #7: ftp7.freebsd.org|\
-Primary #8: ftp8.freebsd.org|\
-Primary #9: ftp9.freebsd.org|\
-Primary #10: ftp10.freebsd.org|\
-Primary #11: ftp11.freebsd.org|\
-Primary #12: ftp12.freebsd.org|\
-Primary #13: ftp13.freebsd.org|\
-Primary #14: ftp14.freebsd.org"
-
-ARGENTINA_FTP_SERVERS="\
-Argentina: ftp.ar.freebsd.org"
-
-AUSTRALIA_FTP_SERVERS="\
-Australia: ftp.au.freebsd.org|\
-Australia #2: ftp2.au.freebsd.org|\
-Australia #3: ftp3.au.freebsd.org"
-
-AUSTRIA_FTP_SERVERS="\
-Austria: ftp.at.freebsd.org|\
-Austria #2: ftp2.at.freebsd.org"
-
-BRAZIL_FTP_SERVERS="\
-Brazil: ftp.br.freebsd.org|\
-Brazil #2: ftp2.br.freebsd.org|\
-Brazil #3: ftp3.br.freebsd.org|\
-Brazil #4: ftp4.br.freebsd.org|\
-Brazil #5: ftp5.br.freebsd.org|\
-Brazil #6: ftp6.br.freebsd.org|\
-Brazil #7: ftp7.br.freebsd.org"
-
-CANADA_FTP_SERVERS="\
-Canada: ftp.ca.freebsd.org"
-
-CHINA_FTP_SERVERS="\
-China: ftp.cn.freebsd.org|\
-China #2: ftp2.cn.freebsd.org"
-
-CROATIA_FTP_SERVERS="\
-Croatia: ftp.hr.freebsd.org"
-
-CZECH_REPUBLIC_FTP_SERVERS="\
-Czech Republic: ftp.cz.freebsd.org"
-
-DENMARK_FTP_SERVERS="\
-Denmark: ftp.dk.freebsd.org|\
-Denmark #2: ftp2.dk.freebsd.org"
-
-ESTONIA_FTP_SERVERS="\
-Estonia: ftp.ee.freebsd.org"
-
-FINLAND_FTP_SERVERS="\
-Finland: ftp.fi.freebsd.org"
-
-FRANCE_FTP_SERVERS="\
-France: ftp.fr.freebsd.org|\
-France #2: ftp2.fr.freebsd.org|\
-France #3: ftp3.fr.freebsd.org|\
-France #5: ftp5.fr.freebsd.org|\
-France #6: ftp6.fr.freebsd.org|\
-France #8: ftp8.fr.freebsd.org"
-
-GERMANY_FTP_SERVERS="\
-Germany: ftp.de.freebsd.org|\
-Germany #2: ftp2.de.freebsd.org|\
-Germany #3: ftp3.de.freebsd.org|\
-Germany #4: ftp4.de.freebsd.org|\
-Germany #5: ftp5.de.freebsd.org|\
-Germany #6: ftp6.de.freebsd.org|\
-Germany #7: ftp7.de.freebsd.org|\
-Germany #8: ftp8.de.freebsd.org"
-
-GREECE_FTP_SERVERS="\
-Greece: ftp.gr.freebsd.org|\
-Greece #2: ftp2.gr.freebsd.org"
-
-HUNGARY_FTP_SERVERS="\
-Hungary: ftp.hu.freebsd.org"
-
-ICELAND_FTP_SERVERS="\
-Iceland: ftp.is.freebsd.org"
-
-IRELAND_FTP_SERVERS="\
-Ireland: ftp.ie.freebsd.org|\
-Ireland #2: ftp2.ie.freebsd.org|\
-Ireland #3: ftp3.ie.freebsd.org"
-
-ISRAEL_FTP_SERVERS="\
-Israel: ftp.il.freebsd.org"
-
-ITALY_FTP_SERVERS="\
-Italy: ftp.it.freebsd.org"
-
-JAPAN_FTP_SERVERS="\
-Japan: ftp.jp.freebsd.org|\
-Japan #2: ftp2.jp.freebsd.org|\
-Japan #3: ftp3.jp.freebsd.org|\
-Japan #4: ftp4.jp.freebsd.org|\
-Japan #5: ftp5.jp.freebsd.org|\
-Japan #6: ftp6.jp.freebsd.org|\
-Japan #7: ftp7.jp.freebsd.org|\
-Japan #8: ftp8.jp.freebsd.org|\
-Japan #9: ftp9.jp.freebsd.org"
-
-KOREA_FTP_SERVERS="\
-Korea: ftp.kr.freebsd.org|\
-Korea #2: ftp2.kr.freebsd.org"
-
-LITHUANIA_FTP_SERVERS="\
-Lithuania: ftp.lt.freebsd.org"
-
-NETHERLANDS_FTP_SERVERS="\
-Netherlands: ftp.nl.freebsd.org|\
-Netherlands #2: ftp2.nl.freebsd.org"
-
-NORWAY_FTP_SERVERS="\
-Norway: ftp.no.freebsd.org|\
-Norway #3: ftp3.no.freebsd.org"
-
-POLAND_FTP_SERVERS="\
-Poland: ftp.pl.freebsd.org|\
-Poland #2: ftp2.pl.freebsd.org|\
-Poland #5: ftp5.pl.freebsd.org"
-
-PORTUGAL_FTP_SERVERS="\
-Portugal: ftp.pt.freebsd.org|\
-Portugal #2: ftp2.pt.freebsd.org|\
-Portugal #4: ftp4.pt.freebsd.org"
-
-ROMANIA_FTP_SERVERS="\
-Romania: ftp.ro.freebsd.org"
-
-RUSSIA_FTP_SERVERS="\
-Russia: ftp.ru.freebsd.org|\
-Russia #2: ftp2.ru.freebsd.org|\
-Russia #3: ftp3.ru.freebsd.org|\
-Russia #4: ftp4.ru.freebsd.org"
-
-SINGAPORE_FTP_SERVERS="\
-Singapore: ftp.sg.freebsd.org"
-
-SLOVAK_REPUBLIC_FTP_SERVERS="\
-Slovak Republic: ftp.sk.freebsd.org"
-
-SLOVENIA_FTP_SERVERS="\
-Slovenia: ftp.si.freebsd.org|\
-Slovenia #2: ftp2.si.freebsd.org"
-
-SOUTH_AFRICA_FTP_SERVERS="\
-South Africa: ftp.za.freebsd.org|\
-South Africa #2: ftp2.za.freebsd.org|\
-South Africa #3: ftp3.za.freebsd.org|\
-South Africa #4: ftp4.za.freebsd.org"
-
-SPAIN_FTP_SERVERS="\
-Spain: ftp.es.freebsd.org|\
-Spain #2: ftp2.es.freebsd.org|\
-Spain #3: ftp3.es.freebsd.org"
-
-SWEDEN_FTP_SERVERS="\
-Sweden: ftp.se.freebsd.org|\
-Sweden #2: ftp2.se.freebsd.org|\
-Sweden #3: ftp3.se.freebsd.org|\
-Sweden #5: ftp5.se.freebsd.org"
-
-SWITZERLAND_FTP_SERVERS="\
-Switzerland: ftp.ch.freebsd.org|\
-Switzerland #2: ftp2.ch.freebsd.org"
-
-TAIWAN_FTP_SERVERS="\
-Taiwan: ftp.tw.freebsd.org|\
-Taiwan #2: ftp2.tw.freebsd.org|\
-Taiwan #3: ftp3.tw.freebsd.org|\
-Taiwan #4: ftp4.tw.freebsd.org|\
-Taiwan #6: ftp6.tw.freebsd.org|\
-Taiwan #11: ftp11.tw.freebsd.org"
-
-TURKEY_FTP_SERVERS="\
-Turkey: ftp.tr.freebsd.org|\
-Turkey #2: ftp2.tr.freebsd.org"
-
-UK_FTP_SERVERS="\
-UK: ftp.uk.freebsd.org|\
-UK #2: ftp2.uk.freebsd.org|\
-UK #3: ftp3.uk.freebsd.org|\
-UK #4: ftp4.uk.freebsd.org|\
-UK #5: ftp5.uk.freebsd.org|\
-UK #6: ftp6.uk.freebsd.org"
-
-UKRAINE_FTP_SERVERS="\
-Ukraine: ftp.ua.freebsd.org|\
-Ukraine #2: ftp2.ua.freebsd.org|\
-Ukraine #5: ftp5.ua.freebsd.org|\
-Ukraine #6: ftp6.ua.freebsd.org|\
-Ukraine #7: ftp7.ua.freebsd.org|\
-Ukraine #8: ftp8.ua.freebsd.org"
-
-USA_FTP_SERVERS="\
-USA #1: ftp1.us.freebsd.org|\
-USA #2: ftp2.us.freebsd.org|\
-USA #3: ftp3.us.freebsd.org|\
-USA #4: ftp4.us.freebsd.org|\
-USA #5: ftp5.us.freebsd.org|\
-USA #6: ftp6.us.freebsd.org|\
-USA #7: ftp7.us.freebsd.org|\
-USA #8: ftp8.us.freebsd.org|\
-USA #9: ftp9.us.freebsd.org|\
-USA #10: ftp10.us.freebsd.org|\
-USA #11: ftp11.us.freebsd.org|\
-USA #12: ftp12.us.freebsd.org|\
-USA #13: ftp13.us.freebsd.org|\
-USA #14: ftp14.us.freebsd.org|\
-USA #15: ftp15.us.freebsd.org"
-
-show_mirrors()
-{
- MIRRORS="${1}"
- if [ -n "${MIRRORS}" ]
- then
- SAVE_IFS="${IFS}"
- IFS="|"
- for m in ${MIRRORS}
- do
- echo "$m"
- done
- IFS="${SAVE_IFS}"
- fi
-};
-
-set_ftp_mirror()
-{
- MIRROR="${1}"
- echo "${MIRROR}" > "${CONFDIR}/mirrors.conf"
-};
-
-get_ftp_mirror()
-{
- MIRROR="${DEFAULT_FTP_SERVER}"
- if [ -f "${CONFDIR}/mirrors.conf" ]
- then
- MIRROR=`cat "${CONFDIR}/mirrors.conf"`
- fi
-
- VAL="${MIRROR}"
- export VAL
-};
-
-
-get_ftpHost()
-{
- get_value_from_cfg ftpPath
- ftpPath="$VAL"
-
- ftpHost=`echo "${ftpPath}" | sed -E 's|^(ftp://)([^/]*)(.*)|\2|'`
- VAL="${ftpHost}"
-
- export VAL
-};
-
-get_ftpDir()
-{
- get_value_from_cfg ftpPath
- ftpPath="$VAL"
-
- ftpDir=`echo "${ftpPath}" | sed -E 's|^(ftp://)([^/]*)(.*)|\3|'`
- VAL="${ftpDir}"
-
- export VAL
-};
-
-get_ftp_mirrors()
-{
- COUNTRY="${1}"
- if [ -n "$COUNTRY" ]
- then
- COUNTRY=`echo $COUNTRY|tr A-Z a-z`
- case "${COUNTRY}" in
- argentina*) VAL="${ARGENTINA_FTP_SERVERS}" ;;
- australia*) VAL="${AUSTRALIA_FTP_SERVERS}" ;;
- austria*) VAL="${AUSTRIA_FTP_SERVERS}" ;;
- brazil*) VAL="${BRAZIL_FTP_SERVERS}" ;;
- canada*) VAL="${CANADA_FTP_SERVERS}" ;;
- china*) VAL="${CHINA_FTP_SERVERS}" ;;
- croatia*) VAL="${CROATIA_FTP_SERVERS}" ;;
- czech*) VAL="${CZECH_REPUBLIC_FTP_SERVERS}" ;;
- denmark*) VAL="${DENMARK_FTP_SERVERS}" ;;
- estonia*) VAL="${ESTONIA_FTP_SERVERS}" ;;
- finland*) VAL="${FINLAND_FTP_SERVERS}" ;;
- france*) VAL="${FRANCE_FTP_SERVERS}" ;;
- germany*) VAL="${GERMANY_FTP_SERVERS}" ;;
- greece*) VAL="${GREECE_FTP_SERVERS}" ;;
- hungary*) VAL="${HUNGARY_FTP_SERVERS}" ;;
- iceland*) VAL="${ICELAND_FTP_SERVERS}" ;;
- ireland*) VAL="${IRELAND_FTP_SERVERS}" ;;
- israel*) VAL="${ISRAEL_FTP_SERVERS}" ;;
- italy*) VAL="${ITALY_FTP_SERVERS}" ;;
- japan*) VAL="${JAPAN_FTP_SERVERS}" ;;
- korea*) VAL="${KOREA_FTP_SERVERS}" ;;
- lithuania*) VAL="${LITHUANIA_FTP_SERVERS}" ;;
- netherlands*) VAL="${NETHERLANDS_FTP_SERVERS}" ;;
- norway*) VAL="${NORWAY_FTP_SERVERS}" ;;
- poland*) VAL="${POLAND_FTP_SERVERS}" ;;
- portugal*) VAL="${PORTUGAL_FTP_SERVERS}" ;;
- romania*) VAL="${ROMAINIA_FTP_SERVERS}" ;;
- russia*) VAL="${RUSSIA_FTP_SERVERS}" ;;
- singapore*) VAL="${SINGAPORE_FTP_SERVERS}" ;;
- slovak*) VAL="${SLOVAK_REPUBLIC_FTP_SERVERS}" ;;
- slovenia*) VAL="${SLOVENIA_FTP_SERVERS}" ;;
- *africa*) VAL="${SOUTH_AFRICA_FTP_SERVERS}" ;;
- spain*) VAL="${SPAIN_FTP_SERVERS}" ;;
- sweden*) VAL="${SWEDEN_FTP_SERVERS}" ;;
- switzerland*) VAL="${SWITZERLAND_FTP_SERVERS}" ;;
- taiwan*) VAL="${TAIWAN_FTP_SERVERS}" ;;
- turkey*) VAL="${TURKEY_FTP_SERVERS}" ;;
- ukraine*) VAL="${UKRAINE_FTP_SERVERS}" ;;
- uk*) VAL="${UK_FTP_SERVERS}" ;;
- usa*) VAL="${USA_FTP_SERVERS}" ;;
- esac
- else
- VAL="${MAIN_FTP_SERVERS}"
- VAL="${VAL}|${IPV6_FTP_SERVERS}"
- VAL="${VAL}|${PRIMARY_FTP_SERVERS}"
- VAL="${VAL}|${ARGENTINA_FTP_SERVERS}"
- VAL="${VAL}|${AUSTRALIA_FTP_SERVERS}"
- VAL="${VAL}|${AUSTRIA_FTP_SERVERS}"
- VAL="${VAL}|${BRAZIL_FTP_SERVERS}"
- VAL="${VAL}|${CANADA_FTP_SERVERS}"
- VAL="${VAL}|${CHINA_FTP_SERVERS}"
- VAL="${VAL}|${CROATIA_FTP_SERVERS}"
- VAL="${VAL}|${CZECH_REPUBLIC_FTP_SERVERS}"
- VAL="${VAL}|${DENMARK_FTP_SERVERS}"
- VAL="${VAL}|${ESTONIA_FTP_SERVERS}"
- VAL="${VAL}|${FINLAND_FTP_SERVERS}"
- VAL="${VAL}|${FRANCE_FTP_SERVERS}"
- VAL="${VAL}|${GERMANY_FTP_SERVERS}"
- VAL="${VAL}|${GREECE_FTP_SERVERS}"
- VAL="${VAL}|${HUNGARY_FTP_SERVERS}"
- VAL="${VAL}|${ICELAND_FTP_SERVERS}"
- VAL="${VAL}|${IRELAND_FTP_SERVERS}"
- VAL="${VAL}|${ISRAEL_FTP_SERVERS}"
- VAL="${VAL}|${ITALY_FTP_SERVERS}"
- VAL="${VAL}|${JAPAN_FTP_SERVERS}"
- VAL="${VAL}|${KOREA_FTP_SERVERS}"
- VAL="${VAL}|${LITHUANIA_FTP_SERVERS}"
- VAL="${VAL}|${NETHERLANDS_FTP_SERVERS}"
- VAL="${VAL}|${NORWAY_FTP_SERVERS}"
- VAL="${VAL}|${POLAND_FTP_SERVERS}"
- VAL="${VAL}|${PORTUGAL_FTP_SERVERS}"
- VAL="${VAL}|${ROMANIA_FTP_SERVERS}"
- VAL="${VAL}|${RUSSIA_FTP_SERVERS}"
- VAL="${VAL}|${SINGAPORE_FTP_SERVERS}"
- VAL="${VAL}|${SLOVAK_REPUBLIC_FTP_SERVERS}"
- VAL="${VAL}|${SLOVENIA_FTP_SERVERS}"
- VAL="${VAL}|${SOUTH_AFRICA_FTP_SERVERS}"
- VAL="${VAL}|${SPAIN_FTP_SERVERS}"
- VAL="${VAL}|${SWEDEN_FTP_SERVERS}"
- VAL="${VAL}|${SWITZERLAND_FTP_SERVERS}"
- VAL="${VAL}|${TAIWAN_FTP_SERVERS}"
- VAL="${VAL}|${TURKEY_FTP_SERVERS}"
- VAL="${VAL}|${UKRAINE_FTP_SERVERS}"
- VAL="${VAL}|${UK_FTP_SERVERS}"
- VAL="${VAL}|${USA_FTP_SERVERS}"
- fi
-
- export VAL
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-installcomponents.sh b/usr/sbin/pc-sysinstall/backend/functions-installcomponents.sh
deleted file mode 100755
index 5aa6f84..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-installcomponents.sh
+++ /dev/null
@@ -1,167 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-installcomponents.sh,v 1.4 2010/09/08 20:10:24 imp Exp $
-
-# Functions which check and load any optional modules specified in the config
-
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-parse.sh
-
-copy_component()
-{
- COMPONENT="$1"
- FAILED="0"
- CFILES=""
-
- # Check the type, and set the components subdir properly
- TYPE="`grep 'type:' ${COMPDIR}/${COMPONENT}/component.cfg | cut -d ' ' -f 2`"
- if [ "${TYPE}" = "PBI" ]
- then
- SUBDIR="PBI"
- else
- SUBDIR="components"
- fi
-
- # Lets start by downloading / copying the files this component needs
- while read line
- do
- CFILE="`echo $line | cut -d ':' -f 1`"
- CFILEMD5="`echo $line | cut -d ':' -f 2`"
- CFILE2MD5="`echo $line | cut -d ':' -f 3`"
-
- case ${INSTALLMEDIUM} in
- dvd|usb)
- # On both dvd / usb, we can just copy the file
- cp ${CDMNT}/${COMPFILEDIR}/${SUBDIR}/${CFILE} \
- ${FSMNT}/${COMPTMPDIR} >>${LOGOUT} 2>>${LOGOUT}
- RESULT="$?"
- ;;
-
- ftp)
- get_value_from_cfg ftpPath
- if [ -z "$VAL" ]
- then
- exit_err "ERROR: Install medium was set to ftp, but no ftpPath was provided!"
- fi
- FTPPATH="${VAL}"
-
- fetch_file "${FTPPATH}/${COMPFILEDIR}/${SUBDIR}/${CFILE}" "${FSMNT}/${COMPTMPDIR}/${CFILE}" "0"
- RESULT="$?"
- ;;
-
- sftp) ;;
- esac
-
- if [ "${RESULT}" != "0" ]
- then
- echo_log "WARNING: Failed to copy ${CFILE}"
- FAILED="1"
- else
- # Now lets check the MD5 to confirm the file is valid
- CHECKMD5=`md5 -q ${FSMNT}/${COMPTMPDIR}/${CFILE}`
- if [ "${CHECKMD5}" != "${CFILEMD5}" -a "${CHECKMD5}" != "${CFILE2MD5}" ]
- then
- echo_log "WARNING: ${CFILE} failed md5 checksum"
- FAILED="1"
- else
- if [ -z "${CFILES}" ]
- then
- CFILES="${CFILE}"
- else
- CFILES="${CFILES},${CFILE}"
- fi
- fi
- fi
-
-
- done < ${COMPDIR}/${COMPONENT}/distfiles
-
- if [ "${FAILED}" = "0" ]
- then
- # Now install the component
- run_component_install ${COMPONENT} ${CFILES}
- fi
-
-};
-
-run_component_install()
-{
- COMPONENT="$1"
- CFILES="$1"
-
- # Lets install this component now
- # Start by making a wrapper script which sets the variables
- # for the component to use
- echo "#!/bin/sh
-COMPTMPDIR=\"${COMPTMPDIR}\"
-export COMPTMPDIR
-CFILE=\"${CFILE}\"
-export CFILE
-
-sh ${COMPTMPDIR}/install.sh
-
-" >${FSMNT}/.componentwrapper.sh
- chmod 755 ${FSMNT}/.componentwrapper.sh
-
- # Copy over the install script for this component
- cp ${COMPDIR}/${COMPONENT}/install.sh ${FSMNT}/${COMPTMPDIR}/
-
- echo_log "INSTALL COMPONENT: ${i}"
- chroot ${FSMNT} /.componentwrapper.sh >>${LOGOUT} 2>>${LOGOUT}
- rm ${FSMNT}/.componentwrapper.sh
-
-};
-
-# Check for any modules specified, and begin loading them
-install_components()
-{
- # First, lets check and see if we even have any optional modules
- get_value_from_cfg installComponents
- if [ ! -z "${VAL}" ]
- then
- # Lets start by cleaning up the string and getting it ready to parse
- strip_white_space ${VAL}
- COMPONENTS=`echo ${VAL} | sed -e "s|,| |g"`
- for i in $COMPONENTS
- do
- if [ ! -e "${COMPDIR}/${i}/install.sh" -o ! -e "${COMPDIR}/${i}/distfiles" ]
- then
- echo_log "WARNING: Component ${i} doesn't seem to exist"
- else
-
- # Make the tmpdir on the disk
- mkdir -p ${FSMNT}/${COMPTMPDIR} >>${LOGOUT} 2>>${LOGOUT}
-
- # Start by grabbing the component files
- copy_component ${i}
-
- # Remove the tmpdir now
- rm -rf ${FSMNT}/${COMPTMPDIR} >>${LOGOUT} 2>>${LOGOUT}
- fi
- done
- fi
-
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-installpackages.sh b/usr/sbin/pc-sysinstall/backend/functions-installpackages.sh
deleted file mode 100644
index b8f383a..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-installpackages.sh
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-installpackages.sh,v 1.3 2010/08/24 06:11:46 imp Exp $
-
-# Functions which check and load any optional packages specified in the config
-
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-parse.sh
-
-# Recursively determine all dependencies for this package
-determine_package_dependencies()
-{
- local PKGNAME="${1}"
- local DEPFILE="${2}"
-
- grep "${PKGNAME}" "${DEPFILE}" >/dev/null
- if [ "$?" -ne "0" ]
- then
- echo "${PKGNAME}" >> "${DEPFILE}"
- get_package_dependencies "${PKGNAME}" "1"
-
- local DEPS="${VAL}"
- for d in ${DEPS}
- do
- determine_package_dependencies "${d}" "${DEPFILE}"
- done
- fi
-};
-
-# Fetch packages dependencies from a file
-fetch_package_dependencies()
-{
- local DEPFILE
- local DEPS
- local SAVEDIR
-
- DEPFILE="${1}"
- DEPS=`cat "${DEPFILE}"`
- SAVEDIR="${2}"
-
- for d in ${DEPS}
- do
- get_package_short_name "${d}"
- SNAME="${VAL}"
-
- get_package_category "${SNAME}"
- CATEGORY="${VAL}"
-
- fetch_package "${CATEGORY}" "${d}" "${SAVEDIR}"
- done
-};
-
-# Check for any packages specified, and begin loading them
-install_packages()
-{
- # First, lets check and see if we even have any packages to install
- get_value_from_cfg installPackages
- if [ ! -z "${VAL}" ]
- then
- HERE=`pwd`
- rc_nohalt "mkdir -p ${FSMNT}/${PKGTMPDIR}"
- rc_nohalt "cd ${FSMNT}/${PKGTMPDIR}"
-
- if [ ! -f "${CONFDIR}/INDEX" ]
- then
- get_package_index
- fi
-
- if [ ! -f "${CONFDIR}/INDEX.parsed" ]
- then
- parse_package_index
- fi
-
- # Lets start by cleaning up the string and getting it ready to parse
- strip_white_space ${VAL}
- PACKAGES=`echo ${VAL} | sed -e "s|,| |g"`
- for i in $PACKAGES
- do
- if get_package_name "${i}"
- then
- PKGNAME="${VAL}"
- DEPFILE="${FSMNT}/${PKGTMPDIR}/.${PKGNAME}.deps"
-
- rc_nohalt "touch ${DEPFILE}"
- determine_package_dependencies "${PKGNAME}" "${DEPFILE}"
- fetch_package_dependencies "${DEPFILE}" "${FSMNT}/${PKGTMPDIR}"
-
- # If the package is not already installed, install it!
- if ! run_chroot_cmd "pkg_info -e ${PKGNAME}"
- then
- rc_nohalt "pkg_add -C ${FSMNT} ${PKGTMPDIR}/${PKGNAME}.tbz"
- fi
-
- rc_nohalt "rm ${DEPFILE}"
- fi
-
- rc_nohalt "cd ${HERE}"
- done
-
- rm -rf "${FSMNT}/${PKGTMPDIR}"
- fi
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-localize.sh b/usr/sbin/pc-sysinstall/backend/functions-localize.sh
deleted file mode 100755
index a56f957..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-localize.sh
+++ /dev/null
@@ -1,511 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-localize.sh,v 1.3 2010/08/24 06:11:46 imp Exp $
-
-# Functions which runs commands on the system
-
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-parse.sh
-
-
-# Function which localizes a FreeBSD install
-localize_freebsd()
-{
- sed -i.bak "s/lang=en_US/lang=${LOCALE}/g" ${FSMNT}/etc/login.conf
- rm ${FSMNT}/etc/login.conf.bak
-};
-
-
-# Function which localizes a PC-BSD install
-localize_pcbsd()
-{
- #Change the skel files
- ##########################################################################
- sed -i.bak "s/Country=us/Country=${COUNTRY}/g" ${FSMNT}/usr/share/skel/.kde4/share/config/kdeglobals
- sed -i.bak "s/Country=us/Country=${COUNTRY}/g" ${FSMNT}/root/.kde4/share/config/kdeglobals
- sed -i.bak "s/Language=en_US/Language=${SETLANG}:${LOCALE}/g" ${FSMNT}/usr/share/skel/.kde4/share/config/kdeglobals
- sed -i.bak "s/Language=en_US/Language=${SETLANG}:${LOCALE}/g" ${FSMNT}/root/.kde4/share/config/kdeglobals
-
- #Change KDM Langs
- ##########################################################################
- sed -i.bak "s/Language=en_US/Language=${LOCALE}.UTF-8/g" ${FSMNT}/usr/local/kde4/share/config/kdm/kdmrc
-
- # Check if we have a localized splash screen and copy it
- if [ -e "${FSMNT}/usr/PCBSD/splash-screens/loading-screen-${SETLANG}.pcx" ]
- then
- cp ${FSMNT}/usr/PCBSD/splash-screens/loading-screen-${SETLANG}.pcx ${FSMNT}/boot/loading-screen.pcx
- fi
-
-};
-
-localize_x_keyboard()
-{
- KEYMOD="$1"
- KEYLAY="$2"
- KEYVAR="$3"
- COUNTRY="$4"
- OPTION="grp:alt_shift_toggle"
- SETXKBMAP=""
-
- if [ "${COUNTRY}" = "NONE" -o "${COUNTRY}" = "us" -o "${COUNTRY}" = "C" ] ; then
- #In this case we don't need any additional language
- COUNTRY=""
- OPTION=""
- else
- COUNTRY=",${COUNTRY}"
- fi
-
- if [ "${KEYMOD}" != "NONE" ]
- then
- SETXKBMAP="-model ${KEYMOD}"
- KXMODEL="${KEYMOD}"
- else
- KXMODEL="pc104"
- fi
-
- if [ "${KEYLAY}" != "NONE" ]
- then
- localize_key_layout "$KEYLAY"
- SETXKBMAP="${SETXKBMAP} -layout ${KEYLAY}"
- KXLAYOUT="${KEYLAY}"
- else
- KXLAYOUT="us"
- fi
-
- if [ "${KEYVAR}" != "NONE" ]
- then
- SETXKBMAP="${SETXKBMAP} -variant ${KEYVAR}"
- KXVAR="(${KEYVAR})"
- else
- KXVAR=""
- fi
-
- # Setup .xprofile with our setxkbmap call now
- if [ ! -z "${SETXKBMAP}" ]
- then
- if [ ! -e "${FSMNT}/usr/share/skel/.xprofile" ]
- then
- echo "#!/bin/sh" >${FSMNT}/usr/share/skel/.xprofile
- fi
-
- # Save the keyboard layout for user / root X logins
- echo "setxkbmap ${SETXKBMAP}" >>${FSMNT}/usr/share/skel/.xprofile
- chmod 755 ${FSMNT}/usr/share/skel/.xprofile
- cp ${FSMNT}/usr/share/skel/.xprofile ${FSMNT}/root/.xprofile
-
- # Save it for KDM
- echo "setxkbmap ${SETXKBMAP}" >>${FSMNT}/usr/local/kde4/share/config/kdm/Xsetup
- fi
-
-
- # Create the kxkbrc configuration using these options
- echo "[Layout]
-DisplayNames=${KXLAYOUT}${COUNTRY}
-IndicatorOnly=false
-LayoutList=${KXLAYOUT}${KXVAR}${COUNTRY}
-Model=${KXMODEL}
-Options=${OPTION}
-ResetOldOptions=true
-ShowFlag=true
-ShowSingle=false
-SwitchMode=WinClass
-Use=true " >${FSMNT}/usr/share/skel/.kde4/share/config/kxkbrc
-
-};
-
-localize_key_layout()
-{
-
- KEYLAYOUT="$1"
-
- # Set the keylayout in rc.conf
- case ${KEYLAYOUT} in
- am) KEYLAYOUT_CONSOLE="hy.armscii-8" ;;
- ch) KEYLAYOUT_CONSOLE="swissgerman.iso" ;;
- cz) KEYLAYOUT_CONSOLE="cz.iso2" ;;
- de) KEYLAYOUT_CONSOLE="german.iso" ;;
- dk) KEYLAYOUT_CONSOLE="danish.iso" ;;
- ee) KEYLAYOUT_CONSOLE="estonian.iso" ;;
- es) KEYLAYOUT_CONSOLE="spanish.iso" ;;
- fi) KEYLAYOUT_CONSOLE="finnish.iso" ;;
- is) KEYLAYOUT_CONSOLE="icelandic.iso" ;;
- jp) KEYLAYOUT_CONSOLE="jp.106" ;;
- nl) KEYLAYOUT_CONSOLE="dutch.iso.acc" ;;
- no) KEYLAYOUT_CONSOLE="norwegian.iso" ;;
- pl) KEYLAYOUT_CONSOLE="pl_PL.ISO8859-2" ;;
- ru) KEYLAYOUT_CONSOLE="ru.koi8-r" ;;
- sk) KEYLAYOUT_CONSOLE="sk.iso2" ;;
- se) KEYLAYOUT_CONSOLE="swedish.iso" ;;
- tr) KEYLAYOUT_CONSOLE="tr.iso9.q" ;;
- gb) KEYLAYOUT_CONSOLE="uk.iso" ;;
- *) if [ ! -z "${KEYLAYOUT}" ]
- then
- KEYLAYOUT_CONSOLE="${KEYLAYOUT}.iso"
- fi
- ;;
- esac
-
- if [ ! -z "${KEYLAYOUT_CONSOLE}" ]
- then
- echo "keymap=\"${KEYLAYOUT_CONSOLE}\"" >>${FSMNT}/etc/rc.conf
- fi
-
-};
-
-# Function which prunes other l10n files from the KDE install
-localize_prune_langs()
-{
- get_value_from_cfg localizeLang
- KEEPLANG="$VAL"
- if [ -z "$KEEPLANG" ] ; then
- KEEPLANG="en"
- fi
- export KEEPLANG
-
- echo_log "Pruning other l10n files, keeping ${KEEPLANG}"
-
- # Create the script to do uninstalls
- echo '#!/bin/sh
-
- for i in `pkg_info | grep "kde-l10n" | cut -d " " -f 1`
- do
- echo "$i" | grep "${KEEPLANG}-kde"
- if [ "$?" != "0" ] ; then
- pkg_delete ${i}
- fi
- done
- ' > ${FSMNT}/.pruneLangs.sh
-
- chmod 755 ${FSMNT}/.pruneLangs.sh
- chroot ${FSMNT} /.pruneLangs.sh >/dev/null 2>/dev/null
- rm ${FSMNT}/.pruneLangs.sh
-
-};
-
-# Function which sets COUNTRY SETLANG and LOCALE based upon $1
-localize_get_codes()
-{
- TARGETLANG="${1}"
- # Setup the presets for the specific lang
- case $TARGETLANG in
- af)
- COUNTRY="C"
- SETLANG="af"
- LOCALE="af_ZA"
- ;;
- ar)
- COUNTRY="C"
- SETLANG="ar"
- LOCALE="en_US"
- ;;
- az)
- COUNTRY="C"
- SETLANG="az"
- LOCALE="en_US"
- ;;
- ca)
- COUNTRY="es"
- SETLANG="es:ca"
- LOCALE="ca_ES"
- ;;
- be)
- COUNTRY="be"
- SETLANG="be"
- LOCALE="be_BY"
- ;;
- bn)
- COUNTRY="bn"
- SETLANG="bn"
- LOCALE="en_US"
- ;;
- bg)
- COUNTRY="bg"
- SETLANG="bg"
- LOCALE="bg_BG"
- ;;
- cs)
- COUNTRY="cz"
- SETLANG="cs"
- LOCALE="cs_CZ"
- ;;
- da)
- COUNTRY="dk"
- SETLANG="da"
- LOCALE="da_DK"
- ;;
- de)
- COUNTRY="de"
- SETLANG="de"
- LOCALE="de_DE"
- ;;
- en_GB)
- COUNTRY="gb"
- SETLANG="en_GB:cy"
- LOCALE="en_GB"
- ;;
- el)
- COUNTRY="gr"
- SETLANG="el:gr"
- LOCALE="el_GR"
- ;;
- es)
- COUNTRY="es"
- SETLANG="es"
- LOCALE="es_ES"
- ;;
- es_LA)
- COUNTRY="us"
- SETLANG="es:en_US"
- LOCALE="es_ES"
- ;;
- et)
- COUNTRY="ee"
- SETLANG="et"
- LOCALE="et_EE"
- ;;
- fr)
- COUNTRY="fr"
- SETLANG="fr"
- LOCALE="fr_FR"
- ;;
- he)
- COUNTRY="il"
- SETLANG="he:ar"
- LOCALE="he_IL"
- ;;
- hr)
- COUNTRY="hr"
- SETLANG="hr"
- LOCALE="hr_HR"
- ;;
- hu)
- COUNTRY="hu"
- SETLANG="hu"
- LOCALE="hu_HU"
- ;;
- it)
- COUNTRY="it"
- SETLANG="it"
- LOCALE="it_IT"
- ;;
- ja)
- COUNTRY="jp"
- SETLANG="ja"
- LOCALE="ja_JP"
- ;;
- ko)
- COUNTRY="kr"
- SETLANG="ko"
- LOCALE="ko_KR"
- ;;
- nl)
- COUNTRY="nl"
- SETLANG="nl"
- LOCALE="nl_NL"
- ;;
- nn)
- COUNTRY="no"
- SETLANG="nn"
- LOCALE="en_US"
- ;;
- pa)
- COUNTRY="pa"
- SETLANG="pa"
- LOCALE="en_US"
- ;;
- pl)
- COUNTRY="pl"
- SETLANG="pl"
- LOCALE="pl_PL"
- ;;
- pt)
- COUNTRY="pt"
- SETLANG="pt"
- LOCALE="pt_PT"
- ;;
- pt_BR)
- COUNTRY="br"
- SETLANG="pt_BR"
- LOCALE="pt_BR"
- ;;
- ru)
- COUNTRY="ru"
- SETLANG="ru"
- LOCALE="ru_RU"
- ;;
- sl)
- COUNTRY="si"
- SETLANG="sl"
- LOCALE="sl_SI"
- ;;
- sk)
- COUNTRY="sk"
- SETLANG="sk"
- LOCALE="sk_SK"
- ;;
- sv)
- COUNTRY="se"
- SETLANG="sv"
- LOCALE="sv_SE"
- ;;
- uk)
- COUNTRY="ua"
- SETLANG="uk"
- LOCALE="uk_UA"
- ;;
- vi)
- COUNTRY="vn"
- SETLANG="vi"
- LOCALE="en_US"
- ;;
- zh_CN)
- COUNTRY="cn"
- SETLANG="zh_CN"
- LOCALE="zh_CN"
- ;;
- zh_TW)
- COUNTRY="tw"
- SETLANG="zh_TW"
- LOCALE="zh_TW"
- ;;
- *)
- COUNTRY="C"
- SETLANG="${TARGETLANG}"
- LOCALE="en_US"
- ;;
- esac
-
- export COUNTRY SETLANG LOCALE
-
-};
-
-# Function which sets the timezone on the system
-set_timezone()
-{
- TZONE="$1"
- cp ${FSMNT}/usr/share/zoneinfo/${TZONE} ${FSMNT}/etc/localtime
-};
-
-# Function which enables / disables NTP
-set_ntp()
-{
- ENABLED="$1"
- if [ "$ENABLED" = "yes" -o "${ENABLED}" = "YES" ]
- then
- cat ${FSMNT}/etc/rc.conf 2>/dev/null | grep 'ntpd_enable="YES"' >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- echo 'ntpd_enable="YES"' >>${FSMNT}/etc/rc.conf
- echo 'ntpd_sync_on_start="YES"' >>${FSMNT}/etc/rc.conf
- fi
- else
- cat ${FSMNT}/etc/rc.conf 2>/dev/null | grep 'ntpd_enable="YES"' >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- sed -i.bak 's|ntpd_enable="YES"||g' ${FSMNT}/etc/rc.conf
- fi
- fi
-};
-
-# Starts checking for localization directives
-run_localize()
-{
- KEYLAYOUT="NONE"
- KEYMOD="NONE"
- KEYVAR="NONE"
-
- while read line
- do
- # Check if we need to do any localization
- echo $line | grep "^localizeLang=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
-
- # Set our country / lang / locale variables
- get_value_from_string "$line"
- localize_get_codes ${VAL}
-
- get_value_from_string "$line"
- # If we are doing PC-BSD install, localize it as well as FreeBSD base
- if [ "${INSTALLTYPE}" != "FreeBSD" ]
- then
- localize_pcbsd "$VAL"
- fi
- localize_freebsd "$VAL"
- fi
-
- # Check if we need to do any keylayouts
- echo $line | grep "^localizeKeyLayout=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- get_value_from_string "$line"
- KEYLAYOUT="$VAL"
- fi
-
- # Check if we need to do any key models
- echo $line | grep "^localizeKeyModel=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- get_value_from_string "$line"
- KEYMOD="$VAL"
- fi
-
- # Check if we need to do any key variant
- echo $line | grep "^localizeKeyVariant=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- get_value_from_string "$line"
- KEYVAR="$VAL"
- fi
-
-
- # Check if we need to set a timezone
- echo $line | grep "^timeZone=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- get_value_from_string "$line"
- set_timezone "$VAL"
- fi
-
- # Check if we need to set a timezone
- echo $line | grep "^enableNTP=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- get_value_from_string "$line"
- set_ntp "$VAL"
- fi
- done <${CFGF}
-
- if [ "${INSTALLTYPE}" != "FreeBSD" ] ; then
- # Do our X keyboard localization
- localize_x_keyboard "${KEYMOD}" "${KEYLAYOUT}" "${KEYVAR}" "${COUNTRY}"
- fi
-
- # Check if we want to prunt any other KDE lang files to save some disk space
- get_value_from_cfg localizePrune
- if [ "${VAL}" = "yes" -o "${VAL}" = "YES" ] ; then
- localize_prune_langs
- fi
-
- # Update the login.conf db, even if we didn't localize, its a good idea to make sure its up2date
- run_chroot_cmd "/usr/bin/cap_mkdb /etc/login.conf" >/dev/null 2>/dev/null
-
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-mountdisk.sh b/usr/sbin/pc-sysinstall/backend/functions-mountdisk.sh
deleted file mode 100755
index 9424a62..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-mountdisk.sh
+++ /dev/null
@@ -1,191 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-mountdisk.sh,v 1.5 2010/10/09 08:52:09 imp Exp $
-
-# Functions related mounting the newly formatted disk partitions
-
-# Mounts all the specified partition to the mount-point
-mount_partition()
-{
- if [ -z "${1}" -o -z "${2}" -o -z "${3}" ]
- then
- exit_err "ERROR: Missing arguments for mount_partition"
- fi
-
- PART="${1}"
- PARTFS="${2}"
- MNTPOINT="${3}"
- MNTFLAGS="${4}"
-
- # Setup the MNTOPTS
- if [ -z "${MNTOPTS}" ]
- then
- MNTFLAGS="-o rw"
- else
- MNTFLAGS="-o rw,${MNTFLAGS}"
- fi
-
-
- #We are on ZFS, lets setup this mount-point
- if [ "${PARTFS}" = "ZFS" ]
- then
- ZPOOLNAME=$(get_zpool_name "${PART}")
-
- # Check if we have multiple zfs mounts specified
- for ZMNT in `echo ${MNTPOINT} | sed 's|,| |g'`
- do
- # First make sure we create the mount point
- if [ ! -d "${FSMNT}${ZMNT}" ] ; then
- mkdir -p ${FSMNT}${ZMNT} >>${LOGOUT} 2>>${LOGOUT}
- fi
-
- if [ "${ZMNT}" = "/" ] ; then
- ZNAME=""
- else
- ZNAME="${ZMNT}"
- echo_log "zfs create -p ${ZPOOLNAME}${ZNAME}"
- rc_halt "zfs create -p ${ZPOOLNAME}${ZNAME}"
- fi
- sleep 2
- rc_halt "zfs set mountpoint=${FSMNT}${ZNAME} ${ZPOOLNAME}${ZNAME}"
-
- # Disable atime for this zfs partition, speed increase
- rc_nohalt "zfs set atime=off ${ZPOOLNAME}${ZNAME}"
- done
-
- else
- # If we are not on ZFS, lets do the mount now
- # First make sure we create the mount point
- if [ ! -d "${FSMNT}${MNTPOINT}" ]
- then
- mkdir -p ${FSMNT}${MNTPOINT} >>${LOGOUT} 2>>${LOGOUT}
- fi
-
- echo_log "mount ${MNTFLAGS} /dev/${PART} -> ${FSMNT}${MNTPOINT}"
- sleep 2
- rc_halt "mount ${MNTFLAGS} /dev/${PART} ${FSMNT}${MNTPOINT}"
- fi
-
-};
-
-# Mounts all the new file systems to prepare for installation
-mount_all_filesystems()
-{
- # Make sure our mount point exists
- mkdir -p ${FSMNT} >/dev/null 2>/dev/null
-
- # First lets find and mount the / partition
- #########################################################
- for PART in `ls ${PARTDIR}`
- do
- if [ ! -e "/dev/${PART}" ]
- then
- exit_err "ERROR: The partition ${PART} does not exist. Failure in bsdlabel?"
- fi
-
- PARTFS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 1`"
- PARTMNT="`cat ${PARTDIR}/${PART} | cut -d ':' -f 2`"
- PARTENC="`cat ${PARTDIR}/${PART} | cut -d ':' -f 3`"
-
- if [ "${PARTENC}" = "ON" ]
- then
- EXT=".eli"
- else
- EXT=""
- fi
-
- # Check for root partition for mounting, including ZFS "/,/usr" type
- echo "$PARTMNT" | grep "/," >/dev/null
- if [ "$?" = "0" -o "$PARTMNT" = "/" ]
- then
- case ${PARTFS} in
- UFS) mount_partition ${PART}${EXT} ${PARTFS} ${PARTMNT} "noatime" ;;
- UFS+S) mount_partition ${PART}${EXT} ${PARTFS} ${PARTMNT} "noatime" ;;
- UFS+SUJ) mount_partition ${PART}${EXT} ${PARTFS} ${PARTMNT} "noatime" ;;
- UFS+J) mount_partition ${PART}${EXT}.journal ${PARTFS} ${PARTMNT} "async,noatime" ;;
- ZFS) mount_partition ${PART} ${PARTFS} ${PARTMNT} ;;
- IMAGE) mount_partition ${PART} ${PARTFS} ${PARTMNT} ;;
- *) exit_err "ERROR: Got unknown file-system type $PARTFS" ;;
- esac
- fi
- done
-
- # Now that we've mounted "/" lets do any other remaining mount-points
- ##################################################################
- for PART in `ls ${PARTDIR}`
- do
- if [ ! -e "/dev/${PART}" ]
- then
- exit_err "ERROR: The partition ${PART} does not exist. Failure in bsdlabel?"
- fi
-
- PARTFS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 1`"
- PARTMNT="`cat ${PARTDIR}/${PART} | cut -d ':' -f 2`"
- PARTENC="`cat ${PARTDIR}/${PART} | cut -d ':' -f 3`"
-
- if [ "${PARTENC}" = "ON" ]
- then
- EXT=".eli"
- else
- EXT=""
- fi
-
- # Check if we've found "/" again, don't need to mount it twice
- echo "$PARTMNT" | grep "/," >/dev/null
- if [ "$?" != "0" -a "$PARTMNT" != "/" ]
- then
- case ${PARTFS} in
- UFS) mount_partition ${PART}${EXT} ${PARTFS} ${PARTMNT} "noatime" ;;
- UFS+S) mount_partition ${PART}${EXT} ${PARTFS} ${PARTMNT} "noatime" ;;
- UFS+SUJ) mount_partition ${PART}${EXT} ${PARTFS} ${PARTMNT} "noatime" ;;
- UFS+J) mount_partition ${PART}${EXT}.journal ${PARTFS} ${PARTMNT} "async,noatime" ;;
- ZFS) mount_partition ${PART} ${PARTFS} ${PARTMNT} ;;
- SWAP)
- # Lets enable this swap now
- if [ "$PARTENC" = "ON" ]
- then
- echo_log "Enabling encrypted swap on /dev/${PART}"
- rc_halt "geli onetime -d -e 3des ${PART}"
- sleep 5
- rc_halt "swapon /dev/${PART}.eli"
- else
- echo_log "swapon ${PART}"
- sleep 5
- rc_halt "swapon /dev/${PART}"
- fi
- ;;
- IMAGE)
- if [ ! -d "${PARTMNT}" ]
- then
- mkdir -p "${PARTMNT}"
- fi
- mount_partition ${PART} ${PARTFS} ${PARTMNT}
- ;;
- *) exit_err "ERROR: Got unknown file-system type $PARTFS" ;;
- esac
- fi
- done
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-mountoptical.sh b/usr/sbin/pc-sysinstall/backend/functions-mountoptical.sh
deleted file mode 100755
index 1e0eff3..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-mountoptical.sh
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-mountoptical.sh,v 1.3 2010/08/24 06:11:46 imp Exp $
-
-# Functions which perform mounting / unmounting and switching of
-# optical / usb media
-
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-parse.sh
-
-# Displays an optical failure message
-opt_fail()
-{
- # If we got here, we must not have a DVD/USB we can find :(
- get_value_from_cfg installInteractive
- if [ "${VAL}" = "yes" ]
- then
- # We are running interactive, and didn't find a DVD, prompt user again
- echo_log "DISK ERROR: Unable to find installation disk!"
- echo_log "Please insert the installation disk and press enter."
- read tmp
- else
- exit_err "ERROR: Unable to locate installation DVD/USB"
- fi
-};
-
-# Performs the extraction of data to disk
-opt_mount()
-{
- FOUND="0"
-
- # Ensure we have a directory where its supposed to be
- if [ ! -d "${CDMNT}" ]
- then
- mkdir -p ${CDMNT}
- fi
-
-
- # Start by checking if we already have a cd mounted at CDMNT
- mount | grep "${CDMNT} " >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- if [ -e "${CDMNT}/${INSFILE}" ]
- then
- echo "MOUNTED" >${TMPDIR}/cdmnt
- echo_log "FOUND DVD: MOUNTED"
- FOUND="1"
- return
- fi
-
- # failed to find optical disk
- opt_fail
- return
- fi
-
- # Setup our loop to search for installation media
- while
- z=1
- do
-
- # Loop though and look for an installation disk
- for i in `ls -1 /dev/acd* /dev/cd* /dev/scd* /dev/rscd* 2>/dev/null`
- do
- # Find the CD Device
- /sbin/mount_cd9660 $i ${CDMNT}
-
- # Check the package type to see if we have our install data
- if [ -e "${CDMNT}/${INSFILE}" ]
- then
- echo "${i}" >${TMPDIR}/cdmnt
- echo_log "FOUND DVD: ${i}"
- FOUND="1"
- break
- fi
- #/sbin/umount ${CDMNT} >/dev/null 2>/dev/null
- done
-
- # If no DVD found, try USB
- if [ "$FOUND" != "1" ]
- then
- # Loop though and look for an installation disk
- for i in `ls -1 /dev/da* 2>/dev/null`
- do
- # Check if we can mount this device UFS
- /sbin/mount -r $i ${CDMNT}
-
- # Check the package type to see if we have our install data
- if [ -e "${CDMNT}/${INSFILE}" ]
- then
- echo "${i}" >${TMPDIR}/cdmnt
- echo_log "FOUND USB: ${i}"
- FOUND="1"
- break
- fi
- #/sbin/umount ${CDMNT} >/dev/null 2>/dev/null
-
- # Also check if it is a FAT mount
- /sbin/mount -r -t msdosfs $i ${CDMNT}
-
- # Check the package type to see if we have our install data
- if [ -e "${CDMNT}/${INSFILE}" ]
- then
- echo "${i}" >${TMPDIR}/cdmnt
- echo_log "FOUND USB: ${i}"
- FOUND="1"
- break
- fi
- #/sbin/umount ${CDMNT} >/dev/null 2>/dev/null
- done
- fi # End of USB Check
-
-
- if [ "$FOUND" = "1" ]
- then
- break
- fi
-
- # Failed to find a disk, take action now
- opt_fail
-
- done
-
-};
-
-# Function to unmount optical media
-opt_umount()
-{
- /sbin/umount ${CDMNT} >/dev/null 2>/dev/null
-};
-
diff --git a/usr/sbin/pc-sysinstall/backend/functions-networking.sh b/usr/sbin/pc-sysinstall/backend/functions-networking.sh
deleted file mode 100755
index fa0fa06..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-networking.sh
+++ /dev/null
@@ -1,357 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-networking.sh,v 1.3 2010/08/24 06:11:46 imp Exp $
-
-# Functions which perform our networking setup
-
-# Function which creates a kde4 .desktop file for the PC-BSD net tray
-create_desktop_nettray()
-{
- NIC="${1}"
- echo "#!/usr/bin/env xdg-open
-[Desktop Entry]
-Exec=/usr/local/kde4/bin/pc-nettray ${NIC}
-Icon=network
-StartupNotify=false
-Type=Application" > ${FSMNT}/usr/share/skel/.kde4/Autostart/tray-${NIC}.desktop
- chmod 744 ${FSMNT}/usr/share/skel/.kde4/Autostart/tray-${NIC}.desktop
-
-};
-
-# Function which checks is a nic is wifi or not
-check_is_wifi()
-{
- NIC="$1"
- ifconfig ${NIC} | grep "802.11" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- return 0
- else
- return 1
- fi
-};
-
-# Function to get the first available wired nic, used for lagg0 setup
-get_first_wired_nic()
-{
- rm ${TMPDIR}/.niclist >/dev/null 2>/dev/null
- # start by getting a list of nics on this system
- ${QUERYDIR}/detect-nics.sh > ${TMPDIR}/.niclist
- if [ -e "${TMPDIR}/.niclist" ]
- then
- while read line
- do
- NIC="`echo $line | cut -d ':' -f 1`"
- check_is_wifi ${NIC}
- if [ "$?" != "0" ]
- then
- VAL="${NIC}" ; export VAL
- return
- fi
- done < ${TMPDIR}/.niclist
- fi
-
- VAL="" ; export VAL
- return
-};
-
-# Function which simply enables plain dhcp on all detected nics, not fancy lagg interface
-enable_plain_dhcp_all()
-{
- rm ${TMPDIR}/.niclist >/dev/null 2>/dev/null
- # start by getting a list of nics on this system
- ${QUERYDIR}/detect-nics.sh > ${TMPDIR}/.niclist
- if [ -e "${TMPDIR}/.niclist" ]
- then
- echo "# Auto-Enabled NICs from pc-sysinstall" >>${FSMNT}/etc/rc.conf
- WLANCOUNT="0"
- while read line
- do
- NIC="`echo $line | cut -d ':' -f 1`"
- DESC="`echo $line | cut -d ':' -f 2`"
- echo_log "Setting $NIC to DHCP on the system."
- check_is_wifi ${NIC}
- if [ "$?" = "0" ]
- then
- # We have a wifi device, setup a wlan* entry for it
- WLAN="wlan${WLANCOUNT}"
- echo "wlans_${NIC}=\"${WLAN}\"" >>${FSMNT}/etc/rc.conf
- echo "ifconfig_${WLAN}=\"DHCP\"" >>${FSMNT}/etc/rc.conf
- CNIC="${WLAN}"
- WLANCOUNT="`expr ${WLANCOUNT} + 1`"
- else
- echo "ifconfig_${NIC}=\"DHCP\"" >>${FSMNT}/etc/rc.conf
- CNIC="${NIC}"
- fi
-
- done < ${TMPDIR}/.niclist
- fi
-};
-
-# Function which enables fancy lagg dhcp on specified wifi
-enable_lagg_dhcp()
-{
- WIFINIC="$1"
-
- # Get the first wired nic
- get_first_wired_nic
- WIRENIC=$VAL
- LAGGPORT="laggport ${WIFINIC}"
-
- echo "# Auto-Enabled NICs from pc-sysinstall" >>${FSMNT}/etc/rc.conf
- if [ ! -z "$WIRENIC" ]
- then
- echo "ifconfig_${WIRENIC}=\"up\"" >> ${FSMNT}/etc/rc.conf
- echo "ifconfig_${WIFINIC}=\"\`ifconfig ${WIRENIC} ether\`\"" >> ${FSMNT}/etc/rc.conf
- echo "ifconfig_${WIFINIC}=\"ether \${ifconfig_${WIFINIC}##*ether }\"" >> ${FSMNT}/etc/rc.conf
- LAGGPORT="laggport ${WIRENIC} ${LAGGPORT}"
- fi
-
- echo "wlans_${WIFINIC}=\"wlan0\"" >> ${FSMNT}/etc/rc.conf
- echo "cloned_interfaces=\"lagg0\"" >> ${FSMNT}/etc/rc.conf
- echo "ifconfig_lagg0=\"laggproto failover ${LAGGPORT} DHCP\"" >> ${FSMNT}/etc/rc.conf
-
-};
-
-# Function which detects available nics, and runs them to DHCP on the
-save_auto_dhcp()
-{
- rm ${TMPDIR}/.niclist >/dev/null 2>/dev/null
- # start by getting a list of nics on this system
- ${QUERYDIR}/detect-nics.sh > ${TMPDIR}/.niclist
- if [ -e "${TMPDIR}/.niclist" ]
- then
- while read line
- do
- NIC="`echo $line | cut -d ':' -f 1`"
- DESC="`echo $line | cut -d ':' -f 2`"
- check_is_wifi "${NIC}"
- if [ "$?" = "0" ]
- then
- # We have a wifi device, lets do fancy lagg interface
- enable_lagg_dhcp "${NIC}"
- return
- fi
-
- done < ${TMPDIR}/.niclist
- fi
-
- # Got here, looks like no wifi, so lets simply enable plain-ole-dhcp
- enable_plain_dhcp_all
-
-};
-
-
-# Function which saves a manual nic setup to the installed system
-save_manual_nic()
-{
- # Get the target nic
- NIC="$1"
-
- get_value_from_cfg netSaveIP
- NETIP="${VAL}"
-
- if [ "$NETIP" = "DHCP" ]
- then
- echo_log "Setting $NIC to DHCP on the system."
- echo "ifconfig_${NIC}=\"DHCP\"" >>${FSMNT}/etc/rc.conf
- return 0
- fi
-
- # If we get here, we have a manual setup, lets do so now
-
- # Set the manual IP
- IFARGS="inet ${NETIP}"
-
- # Check if we have a netmask to set
- get_value_from_cfg netSaveMask
- NETMASK="${VAL}"
- if [ ! -z "${NETMASK}" ]
- then
- IFARGS="${IFARGS} netmask ${NETMASK}"
- fi
-
-
- echo "# Auto-Enabled NICs from pc-sysinstall" >>${FSMNT}/etc/rc.conf
- echo "ifconfig_${NIC}=\"${IFARGS}\"" >>${FSMNT}/etc/rc.conf
-
- # Check if we have a default router to set
- get_value_from_cfg netSaveDefaultRouter
- NETROUTE="${VAL}"
- if [ ! -z "${NETROUTE}" ]
- then
- echo "defaultrouter=\"${NETROUTE}\"" >>${FSMNT}/etc/rc.conf
- fi
-
- # Check if we have a nameserver to enable
- get_value_from_cfg netSaveNameServer
- NAMESERVER="${VAL}"
- if [ ! -z "${NAMESERVER}" ]
- then
- echo "nameserver ${NAMESERVER}" >${FSMNT}/etc/resolv.conf
- fi
-
-};
-
-# Function which determines if a nic is active / up
-is_nic_active()
-{
- ifconfig ${1} | grep "status: active" >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- return 0
- else
- return 1
- fi
-};
-
-
-# Function which detects available nics, and runs DHCP on them until
-# a success is found
-enable_auto_dhcp()
-{
- # start by getting a list of nics on this system
- ${QUERYDIR}/detect-nics.sh > ${TMPDIR}/.niclist
- while read line
- do
- NIC="`echo $line | cut -d ':' -f 1`"
- DESC="`echo $line | cut -d ':' -f 2`"
-
- is_nic_active "${NIC}"
- if [ "$?" = "0" ] ; then
- echo_log "Trying DHCP on $NIC $DESC"
- dhclient ${NIC} >/dev/null 2>/dev/null
- if [ "$?" = "0" ] ; then
- # Got a valid DHCP IP, we can return now
- WRKNIC="$NIC" ; export WRKNIC
- return 0
- fi
- fi
- done < ${TMPDIR}/.niclist
-
-};
-
-# Get the mac address of a target NIC
-get_nic_mac()
-{
- FOUNDMAC="`ifconfig ${1} | grep 'ether' | tr -d '\t' | cut -d ' ' -f 2`"
- export FOUNDMAC
-}
-
-# Function which performs the manual setup of a target nic in the cfg
-enable_manual_nic()
-{
- # Get the target nic
- NIC="$1"
-
- # Check that this NIC exists
- rc_halt "ifconfig ${NIC}"
-
- get_value_from_cfg netIP
- NETIP="${VAL}"
-
- if [ "$NETIP" = "DHCP" ]
- then
- echo_log "Enabling DHCP on $NIC"
- rc_halt "dhclient ${NIC}"
- return 0
- fi
-
- # If we get here, we have a manual setup, lets do so now
-
- # Set the manual IP
- rc_halt "ifconfig ${NIC} ${NETIP}"
-
- # Check if we have a netmask to set
- get_value_from_cfg netMask
- NETMASK="${VAL}"
- if [ ! -z "${NETMASK}" ]
- then
- rc_halt "ifconfig ${NIC} netmask ${NETMASK}"
- fi
-
- # Check if we have a default router to set
- get_value_from_cfg netDefaultRouter
- NETROUTE="${VAL}"
- if [ ! -z "${NETROUTE}" ]
- then
- rc_halt "route add default ${NETROUTE}"
- fi
-
- # Check if we have a nameserver to enable
- get_value_from_cfg netNameServer
- NAMESERVER="${VAL}"
- if [ ! -z "${NAMESERVER}" ]
- then
- echo "nameserver ${NAMESERVER}" >/etc/resolv.conf
- fi
-
-
-};
-
-
-# Function which parses the cfg and enables networking per specified
-start_networking()
-{
- # Check if we have any networking requested
- get_value_from_cfg netDev
- if [ -z "${VAL}" ]
- then
- return 0
- fi
-
- NETDEV="${VAL}"
- if [ "$NETDEV" = "AUTO-DHCP" ]
- then
- enable_auto_dhcp
- else
- enable_manual_nic ${NETDEV}
- fi
-
-};
-
-
-# Function which checks the cfg and enables the specified networking on
-# the installed system
-save_networking_install()
-{
-
- # Check if we have any networking requested to save
- get_value_from_cfg netSaveDev
- if [ -z "${VAL}" ]
- then
- return 0
- fi
-
- NETDEV="${VAL}"
- if [ "$NETDEV" = "AUTO-DHCP" ]
- then
- save_auto_dhcp
- else
- save_manual_nic ${NETDEV}
- fi
-
-};
-
diff --git a/usr/sbin/pc-sysinstall/backend/functions-newfs.sh b/usr/sbin/pc-sysinstall/backend/functions-newfs.sh
deleted file mode 100755
index 5525d1c..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-newfs.sh
+++ /dev/null
@@ -1,217 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-newfs.sh,v 1.6 2010/10/09 08:52:09 imp Exp $
-
-# Functions related to disk operations using newfs
-
-
-# Function which performs the ZFS magic
-setup_zfs_filesystem()
-{
- PART="$1"
- PARTFS="$2"
- PARTMNT="$3"
- EXT="$4"
- PARTGEOM="$5"
- ZPOOLOPTS="$6"
- ROOTSLICE="`echo ${PART} | rev | cut -b 2- | rev`"
- ZPOOLNAME=$(get_zpool_name "${PART}")
-
- # Sleep a few moments, let the disk catch its breath
- sleep 5
- sync
-
- # Check if we have some custom zpool arguments and use them if so
- if [ ! -z "${ZPOOLOPTS}" ] ; then
- rc_halt "zpool create -m none -f ${ZPOOLNAME} ${ZPOOLOPTS}"
- else
- # No zpool options, create pool on single device
- rc_halt "zpool create -m none -f ${ZPOOLNAME} ${PART}${EXT}"
- fi
-
- # Disable atime for this zfs partition, speed increase
- rc_nohalt "zfs set atime=off ${ZPOOLNAME}"
-
- # Check if we have multiple zfs mounts specified
- for i in `echo ${PARTMNT} | sed 's|,| |g'`
- do
- # Check if we ended up with needing a zfs bootable partition
- if [ "${i}" = "/" -o "${i}" = "/boot" ]
- then
- if [ "$HAVEBOOT" = "YES" ] ; then continue ; fi
- if [ "${PARTGEOM}" = "MBR" ]
- then
- # Lets stamp the proper ZFS boot loader
- echo_log "Setting up ZFS boot loader support"
- rc_halt "zpool set bootfs=${ZPOOLNAME} ${ZPOOLNAME}"
- rc_halt "zpool export ${ZPOOLNAME}"
- rc_halt "dd if=/boot/zfsboot of=/dev/${ROOTSLICE} count=1"
- rc_halt "dd if=/boot/zfsboot of=/dev/${PART}${EXT} skip=1 seek=1024"
- rc_halt "zpool import ${ZPOOLNAME}"
- fi
- fi
- done
-
-};
-
-# Runs newfs on all the partiions which we've setup with bsdlabel
-setup_filesystems()
-{
-
- # Create the keydir
- rm -rf ${GELIKEYDIR} >/dev/null 2>/dev/null
- mkdir ${GELIKEYDIR}
-
- # Lets go ahead and read through the saved partitions we created, and determine if we need to run
- # newfs on any of them
- for PART in `ls ${PARTDIR}`
- do
- if [ ! -e "/dev/${PART}" ]
- then
- exit_err "ERROR: The partition ${PART} does not exist. Failure in bsdlabel?"
- fi
-
- PARTFS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 1`"
- PARTMNT="`cat ${PARTDIR}/${PART} | cut -d ':' -f 2`"
- PARTENC="`cat ${PARTDIR}/${PART} | cut -d ':' -f 3`"
- PARTLABEL="`cat ${PARTDIR}/${PART} | cut -d ':' -f 4`"
- PARTGEOM="`cat ${PARTDIR}/${PART} | cut -d ':' -f 5`"
- PARTXTRAOPTS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 6`"
- PARTIMAGE="`cat ${PARTDIR}/${PART} | cut -d ':' -f 7`"
-
- # Make sure journaling isn't enabled on this device
- if [ -e "/dev/${PART}.journal" ]
- then
- rc_nohalt "gjournal stop -f ${PART}.journal"
- rc_nohalt "gjournal clear ${PART}"
- fi
-
- # Setup encryption if necessary
- if [ "${PARTENC}" = "ON" -a "${PARTFS}" != "SWAP" ]
- then
- echo_log "Creating geli provider for ${PART}"
- rc_halt "dd if=/dev/random of=${GELIKEYDIR}/${PART}.key bs=64 count=1"
- rc_halt "geli init -b -s 4096 -P -K ${GELIKEYDIR}/${PART}.key /dev/${PART}"
- rc_halt "geli attach -p -k ${GELIKEYDIR}/${PART}.key /dev/${PART}"
-
- EXT=".eli"
- else
- # No Encryption
- EXT=""
- fi
-
- case ${PARTFS} in
- UFS)
- echo_log "NEWFS: /dev/${PART} - ${PARTFS}"
- sleep 2
- rc_halt "newfs /dev/${PART}${EXT}"
- sleep 2
- rc_halt "sync"
- rc_halt "glabel label ${PARTLABEL} /dev/${PART}${EXT}"
- rc_halt "sync"
-
- # Set flag that we've found a boot partition
- if [ "$PARTMNT" = "/boot" -o "${PARTMNT}" = "/" ] ; then
- HAVEBOOT="YES"
- fi
- sleep 2
- ;;
-
- UFS+S)
- echo_log "NEWFS: /dev/${PART} - ${PARTFS}"
- sleep 2
- rc_halt "newfs -U /dev/${PART}${EXT}"
- sleep 2
- rc_halt "sync"
- rc_halt "glabel label ${PARTLABEL} /dev/${PART}${EXT}"
- rc_halt "sync"
- # Set flag that we've found a boot partition
- if [ "$PARTMNT" = "/boot" -o "${PARTMNT}" = "/" ] ; then
- HAVEBOOT="YES"
- fi
- sleep 2
- ;;
-
- UFS+SUJ)
- echo_log "NEWFS: /dev/${PART} - ${PARTFS}"
- sleep 2
- rc_halt "newfs -U /dev/${PART}${EXT}"
- sleep 2
- rc_halt "sync"
- rc_halt "tunefs -j enable /dev/${PART}${EXT}"
- sleep 2
- rc_halt "sync"
- rc_halt "glabel label ${PARTLABEL} /dev/${PART}${EXT}"
- rc_halt "sync"
- # Set flag that we've found a boot partition
- if [ "$PARTMNT" = "/boot" -o "${PARTMNT}" = "/" ] ; then
- HAVEBOOT="YES"
- fi
- sleep 2
- ;;
-
-
- UFS+J)
- echo_log "NEWFS: /dev/${PART} - ${PARTFS}"
- sleep 2
- rc_halt "newfs /dev/${PART}${EXT}"
- sleep 2
- rc_halt "gjournal label -f /dev/${PART}${EXT}"
- sleep 2
- rc_halt "newfs -O 2 -J /dev/${PART}${EXT}.journal"
- sleep 2
- rc_halt "sync"
- rc_halt "glabel label ${PARTLABEL} /dev/${PART}${EXT}.journal"
- rc_halt "sync"
- # Set flag that we've found a boot partition
- if [ "$PARTMNT" = "/boot" -o "${PARTMNT}" = "/" ] ; then
- HAVEBOOT="YES"
- fi
- sleep 2
- ;;
-
- ZFS)
- echo_log "NEWFS: /dev/${PART} - ${PARTFS}"
- setup_zfs_filesystem "${PART}" "${PARTFS}" "${PARTMNT}" "${EXT}" "${PARTGEOM}" "${PARTXTRAOPTS}"
- ;;
-
- SWAP)
- rc_halt "sync"
- rc_halt "glabel label ${PARTLABEL} /dev/${PART}${EXT}"
- rc_halt "sync"
- sleep 2
- ;;
-
- IMAGE)
- write_image "${PARTIMAGE}" "${PART}"
- sleep 2
- ;;
-
- *) exit_err "ERROR: Got unknown file-system type $PARTFS" ;;
- esac
-
- done
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-packages.sh b/usr/sbin/pc-sysinstall/backend/functions-packages.sh
deleted file mode 100755
index ac5e213..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-packages.sh
+++ /dev/null
@@ -1,376 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-packages.sh,v 1.6 2010/09/08 20:10:24 imp Exp $
-
-# Functions which runs commands on the system
-
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-parse.sh
-. ${BACKEND}/functions-ftp.sh
-
-
-get_package_index_by_ftp()
-{
- local INDEX_FILE
- local FTP_SERVER
-
- FTP_SERVER="${1}"
- INDEX_FILE="INDEX"
- USE_BZIP2=0
-
- if [ -f "/usr/bin/bzip2" ]
- then
- INDEX_FILE="${INDEX_FILE}.bz2"
- USE_BZIP2=1
- fi
-
- INDEX_PATH="${CONFDIR}/${INDEX_FILE}"
- fetch_file "${FTP_SERVER}/${INDEX_FILE}" "${INDEX_PATH}" "1"
- if [ -f "${INDEX_PATH}" ] && [ "${USE_BZIP2}" -eq "1" ]
- then
- bzip2 -d "${INDEX_PATH}"
- fi
-};
-
-get_package_index_by_fs()
-{
- local INDEX_FILE
-
- INDEX_FILE="${CDMNT}/packages/INDEX"
- fetch_file "${INDEX_FILE}" "${CONFDIR}/" "0"
-};
-
-get_package_index_size()
-{
- if [ -f "${CONFDIR}/INDEX" ]
- then
- SIZE=`ls -l ${CONFDIR}/INDEX | awk '{ print $5 }'`
- else
- get_ftp_mirror
- FTPHOST="${VAL}"
-
- FTPDIR="/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}"
- FTPPATH="ftp://${FTPHOST}${FTPDIR}/packages"
-
- fetch -s "${FTPPATH}/INDEX.bz2"
- fi
-};
-
-get_package_index()
-{
- RES=0
-
- if [ -z "${INSTALLMODE}" ]
- then
- get_ftp_mirror
- FTPHOST="${VAL}"
-
- FTPDIR="/pub/FreeBSD/releases/${FBSD_ARCH}/${FBSD_BRANCH}"
- FTPPATH="ftp://${FTPHOST}${FTPDIR}/packages"
-
- get_package_index_by_ftp "${FTPPATH}"
-
- else
- get_value_from_cfg ftpHost
- if [ -z "$VAL" ]
- then
- exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!"
- fi
-
- FTPHOST="${VAL}"
-
- get_value_from_cfg ftpDir
- if [ -z "$VAL" ]
- then
- exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!"
- fi
-
- FTPDIR="${VAL}"
- FTPPATH="ftp://${FTPHOST}${FTPDIR}"
-
- case "${INSTALLMEDIUM}" in
- usb|dvd) get_package_index_by_fs ;;
- ftp) get_package_index_by_ftp "${FTPPATH}" ;;
- sftp) ;;
- *) RES=1 ;;
- esac
-
- fi
-
- return ${RES}
-};
-
-parse_package_index()
-{
- INDEX_FILE="${PKGDIR}/INDEX"
-
- exec 3<&0
- exec 0<"${INDEX_FILE}"
-
- while read -r line
- do
- PKGNAME=""
- CATEGORY=""
- PACKAGE=""
- DESC=""
- DEPS=""
- i=0
-
- SAVE_IFS="${IFS}"
- IFS="|"
-
- for part in ${line}
- do
- if [ "${i}" -eq "0" ]
- then
- PKGNAME="${part}"
-
- elif [ "${i}" -eq "1" ]
- then
- PACKAGE=`basename "${part}"`
-
- elif [ "${i}" -eq "3" ]
- then
- DESC="${part}"
-
- elif [ "${i}" -eq "6" ]
- then
- CATEGORY=`echo "${part}" | cut -f1 -d' '`
-
- elif [ "${i}" -eq "8" ]
- then
- DEPS="${part}"
- fi
-
- i=$((i+1))
- done
-
- echo "${CATEGORY}|${PACKAGE}|${DESC}" >> "${INDEX_FILE}.parsed"
- echo "${PACKAGE}|${PKGNAME}|${DEPS}" >> "${INDEX_FILE}.deps"
-
- IFS="${SAVE_IFS}"
- done
-
- exec 0<&3
-};
-
-show_package_file()
-{
- PKGFILE="${1}"
-
- echo "Available Packages:"
-
- exec 3<&0
- exec 0<"${PKGFILE}"
-
- while read -r line
- do
- CATEGORY=`echo "${line}" | cut -f1 -d'|'`
- PACKAGE=`echo "${line}" | cut -f2 -d'|'`
- DESC=`echo "${line}" | cut -f3 -d'|'`
-
- echo "${CATEGORY}/${PACKAGE}:${DESC}"
- done
-
- exec 0<&3
-};
-
-show_packages_by_category()
-{
- CATEGORY="${1}"
- INDEX_FILE="${PKGDIR}/INDEX.parsed"
- TMPFILE="/tmp/.pkg.cat"
-
- grep "^${CATEGORY}|" "${INDEX_FILE}" > "${TMPFILE}"
- show_package_file "${TMPFILE}"
- rm "${TMPFILE}"
-};
-
-show_package_by_name()
-{
- CATEGORY="${1}"
- PACKAGE="${2}"
- INDEX_FILE="${PKGDIR}/INDEX.parsed"
- TMPFILE="/tmp/.pkg.cat.pak"
-
- grep "^${CATEGORY}|${PACKAGE}" "${INDEX_FILE}" > "${TMPFILE}"
- show_package_file "${TMPFILE}"
- rm "${TMPFILE}"
-};
-
-show_packages()
-{
- show_package_file "${PKGDIR}/INDEX.parsed"
-};
-
-get_package_dependencies()
-{
- PACKAGE="${1}"
- LONG="${2:-0}"
- RES=0
-
- INDEX_FILE="${PKGDIR}/INDEX.deps"
- REGEX="^${PACKAGE}|"
-
- if [ "${LONG}" -ne "0" ]
- then
- REGEX="^.*|${PACKAGE}|"
- fi
-
- LINE=`grep "${REGEX}" "${INDEX_FILE}" 2>/dev/null`
- DEPS=`echo "${LINE}"|cut -f3 -d'|'`
-
- VAL="${DEPS}"
- export VAL
-
- if [ -z "${VAL}" ]
- then
- RES=1
- fi
-
- return ${RES}
-};
-
-get_package_name()
-{
- PACKAGE="${1}"
- RES=0
-
- INDEX_FILE="${PKGDIR}/INDEX.deps"
- REGEX="^${PACKAGE}|"
-
- LINE=`grep "${REGEX}" "${INDEX_FILE}" 2>/dev/null`
- NAME=`echo "${LINE}"|cut -f2 -d'|'`
-
- VAL="${NAME}"
- export VAL
-
- if [ -z "${VAL}" ]
- then
- RES=1
- fi
-
- return ${RES}
-};
-
-get_package_short_name()
-{
- PACKAGE="${1}"
- RES=0
-
- INDEX_FILE="${PKGDIR}/INDEX.deps"
- REGEX="^.*|${PACKAGE}|"
-
- LINE=`grep "${REGEX}" "${INDEX_FILE}" 2>/dev/null`
- NAME=`echo "${LINE}"|cut -f1 -d'|'`
-
- VAL="${NAME}"
- export VAL
-
- if [ -z "${VAL}" ]
- then
- RES=1
- fi
-
- return ${RES}
-};
-
-get_package_category()
-{
- PACKAGE="${1}"
- INDEX_FILE="${PKGDIR}/INDEX.parsed"
- RES=0
-
- LINE=`grep "|${PACKAGE}|" "${INDEX_FILE}" 2>/dev/null`
- NAME=`echo "${LINE}"|cut -f1 -d'|'`
-
- VAL="${NAME}"
- export VAL
-
- if [ -z "${VAL}" ]
- then
- RES=1
- fi
-
- return ${RES}
-};
-
-fetch_package_by_ftp()
-{
- CATEGORY="${1}"
- PACKAGE="${2}"
- SAVEDIR="${3}"
-
- get_value_from_cfg ftpHost
- if [ -z "$VAL" ]
- then
- exit_err "ERROR: Install medium was set to ftp, but no ftpHost was provided!"
- fi
- FTPHOST="${VAL}"
-
- get_value_from_cfg ftpDir
- if [ -z "$VAL" ]
- then
- exit_err "ERROR: Install medium was set to ftp, but no ftpDir was provided!"
- fi
- FTPDIR="${VAL}"
-
- PACKAGE="${PACKAGE}.tbz"
- FTP_SERVER="ftp://${FTPHOST}${FTPDIR}"
-
- if [ ! -f "${SAVEDIR}/${PACKAGE}" ]
- then
- PKGPATH="${CATEGORY}/${PACKAGE}"
- FTP_PATH="${FTP_HOST}/packages/${PKGPATH}"
- fetch_file "${FTP_PATH}" "${SAVEDIR}/" "0"
- fi
-};
-
-fetch_package_by_fs()
-{
- CATEGORY="${1}"
- PACKAGE="${2}"
- SAVEDIR="${3}"
-
- PACKAGE="${PACKAGE}.tbz"
- if [ ! -f "${SAVEDIR}/${PACKAGE}" ]
- then
- fetch_file "${CDMNT}/packages/${CATEGORY}/${PACKAGE}" "${SAVEDIR}/" "0"
- fi
-};
-
-fetch_package()
-{
- CATEGORY="${1}"
- PACKAGE="${2}"
- SAVEDIR="${3}"
-
- case "${INSTALLMEDIUM}" in
- usb|dvd) fetch_package_by_fs "${CATEGORY}" "${PACKAGE}" "${SAVEDIR}" ;;
- ftp) fetch_package_by_ftp "${CATEGORY}" "${PACKAGE}" "${SAVEDIR}" ;;
- sftp) ;;
- esac
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-parse.sh b/usr/sbin/pc-sysinstall/backend/functions-parse.sh
deleted file mode 100755
index d8e5723..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-parse.sh
+++ /dev/null
@@ -1,232 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-parse.sh,v 1.4 2010/09/08 20:10:24 imp Exp $
-
-# functions.sh
-# Library of functions which pc-sysinstall may call upon for parsing the config
-
-# which gets the value of a setting in the provided line
-get_value_from_string()
-{
- if [ ! -z "${1}" ]
- then
- VAL="`echo ${1} | cut -d '=' -f 2`"
- export VAL
- else
- echo "Error: Did we forgot to supply a string to parse?"
- exit 1
- fi
-};
-
-# Get the value from the cfg file including spaces
-get_value_from_cfg_with_spaces()
-{
- if [ ! -z "${1}" ]
- then
- VAL=`grep "^${1}=" ${CFGF} | head -n 1 | cut -d '=' -f 2`
- export VAL
- else
- exit_err "Error: Did we forgot to supply a setting to grab?"
- fi
-};
-
-
-# Get the value from the cfg file
-get_value_from_cfg()
-{
- if [ ! -z "${1}" ]
- then
- VAL=`grep "^${1}=" ${CFGF} | head -n 1 | cut -d '=' -f 2 | tr -d ' '`
- export VAL
- else
- exit_err "Error: Did we forgot to supply a setting to grab?"
- fi
-};
-
-# Checks the value of a setting in the provided line with supplied possibilities
-# 1 = setting we are checking, 2 = list of valid values
-if_check_value_exists()
-{
- if [ ! -z "${1}" -a ! -z "${2}" ]
- then
- # Get the first occurance of the setting from the config, strip out whitespace
-
- VAL=`grep "^${1}" ${CFGF} | head -n 1 | cut -d '=' -f 2 | tr -d ' '`
- if [ -z "${VAL}" ]
- then
- # This value doesn't exist, lets return
- return 0
- fi
-
-
- VALID="1"
- for i in ${2}
- do
- VAL=`echo "$VAL"|tr A-Z a-z`
- if [ "$VAL" = "${i}" ]
- then
- VALID="0"
- fi
- done
- if [ "$VALID" = "1" ]
- then
- exit_err "Error: ${1} is set to unknown value $VAL"
- fi
- else
- exit_err "Error: Did we forgot to supply a string to parse and setting to grab?"
- fi
-};
-
-# Checks the value of a setting in the provided line with supplied possibilities
-# 1 = setting we are checking, 2 = list of valid values
-check_value()
-{
- if [ ! -z "${1}" -a ! -z "${2}" ]
- then
- # Get the first occurance of the setting from the config, strip out whitespace
- VAL=`grep "^${1}" ${CFGF} | head -n 1 | cut -d '=' -f 2 | tr -d ' '`
- VALID="1"
- for i in ${2}
- do
- if [ "$VAL" = "${i}" ]
- then
- VALID="0"
- fi
- done
- if [ "$VALID" = "1" ]
- then
- exit_err "Error: ${1} is set to unknown value $VAL"
- fi
- else
- exit_err "Error: Did we forgot to supply a string to parse and setting to grab?"
- fi
-};
-
-# Checks for the presense of the supplied arguements in the config file
-# 1 = values to confirm exist
-file_sanity_check()
-{
- if [ ! -z "$CFGF" -a ! -z "$1" ]
- then
- for i in $1
- do
- grep "^${i}=" $CFGF >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- LN=`grep "^${i}=" ${CFGF} | head -n 1 | cut -d '=' -f 2 | tr -d ' '`
- if [ -z "${LN}" ]
- then
- echo "Error: Config fails sanity test! ${i}= is empty"
- exit 1
- fi
- else
- echo "Error: Config fails sanity test! Missing ${i}="
- exit 1
- fi
- done
- else
- echo "Error: Missing config file, and / or values to sanity check for!"
- exit 1
- fi
-};
-
-
-# Function which merges the contents of a new config into the specified old one
-# Only works with <val>= type configurations
-merge_config()
-{
- OLDCFG="${1}"
- NEWCFG="${2}"
- FINALCFG="${3}"
-
- # Copy our oldcfg to the new one, which will be used as basis
- cp ${OLDCFG} ${FINALCFG}
-
- # Remove blank lines from new file
- cat ${NEWCFG} | sed '/^$/d' > ${FINALCFG}.tmp
-
- # Set our marker if we've found any
- FOUNDMERGE="NO"
-
- while read newline
- do
- echo ${newline} | grep "^#" >/dev/null 2>/dev/null
- if [ "$?" != "0" ] ; then
- VAL="`echo ${newline} | cut -d '=' -f 1`"
- cat ${OLDCFG} | grep ${VAL} >/dev/null 2>/dev/null
- if [ "$?" != "0" ] ; then
- if [ "${FOUNDMERGE}" = "NO" ] ; then
- echo "" >> ${FINALCFG}
- echo "# Auto-merged values from newer ${NEWCFG}" >> ${FINALCFG}
- FOUNDMERGE="YES"
- fi
- echo "${newline}" >> ${FINALCFG}
- fi
- fi
- done < ${FINALCFG}.tmp
- rm ${FINALCFG}.tmp
-
-};
-
-# Loop to check for a specified mount-point in a list
-check_for_mount()
-{
- MNTS="${1}"
- FINDMNT="${2}"
-
- # Check if we found a valid root partition
- for CHECKMNT in `echo ${MNTS} | sed 's|,| |g'`
- do
- if [ "${CHECKMNT}" = "${FINDMNT}" ] ; then
- return 0
- fi
- done
-
- return 1
-};
-
-# Function which returns the next line in the specified config file
-get_next_cfg_line()
-{
- CURFILE="$1"
- CURLINE="$2"
-
- FOUND="1"
-
- while read line
- do
- if [ "$FOUND" = "0" ] ; then
- VAL="$line" ; export VAL
- return
- fi
- if [ "$line" = "${CURLINE}" ] ; then
- FOUND="0"
- fi
- done <${CURFILE}
-
- # Got here, couldn't find this line or at end of file, set VAL to ""
- VAL="" ; export VAL
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-runcommands.sh b/usr/sbin/pc-sysinstall/backend/functions-runcommands.sh
deleted file mode 100755
index 29e3606..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-runcommands.sh
+++ /dev/null
@@ -1,110 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-runcommands.sh,v 1.3 2010/08/19 05:59:27 imp Exp $
-
-# Functions which runs commands on the system
-
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-parse.sh
-
-run_chroot_cmd()
-{
- CMD="$@"
- echo_log "Running chroot command: ${CMD}"
- echo "$CMD" >${FSMNT}/.runcmd.sh
- chmod 755 ${FSMNT}/.runcmd.sh
- chroot ${FSMNT} sh /.runcmd.sh
- RES=$?
-
- rm ${FSMNT}/.runcmd.sh
- return ${RES}
-};
-
-run_chroot_script()
-{
- SCRIPT="$@"
- SBASE=`basename $SCRIPT`
-
- cp ${SCRIPT} ${FSMNT}/.$SBASE
- chmod 755 ${FSMNT}/.${SBASE}
-
- echo_log "Running chroot script: ${SCRIPT}"
- chroot ${FSMNT} /.${SBASE}
- RES=$?
-
- rm ${FSMNT}/.${SBASE}
- return ${RES}
-};
-
-
-run_ext_cmd()
-{
- CMD="$@"
- # Make sure to export FSMNT, in case cmd needs it
- export FSMNT
- echo_log "Running external command: ${CMD}"
- echo "${CMD}"> ${TMPDIR}/.runcmd.sh
- chmod 755 ${TMPDIR}/.runcmd.sh
- sh ${TMPDIR}/.runcmd.sh
- RES=$?
-
- rm ${TMPDIR}/.runcmd.sh
- return ${RES}
-};
-
-
-# Starts the user setup
-run_commands()
-{
- while read line
- do
- # Check if we need to run any chroot command
- echo $line | grep ^runCommand= >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "$line"
- run_chroot_cmd "$VAL"
- fi
-
- # Check if we need to run any chroot script
- echo $line | grep ^runScript= >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "$line"
- run_chroot_script "$VAL"
- fi
-
- # Check if we need to run any chroot command
- echo $line | grep ^runExtCommand= >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "$line"
- run_ext_cmd "$VAL"
- fi
-
- done <${CFGF}
-
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-unmount.sh b/usr/sbin/pc-sysinstall/backend/functions-unmount.sh
deleted file mode 100755
index 367cb27..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-unmount.sh
+++ /dev/null
@@ -1,209 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-unmount.sh,v 1.4 2010/10/09 07:45:24 imp Exp $
-
-# Functions which unmount all mounted disk filesystems
-
-# Unmount all mounted partitions under specified dir
-umount_all_dir()
-{
- _udir="$1"
- _umntdirs=`mount | sort -r | grep "on $_udir" | cut -d ' ' -f 3`
- for _ud in $_umntdirs
- do
- umount -f ${_ud}
- done
-}
-
-# Script that adds our gmirror devices for syncing
-start_gmirror_sync()
-{
-
- cd ${MIRRORCFGDIR}
- for DISK in `ls *`
- do
- MIRRORDISK="`cat ${DISK} | cut -d ':' -f 1`"
- MIRRORBAL="`cat ${DISK} | cut -d ':' -f 2`"
- MIRRORNAME="`cat ${DISK} | cut -d ':' -f 3`"
-
- # Start the mirroring service
- rc_halt "gmirror insert ${MIRRORNAME} /dev/${MIRRORDISK}"
-
- done
-
-};
-
-# Unmounts all our mounted file-systems
-unmount_all_filesystems()
-{
- # Copy the logfile to disk before we unmount
- cp ${LOGOUT} ${FSMNT}/root/pc-sysinstall.log
- cd /
-
- # Start by unmounting any ZFS partitions
- zfs_cleanup_unmount
-
- # Lets read our partition list, and unmount each
- ##################################################################
- for PART in `ls ${PARTDIR}`
- do
-
- PARTFS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 1`"
- PARTMNT="`cat ${PARTDIR}/${PART} | cut -d ':' -f 2`"
- PARTENC="`cat ${PARTDIR}/${PART} | cut -d ':' -f 3`"
- PARTLABEL="`cat ${PARTDIR}/${PART} | cut -d ':' -f 4`"
-
- if [ "${PARTENC}" = "ON" ]
- then
- EXT=".eli"
- else
- EXT=""
- fi
-
- #if [ "${PARTFS}" = "SWAP" ]
- #then
- # rc_nohalt "swapoff /dev/${PART}${EXT}"
- #fi
-
- # Check if we've found "/", and unmount that last
- if [ "$PARTMNT" != "/" -a "${PARTMNT}" != "none" -a "${PARTFS}" != "ZFS" ]
- then
- #rc_halt "umount -f /dev/${PART}${EXT}"
-
- # Re-check if we are missing a label for this device and create it again if so
- if [ ! -e "/dev/label/${PARTLABEL}" ]
- then
- case ${PARTFS} in
- UFS) glabel label ${PARTLABEL} /dev/${PART}${EXT} ;;
- UFS+S) glabel label ${PARTLABEL} /dev/${PART}${EXT} ;;
- UFS+SUJ) glabel label ${PARTLABEL} /dev/${PART}${EXT} ;;
- UFS+J) glabel label ${PARTLABEL} /dev/${PART}${EXT}.journal ;;
- *) ;;
- esac
- fi
- fi
-
- # Check if we've found "/" and make sure the label exists
- if [ "$PARTMNT" = "/" -a "${PARTFS}" != "ZFS" ]
- then
- if [ ! -e "/dev/label/${PARTLABEL}" ]
- then
- case ${PARTFS} in
- UFS) ROOTRELABEL="glabel label ${PARTLABEL} /dev/${PART}${EXT}" ;;
- UFS+S) ROOTRELABEL="glabel label ${PARTLABEL} /dev/${PART}${EXT}" ;;
- UFS+SUJ) ROOTRELABEL="glabel label ${PARTLABEL} /dev/${PART}${EXT}" ;;
- UFS+J) ROOTRELABEL="glabel label ${PARTLABEL} /dev/${PART}${EXT}.journal" ;;
- *) ;;
- esac
- fi
- fi
- done
-
- # Last lets the /mnt partition
- #########################################################
- #rc_nohalt "umount -f ${FSMNT}"
-
- # If are using a ZFS on "/" set it to legacy
- if [ ! -z "${FOUNDZFSROOT}" ]
- then
- rc_halt "zfs set mountpoint=legacy ${FOUNDZFSROOT}"
- fi
-
- # If we need to relabel "/" do it now
- if [ ! -z "${ROOTRELABEL}" ]
- then
- ${ROOTRELABEL}
- fi
-
- # Unmount our CDMNT
- #rc_nohalt "umount -f ${CDMNT}" >/dev/null 2>/dev/null
-
- # Check if we need to run any gmirror syncing
- ls ${MIRRORCFGDIR}/* >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Lets start syncing now
- start_gmirror_sync
- fi
-
-};
-
-# Unmounts any filesystems after a failure
-unmount_all_filesystems_failure()
-{
- cd /
-
- # if we did a fresh install, start unmounting
- if [ "${INSTALLMODE}" = "fresh" ]
- then
-
- # Lets read our partition list, and unmount each
- ##################################################################
- if [ -d "${PARTDIR}" ]
- then
- for PART in `ls ${PARTDIR}`
- do
-
- PARTFS="`cat ${PARTDIR}/${PART} | cut -d ':' -f 1`"
- PARTMNT="`cat ${PARTDIR}/${PART} | cut -d ':' -f 2`"
- PARTENC="`cat ${PARTDIR}/${PART} | cut -d ':' -f 3`"
-
- #if [ "${PARTFS}" = "SWAP" ]
- #then
- # if [ "${PARTENC}" = "ON" ]
- # then
- # rc_nohalt "swapoff /dev/${PART}.eli"
- # else
- # rc_nohalt "swapoff /dev/${PART}"
- # fi
- #fi
-
- # Check if we've found "/" again, don't need to mount it twice
- if [ "$PARTMNT" != "/" -a "${PARTMNT}" != "none" -a "${PARTFS}" != "ZFS" ]
- then
- #rc_nohalt "umount -f /dev/${PART}"
- #rc_nohalt "umount -f ${FSMNT}${PARTMNT}"
- fi
- done
-
- # Last lets the /mnt partition
- #########################################################
- #rc_nohalt "umount -f ${FSMNT}"
-
- fi
- else
- # We are doing a upgrade, try unmounting any of these filesystems
- chroot ${FSMNT} /sbin/umount -a >>${LOGOUT} >>${LOGOUT}
- umount -f ${FSMNT}/usr >>${LOGOUT} 2>>${LOGOUT}
- umount -f ${FSMNT}/dev >>${LOGOUT} 2>>${LOGOUT}
- umount -f ${FSMNT} >>${LOGOUT} 2>>${LOGOUT}
- rc_nohalt "sh ${TMPDIR}/.upgrade-unmount"
- fi
-
- # Unmount our CDMNT
- #rc_nohalt "umount ${CDMNT}"
-
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-upgrade.sh b/usr/sbin/pc-sysinstall/backend/functions-upgrade.sh
deleted file mode 100755
index 0b06630..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-upgrade.sh
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-upgrade.sh,v 1.3 2010/08/24 06:11:46 imp Exp $
-
-# Functions which perform the mounting / unmount for upgrades
-
-. ${PROGDIR}/backend/functions-unmount.sh
-
-mount_target_slice()
-{
- MPART="${1}"
-
- # Import any zpools
- zpool import -o altroot=${FSMNT} -a
- umount_all_dir "${FSMNT}"
-
- # Set a variable of files we want to make backups of before doing upgrade
- BKFILES="/etc/rc.conf /boot/loader.conf"
-
- if [ -e "/dev/${MPART}" ] ; then
- rc_nohalt "mount /dev/${MPART} ${FSMNT}"
- if [ "$?" != "0" ] ; then
- # Check if we have ZFS tank name
- rc_halt "mount -t zfs ${MPART} ${FSMNT}"
- fi
- else
- # Check if we have ZFS tank name
- rc_halt "mount -t zfs ${MPART} ${FSMNT}"
- fi
-
- # Mount devfs in chroot
- mount -t devfs devfs ${FSMNT}/dev
-
- # Check if we have any ZFS partitions to mount
- zfs mount -a
-
- # Mount all the fstab goodies on disk
- chroot ${FSMNT} /sbin/mount -a >>${LOGOUT} 2>>${LOGOUT}
- chroot ${FSMNT} umount /proc >/dev/null 2>/dev/null
- chroot ${FSMNT} umount /compat/linux/proc >/dev/null 2>/dev/null
-
- # Now before we start the upgrade, make sure we set our noschg flags
- echo_log "Cleaning up old filesystem... Please wait..."
- rc_halt "chflags -R noschg ${FSMNT}"
-
- # Make backup copies of some files
- for i in ${BKFILES}
- do
- cp ${FSMNT}${i} ${FSMNT}${i}.preUpgrade >/dev/null 2>/dev/null
- done
-
- # Remove some old dirs
- rm -rf ${FSMNT}/etc/rc.d >/dev/null 2>/dev/null
-
- # If we are doing PC-BSD install, lets cleanup old pkgs on disk
- if [ "$INSTALLTYPE" != "FreeBSD" ]
- then
- echo_log "Removing old packages, this may take a while... Please wait..."
- echo '#/bin/sh
-for i in `pkg_info -E \*`
-do
- echo "Uninstalling package: ${i}"
- pkg_delete -f ${i} >/dev/null 2>/dev/null
-done
-' >${FSMNT}/.cleanPkgs.sh
- chmod 755 ${FSMNT}/.cleanPkgs.sh
- chroot ${FSMNT} /.cleanPkgs.sh
- rm ${FSMNT}/.cleanPkgs.sh
- run_chroot_cmd "pkg_delete -f \*" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /usr/PCBSD" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /PCBSD" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /var/db/pkgs" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /usr/local32" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /usr/sbin" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /usr/lib" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /usr/bin" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /boot/kernel" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /sbin" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /bin" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /lib" >/dev/null 2>/dev/null
- run_chroot_cmd "rm -rf /libexec" >/dev/null 2>/dev/null
- fi
-
-};
-
-# Mount the target upgrade partitions
-mount_upgrade()
-{
-
- # Make sure we remove the old upgrade-mount script
- rm -rf ${TMPDIR}/.upgrade-unmount >/dev/null 2>/dev/null
-
- # We are ready to start mounting, lets read the config and do it
- while read line
- do
- echo $line | grep "^disk0=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
-
- # Found a disk= entry, lets get the disk we are working on
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- DISK="$VAL"
- fi
-
- echo $line | grep "^commitDiskPart" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Found our flag to commit this disk setup / lets do sanity check and do it
- if [ ! -z "${DISK}" ]
- then
-
- # Start mounting this slice
- mount_target_slice "${DISK}"
-
- # Increment our disk counter to look for next disk and unset
- unset DISK
- break
- else
- exit_err "ERROR: commitDiskPart was called without procceding disk<num>= and partition= entries!!!"
- fi
- fi
-
- done <${CFGF}
-
-};
-
-copy_skel_files_upgrade()
-{
-
- # Now make sure we fix any user profile scripts, which cause problems from 7.x->8.x
- echo '#!/bin/sh
-
-cd /home
-for i in `ls`
-do
-
- # Backup the old profile dirs
- if [ -d "${i}" ]
- then
- mv /home/${i}/.kde4 /home/${i}/.kde4.preUpgrade >/dev/null 2>/dev/null
- mv /home/${i}/.kde /home/${i}/.kde.preUpgrade >/dev/null 2>/dev/null
- mv /home/${i}/.fluxbox /home/${i}/.fluxbox.preUpgrade >/dev/null 2>/dev/null
-
- # Copy over the skel directories
- tar cv --exclude "./dot.*" -f - -C /usr/share/skel . 2>/dev/null | tar xvf - -C /home/${i} 2>/dev/null
-
- for j in `ls /usr/share/skel/dot*`
- do
- dname=`echo ${j} | sed s/dot//`
- cp /usr/share/skel/${j} /home/${i}/${dname}
- done
-
- chown -R ${i}:${i} /home/${i}
- fi
-
-done
-' >${FSMNT}/.fixUserProfile.sh
- chmod 755 ${FSMNT}/.fixUserProfile.sh
- chroot ${FSMNT} /.fixUserProfile.sh >/dev/null 2>/dev/null
- rm ${FSMNT}/.fixUserProfile.sh
-
-
-
- # if the user wants to keep their original .kde4 profile
- ###########################################################################
- get_value_from_cfg "upgradeKeepDesktopProfile"
- if [ "$VAL" = "YES" -o "$VAL" = "yes" ] ; then
- echo '#!/bin/sh
- cd /home
-for i in `ls`
-do
- # Import the old config again
- if [ -d "${i}/.kde4.preUpgrade" ]
- then
- # Copy over the skel directories
- tar cv -f - -C /home/${i}/.kde4.preUpgrade . 2>/dev/null | tar xvf - -C /home/${i}/.kde4 2>/dev/null
- chown -R ${i}:${i} /home/${i}/.kde4
- fi
-done
-' >${FSMNT}/.fixUserProfile.sh
- chmod 755 ${FSMNT}/.fixUserProfile.sh
- chroot ${FSMNT} /.fixUserProfile.sh >/dev/null 2>/dev/null
- rm ${FSMNT}/.fixUserProfile.sh
-
- fi
-
-};
-
-# Function which merges some configuration files with the new defaults
-merge_old_configs()
-{
-
- # Merge the loader.conf with old
- cp ${FSMNT}/boot/loader.conf ${FSMNT}/boot/loader.conf.new
- merge_config "${FSMNT}/boot/loader.conf.preUpgrade" "${FSMNT}/boot/loader.conf.new" "${FSMNT}/boot/loader.conf"
- rm ${FSMNT}/boot/loader.conf.new
-
- # Merge the rc.conf with old
- cp ${FSMNT}/etc/rc.conf ${FSMNT}/etc/rc.conf.new
- merge_config "${FSMNT}/etc/rc.conf.preUpgrade" "${FSMNT}/etc/rc.conf.new" "${FSMNT}/etc/rc.conf"
- rm ${FSMNT}/etc/rc.conf.new
-
-};
-
-# Function which unmounts all the mounted file-systems
-unmount_upgrade()
-{
-
- # If on PC-BSD, make sure we copy any fixed skel files
- if [ "$INSTALLTYPE" != "FreeBSD" ] ; then
- copy_skel_files_upgrade
- fi
-
- cd /
-
- # Unmount FS
- umount_all_dir "${FSMNT}"
-
- # Run our saved unmount script for these file-systems
- rc_nohalt "umount -f ${FSMNT}"
-
- umount ${CDMNT}
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions-users.sh b/usr/sbin/pc-sysinstall/backend/functions-users.sh
deleted file mode 100755
index be786a1..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions-users.sh
+++ /dev/null
@@ -1,175 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions-users.sh,v 1.3 2010/08/24 06:11:46 imp Exp $
-
-# Functions which runs commands on the system
-
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-parse.sh
-
-
-# Function which checks and sets up auto-login for a user if specified
-check_autologin()
-{
- get_value_from_cfg autoLoginUser
- if [ ! -z "${VAL}" -a "${INSTALLTYPE}" = "PCBSD" ]
- then
- AUTOU="${VAL}"
- # Add the auto-login user line
- sed -i.bak "s/AutoLoginUser=/AutoLoginUser=${AUTOU}/g" ${FSMNT}/usr/local/kde4/share/config/kdm/kdmrc
-
- # Add the auto-login user line
- sed -i.bak "s/AutoLoginEnable=false/AutoLoginEnable=true/g" ${FSMNT}/usr/local/kde4/share/config/kdm/kdmrc
-
- fi
-};
-
-# Function which actually runs the adduser command on the filesystem
-add_user()
-{
- ARGS="${1}"
-
- if [ -e "${FSMNT}/.tmpPass" ]
- then
- # Add a user with a supplied password
- run_chroot_cmd "cat /.tmpPass | pw useradd ${ARGS}"
- rc_halt "rm ${FSMNT}/.tmpPass"
- else
- # Add a user with no password
- run_chroot_cmd "cat /.tmpPass | pw useradd ${ARGS}"
- fi
-
-};
-
-# Function which reads in the config, and adds any users specified
-setup_users()
-{
-
- # We are ready to start setting up the users, lets read the config
- while read line
- do
-
- echo $line | grep "^userName=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "${line}"
- USERNAME="$VAL"
- fi
-
- echo $line | grep "^userComment=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "${line}"
- USERCOMMENT="$VAL"
- fi
-
- echo $line | grep "^userPass=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "${line}"
- USERPASS="$VAL"
- fi
-
- echo $line | grep "^userShell=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "${line}"
- strip_white_space "$VAL"
- USERSHELL="$VAL"
- fi
-
- echo $line | grep "^userHome=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "${line}"
- USERHOME="$VAL"
- fi
-
- echo $line | grep "^userGroups=" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- get_value_from_string "${line}"
- USERGROUPS="$VAL"
- fi
-
-
- echo $line | grep "^commitUser" >/dev/null 2>/dev/null
- if [ "$?" = "0" ]
- then
- # Found our flag to commit this user, lets check and do it
- if [ ! -z "${USERNAME}" ]
- then
-
- # Now add this user to the system, by building our args list
- ARGS="-n ${USERNAME}"
-
- if [ ! -z "${USERCOMMENT}" ]
- then
- ARGS="${ARGS} -c \"${USERCOMMENT}\""
- fi
-
- if [ ! -z "${USERPASS}" ]
- then
- ARGS="${ARGS} -h 0"
- echo "${USERPASS}" >${FSMNT}/.tmpPass
- else
- ARGS="${ARGS} -h -"
- rm ${FSMNT}/.tmpPass 2>/dev/null 2>/dev/null
- fi
-
- if [ ! -z "${USERSHELL}" ]
- then
- ARGS="${ARGS} -s \"${USERSHELL}\""
- else
- ARGS="${ARGS} -s \"/nonexistant\""
- fi
-
- if [ ! -z "${USERHOME}" ]
- then
- ARGS="${ARGS} -m -d \"${USERHOME}\""
- fi
-
- if [ ! -z "${USERGROUPS}" ]
- then
- ARGS="${ARGS} -G \"${USERGROUPS}\""
- fi
-
- add_user "${ARGS}"
-
- # Unset our vars before looking for any more users
- unset USERNAME USERCOMMENT USERPASS USERSHELL USERHOME USERGROUPS
- else
- exit_err "ERROR: commitUser was called without any userName= entry!!!"
- fi
- fi
-
- done <${CFGF}
-
-
- # Check if we need to enable a user to auto-login to the desktop
- check_autologin
-
-};
diff --git a/usr/sbin/pc-sysinstall/backend/functions.sh b/usr/sbin/pc-sysinstall/backend/functions.sh
deleted file mode 100755
index 5d52009..0000000
--- a/usr/sbin/pc-sysinstall/backend/functions.sh
+++ /dev/null
@@ -1,497 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/functions.sh,v 1.7 2010/10/21 22:33:50 imp Exp $
-
-# functions.sh
-# Library of functions which pc-sysinstall may call upon
-
-# Function which displays the help-index file
-display_help()
-{
- if [ -e "${PROGDIR}/doc/help-index" ]
- then
- cat ${PROGDIR}/doc/help-index
- else
- echo "Error: ${PROGDIR}/doc/help-index not found"
- exit 1
- fi
-};
-
-# Function which displays the help for a specified command
-display_command_help()
-{
- if [ -z "$1" ]
- then
- echo "Error: No command specified to display help for"
- exit 1
- fi
-
- if [ -e "${PROGDIR}/doc/help-${1}" ]
- then
- cat ${PROGDIR}/doc/help-${1}
- else
- echo "Error: ${PROGDIR}/doc/help-${1} not found"
- exit 1
- fi
-};
-
-# Function to convert bytes to megabytes
-convert_byte_to_megabyte()
-{
- if [ -z "${1}" ]
- then
- echo "Error: No bytes specified!"
- exit 1
- fi
-
- expr -e ${1} / 1048576
-};
-
-# Function to convert blocks to megabytes
-convert_blocks_to_megabyte()
-{
- if [ -z "${1}" ] ; then
- echo "Error: No blocks specified!"
- exit 1
- fi
-
- expr -e ${1} / 2048
-};
-
-# Takes $1 and strips the whitespace out of it, returns VAL
-strip_white_space()
-{
- if [ -z "${1}" ]
- then
- echo "Error: No value setup to strip whitespace from!"
-
- exit 1
- fi
-
- VAL=`echo "$1" | tr -d ' '`
- export VAL
-};
-
-# Displays an error message and exits with error 1
-exit_err()
-{
- # Echo the message for the users benefit
- echo "$1"
-
- # Save this error to the log file
- echo "${1}" >>$LOGOUT
-
- # Check if we need to unmount any file-systems after this failure
- unmount_all_filesystems_failure
-
- echo "For more details see log file: $LOGOUT"
-
- exit 1
-};
-
-# Run-command, don't halt if command exits with non-0
-rc_nohalt()
-{
- CMD="$1"
-
- if [ -z "${CMD}" ]
- then
- exit_err "Error: missing argument in rc_nohalt()"
- fi
-
- echo "Running: ${CMD}" >>${LOGOUT}
- ${CMD} >>${LOGOUT} 2>>${LOGOUT}
-
-};
-
-# Run-command, halt if command exits with non-0
-rc_halt()
-{
- CMD="$1"
-
- if [ -z "${CMD}" ]
- then
- exit_err "Error: missing argument in rc_halt()"
- fi
-
- echo "Running: ${CMD}" >>${LOGOUT}
- eval ${CMD} >>${LOGOUT} 2>>${LOGOUT}
- STATUS="$?"
- if [ "${STATUS}" != "0" ]
- then
- exit_err "Error ${STATUS}: ${CMD}"
- fi
-};
-
-# Run-command w/echo to screen, halt if command exits with non-0
-rc_halt_echo()
-{
- CMD="$1"
-
- if [ -z "${CMD}" ]
- then
- exit_err "Error: missing argument in rc_halt_echo()"
- fi
-
- echo "Running: ${CMD}" >>${LOGOUT}
- ${CMD} 2>&1 | tee -a ${LOGOUT}
- STATUS="$?"
- if [ "$STATUS" != "0" ]
- then
- exit_err "Error ${STATUS}: $CMD"
- fi
-
-};
-
-# Run-command w/echo, don't halt if command exits with non-0
-rc_nohalt_echo()
-{
- CMD="$1"
-
- if [ -z "${CMD}" ]
- then
- exit_err "Error: missing argument in rc_nohalt_echo()"
- fi
-
- echo "Running: ${CMD}" >>${LOGOUT}
- ${CMD} 2>&1 | tee -a ${LOGOUT}
-
-};
-
-# Echo to the screen and to the log
-echo_log()
-{
- STR="$1"
-
- if [ -z "${STR}" ]
- then
- exit_err "Error: missing argument in echo_log()"
- fi
-
- echo "${STR}" | tee -a ${LOGOUT}
-};
-
-# Make sure we have a numeric
-is_num()
-{
- expr $1 + 1 2>/dev/null
- return $?
-}
-
-# Function which uses "fetch" to download a file, and display a progress report
-fetch_file()
-{
-
- FETCHFILE="$1"
- FETCHOUTFILE="$2"
- EXITFAILED="$3"
-
- SIZEFILE="${TMPDIR}/.fetchSize"
- EXITFILE="${TMPDIR}/.fetchExit"
-
- rm ${SIZEFILE} 2>/dev/null >/dev/null
- rm ${FETCHOUTFILE} 2>/dev/null >/dev/null
-
- fetch -s "${FETCHFILE}" >${SIZEFILE}
- SIZE="`cat ${SIZEFILE}`"
- SIZE="`expr ${SIZE} / 1024`"
- echo "FETCH: ${FETCHFILE}"
- echo "FETCH: ${FETCHOUTFILE}" >>${LOGOUT}
-
- ( fetch -o ${FETCHOUTFILE} "${FETCHFILE}" >/dev/null 2>/dev/null ; echo "$?" > ${EXITFILE} ) &
- PID="$!"
- while
- z=1
- do
-
- if [ -e "${FETCHOUTFILE}" ]
- then
- DSIZE=`du -k ${FETCHOUTFILE} | tr -d '\t' | cut -d '/' -f 1`
- if [ $(is_num "$DSIZE") ] ; then
- if [ $SIZE -lt $DSIZE ] ; then DSIZE="$SIZE"; fi
- echo "SIZE: ${SIZE} DOWNLOADED: ${DSIZE}"
- echo "SIZE: ${SIZE} DOWNLOADED: ${DSIZE}" >>${LOGOUT}
- fi
- fi
-
- # Check if the download is finished
- ps -p ${PID} >/dev/null 2>/dev/null
- if [ "$?" != "0" ]
- then
- break;
- fi
-
- sleep 2
- done
-
- echo "FETCHDONE"
-
- EXIT="`cat ${EXITFILE}`"
- if [ "${EXIT}" != "0" -a "$EXITFAILED" = "1" ]
- then
- exit_err "Error: Failed to download ${FETCHFILE}"
- fi
-
- return $EXIT
-
-};
-
-# Function to return a the zpool name for this device
-get_zpool_name()
-{
- DEVICE="$1"
-
- # Set the base name we use for zpools
- BASENAME="tank"
-
- if [ ! -d "${TMPDIR}/.zpools" ] ; then
- mkdir -p ${TMPDIR}/.zpools
- fi
-
- if [ -e "${TMPDIR}/.zpools/${DEVICE}" ] ; then
- cat ${TMPDIR}/.zpools/${DEVICE}
- return 0
- else
- # Need to generate a zpool name for this device
- NUM=`ls ${TMPDIR}/.zpools/ | wc -l | sed 's| ||g'`
- NEWNAME="${BASENAME}${NUM}"
- echo "$NEWNAME" >${TMPDIR}/.zpools/${DEVICE}
- echo "${NEWNAME}"
- return
- fi
-};
-
-iscompressed()
-{
- local FILE
- local RES
-
- FILE="$1"
- RES=1
-
- if echo "${FILE}" | \
- grep -iE '\.(Z|lzo|lzw|lzma|gz|bz2|xz|zip)$' >/dev/null 2>&1
- then
- RES=0
- fi
-
- return ${RES}
-}
-
-get_compression_type()
-{
- local FILE
- local SUFFIX
-
- FILE="$1"
- SUFFIX=`echo "${FILE}" | sed -E 's|^(.+)\.(.+)$|\2|'`
-
- VAL=""
- SUFFIX=`echo "${SUFFIX}" | tr A-Z a-z`
- case "${SUFFIX}" in
- z) VAL="lzw" ;;
- lzo) VAL="lzo" ;;
- lzw) VAL="lzw" ;;
- lzma) VAL="lzma" ;;
- gz) VAL="gzip" ;;
- bz2) VAL="bzip2" ;;
- xz) VAL="xz" ;;
- zip) VAL="zip" ;;
- esac
-
- export VAL
-}
-
-write_image()
-{
- local DEVICE_FILE
-
- IMAGE_FILE="$1"
- DEVICE_FILE="$2"
-
- if [ -z "${IMAGE_FILE}" ]
- then
- exit_err "ERROR: Image file not specified!"
- fi
-
- if [ -z "${DEVICE_FILE}" ]
- then
- exit_err "ERROR: Device file not specified!"
- fi
-
- if [ ! -f "${IMAGE_FILE}" ]
- then
- exit_err "ERROR: '${IMAGE_FILE}' does not exist!"
- fi
-
- DEVICE_FILE="${DEVICE_FILE#/dev/}"
- DEVICE_FILE="/dev/${DEVICE_FILE}"
-
- if [ ! -c "${DEVICE_FILE}" ]
- then
- exit_err "ERROR: '${DEVICE_FILE}' is not a character device!"
- fi
-
- if iscompressed "${IMAGE_FILE}"
- then
- local COMPRESSION
-
- get_compression_type "${IMAGE_FILE}"
- COMPRESSION="${VAL}"
-
- case "${COMPRESSION}" in
- lzw)
- rc_halt "uncompress ${IMAGE_FILE} -c | dd of=${DEVICE_FILE}"
- IMAGE_FILE="${IMAGE_FILE%.Z}"
- ;;
-
- lzo)
- rc_halt "lzop -d $IMAGE_{FILE} -c | dd of=${DEVICE_FILE}"
- IMAGE_FILE="${IMAGE_FILE%.lzo}"
- ;;
-
- lzma)
- rc_halt "lzma -d ${IMAGE_FILE} -c | dd of=${DEVICE_FILE}"
- IMAGE_FILE="${IMAGE_FILE%.lzma}"
- ;;
-
- gzip)
- rc_halt "gunzip ${IMAGE_FILE} -c | dd of=${DEVICE_FILE}"
- IMAGE_FILE="${IMAGE_FILE%.gz}"
- ;;
-
- bzip2)
- rc_halt "bunzip2 ${IMAGE_FILE} -c | dd of=${DEVICE_FILE}"
- IMAGE_FILE="${IMAGE_FILE%.bz2}"
- ;;
-
- xz)
- rc_halt "xz -d ${IMAGE_FILE} -c | dd of=${DEVICE_FILE}"
- IMAGE_FILE="${IMAGE_FILE%.xz}"
- ;;
-
- zip)
- rc_halt "unzip ${IMAGE_FILE} -c | dd of=${DEVICE_FILE}"
- IMAGE_FILE="${IMAGE_FILE%.zip}"
- ;;
-
- *)
- exit_err "ERROR: ${COMPRESSION} compression is not supported"
- ;;
- esac
-
- else
- rc_halt "dd if=${IMAGE_FILE} of=${DEVICE_FILE}"
-
- fi
-};
-
-install_fresh()
-{
- # Lets start setting up the disk slices now
- setup_disk_slice
-
- if [ -z "${ROOTIMAGE}" ]
- then
-
- # Disk setup complete, now lets parse WORKINGSLICES and setup the bsdlabels
- setup_disk_label
-
- # Now we've setup the bsdlabels, lets go ahead and run newfs / zfs
- # to setup the filesystems
- setup_filesystems
-
- # Lets mount the partitions now
- mount_all_filesystems
-
- # We are ready to begin extraction, lets start now
- init_extraction
-
- # Check if we have any optional modules to load
- install_components
-
- # Check if we have any packages to install
- install_packages
-
- # Do any localization in configuration
- run_localize
-
- # Save any networking config on the installed system
- save_networking_install
-
- # Now add any users
- setup_users
-
- # Now run any commands specified
- run_commands
-
- # Do any last cleanup / setup before unmounting
- run_final_cleanup
-
- # Unmount and finish up
- unmount_all_filesystems
- fi
-
- echo_log "Installation finished!"
-};
-
-install_image()
-{
- # We are ready to begin extraction, lets start now
- init_extraction
-
- echo_log "Installation finished!"
-};
-
-install_upgrade()
-{
- # We're going to do an upgrade, skip all the disk setup
- # and start by mounting the target drive/slices
- mount_upgrade
-
- # Start the extraction process
- init_extraction
-
- # Do any localization in configuration
- run_localize
-
- # ow run any commands specified
- run_commands
-
- # Merge any old configuration files
- merge_old_configs
-
- # Check if we have any optional modules to load
- install_components
-
- # Check if we have any packages to install
- install_packages
-
- # All finished, unmount the file-systems
- unmount_upgrade
-
- echo_log "Upgrade finished!"
-};
diff --git a/usr/sbin/pc-sysinstall/backend/installimage.sh b/usr/sbin/pc-sysinstall/backend/installimage.sh
deleted file mode 100644
index 3ef77dd..0000000
--- a/usr/sbin/pc-sysinstall/backend/installimage.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/installimage.sh,v 1.1 2010/09/09 03:33:07 imp Exp $
-
-# Source our functions scripts
-. ${BACKEND}/functions.sh
-
-IMAGE_FILE="${1}"
-DEVICE_FILE="${2}"
-
-write_image "${IMAGE_FILE}" "${DEVICE_FILE}"
diff --git a/usr/sbin/pc-sysinstall/backend/parseconfig.sh b/usr/sbin/pc-sysinstall/backend/parseconfig.sh
deleted file mode 100755
index 83c6042..0000000
--- a/usr/sbin/pc-sysinstall/backend/parseconfig.sh
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/parseconfig.sh,v 1.6 2010/10/09 08:52:09 imp Exp $
-
-# Main install configuration parsing script
-#
-
-# Source our functions scripts
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-bsdlabel.sh
-. ${BACKEND}/functions-cleanup.sh
-. ${BACKEND}/functions-disk.sh
-. ${BACKEND}/functions-extractimage.sh
-. ${BACKEND}/functions-installcomponents.sh
-. ${BACKEND}/functions-installpackages.sh
-. ${BACKEND}/functions-localize.sh
-. ${BACKEND}/functions-mountdisk.sh
-. ${BACKEND}/functions-networking.sh
-. ${BACKEND}/functions-newfs.sh
-. ${BACKEND}/functions-packages.sh
-. ${BACKEND}/functions-parse.sh
-. ${BACKEND}/functions-runcommands.sh
-. ${BACKEND}/functions-ftp.sh
-. ${BACKEND}/functions-unmount.sh
-. ${BACKEND}/functions-upgrade.sh
-. ${BACKEND}/functions-users.sh
-
-# Check that the config file exists
-if [ ! -e "${1}" ]
-then
- echo "ERROR: Install configuration $1 does not exist!"
- exit 1
-fi
-
-# Set our config file variable
-CFGF="$1"
-
-# Check the dirname of the provided CFGF and make sure its a full path
-DIR="`dirname ${CFGF}`"
-if [ "${DIR}" = "." ]
-then
- CFGF="`pwd`/${CFGF}"
-fi
-export CFGF
-
-# Start by doing a sanity check, which will catch any obvious mistakes in the config
-file_sanity_check "installMode disk0 installType installMedium packageType"
-
-# We passed the Sanity check, lets grab some of the universal config settings and store them
-check_value installMode "fresh upgrade"
-check_value bootManager "bsd none"
-check_value installType "PCBSD FreeBSD"
-check_value installMedium "dvd usb ftp rsync LiveCD"
-check_value packageType "uzip tar rsync split cpdup"
-if_check_value_exists partition "all ALL s1 s2 s3 s4 free FREE"
-if_check_value_exists mirrorbal "load prefer round-robin split"
-
-# We passed all sanity checks! Yay, lets start the install
-echo "File Sanity Check -> OK"
-
-# Lets load the various universal settings now
-get_value_from_cfg installMode
-INSTALLMODE="${VAL}" ; export INSTALLMODE
-
-get_value_from_cfg installType
-INSTALLTYPE="${VAL}" ; export INSTALLTYPE
-
-get_value_from_cfg installMedium
-INSTALLMEDIUM="${VAL}" ; export INSTALLMEDIUM
-
-get_value_from_cfg packageType
-PACKAGETYPE="${VAL}" ; export PACKAGETYPE
-
-# Check if we are doing any networking setup
-start_networking
-
-# If we are not doing an upgrade, lets go ahead and setup the disk
-case "${INSTALLMODE}" in
- fresh)
- if [ "${INSTALLMEDIUM}" = "image" ]
- then
- install_image
- else
- install_fresh
- fi
- ;;
-
- upgrade)
- install_upgrade
- ;;
-
- *)
- exit 1
- ;;
-esac
-
-exit 0
diff --git a/usr/sbin/pc-sysinstall/backend/startautoinstall.sh b/usr/sbin/pc-sysinstall/backend/startautoinstall.sh
deleted file mode 100755
index 153d449..0000000
--- a/usr/sbin/pc-sysinstall/backend/startautoinstall.sh
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/bin/sh
-#-
-# Copyright (c) 2010 iXsystems, Inc. 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
-#
-# Script which reads the pc-autoinstall.conf directive, and begins the install
-#
-# $FreeBSD: src/usr.sbin/pc-sysinstall/backend/startautoinstall.sh,v 1.2 2010/06/27 16:46:11 imp Exp $
-
-# Source our functions scripts
-. ${BACKEND}/functions.sh
-. ${BACKEND}/functions-networking.sh
-. ${BACKEND}/functions-parse.sh
-
-# Check that the config file exists
-if [ ! -e "${1}" ]
-then
- echo "ERROR: Install configuration $1 does not exist!"
- exit 1
-fi
-
-# Set our config file variable
-CONF=${1}
-INSTALL_CFG="/tmp/pc-sysinstall.cfg"
-
-# Check if the config file is on disk as well
-PCCFG=`grep "pc_config:" ${CONF} | grep -v "^#" | sed "s|pc_config: ||g" | sed "s|pc_config:||g"`
-SHUTDOWN_CMD=`grep "shutdown_cmd:" ${CONF} | grep -v "^#" | sed "s|shutdown_cmd: ||g" | sed "s|shutdown_cmd:||g"`
-CONFIRM_INS=`grep "confirm_install:" ${CONF} | grep -v "^#" | sed "s|confirm_install: ||g" | sed "s|confirm_install:||g"`
-
-# Check that this isn't a http / ftp file we need to fetch later
-echo "${PCCFG}" | grep -e "^http" -e "^ftp" > /dev/null 2>/dev/null
-if [ "$?" != "0" ]
-then
- # Copy over the install cfg file, if not done already
- if [ ! -e "${INSTALL_CFG}" ]
- then
- cp ${PCCFG} ${INSTALL_CFG}
- fi
- # Make sure we have the file which was copied into /tmp previously
- if [ ! -e "${INSTALL_CFG}" ]
- then
- echo "Error: ${INSTALL_CFG} is missing! Exiting in 10 seconds..."
- sleep 10
- exit 150
- fi
-else
- # We need to fetch a remote file, check and set any nic options before doing so
- NICCFG=`grep "nic_config:" ${CONF} | grep -v "^#" | sed "s|nic_config: ||g" | sed "s|nic_config:||g"`
- if [ "${NICCFG}" = "dhcp-all" -o "${NICCFG}" = "DHCP-ALL" ]
- then
- # Try to auto-enable dhcp on any nics we find
- enable_auto_dhcp
- else
- echo "Running command \"ifconfig ${NICCFG}\""
- ifconfig ${NICCFG}
- WRKNIC="`echo ${NICCFG} | cut -d ' ' -f 1`"
- NICDNS=`grep "nic_dns:" ${CONF} | grep -v "^#" | sed "s|nic_dns: ||g" | sed "s|nic_dns:||g"`
- NICGATE=`grep "nic_gateway:" ${CONF} | grep -v "^#" | sed "s|nic_gateway: ||g" | sed "s|nic_gateway:||g"`
-
- echo "nameserver ${NICDNS}" >/etc/resolv.conf
-
- echo "Running command \"route add default ${NICGATE}\""
- route add default ${NICGATE}
- fi
-
- get_nic_mac "$WRKNIC"
- nic_mac="${FOUNDMAC}"
-
- PCCFG=`echo ${PCCFG} | sed "s|%%NIC_MAC%%|${nic_mac}|g"`
-
- # Now try to fetch the remove file
- echo "Fetching cfg with: \"fetch -o ${INSTALL_CFG} ${PCCFG}\""
- fetch -o "${INSTALL_CFG}" "${PCCFG}"
- if [ "$?" != "0" ]
- then
- echo "ERROR: Failed to fetch ${PCCFG}, install aborted"
- exit 150
- fi
-
-fi
-
-# If we end up with a valid config, lets proccede
-if [ -e "${INSTALL_CFG}" ]
-then
-
- if [ "${CONFIRM_INS}" != "no" -a "${CONFIRM_INS}" != "NO" ]
- then
- echo "Type in 'install' to begin automated installation. Warning: Data on target disks may be destroyed!"
- read tmp
- case $tmp in
- install|INSTALL) ;;
- *) echo "Install canceled!" ; exit 150 ;;
- esac
- fi
-
- ${PROGDIR}/pc-sysinstall -c ${INSTALL_CFG}
- if [ "$?" = "0" ]
- then
- if [ ! -z "$SHUTDOWN_CMD" ]
- then
- ${SHUTDOWN_CMD}
- else
- echo "SUCCESS: Installation finished! Press ENTER to reboot."
- read tmp
- shutdown -r now
- fi
- else
- echo "ERROR: Installation failed, press ENTER to drop to shell."
- read tmp
- /bin/csh
- fi
-else
- echo "ERROR: Failed to get /tmp/pc-sysinstall.cfg for automated install..."
- exit 150
-fi
OpenPOWER on IntegriCloud