#!/bin/bash if [ "$VERBOSE" -ge 2 -o "$DEBUG" == "1" ]; then set -x fi set -e # ------------------------------------------------------------------------------ # Configurations and Conditionals # ------------------------------------------------------------------------------ export CLEANIMG="$1" export NAME="$2" export LC_ALL=POSIX . ./builder_setup >/dev/null . ./umount_kill.sh >/dev/null 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() { errval=$? trap - ERR trap umount_kill "$PWD/mnt" || true /sbin/losetup -d ${IMG_LOOP} exit $errval } trap cleanup ERR # ------------------------------------------------------------------------------ # Mount qubeized_image # ------------------------------------------------------------------------------ export IMG="qubeized_images/$NAME/root.img" mkdir -p "qubeized_images/$NAME" if [ "0$DISCARD_PREPARED_IMAGE" -eq "1" ]; then echo "--> Moving $CLEANIMG to $IMG..." mv "$CLEANIMG" "$IMG" || exit 1 else echo "--> Copying $CLEANIMG to $IMG..." cp "$CLEANIMG" "$IMG" || exit 1 fi echo "--> Mounting $IMG" mkdir -p mnt if [ "0$TEMPLATE_ROOT_WITH_PARTITIONS" -eq 1 ]; then IMG_LOOP=$(/sbin/losetup -b 4096 -P -f --show "$IMG") # BUG: losetup's partscan (-P) does nothing when trying 4096 sectors formatted images on a 512 sectors backing device. # Hence it needs an additional partprobe run. /sbin/partprobe $IMG_LOOP IMG_DEV=${IMG_LOOP}p3 else IMG_LOOP=$(/sbin/losetup -b 4096 -f --show "$IMG") IMG_DEV=${IMG_LOOP} fi # make sure the IMG_DEV is present c=0; while [ ! -b $IMG_DEV ]; do sleep 1; c=$((c+1)); [ $c -ge 5 ] && break; done; unset c mount "$IMG_DEV" mnt || exit 1 export INSTALLDIR=mnt # ------------------------------------------------------------------------------ # Run qubeize script # ------------------------------------------------------------------------------ "$SCRIPTSDIR/04_install_qubes.sh" # ------------------------------------------------------------------------------ # Create App Menus # ------------------------------------------------------------------------------ echo "--> Choosing appmenus whitelists..." _appmenus_dir="${APPMENUS_DIR:-${SCRIPTSDIR}}" rm -f appmenus if [ -d "${_appmenus_dir}/appmenus_${DIST}_${TEMPLATE_FLAVOR}" ]; then ln -s "${_appmenus_dir}/appmenus_${DIST}_${TEMPLATE_FLAVOR}" appmenus elif [ -d "${_appmenus_dir}/appmenus_${DIST//[0-9]*}_${TEMPLATE_FLAVOR}" ]; then ln -s "${_appmenus_dir}/appmenus_${DIST//[0-9]*}_${TEMPLATE_FLAVOR}" appmenus elif [ -d "${_appmenus_dir}/appmenus_$DIST" ]; then ln -s "${_appmenus_dir}/appmenus_$DIST" appmenus elif [ -d "${_appmenus_dir}/appmenus_${DIST//[0-9]*}" ]; then ln -s "${_appmenus_dir}/appmenus_${DIST//[0-9]*}" appmenus elif [ -d "${_appmenus_dir}/appmenus" ]; then ln -s "${_appmenus_dir}/appmenus" 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 mkdir mnt/home echo "--> Linking /usr/local to /rw/usrlocal..." mv mnt/usr/local mnt/usr/local.orig mkdir mnt/usr/local echo "Reducing image size (calling cleanup_image)..." ls -als $IMG ./cleanup_image "$INSTALLDIR" ls -als $IMG # ------------------------------------------------------------------------------ # Finsh - unmount image # ------------------------------------------------------------------------------ echo "--> Unmounting $IMG" umount_kill "$PWD/mnt" || true /sbin/losetup -d ${IMG_LOOP} echo "Qubeized image stored at: $IMG" chown -R --reference=. qubeized_images/$NAME