diff options
Diffstat (limited to 'PCBSD/pc-sysinstall/backend')
40 files changed, 0 insertions, 9923 deletions
diff --git a/PCBSD/pc-sysinstall/backend/.svn/entries b/PCBSD/pc-sysinstall/backend/.svn/entries deleted file mode 100644 index 4402e3a..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/entries +++ /dev/null @@ -1,640 +0,0 @@ -10 - -dir -6759 -svn://svn.pcbsd.org/pcbsd/current/pc-sysinstall/backend -svn://svn.pcbsd.org - - - -2010-05-22T19:59:31.576442Z -6759 -ayerenkow - - - - - - - - - - - - - - -212fe199-4beb-da11-a70e-00e08102fd27 - -functions-users.sh -file - - - - -2010-05-23T00:20:49.000000Z -b491892fd2657913a1b8d533290f235e -2009-11-13T19:38:48.836985Z -5020 -kris - - - - - - - - - - - - - - - - - - - - - -3641 - -functions.sh -file - - - - -2010-05-23T00:20:49.000000Z -9f599a0beb00995ba08f1766119fdba5 -2010-05-16T18:52:47.285311Z -6724 -kris - - - - - - - - - - - - - - - - - - - - - -4617 - -functions-localize.sh -file - - - - -2010-05-23T00:20:49.000000Z -0731744b38de88f94d13548662852031 -2010-05-22T19:59:31.576442Z -6759 -ayerenkow - - - - - - - - - - - - - - - - - - - - - -10707 - -functions-unmount.sh -file - - - - -2010-05-23T00:20:49.000000Z -fda52422b07c35b56df627125912e0d9 -2010-05-19T15:53:43.658786Z -6745 -kris - - - - - - - - - - - - - - - - - - - - - -4903 - -startautoinstall.sh -file - - - - -2010-05-23T00:20:49.000000Z -4c9dd792a22d634d594b0605216e8ec2 -2010-05-11T17:59:10.123893Z -6693 -kris -has-props - - - - - - - - - - - - - - - - - - - - -3331 - -functions-bsdlabel.sh -file - - - - -2010-05-23T00:20:49.000000Z -9ed6f132c916bd27175af9a36b6e8772 -2010-05-20T12:37:14.779822Z -6746 -kris - - - - - - - - - - - - - - - - - - - - - -16780 - -functions-parse.sh -file - - - - -2010-05-23T00:20:49.000000Z -b77eb406b67335f4d4198a041619965f -2010-03-11T07:55:56.999915Z -6386 -kris - - - - - - - - - - - - - - - - - - - - - -4734 - -functions-installcomponents.sh -file - - - - -2010-05-23T00:20:49.000000Z -8624a8eda565ebd3ef14269e329ac8c4 -2010-01-06T19:15:24.597719Z -5795 -kris - - - - - - - - - - - - - - - - - - - - - -3573 - -functions-mountdisk.sh -file - - - - -2010-05-23T00:20:49.000000Z -b331e04625ce6372111a19267625f069 -2010-05-16T18:52:47.285311Z -6724 -kris - - - - - - - - - - - - - - - - - - - - - -4757 - -functions-extractimage.sh -file - - - - -2010-05-23T00:20:49.000000Z -64de3ea9deb361c817267bcadabdadcf -2010-05-09T01:44:47.258849Z -6682 -johnh - - - - - - - - - - - - - - - - - - - - - -7362 - -functions-mountoptical.sh -file - - - - -2010-05-23T00:20:49.000000Z -fac8df44ce04d39c0ec3c494cccc5578 -2009-12-29T19:30:31.237756Z -5711 -kris - - - - - - - - - - - - - - - - - - - - - -2882 - -functions-newfs.sh -file - - - - -2010-05-23T00:20:49.000000Z -204d8c20ba158460418ea91a0b521e79 -2010-05-16T18:52:47.285311Z -6724 -kris - - - - - - - - - - - - - - - - - - - - - -4592 - -functions-runcommands.sh -file - - - - -2010-05-23T00:20:49.000000Z -0da82dc876435b06828c90afdfb8deec -2009-10-29T14:29:55.972326Z -4809 -kris - - - - - - - - - - - - - - - - - - - - - -1535 - -functions-networking.sh -file - - - - -2010-05-23T00:20:49.000000Z -0bc6f149d9fbb76d7d0ef3882b8401b5 -2010-05-11T17:59:10.123893Z -6693 -kris - - - - - - - - - - - - - - - - - - - - - -7717 - -functions-cleanup.sh -file - - - - -2010-05-23T00:20:49.000000Z -744bae2df1b9be9134c261b6ca59d862 -2010-05-16T18:52:47.285311Z -6724 -kris - - - - - - - - - - - - - - - - - - - - - -10169 - -functions-upgrade.sh -file - - - - -2010-05-23T00:20:49.000000Z -c3e6b574af945d598161d638f980194c -2010-04-07T16:05:18.981194Z -6521 -kris - - - - - - - - - - - - - - - - - - - - - -7629 - -functions-disk.sh -file - - - - -2010-05-23T00:20:49.000000Z -3db491d9ddbdbbe16c81003a1fe1dfd7 -2010-05-20T12:37:14.779822Z -6746 -kris - - - - - - - - - - - - - - - - - - - - - -16748 - -parseconfig.sh -file - - - - -2010-05-23T00:20:49.000000Z -a72e0c373850c6798eae69a79aa970d2 -2010-05-09T01:44:47.258849Z -6682 -johnh -has-props - - - - - - - - - - - - - - - - - - - - -3508 - diff --git a/PCBSD/pc-sysinstall/backend/.svn/lock b/PCBSD/pc-sysinstall/backend/.svn/lock deleted file mode 100644 index e69de29..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/lock +++ /dev/null diff --git a/PCBSD/pc-sysinstall/backend/.svn/prop-base/parseconfig.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/prop-base/parseconfig.sh.svn-base deleted file mode 100644 index 869ac71..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/prop-base/parseconfig.sh.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 14 -svn:executable -V 1 -* -END diff --git a/PCBSD/pc-sysinstall/backend/.svn/prop-base/startautoinstall.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/prop-base/startautoinstall.sh.svn-base deleted file mode 100644 index 869ac71..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/prop-base/startautoinstall.sh.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 14 -svn:executable -V 1 -* -END diff --git a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-bsdlabel.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-bsdlabel.sh.svn-base deleted file mode 100644 index af7813e..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-bsdlabel.sh.svn-base +++ /dev/null @@ -1,592 +0,0 @@ -#!/bin/sh -# 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 -1 -}; - -# 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`" - - # Check if we are doing raidz setup - echo $ZFSVARS | grep "^raidz:" >/dev/null 2>/dev/null - if [ "$?" = "0" ] ; then - ZTYPE="raidz" - ZFSVARS="`echo $ZFSVARS | sed 's|raidz: ||g' | sed 's|raidz:||g'`" - fi - - echo $ZFSVARS | grep "^mirror:" >/dev/null 2>/dev/null - if [ "$?" = "0" ] ; then - ZTYPE="mirror" - ZFSVARS="`echo $ZFSVARS | sed 's|mirror: ||g' | sed 's|mirror:||g'`" - _nZFS="" - - # Using mirroring, setup boot partitions on each disk - for i in $ZFSVARS - do - is_disk "$i" - if [ "$?" = "0" ] ; then - init_gpt_full_disk "$i" - rc_halt "gpart add -t freebsd-zfs ${i}" - rc_halt "gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ${i}" - _nZFS="$_nZFS ${i}p2" - else - _nZFS="$_nZFS ${i}" - fi - done - ZFSVARS=`echo "$_nZFS" | tr -s ' '` - 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 -}; - -# 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="rootfs" - 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` - - # 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|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="${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" ] - 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}" - - # Save this data to our partition config dir - echo "${FS}:${MNT}:${ENC}:${PLABEL}:MBR:${XTRAOPTS}" >${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 - - 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|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" ] - 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}" - - # 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 -}; - diff --git a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-cleanup.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-cleanup.sh.svn-base deleted file mode 100644 index 2c7ffd0..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-cleanup.sh.svn-base +++ /dev/null @@ -1,386 +0,0 @@ -#!/bin/sh -# 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="" - - # 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 sw 0 0" >> ${FSTAB} - else - echo "/dev/${DEVICE} ${PARTMNT} ufs rw,noatime 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 - cat ${PARTDIR}-enc/${PART}-encpass | geli setkey -S -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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-disk.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-disk.sh.svn-base deleted file mode 100644 index 17cfb63..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-disk.sh.svn-base +++ /dev/null @@ -1,646 +0,0 @@ -#!/bin/sh -# 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 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() -{ - DISK="${1}" - cd /dev - - for i in `ls ${DISK}*` - 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="$VAL" - - # We are using free space, figure out the slice number - if [ "${PTYPE}" = "free" -o "${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 - - 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|ALL) tmpSLICE="${DISK}p1" - run_gpart_full "${DISK}" "${BMANAGER}" ;; - 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|FREE) tmpSLICE="${DISK}s${LASTSLICE}" - run_gpart_free "${DISK}" "${LASTSLICE}" "${BMANAGER}" ;; - *) exit_err "ERROR: Unknown PTYPE: $PTYPE" ;; - esac - - # Now save which disk<num> this is, so we can parse it later during slice partition setup - echo "disk${disknum}" >${SLICECFGDIR}/$tmpSLICE - - # 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 - 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() { - DISK="$1" - # Check if we need to shutdown any journals on this drive - ls /dev/${DISK}*.journal >/dev/null 2>/dev/null - if [ "$?" = "0" ] - then - cd /dev - for i in `ls ${DISK}*.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 slice -init_gpt_full_disk() -{ - DISK=$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 "${DISK}" - - # Remove any existing partitions - delete_all_gpart "${DISK}" - - #Erase any existing bootloader - echo_log "Cleaning up ${DISK}" - rc_halt "dd if=/dev/zero of=/dev/${DISK} count=2048" - - sleep 2 - - echo_log "Running gpart on ${DISK}" - rc_halt "gpart create -s GPT ${DISK}" - rc_halt "gpart add -s 128 -t freebsd-boot ${DISK}" - - echo_log "Stamping boot sector on ${DISK}" - rc_halt "gpart bootcode -b /boot/pmbr ${DISK}" - -} - -# Function which runs gpart and creates a single large slice -run_gpart_full() -{ - DISK=$1 - - init_gpt_full_disk "$DISK" - - slice="${DISK}-1-gpt" - - # 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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-extractimage.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-extractimage.sh.svn-base deleted file mode 100644 index 394cfad..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-extractimage.sh.svn-base +++ /dev/null @@ -1,289 +0,0 @@ -#!/bin/sh -# 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 occured:" >>${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 "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 "Extracting" `basename ${KERNELS}` - echo "y" | sh install.sh generic >/dev/null - if [ "$?" != "0" ] - then - exit_err "ERROR: Failed extracting ${KERNELS}" - fi - echo 'kernel="GENERIC"' > "${FSMNT}/boot/loader.conf" - 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 "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 does the rsync download from the server specifed 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 - -}; - - -# 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 - 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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-installcomponents.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-installcomponents.sh.svn-base deleted file mode 100644 index cb3b0a6..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-installcomponents.sh.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/sh -# 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="$?" - ;; - 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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-localize.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-localize.sh.svn-base deleted file mode 100644 index 02dfd61..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-localize.sh.svn-base +++ /dev/null @@ -1,449 +0,0 @@ -#!/bin/sh -# 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" - SETXKBMAP="" - - if [ "${COUNTRY}" = "NONE" ] || [ "${COUNTRY}" = "us" ]; - then - #In this case we don't need any additional language - COUNTRY="" - 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= -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" - LANGUAGE="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" - LANGUAGE="$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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-mountdisk.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-mountdisk.sh.svn-base deleted file mode 100644 index 112e299..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-mountdisk.sh.svn-base +++ /dev/null @@ -1,164 +0,0 @@ -#!/bin/sh -# 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+J) mount_partition ${PART}${EXT}.journal ${PARTFS} ${PARTMNT} "async,noatime" - ;; - ZFS) 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+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 - ;; - *) exit_err "ERROR: Got unknown file-system type $PARTFS" ;; - esac - fi - done -}; diff --git a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-mountoptical.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-mountoptical.sh.svn-base deleted file mode 100644 index c4c324d..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-mountoptical.sh.svn-base +++ /dev/null @@ -1,126 +0,0 @@ -#!/bin/sh -# 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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-networking.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-networking.sh.svn-base deleted file mode 100644 index eca2321..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-networking.sh.svn-base +++ /dev/null @@ -1,330 +0,0 @@ -#!/bin/sh -# 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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-newfs.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-newfs.sh.svn-base deleted file mode 100644 index b1f7f3a..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-newfs.sh.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -#!/bin/sh -# 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 [ "${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`" - - # 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" - 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" - 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" - 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 - ;; - *) exit_err "ERROR: Got unknown file-system type $PARTFS" ;; - esac - - done -}; diff --git a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-parse.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-parse.sh.svn-base deleted file mode 100644 index 1fa138d..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-parse.sh.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -#!/bin/sh -# 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 - 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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-runcommands.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-runcommands.sh.svn-base deleted file mode 100644 index 307119d..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-runcommands.sh.svn-base +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -# 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 - rm ${FSMNT}/.runcmd.sh -}; - -run_chroot_script() -{ - SCRIPT="$@" - SBASE=`basename $SCRIPT` - - cp ${SCRIPT} ${FSMNT}/.$SBASE - chmod 755 ${FSMNT}/.${SBASE} - - echo_log "Running chroot script: ${SCRIPT}" - chroot ${FSMNT} /.${SBASE} - - rm ${FSMNT}/.${SBASE} -}; - - -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 - rm ${TMPDIR}/.runcmd.sh -}; - - -# 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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-unmount.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-unmount.sh.svn-base deleted file mode 100644 index abd2491..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-unmount.sh.svn-base +++ /dev/null @@ -1,175 +0,0 @@ -#!/bin/sh -# Functions which unmount all mounted disk filesystems - -# 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+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+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}" - - # 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 - - # Import any pools, so they are active at shutdown and ready to boot potentially - zpool import -a - -}; - -# 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}" - - # Import any pools, so they are active at shutdown and ready to boot potentially - zpool import -a -}; diff --git a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-upgrade.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-upgrade.sh.svn-base deleted file mode 100644 index 08f80e7..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-upgrade.sh.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/sh -# Functions which perform the mounting / unmount for upgrades - - -mount_target_slice() -{ - MPART="${1}" - - # Import any zpools - zpool import -a - - # 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}a.journal" ] - then - rc_halt "mount /dev/${MPART}.journal ${FSMNT}" - elif [ -e "/dev/${MPART}a" ] - then - mount /dev/${MPART}a ${FSMNT} - if [ "$?" != "0" ] - then - # Try ZFS on this slice - mount -t zfs ${MPART}a ${FSMNT} - if [ "${?}" != "0" ] - then - exit_err "Failed to mount ${MPART}" - fi - fi - fi - - mount -t devfs devfs ${FSMNT}/dev - 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 - - # Save which partition was mounted, so we may unmount it later - echo "umount -f /dev/${MPART}a" >>${TMPDIR}/.upgrade-unmount - - # 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() -{ - - # Start with disk0 - disknum="0" - - # 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 "^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 - 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="$VAL" - - # We are using free space, figure out the slice number - if [ "${PTYPE}" = "free" -o "${PTYPE}" = "all" ] - then - exit_err "ERROR: Invalid upgrade partition=${PTYPE}" - fi - 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 - s1|s2|s3|s4) tmpSLICE="${DISK}${PTYPE}a" ;; - *) exit_err "ERROR: Unknown PTYPE: $PTYPE" ;; - esac - - if [ ! -e "/dev/${tmpSLICE}" ] - then - exit_err "ERROR: /dev/${tmpSLICE} does not exist! Mount failed!" - fi - - # Start mounting this slice - mount_target_slice "${DISK}${PTYPE}" - - # Increment our disk counter to look for next disk and unset - unset PTYPE DISK - disknum="`expr $disknum + 1`" - 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 - chroot ${FSMNT} /sbin/umount -a >/dev/null 2>/dev/null - umount ${FSMNT}/usr >/dev/null 2>/dev/null - umount ${FSMNT}/var >/dev/null 2>/dev/null - umount ${FSMNT}/dev >/dev/null 2>/dev/null - umount ${FSMNT} >/dev/null 2>/dev/null - - # Run our saved unmount script for these file-systems - rc_nohalt "sh ${TMPDIR}/.upgrade-unmount" - - umount ${CDMNT} -}; diff --git a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-users.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-users.sh.svn-base deleted file mode 100644 index e413807..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions-users.sh.svn-base +++ /dev/null @@ -1,149 +0,0 @@ -#!/bin/sh -# 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/PCBSD/pc-sysinstall/backend/.svn/text-base/functions.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/functions.sh.svn-base deleted file mode 100644 index a4975c3..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/functions.sh.svn-base +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh -# 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} - ${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} -}; - -# 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` - echo "SIZE: ${SIZE} DOWNLOADED: ${DSIZE}" - echo "SIZE: ${SIZE} DOWNLOADED: ${DSIZE}" >>${LOGOUT} - 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 -}; diff --git a/PCBSD/pc-sysinstall/backend/.svn/text-base/parseconfig.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/parseconfig.sh.svn-base deleted file mode 100644 index 9bf92b8..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/parseconfig.sh.svn-base +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/sh -# 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-localize.sh -. ${BACKEND}/functions-mountdisk.sh -. ${BACKEND}/functions-networking.sh -. ${BACKEND}/functions-newfs.sh -. ${BACKEND}/functions-parse.sh -. ${BACKEND}/functions-runcommands.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 partition bootManager 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" -check_value packageType "uzip tar rsync split" -check_value 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 -if [ "${INSTALLMODE}" = "fresh" ] -then - - # Lets start setting up the disk slices now - setup_disk_slice - - # 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 - - # 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 - - echo_log "Installation finished!" - exit 0 - -else - # 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 - - # Now run any commands specified - run_commands - - # Merge any old configuration files - merge_old_configs - - # All finished, unmount the file-systems - unmount_upgrade - - echo_log "Upgrade finished!" - exit 0 -fi - diff --git a/PCBSD/pc-sysinstall/backend/.svn/text-base/startautoinstall.sh.svn-base b/PCBSD/pc-sysinstall/backend/.svn/text-base/startautoinstall.sh.svn-base deleted file mode 100644 index a7103fb..0000000 --- a/PCBSD/pc-sysinstall/backend/.svn/text-base/startautoinstall.sh.svn-base +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/sh -# Script which reads the pc-autoinstall.conf directive, and begins the install -# - -# 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 rebooot." - 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 diff --git a/PCBSD/pc-sysinstall/backend/functions-bsdlabel.sh b/PCBSD/pc-sysinstall/backend/functions-bsdlabel.sh deleted file mode 100644 index af7813e..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-bsdlabel.sh +++ /dev/null @@ -1,592 +0,0 @@ -#!/bin/sh -# 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 -1 -}; - -# 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`" - - # Check if we are doing raidz setup - echo $ZFSVARS | grep "^raidz:" >/dev/null 2>/dev/null - if [ "$?" = "0" ] ; then - ZTYPE="raidz" - ZFSVARS="`echo $ZFSVARS | sed 's|raidz: ||g' | sed 's|raidz:||g'`" - fi - - echo $ZFSVARS | grep "^mirror:" >/dev/null 2>/dev/null - if [ "$?" = "0" ] ; then - ZTYPE="mirror" - ZFSVARS="`echo $ZFSVARS | sed 's|mirror: ||g' | sed 's|mirror:||g'`" - _nZFS="" - - # Using mirroring, setup boot partitions on each disk - for i in $ZFSVARS - do - is_disk "$i" - if [ "$?" = "0" ] ; then - init_gpt_full_disk "$i" - rc_halt "gpart add -t freebsd-zfs ${i}" - rc_halt "gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ${i}" - _nZFS="$_nZFS ${i}p2" - else - _nZFS="$_nZFS ${i}" - fi - done - ZFSVARS=`echo "$_nZFS" | tr -s ' '` - 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 -}; - -# 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="rootfs" - 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` - - # 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|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="${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" ] - 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}" - - # Save this data to our partition config dir - echo "${FS}:${MNT}:${ENC}:${PLABEL}:MBR:${XTRAOPTS}" >${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 - - 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|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" ] - 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}" - - # 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 -}; - diff --git a/PCBSD/pc-sysinstall/backend/functions-cleanup.sh b/PCBSD/pc-sysinstall/backend/functions-cleanup.sh deleted file mode 100644 index 1c29190..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-cleanup.sh +++ /dev/null @@ -1,384 +0,0 @@ -#!/bin/sh -# 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 set mountpoint=${ZMNT} ${ZPOOLNAME}" - #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="" - - # 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 sw 0 0" >> ${FSTAB} - else - echo "/dev/${DEVICE} ${PARTMNT} ufs rw,noatime 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 - cat ${PARTDIR}-enc/${PART}-encpass | geli setkey -S -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 the root_pw if it is specified - set_root_pw - - # Generate the fstab for the installed system - setup_fstab - -}; diff --git a/PCBSD/pc-sysinstall/backend/functions-disk.sh b/PCBSD/pc-sysinstall/backend/functions-disk.sh deleted file mode 100644 index 17cfb63..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-disk.sh +++ /dev/null @@ -1,646 +0,0 @@ -#!/bin/sh -# 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 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() -{ - DISK="${1}" - cd /dev - - for i in `ls ${DISK}*` - 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="$VAL" - - # We are using free space, figure out the slice number - if [ "${PTYPE}" = "free" -o "${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 - - 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|ALL) tmpSLICE="${DISK}p1" - run_gpart_full "${DISK}" "${BMANAGER}" ;; - 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|FREE) tmpSLICE="${DISK}s${LASTSLICE}" - run_gpart_free "${DISK}" "${LASTSLICE}" "${BMANAGER}" ;; - *) exit_err "ERROR: Unknown PTYPE: $PTYPE" ;; - esac - - # Now save which disk<num> this is, so we can parse it later during slice partition setup - echo "disk${disknum}" >${SLICECFGDIR}/$tmpSLICE - - # 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 - 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() { - DISK="$1" - # Check if we need to shutdown any journals on this drive - ls /dev/${DISK}*.journal >/dev/null 2>/dev/null - if [ "$?" = "0" ] - then - cd /dev - for i in `ls ${DISK}*.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 slice -init_gpt_full_disk() -{ - DISK=$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 "${DISK}" - - # Remove any existing partitions - delete_all_gpart "${DISK}" - - #Erase any existing bootloader - echo_log "Cleaning up ${DISK}" - rc_halt "dd if=/dev/zero of=/dev/${DISK} count=2048" - - sleep 2 - - echo_log "Running gpart on ${DISK}" - rc_halt "gpart create -s GPT ${DISK}" - rc_halt "gpart add -s 128 -t freebsd-boot ${DISK}" - - echo_log "Stamping boot sector on ${DISK}" - rc_halt "gpart bootcode -b /boot/pmbr ${DISK}" - -} - -# Function which runs gpart and creates a single large slice -run_gpart_full() -{ - DISK=$1 - - init_gpt_full_disk "$DISK" - - slice="${DISK}-1-gpt" - - # 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/PCBSD/pc-sysinstall/backend/functions-extractimage.sh b/PCBSD/pc-sysinstall/backend/functions-extractimage.sh deleted file mode 100644 index 9868c53..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-extractimage.sh +++ /dev/null @@ -1,312 +0,0 @@ -#!/bin/sh -# 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 occured:" >>${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 "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 "Extracting" `basename ${KERNELS}` - echo "y" | sh install.sh generic >/dev/null - if [ "$?" != "0" ] - then - exit_err "ERROR: Failed extracting ${KERNELS}" - fi - echo 'kernel="GENERIC"' > "${FSMNT}/boot/loader.conf" - 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 "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 does the rsync download from the server specifed 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 - -}; - - -# 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) - get_value_from_cfg cpdupPaths - if [ ! -z "${VAL}" ] - then - INSFILE="${VAL}" ; export INSFILE - fi - oIFS=$IFS - IFS="," - for FILE in $INSFILE; do - echo_log "pc-sysinstall: Running cpdup -vvv -I -o /${FILE} /mnt/${FILE}" - /usr/local/bin/cpdup -vvv -I -o /${FILE} /mnt/${FILE} >&1 2>&1 - if [ "$?" != "0" ] - then - echo "CPDUP failure occured:" >>${LOGOUT} - exit_err "ERROR: Error occurred during cpdup" - fi - done - oIFS=$IFS - IFS=" -" - 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/PCBSD/pc-sysinstall/backend/functions-installcomponents.sh b/PCBSD/pc-sysinstall/backend/functions-installcomponents.sh deleted file mode 100644 index cb3b0a6..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-installcomponents.sh +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/sh -# 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="$?" - ;; - 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/PCBSD/pc-sysinstall/backend/functions-localize.sh b/PCBSD/pc-sysinstall/backend/functions-localize.sh deleted file mode 100644 index 02dfd61..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-localize.sh +++ /dev/null @@ -1,449 +0,0 @@ -#!/bin/sh -# 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" - SETXKBMAP="" - - if [ "${COUNTRY}" = "NONE" ] || [ "${COUNTRY}" = "us" ]; - then - #In this case we don't need any additional language - COUNTRY="" - 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= -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" - LANGUAGE="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" - LANGUAGE="$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/PCBSD/pc-sysinstall/backend/functions-mountdisk.sh b/PCBSD/pc-sysinstall/backend/functions-mountdisk.sh deleted file mode 100644 index 112e299..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-mountdisk.sh +++ /dev/null @@ -1,164 +0,0 @@ -#!/bin/sh -# 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+J) mount_partition ${PART}${EXT}.journal ${PARTFS} ${PARTMNT} "async,noatime" - ;; - ZFS) 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+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 - ;; - *) exit_err "ERROR: Got unknown file-system type $PARTFS" ;; - esac - fi - done -}; diff --git a/PCBSD/pc-sysinstall/backend/functions-mountoptical.sh b/PCBSD/pc-sysinstall/backend/functions-mountoptical.sh deleted file mode 100644 index c4c324d..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-mountoptical.sh +++ /dev/null @@ -1,126 +0,0 @@ -#!/bin/sh -# 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/PCBSD/pc-sysinstall/backend/functions-networking.sh b/PCBSD/pc-sysinstall/backend/functions-networking.sh deleted file mode 100644 index eca2321..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-networking.sh +++ /dev/null @@ -1,330 +0,0 @@ -#!/bin/sh -# 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/PCBSD/pc-sysinstall/backend/functions-newfs.sh b/PCBSD/pc-sysinstall/backend/functions-newfs.sh deleted file mode 100644 index b1f7f3a..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-newfs.sh +++ /dev/null @@ -1,142 +0,0 @@ -#!/bin/sh -# 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 [ "${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`" - - # 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" - 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" - 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" - 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 - ;; - *) exit_err "ERROR: Got unknown file-system type $PARTFS" ;; - esac - - done -}; diff --git a/PCBSD/pc-sysinstall/backend/functions-parse.sh b/PCBSD/pc-sysinstall/backend/functions-parse.sh deleted file mode 100644 index 1fa138d..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-parse.sh +++ /dev/null @@ -1,205 +0,0 @@ -#!/bin/sh -# 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 - 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/PCBSD/pc-sysinstall/backend/functions-runcommands.sh b/PCBSD/pc-sysinstall/backend/functions-runcommands.sh deleted file mode 100644 index 307119d..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-runcommands.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/sh -# 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 - rm ${FSMNT}/.runcmd.sh -}; - -run_chroot_script() -{ - SCRIPT="$@" - SBASE=`basename $SCRIPT` - - cp ${SCRIPT} ${FSMNT}/.$SBASE - chmod 755 ${FSMNT}/.${SBASE} - - echo_log "Running chroot script: ${SCRIPT}" - chroot ${FSMNT} /.${SBASE} - - rm ${FSMNT}/.${SBASE} -}; - - -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 - rm ${TMPDIR}/.runcmd.sh -}; - - -# 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/PCBSD/pc-sysinstall/backend/functions-unmount.sh b/PCBSD/pc-sysinstall/backend/functions-unmount.sh deleted file mode 100644 index f47c3fb..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-unmount.sh +++ /dev/null @@ -1,175 +0,0 @@ -#!/bin/sh -# Functions which unmount all mounted disk filesystems - -# 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+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+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}" - - # 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 - - # Import any pools, so they are active at shutdown and ready to boot potentially - zpool import -a - -}; - -# 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} 2>/dev/null" - - 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} 2>/dev/null" - - # Import any pools, so they are active at shutdown and ready to boot potentially - zpool import -a -}; diff --git a/PCBSD/pc-sysinstall/backend/functions-upgrade.sh b/PCBSD/pc-sysinstall/backend/functions-upgrade.sh deleted file mode 100644 index 08f80e7..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-upgrade.sh +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/sh -# Functions which perform the mounting / unmount for upgrades - - -mount_target_slice() -{ - MPART="${1}" - - # Import any zpools - zpool import -a - - # 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}a.journal" ] - then - rc_halt "mount /dev/${MPART}.journal ${FSMNT}" - elif [ -e "/dev/${MPART}a" ] - then - mount /dev/${MPART}a ${FSMNT} - if [ "$?" != "0" ] - then - # Try ZFS on this slice - mount -t zfs ${MPART}a ${FSMNT} - if [ "${?}" != "0" ] - then - exit_err "Failed to mount ${MPART}" - fi - fi - fi - - mount -t devfs devfs ${FSMNT}/dev - 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 - - # Save which partition was mounted, so we may unmount it later - echo "umount -f /dev/${MPART}a" >>${TMPDIR}/.upgrade-unmount - - # 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() -{ - - # Start with disk0 - disknum="0" - - # 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 "^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 - 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="$VAL" - - # We are using free space, figure out the slice number - if [ "${PTYPE}" = "free" -o "${PTYPE}" = "all" ] - then - exit_err "ERROR: Invalid upgrade partition=${PTYPE}" - fi - 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 - s1|s2|s3|s4) tmpSLICE="${DISK}${PTYPE}a" ;; - *) exit_err "ERROR: Unknown PTYPE: $PTYPE" ;; - esac - - if [ ! -e "/dev/${tmpSLICE}" ] - then - exit_err "ERROR: /dev/${tmpSLICE} does not exist! Mount failed!" - fi - - # Start mounting this slice - mount_target_slice "${DISK}${PTYPE}" - - # Increment our disk counter to look for next disk and unset - unset PTYPE DISK - disknum="`expr $disknum + 1`" - 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 - chroot ${FSMNT} /sbin/umount -a >/dev/null 2>/dev/null - umount ${FSMNT}/usr >/dev/null 2>/dev/null - umount ${FSMNT}/var >/dev/null 2>/dev/null - umount ${FSMNT}/dev >/dev/null 2>/dev/null - umount ${FSMNT} >/dev/null 2>/dev/null - - # Run our saved unmount script for these file-systems - rc_nohalt "sh ${TMPDIR}/.upgrade-unmount" - - umount ${CDMNT} -}; diff --git a/PCBSD/pc-sysinstall/backend/functions-users.sh b/PCBSD/pc-sysinstall/backend/functions-users.sh deleted file mode 100644 index e413807..0000000 --- a/PCBSD/pc-sysinstall/backend/functions-users.sh +++ /dev/null @@ -1,149 +0,0 @@ -#!/bin/sh -# 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/PCBSD/pc-sysinstall/backend/functions.sh b/PCBSD/pc-sysinstall/backend/functions.sh deleted file mode 100644 index a4975c3..0000000 --- a/PCBSD/pc-sysinstall/backend/functions.sh +++ /dev/null @@ -1,249 +0,0 @@ -#!/bin/sh -# 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} - ${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} -}; - -# 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` - echo "SIZE: ${SIZE} DOWNLOADED: ${DSIZE}" - echo "SIZE: ${SIZE} DOWNLOADED: ${DSIZE}" >>${LOGOUT} - 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 -}; diff --git a/PCBSD/pc-sysinstall/backend/parseconfig.sh b/PCBSD/pc-sysinstall/backend/parseconfig.sh deleted file mode 100755 index a86d583..0000000 --- a/PCBSD/pc-sysinstall/backend/parseconfig.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/sh -# 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-localize.sh -. ${BACKEND}/functions-mountdisk.sh -. ${BACKEND}/functions-networking.sh -. ${BACKEND}/functions-newfs.sh -. ${BACKEND}/functions-parse.sh -. ${BACKEND}/functions-runcommands.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 partition bootManager 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" -check_value 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 -if [ "${INSTALLMODE}" = "fresh" ] -then - - # Lets start setting up the disk slices now - setup_disk_slice - - # 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 - - # 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 - - echo_log "Installation finished!" - exit 0 - -else - # 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 - - # Now run any commands specified - run_commands - - # Merge any old configuration files - merge_old_configs - - # All finished, unmount the file-systems - unmount_upgrade - - echo_log "Upgrade finished!" - exit 0 -fi - diff --git a/PCBSD/pc-sysinstall/backend/startautoinstall.sh b/PCBSD/pc-sysinstall/backend/startautoinstall.sh deleted file mode 100755 index a7103fb..0000000 --- a/PCBSD/pc-sysinstall/backend/startautoinstall.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/sh -# Script which reads the pc-autoinstall.conf directive, and begins the install -# - -# 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 rebooot." - 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 |