#!/bin/bash # ------------------------------------------------------------------------------ # # OpenSLX Toolkit Next Gen # # ------------------------------------------------------------------------------ # # The next generation toolkit to build a stateless linux system bootable # over the network. Composed of dracut-built initramfs and a full system clone. # # ------------------------------------------------------------------------------ # # Main Code # # ------------------------------------------------------------------------------ declare -rg ARG0="$0" declare -rg SELF="$(readlink -f "${ARG0}")" declare -rg ROOT_DIR="$(dirname "${SELF}")" declare -rg SELF_PID="$$" # let's keep it simple for now, just source our config/functions file . "${ROOT_DIR}/${ARG0}".functions || perror "Could not source functions." . "${ROOT_DIR}/${ARG0}".config || perror "Could not source config." # root check if [ "$(id -u)" -ne 0 ]; then banner perror "ERROR: You need to be root to use this toolkit." else banner fi # do we even have tools? for TOOL in qemu-img qemu-nbd mkfs.ext4; do which "${TOOL}" &>/dev/null || \ perror "Could not find '${TOOL}'. Please install it." done # setup trap trap cleanexit SIGINT SIGTERM # read params read_params $@ # react to given action if [ "x$ACTION" == "xCLONE" ]; then clone_stage4 || perror "Cloning stage4 failed with: $?" elif [ "x$ACTION" == "xPACKAGE" ]; then pack_qcow2 || perror "Packing as QCoW2 failed with: $?" else pwarning "No action given." print_usage fi