diff --git a/cleanup_image b/cleanup_image index 224c04a..911b238 100755 --- a/cleanup_image +++ b/cleanup_image @@ -1,6 +1,7 @@ #!/bin/sh export INSTALLDIR=$1 +export TEMPLATE_USE_FUSE=1 . ./builder_setup @@ -20,5 +21,8 @@ fi echo "--> Cleaning up image file..." $SCRIPTSDIR/09_cleanup.sh -echo "--> Compacting image file..." -/sbin/fstrim -v "$INSTALLDIR" +# fstrim not supported in userspace +if [ "$TEMPLATE_USE_FUSE" -ne 1 ]; then + echo "--> Compacting image file..." + /sbin/fstrim -v "$INSTALLDIR" +fi diff --git a/prepare_image b/prepare_image index 6334879..de1a2af 100755 --- a/prepare_image +++ b/prepare_image @@ -19,6 +19,8 @@ RETCODE=0 . ./builder_setup >/dev/null . ./umount_kill.sh >/dev/null +export TEMPLATE_USE_FUSE=1 + if ! [ $# -eq 1 ]; then echo "usage ${0} " exit @@ -55,11 +57,20 @@ echo "-> Preparing instalation of ${DIST} template..." if [ -f "${IMG}" ]; then echo "-> Image file already exists, assuming *update*..." if [ "0$TEMPLATE_ROOT_WITH_PARTITIONS" -eq 1 ]; then - IMG_LOOP=$(/sbin/losetup -P -f --show "$IMG") - IMG_DEV=${IMG_LOOP}p3 + if [ "$TEMPLATE_USE_FUSE" -eq 1 ]; then + echo "Fuse mode not implemented when TEMPLATE_ROOT_WITH_PARTITIONS is true" + exit + else + IMG_LOOP=$(/sbin/losetup -P -f --show "$IMG") + IMG_DEV=${IMG_LOOP}p3 + fi else - IMG_LOOP=$(/sbin/losetup -f --show "$IMG") - IMG_DEV=${IMG_LOOP} + if [ "$TEMPLATE_USE_FUSE" -eq 1 ]; then + IMG_DEV=$IMG + else + IMG_LOOP=$(/sbin/losetup -f --show "$IMG") + IMG_DEV=${IMG_LOOP} + fi fi udevadm settle --exit-if-exists="$IMG_DEV" else @@ -78,11 +89,20 @@ size=2MiB, type=21686148-6449-6E6F-744E-656564454649, uuid=1e6c9db4-1e91-46c4-84 type=0FC63DAF-8483-4772-8E79-3D69D8477DE4, uuid=693244e6-3e07-47bf-ad79-acade4293fe7, name="Root filesystem" EOF - IMG_LOOP=$(/sbin/losetup -P -f --show "$IMG") - IMG_DEV=${IMG_LOOP}p3 + if [ "$TEMPLATE_USE_FUSE" -eq 1 ]; then + echo "Fuse mode not implemented when TEMPLATE_ROOT_WITH_PARTITIONS is true" + exit + else + IMG_LOOP=$(/sbin/losetup -P -f --show "$IMG") + IMG_DEV=${IMG_LOOP}p3 + fi else - IMG_LOOP=$(/sbin/losetup -f --show "$IMG") - IMG_DEV=${IMG_LOOP} + if [ "$TEMPLATE_USE_FUSE" -eq 1 ]; then + IMG_DEV=$IMG + else + IMG_LOOP=$(/sbin/losetup -f --show "$IMG") + IMG_DEV=${IMG_LOOP} + fi fi udevadm settle --exit-if-exists="$IMG_DEV" @@ -90,7 +110,9 @@ EOF /sbin/mkfs.ext4 -q -F "${IMG_DEV}" || exit 1 fi -mount "${IMG_DEV}" "${INSTALLDIR}" || exit 1 +if [ "$TEMPLATE_USE_FUSE" -eq 1 ]; then + fuse2fs "${IMG_DEV}" "${INSTALLDIR}" || exit 1 +fi trap "umount_kill $(readlink -m ${INSTALLDIR})" EXIT "${SCRIPTSDIR}/01_install_core.sh" @@ -107,6 +129,8 @@ trap - EXIT echo "-> Unmounting prepared_image..." umount_kill "$(readlink -m ${INSTALLDIR})" || true -/sbin/losetup -d ${IMG_LOOP} +if [ "$TEMPLATE_USE_FUSE" -ne 1 ]; then + /sbin/losetup -d ${IMG_LOOP} +fi exit ${RETCODE} diff --git a/qubeize_image b/qubeize_image index 19c37cb..9e5179d 100755 --- a/qubeize_image +++ b/qubeize_image @@ -13,6 +13,8 @@ export CLEANIMG="$1" export NAME="$2" export LC_ALL=POSIX +export TEMPLATE_USE_FUSE=1 + . ./builder_setup >/dev/null . ./umount_kill.sh >/dev/null @@ -50,7 +52,9 @@ function cleanup() { trap - ERR trap umount_kill "$PWD/mnt" || true - /sbin/losetup -d ${IMG_LOOP} + if [ "$TEMPLATE_USE_FUSE" -ne 1 ]; then + /sbin/losetup -d ${IMG_LOOP} + fi exit $errval } trap cleanup ERR @@ -72,14 +76,27 @@ fi echo "--> Mounting $IMG" mkdir -p mnt if [ "0$TEMPLATE_ROOT_WITH_PARTITIONS" -eq 1 ]; then - IMG_LOOP=$(/sbin/losetup -P -f --show "$IMG") - IMG_DEV=${IMG_LOOP}p3 + if [ "$TEMPLATE_USE_FUSE" -eq 1 ]; then + echo "Fuse mode not implemented when TEMPLATE_ROOT_WITH_PARTITIONS is true" + exit + else + IMG_LOOP=$(/sbin/losetup -P -f --show "$IMG") + IMG_DEV=${IMG_LOOP}p3 + fi else - IMG_LOOP=$(/sbin/losetup -f --show "$IMG") - IMG_DEV=${IMG_LOOP} + if [ "$TEMPLATE_USE_FUSE" -eq 1 ]; then + IMG_DEV=$IMG + else + IMG_LOOP=$(/sbin/losetup -f --show "$IMG") + IMG_DEV=${IMG_LOOP} + fi fi udevadm settle --exit-if-exists="$IMG_DEV" -mount "$IMG_DEV" mnt || exit 1 +if [ "$TEMPLATE_USE_FUSE" -eq 1 ]; then + fuse2fs "$IMG_DEV" mnt +else + mount "$IMG_DEV" mnt || exit 1 +fi export INSTALLDIR=mnt # prepare for template.conf, so the qubeize script may generate it dynamically @@ -159,7 +176,9 @@ ls -als $IMG # ------------------------------------------------------------------------------ echo "--> Unmounting $IMG" umount_kill "$PWD/mnt" || true -/sbin/losetup -d ${IMG_LOOP} +if [ "$TEMPLATE_USE_FUSE" -ne 1 ]; then + /sbin/losetup -d ${IMG_LOOP} +fi echo "Qubeized image stored at: $IMG" diff --git a/templates.spec b/templates.spec index e1a82e9..210ef57 100644 --- a/templates.spec +++ b/templates.spec @@ -193,3 +193,4 @@ rm -rf $RPM_BUILD_ROOT %attr (664,root,qubes) %{dest_dir}/vm-whitelisted-appmenus.list %attr (664,root,qubes) %{dest_dir}/netvm-whitelisted-appmenus.list %attr (664,root,qubes) %{dest_dir}/template.conf +%define _arch x86_64