#!/bin/bash

export PATH=/bin:/usr/bin:/sbin:/usr/sbin
cd $(dirname $0)

CHROOT_DIR=/tmp/chrootDir

function fail() {
	if [ -n "$1" ]; then
		echo $1 | logger
		psplash-write "MSG $1
"
	fi

	umount $CHROOT_DIR
	sleep 10
	psplash-write "QUIT"
	exit 1
}

killall psplash
psplash --notouch &
sleep 1

psplash-write "MSG Bootstrapping live FS...
"

mkdir -p $CHROOT_DIR
mount -t tmpfs none $CHROOT_DIR

if [ -e  "$1" ]; then
	# Use provided rootfs
	tar xzvf "$1" -C $CHROOT_DIR || fail "Failed to extract rootfs"
else
	# Use local ConfigOS
	CONFIGOS_MNT="$( mount | grep /dev/mmcblk1p2 | awk '{ print $3 }' )"
	[ -z "$CONFIGOS_MNT" ] && fail "Could not find ConfigOS mount point"
	if [ "$CONFIGOS_MNT" == "/" ]; then
		mkdir -p /mnt/configos
		mount -o bind / /mnt/configos || fail "Failed ConfigOS bind mount"
		CONFIGOS_MNT="/mnt/configos"
	fi
	rsync -a "$CONFIGOS_MNT/" "$CHROOT_DIR/" || fail "Failed rootfs setup"
fi

[ -e "$CHROOT_DIR/usr/bin/chroot_boot" ] || fail "FS does not support chroot"

mount -t devtmpfs none $CHROOT_DIR/dev
mount -t proc none $CHROOT_DIR/proc

cd $CHROOT_DIR

mkdir -p old_root
pivot_root . old_root

/usr/sbin/start-stop-daemon --start --name chroot_boot -b -r / --exec /bin/bash -- chroot_boot
