126 lines
3.5 KiB
Bash
Executable File
126 lines
3.5 KiB
Bash
Executable File
#!/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 <clean_image_file> <template_name>"
|
|
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
|
|
losetup -d ${IMG_LOOP}
|
|
exit $errval
|
|
}
|
|
trap cleanup ERR
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Mount qubeized_image
|
|
# ------------------------------------------------------------------------------
|
|
export IMG="qubeized_images/$NAME/root.img"
|
|
mkdir -p "qubeized_images/$NAME"
|
|
|
|
echo "--> Copying $CLEANIMG to $IMG..."
|
|
cp "$CLEANIMG" "$IMG" || exit 1
|
|
|
|
echo "--> Mounting $IMG"
|
|
mkdir -p mnt
|
|
if [ "0$TEMPLATE_ROOT_WITH_PARTITIONS" -eq 1 ]; then
|
|
IMG_LOOP=$(losetup -P -f --show "$IMG")
|
|
IMG_DEV=${IMG_LOOP}p1
|
|
else
|
|
IMG_LOOP=$(losetup -f --show "$IMG")
|
|
IMG_DEV=${IMG_LOOP}
|
|
fi
|
|
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" ]; then
|
|
ln -s "${_appmenus_dir}/appmenus_$DIST" 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
|
|
ln -sf /rw/usrlocal 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
|
|
losetup -d ${IMG_LOOP}
|
|
|
|
echo "Qubeized image stored at: $IMG"
|
|
|
|
chown -R --reference=. qubeized_images/$NAME
|