#!/bin/bash set -e cleanup() { [ -d "$EXTMNT" ] && umount $EXTMNT && rmdir $EXTMNT [ -d "$SQUASHMNT" ] && umount $SQUASHMNT && rmdir $SQUASHMNT [ -d "$ISOMNT" ] && umount $ISOMNT && rmdir $ISOMNT } exitclean() { echo "Cleaning up to exit..." cleanup exit 1 } trap exitclean SIGINT SIGTERM PATH=/sbin:/usr/sbin:$PATH ISO=$(readlink -f "$1") ROOT=$(readlink -f "$2") ISOMNT=$(mktemp -d /media/isotmp.XXXXXX) mount -o loop,ro "$ISO" $ISOMNT || exitclean EXTIMG=$ISOMNT/LiveOS/ext3fs.img if [ -e $ISOMNT/LiveOS/squashfs.img ] ; then SQUASHMNT=$(mktemp -d /media/squashtmp.XXXXXX) mount -o loop,ro $ISOMNT/LiveOS/squashfs.img $SQUASHMNT || exitclean EXTIMG=$SQUASHMNT/LiveOS/ext3fs.img fi EXTMNT=$(mktemp -d /media/exttmp.XXXXXX) mount -o loop,ro $EXTIMG $EXTMNT || exitclean echo "Create root filesystem..." mkdir -p $ROOT chmod a+rx $ROOT/. cp -a $EXTMNT/* $ROOT echo "Done." cleanup