+ISODIR=${ISO##file:}
+ISODIR=${ISODIR%%/}
+# }}}
+
+# provide variables to chroot system {{{
+CHROOT_VARIABLES="/etc/debootstrap/variables_${SHORT_TARGET}"
+touch $CHROOT_VARIABLES
+chmod 600 $CHROOT_VARIABLES # make sure nobody except root can read it
+[ -n "$ARCH" ] && echo "ARCH=$ARCH" > $CHROOT_VARIABLES
+[ -n "$GRUB" ] && echo "GRUB=$GRUB" >> $CHROOT_VARIABLES
+[ -n "$GROOT" ] && echo "GROOT=$GROOT" >> $CHROOT_VARIABLES
+[ -n "$TARGET" ] && echo "TARGET=$TARGET" >> $CHROOT_VARIABLES
+[ -n "$ISO" ] && echo "ISO=$ISO" >> $CHROOT_VARIABLES
+[ -n "$ISODIR" ] && echo "ISODIR=$ISO" >> $CHROOT_VARIABLES
+[ -n "$MIRROR" ] && echo "MIRROR=$MIRROR" >> $CHROOT_VARIABLES
+[ -n "$MIRROR" ] && echo "CHROOTMIRROR=$MIRROR" >> $CHROOT_VARIABLES
+[ -n "$ROOTPASSWORD" ] && echo "ROOTPASSWORD=$ROOTPASSWORD" >> $CHROOT_VARIABLES
+# }}}
+
+# helper functions {{{
+# we want to exit smoothly and clean:
+bailout(){
+ # make sure $TARGET is not mounted when exiting grml-debootstrap
+ if [ -n "$MNTPOINT" ] ; then
+ if grep -q $MNTPOINT /proc/mounts ; then
+ # make sure nothing is left inside chroot so we can unmount it
+ [ -x "$MNTPOINT"/etc/init.d/ssh ] && "$MNTPOINT"/etc/init.d/ssh stop
+ [ -x "$MNTPOINT"/etc/init.d/mdadm ] && "$MNTPOINT"/etc/init.d/mdadm stop
+ # ugly, but make sure we really don't leav anything
+ [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount /sys 1>/dev/null 2>&1
+ [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount -a 1>/dev/null 2>&1
+ [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount /proc 1>/dev/null 2>&1
+ [ -x "$MNTPOINT"/bin/umount ] && chroot "$MNTPOINT" umount /proc 1>/dev/null 2>&1
+ [ -d "$MNTPOINT/$ISODIR" ] && umount "$MNTPOINT/$ISODIR" 1>/dev/null 2>&1
+ einfo "Unmounting $MNTPOINT" ; umount "$MNTPOINT" ; eend $?
+
+ # remove directory only if we used the default with process id inside the name
+ if echo "$MNTPOINT" | grep -q '/mnt/debootstrap\.' ; then
+ einfo "Removing directory ${MNTPOINT}" ; rmdir $MNTPOINT ; eend $?
+ fi
+ fi
+ fi