diff --git a/fstab/onboot.sh b/fstab/onboot.sh new file mode 100644 index 0000000..1ac0be5 --- /dev/null +++ b/fstab/onboot.sh @@ -0,0 +1,52 @@ +#!/bin/bash + +## There is more to this script but use this version for now. +## When you get to starting services at boot, there will be +## a new version of this script. + +FSTAB_FILE="/root/fstab" +LOG_FILE="/tmp/onboot.log" +LED_LOADING="/root/onboot.loading.led" +LED_LOADING_ERRORS="/root/onboot.loading.errors.led" +LED_LOADED="/root/onboot.loaded.led" +LED_ERRORS="/root/onboot.errors.led" +error_state=false +rm -f "${LOG_FILE}" +touch "${LOG_FILE}" +./doled.sh "${LED_LOADING}" & + +function doLog { + echo "${1}" + echo "$(date) > ${1}" >> "${LOG_FILE}" +} + +doLog "Starting OnBoot sequence..." + +if [[ ! -f ${FSTAB_FILE} ]]; then + ./doled.sh "${LED_ERRORS}" + ./doled.sh "${LED_LOADING}" remove + doLog "${FSTAB_FILE} does not exist! Exiting..." + exit 1 +fi + +doLog "Loading ${FSTAB_FILE}..." + +while read -r fs mountpoint fstype opts dump pass; do + + [[ "${fs}" =~ ^#.*$ || -z "${fs}" ]] && continue + + if [ ! -d "${mountpoint}" ]; then + doLog "Creating mountpoint: ${mountpoint}" + mkdir -p "${mountpoint}" + fi + + doLog "Mounting ${fs} on ${mountpoint} (type=${fstype}, opts=${opts})" + + mount -t "${fstype}" -o "${opts}" "${fs}" "${mountpoint}" || { + ./doled.sh "${LED_LOADING_ERRORS}" + doLog "Failed to mount ${fs} on ${mountpoint}" + ./doled.sh "${LED_LOADING}" remove + error_state=true + } + +done < "${FSTAB_FILE}" \ No newline at end of file