#!/bin/ash echo "Configuring stage 3.2 ..." # first a few variables CONFIG="${FUTURE_ROOT}/opt/openslx/config" ######################################################################### # # This function downloads the config containing environment variables # fetch_sysconfig() { [ -e "$CONFIG" ] && grep -E '^#_RCONFIG_TAG$' "$CONFIG" > /dev/null \ && echo "Config already fetched." && return 0 download "${SLX_BASE_PATH}/config" "${CONFIG}-remote" || return 1 echo "# Config fetched from $URL" >> "$CONFIG" echo "#_RCONFIG_TAG" >> "$CONFIG" cat "${CONFIG}-remote" >> "$CONFIG" } ######################################################################### # # This function downloads the config.tgz and unpacks it to $TARGET_PATH <-- no it doesn't! # fetch_config_files() { [ -e "${CONFIG}.tgz" ] && echo "config.tgz already downloaded." && return 0 download "${SLX_BASE_PATH}/config.tgz" "${CONFIG}.tgz" } ######################################################################### # # This function updates the downloaded config with the IP information # received from /inc/setup_network <-- plus 500 other things update_sysconfig() { # sanity checks [ ! -e "${CONFIG}" ] && { echo "Cannot update. '$CONFIG' does not exist."; return 1; } # write IP and SLX_SERVER configuration to $CONFIG cat >> "$CONFIG" </dev/null cd "${TEMP_EXTRACT_DIR}" # first we look for local config.tgz files, which we merge with the common # config.tgz files if [ -n "${SLX_LOCAL_CONFIG}" ]; then local MOD for MOD in ${SLX_LOCAL_CONFIG}; do local LOCAL_CONFIG_DIR="openslx-configs/${MOD}" if [ -d "${LOCAL_CONFIG_DIR}" ]; then tarcopy "${LOCAL_CONFIG_DIR}" "${TEMP_EXTRACT_DIR}" echo "Merged local configuration files for '${MOD}'" fi done fi # purge openslx-configs/* rm -rf -- "openslx-configs/" # now just tarcopy them to future root tarcopy "${TEMP_EXTRACT_DIR}" "${FUTURE_ROOT}" # cleanup the downloaded stuff cd / rm -rf -- "${TEMP_EXTRACT_DIR}" [ $DEBUG -eq 0 ] && rm -f -- "${CONFIG}.tgz" # Display branding logo if splash screen is shown [ "x${MUTED_OUTPUT}" = "x1" ] && [ -e "${FUTURE_ROOT}/etc/branding.ppm" ] && fbsplash -s "${FUTURE_ROOT}/etc/branding.ppm" & return 0 } ######################################################################### # # MAIN PART # fetch_sysconfig || drop_shell "Could not download remote config" if ! ash -n "${CONFIG}-remote"; then echo -e "\n\tFATAL: Could not download configuration!" echo -e "\tAborting boot since the system would be in an unusable state." echo -en "\tRebooting in 60 seconds" timeout=60 while [ $(( timeout-- )) -gt 0 ]; do echo -n "." sleep 1 done echo b > /proc/sysrq-trigger fi . "${CONFIG}-remote" || drop_shell "Could not source remote config" fetch_config_files || drop_shell "Could not download config.tgz" update_sysconfig || drop_shell "Could not update sysconfig" true