#!/bin/sh # ------------------------------------------------------------------------------ # Configurations and Conditionals # ------------------------------------------------------------------------------ export CLEANIMG="$1" export NAME="$2" export LC_ALL=POSIX . ./builder_setup >/dev/null . ./umount.sh >/dev/null if [ "$VERBOSE" -ge 2 -o "$DEBUG" == "1" ]; then set -x else set -e fi if [ $# -eq 0 ]; then echo "usage $0 " exit fi if [ "x$CLEANIMG" = x ]; then echo "Image file not specified!" exit 1 fi if [ "x$NAME" = x ]; then echo "Name not given!" exit 1 fi ID=$(id -ur) if [ $ID != 0 ] ; then echo "This script should be run as root user." exit 1 fi if [ "$VERBOSE" == "1" ]; then export YUM_OPTS="$YUM_OPTS -q" fi # ------------------------------------------------------------------------------ # Cleanup function # ------------------------------------------------------------------------------ function cleanup() { umount_image "$PWD/mnt" || : } trap cleanup ERR # ------------------------------------------------------------------------------ # Mount qubeized_image # ------------------------------------------------------------------------------ # NEW: continue installation from last point if UPDATE="false" # if UPDATE does not exist (keep it backwards compatible for fedora script) # - OR - # update="true", copy over prepared image as normal export IMG="qubeized_images/$NAME-root.img" [ "$UPDATE" ] && UPDATE=$(echo $UPDATE | awk '{print tolower($0)}') if [ "$IMG" -nt "$CLEANIMG" -a "$UPDATE" == "false" ]; then echo "--> Using original $IMG... (UPDATE=false and qubized_image is newer than prepared_image)" else echo "--> Copying $CLEANIMG to $IMG..." cp "$CLEANIMG" "$IMG" || exit 1 fi echo "--> Mounting $IMG" mkdir -p mnt mount -o loop "$IMG" mnt || exit 1 export INSTALLDIR=mnt # ------------------------------------------------------------------------------ # Run qubeize script # ------------------------------------------------------------------------------ "$SCRIPTSDIR/04_install_qubes.sh" || { umount "$INSTALLDIR"; exit 1; } # ------------------------------------------------------------------------------ # Create App Menus # ------------------------------------------------------------------------------ echo "--> Copying the Apps Menu shortcuts..." export APPSORIG="qubeized_images/$NAME-apps.orig" export APPSTEMPL="qubeized_images/$NAME-apps.templates" mkdir -p "$APPSORIG" cp -r "$(pwd)"/mnt/usr/share/applications/* "$APPSORIG" echo "--> Creating the Apps Menu templates..." "./create_apps_templates.sh" "$APPSORIG" "$APPSTEMPL" echo "--> Choosing appmenus whitelists..." rm -f appmenus if [ -d "appmenus_${DIST}_${TEMPLATE_FLAVOR}" ]; then ln -s "appmenus_${DIST}_${TEMPLATE_FLAVOR}" appmenus elif [ -d "appmenus_$DIST" ]; then ln -s "appmenus_$DIST" appmenus else ln -s "appmenus_generic" appmenus fi # ------------------------------------------------------------------------------ # Link directories so they can be mounted # ------------------------------------------------------------------------------ echo "--> Linking /home to /rw/home..." mv mnt/home mnt/home.orig ln -sf /rw/home mnt/home echo "--> Linking /usr/local to /rw/usrlocal..." mv mnt/usr/local mnt/usr/local.orig ln -sf /rw/usrlocal mnt/usr/local if [ -e mnt/etc/sysconfig/i18n ]; then echo "--> Setting up default locale..." echo LC_CTYPE=en_US.UTF-8 > mnt/etc/sysconfig/i18n fi # ------------------------------------------------------------------------------ # Finsh - unmount image # ------------------------------------------------------------------------------ echo "--> Unmounting $IMG" cleanup echo "Qubeized image stored at: $IMG" echo "Reducing image size (calling cleanup_image)..." ./cleanup_image "$IMG"