#!/bin/sh
PATH=/bin:/sbin

HD_DEVICEA="/dev/sdareal4"
HD_DEVICEATMP="/dev/sda2"
HD_DEVICEB="/dev/sdb4"
HD_DEVICEBTMP="/dev/sdb2"
HDA_EXIST=1
HDB_EXIST=2
HDAB_EXIST=3

HD_DEVICE="/dev/sda4"
FLASH_ROOTFS_EXT="/dev/mtdblock3"
RAM_DEVICE="/dev/ram1"
MNT_POINT="/mnt/ext"

#
# Set status flag
#
#set_status_flag()
#{
#	echo $1 > /tmp/mycheck
#	dd if=/tmp/mycheck of=$HD_DEVICE seek=73400336 bs=1 count=1
#	rm -f /tmp/mycheck
#}

#
# Check Status 0=no change; 1=firmware updated; 2=hd first initialised
#
#check_status_flag()
#{
#	local myflag=0
#	local ret=0

#	dd if=$HD_DEVICE of=/tmp/mycheck skip=73400336 bs=1 count=1
#	myflag=`cat /tmp/mycheck`
#	if [ $myflag = 1 ] || [ $myflag = 2 ]; then
#		ret=1
#	fi

#	rm -f /tmp/mycheck
#	return $ret
#}

#
# Check if hd is ready
#
## add by KenChen 20060307
check_if_hd_ready_arg()
{
	local ret=0
	
	dd if=$1 of=/tmp/mycheck skip=70M bs=1 count=4
	if [ $? = 0 ] && [ `cat /tmp/mycheck` = "QNAP" ]; then
		ret=1
	fi

	rm -f /tmp/mycheck
	return $ret
}

check_if_hd_ready_TS_201()
{
	local reta=0
	local retb=0
	local ret=0
	
	echo "check_if_hd_ready_TS_201..."
	
	check_if_hd_ready_arg $HD_DEVICEA
	if [ $? = 1 ]; then
		reta=1
	fi
	check_if_hd_ready_arg $HD_DEVICEB
	if [ $? = 1 ]; then
		retb=1
	fi
	
	if [ $reta = 1 ] && [ $retb = 1 ]; then
		ret=$HDAB_EXIST
	elif [ $reta = 1 ]; then	
		ret=$HDA_EXIST
	elif [ $retb = 1 ]; then	
		ret=$HDB_EXIST
	fi
	
	return $ret
}

## end here

check_if_hd_ready()
{
	local ret=0

	dd if=$HD_DEVICE of=/tmp/mycheck skip=70M bs=1 count=4
	if [ $? = 0 ] && [ `cat /tmp/mycheck` = "QNAP" ]; then
		ret=1
	fi

	rm -f /tmp/mycheck
	return $ret
}


mount -t proc /proc /proc
# Mount local file systems in /etc/fstab
mount -o remount,rw /
mount -a
mount -t usbfs usbfs /proc/bus/usb

#
# Mounting extended rootfs
#
## add by KenChen 20060306
#Internal_Model=`/sbin/getcfg System "Internal Model" -f /etc/default_config/uLinux.conf`
#if [ $Internal_Model = "TS-201" ]; then
Model_Name=`cat /etc/default_config/Model_Name.conf 2>/dev/null`
if [ $? = 0 ]; then
if [ $Model_Name = "TS-201" ]; then
	check_if_hd_ready_TS_201
	case $? in
  	$HDA_EXIST)
		echo "HDA_EXIST"
		#mdadm -C --force --run $HD_DEVICE --level=1 --raid-devices=1 $HD_DEVICEA
		mdadm -C --force --run $HD_DEVICE --level=1 --raid-devices=2 $HD_DEVICEA $HD_DEVICEATMP
		mdadm $HD_DEVICE -f $HD_DEVICEATMP
		sleep 1
		mdadm $HD_DEVICE -r $HD_DEVICEATMP
		;;
  	$HDB_EXIST)
		echo "HDB_EXIST"
		#mdadm -C --force --run $HD_DEVICE --level=1 --raid-devices=1 $HD_DEVICEB
		mdadm -C --force --run $HD_DEVICE --level=1 --raid-devices=2 $HD_DEVICEB $HD_DEVICEBTMP
		mdadm $HD_DEVICE -f $HD_DEVICEBTMP
		sleep 1
		mdadm $HD_DEVICE -r $HD_DEVICEBTMP
		;;
  	$HDAB_EXIST)
		echo "HDAB_EXIST"
		mdadm -C --force --run $HD_DEVICE --level=1 --raid-devices=2 $HD_DEVICEA $HD_DEVICEB
		;;
  	*)
		echo "No Valid HD Existed..."
		;;
	esac
else
	echo "Recover device node...."
		 mv /dev/sdareal4 /dev/sda4
fi
else
	echo "Recover device node...."
		 mv /dev/sdareal4 /dev/sda4
fi
## end here

check_if_hd_ready
if [ $? = 1 ]; then
	echo "Update Extended RootFS..."
	dd if=/dev/zero of=$HD_DEVICE bs=1k count=25534
	tar xzf $FLASH_ROOTFS_EXT -O > $HD_DEVICE
	sync
	mount $HD_DEVICE $MNT_POINT
else
	tar xzf $FLASH_ROOTFS_EXT -O > $RAM_DEVICE
	mount $RAM_DEVICE $MNT_POINT
fi

ln -s $MNT_POINT/home /home
ln -s $MNT_POINT/usr /usr

/sbin/daemon_mgr
