#!/bin/sh
# Copyright (C) 2011 O.S. Systems Software LTDA.
# Licensed on MIT

finish_enabled() {
	return 0
}

finish_run() {
	if [ -n "$ROOTFS_DIR" ]; then
		if [ -n "$bootparam_rootdelay" ]; then
			debug "Sleeping for $rootdelay second(s) to wait root to settle..."
			sleep $bootparam_rootdelay
		fi

		if [ -n "$bootparam_root" ]; then
			debug "No e2fs compatible filesystem has been mounted, mounting $bootparam_root..."

			if [ "`echo ${bootparam_root} | cut -c1-5`" = "UUID=" ]; then
				root_uuid=`echo $bootparam_root | cut -c6-`
				bootparam_root="/dev/disk/by-uuid/$root_uuid"
			fi

			if [ -e "$bootparam_root" ]; then
				flags=""
				if [ -n "$bootparam_ro" ]; then
					if [  -n "$bootparam_rootflags" ]; then
						bootparam_rootflags="$bootparam_rootflags,"
					fi
					bootparam_rootflags="${bootparam_rootflags}ro"
				fi
				if [ -n "$bootparam_rootflags" ]; then
					flags="$flags -o$bootparam_rootflags"
				fi
				if [ -n "$bootparam_rootfstype" ]; then
					flags="$flags -t$bootparam_rootfstype"
				fi
				mount $flags $bootparam_root $ROOTFS_DIR
			else
				debug "root '$bootparam_root' doesn't exist."
			fi
		fi

		if [ ! -d $ROOTFS_DIR/dev ]; then
			fatal "ERROR: There's no '/dev' on rootfs."
		fi

		info "Switching root to '$ROOTFS_DIR'..."

		debug "Moving /dev, /proc and /sys onto rootfs..."
		mount --move /dev $ROOTFS_DIR/dev
		mount --move /proc $ROOTFS_DIR/proc
		mount --move /sys $ROOTFS_DIR/sys

		cd $ROOTFS_DIR
		exec switch_root -c /dev/console $ROOTFS_DIR ${bootparam_init:-/sbin/init}
	else
		debug "No rootfs has been set"
	fi
}
