#!/bin/sh 
#DESCRIPTION = This script mod. by gutosie
#NeoBoot INIT 
#Scrypt Unix Shell - init for neoboot 

echo "====================================================> "
echo " "
echo "	    -=*[ NEOBOOT - BOOT UP ]*=-     "                      	                      
echo "     NEO BOOT INIT Version: gutosie   "
echo "	             q(-_-)p                "   
echo " "
echo "====================================================> "

NEODEVICE=`cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`        
IMAGEKATALOG=ImageBoot

if [ -e /tmp/.init_reboot ]; then
          rm /tmp/.init_reboot
	  break;

else
	if [ -e $NEODEVICE$IMAGEKATALOG ]  ; then 	    
            CELBOOT=`cat $NEODEVICE$IMAGEKATALOG/.neonextboot`
	    if [ $CELBOOT = "Flash" ]; then 
                   exec /sbin/init.sysvinit $*	  
                   exit 0
            else
                echo " "
                break;
            fi
	fi     
			
	mknod /dev/sda b  8 0
	mknod /dev/sda1 b 8 1
	mknod /dev/sda2 b 8 2
	mknod /dev/sdb b  8 16
	mknod /dev/sdb1 b 8 17
	mknod /dev/sdb2 b 8 18
	mknod /dev/sdc b  8 32
	mknod /dev/sdc1 b 8 33
	mknod /dev/sdc2 b 8 34
	mknod /dev/sdd b  8 48
	mknod /dev/sdd1 b 8 49
	mknod /dev/sdd2 b 8 50

	mkdir /dev/input
	mknod /dev/input/event0 c 13 64

	mknod /dev/fb0 c 29 0
	mkdir /dev/fb
	ln -s ../fb0 /dev/fb/0

	sleep 1
	
	LIBDIR=/lib/modules/`uname -r`
	if [ ! -d $LIBDIR ]; then
		LIBDIR=/lib/modules/`ls /lib/modules | tail -n 1`
	fi
        
	if [ `mount | grep /proc | wc -l` -lt 1 ]; then
		/bin/mount -t proc proc /proc > /dev/null 2>&1
		/bin/mount -t sysfs sysfs /sys > /dev/null 2>&1
		/sbin/depmod -Ae > /dev/null 2>&1
	fi

        echo "NeoBoot is starting mdev and mout HDD USB ..."
        echo "/sbin/mdev" > /proc/sys/kernel/hotplug
        /etc/init.d/mdev > /dev/null 2>&1

	sleep 5
        echo " "        

############..>>>>>>>>        
        echo "Search NEOBOOT... "		
	mnttest="nouuid"
	if [ -e $NEOBOOT/bin/install  ]; then
    	                orgimag1=`mount | sed '/sd/!d' | cut -d" " -f1`
		        selectinstall=`cat $NEOBOOT/bin/install`
		        for item in $orgimag1; do
			        selectmnt=`blkid | sed "/$selectinstall/!d" | cut -d":" -f1`
			        if [ $selectmnt == $item ]; then
				        echo "selectmnt=" $selectmnt
                        	        mnttest="uuid"
				        mount $selectmnt $NEODEVICE > /dev/null 2>&1
			        fi
			        if [ ! -e $NEODEVICE$IMAGEKATALOG  ]; then
				        echo "NEOBOOT hasn't been installed on: " $selectmnt
				        umount $NEODEVICE > /dev/null 2>&1 
			        else
				        echo "NEOBOOT has been installed on: " $selectmnt
				        break;
			        fi 			
		        done
	            fi	
     
	            if [ ! -e $NEODEVICE$IMAGEKATALOG  ]; then
	                mkdir $NEODEVICE > /dev/null 2>&1
	            fi

	            if [ $mnttest="nouuid" ] ; then
	                echo "NeoBoot mount by Device"
		        DEVICES1=`find /dev/sd??`
		        for DEVICE in $DEVICES1;
		        do
			        if [ -e $NEODEVICE  ]; then
				        echo "neoboot checking installation on: " $DEVICE
				        mount $DEVICE $NEODEVICE > /dev/null 2>&1 
			        fi

			        if [ ! -e $NEODEVICE$IMAGEKATALOG  ]; then
				        echo "NeoBoot hasn't been installed on: " $DEVICE
				        umount $NEODEVICE > /dev/null 2>&1 
			        else
				        echo "NEOBOOTt has been installed on: " $DEVICE
				        break;
			        fi 
		        done
	            elif [ $mnttest="uuid" ]; then	
		        echo "NEOBOOT mount by UUID"
	fi
###>>>>>>>>>>>>>>>>> 
        HOSTNAME=`cat /etc/hostname`
	if [ ! -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/boot/$HOSTNAME.vmlinux.gz ]; then

            echo "Image launched on a base kernel flash. "  > `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/kernel_flash

	    MODPROBE=/sbin/modprobe

	    echo "Load video and frame buffer modules ..."
            modprobe dvb

	    echo "NeoBoot is loading modules"
	    for mod in dvb; do
		    $MODPROBE $mod
	    done
	
	    # Hack for loading modules which are not loaded on diffrent kernel images
	    /etc/init.d/modutils.sh
	    #

	    echo "Set BOOTLOGO ..."
            sleep 1	
                         
	    cat /etc/videomode > /proc/stb/video/videomode

	    #we must wait until udev has created the video device
	    (
	    if [ -d /proc/stb ]; then
		    while true; do
			    if [ -e /dev/dvb/adapter0/video0 ]; then
				    break;
			    fi;
		    done;
	    fi;
	    [ -e /etc/dropbear/dropbear_rsa_host_key ] && /usr/bin/showiframe /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/neowait.mvi;
	    ) &
          
            /etc/init.d/bootlogo > /dev/null 2>&1
        
            sleep 2
            echo "Driverload end"

	    if [ -f $LIBDIR/kernel/fs/autofs4/autofs4.ko ]; then
		    /sbin/insmod $LIBDIR/kernel/fs/autofs4/autofs4.ko > /dev/null 2>&1
	    fi

	    /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/fbclear > /dev/null 2>&1

	fi 	

        #dodatkowe szukanie neoboota
        #mount /dev/sdb1 $NEO > /dev/null 2>&1  # <<< tu mozesz zmienic sdb1 i wpisac Twoje montowanie dysku dla neoboot

	if [ -e /tmp/init_reboot ]; then
		  break;
	fi
	
        UPLOAD=ImagesUpload
	if [ ! -e $NEODEVICE$IMAGEKATALOG ]; then
                echo "Error mounting, Return to image Flash..."
                sleep 2
                ln -sfn /sbin/init.sysvinit /sbin/init
                echo "Flash "  > $NEODEVICE$IMAGEKATALOG/.neonextboot 
                echo "Reinstall kernel -Press number 3"  > $NEODEVICE$UPLOAD/.kernel/used_flash_kernel
                echo " Sending all processes the TERM- KILL signal..."
                reboot -f
	fi
          
        #ln -sfn /sbin/init.sysvinit /sbin/init   #<<<<___after adding it will return to image flash

	TARGET=Flash
	if [ -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/.neonextboot ]; then
	  TARGET=`cat $NEODEVICE$IMAGEKATALOG/.neonextboot`
	fi
	        
	if [ $TARGET = "Flash" ]; then
		echo "NEOBOOT is booting image from " $TARGET
		/bin/umount /media/usb > /dev/null 2>&1
		/bin/umount /media/hdd > /dev/null 2>&1
		/usr/bin/showiframe /usr/share/bootlogo.mvi > /dev/null 2>&1
		sync; ln -sfn /sbin/init.sysvinit /sbin/init#; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/neom
                echo "----------------------------------"
	        echo "     BOOT UP IMAGE FROM FLASH     "
                echo "----------------------------------"		
	else
                                                 
                ######### test boot new imaga>>>>                               
                if [ -e $NEODEVICE$IMAGEKATALOG/$TARGET/.control_ok ]; then
	                        [ $PL ] && echo "Nie ma bledu, normalny start image..." || echo "No Error - Booting image normal..."
                else 
          			if [ -e $NEODEVICE$IMAGEKATALOG/$TARGET/.control_boot_new_image ]; then
                    			echo "First start image - The first attempt to launch a new image... "; rm -f $NEODEVICE$IMAGEKATALOG/$TARGET/.control_boot_new_image 
          			else    
              			        echo "Wrong kernel. Press number 3"  > $NEODEVICE$UPLOAD/.kernel/used_flash_kernel
                    			ln -sfn /sbin/init.sysvinit /sbin/init
                    			echo "Flash "  > $NEODEVICE$IMAGEKATALOG/.neonextboot
                    			echo "Error - NeoBoot he can not run it image !!! "
                    			echo "Restart STB - Back to Flash... "
                                        echo "NeoBoot is booting" $TARGET                     			
                    			sleep 5; reboot -f   
          			fi
                fi
                ######### test boot new image<<<<<                
                                                                
		echo "NeoBoot is booting" $TARGET " from " `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`
		
                if [ -d $NEODEVICE$IMAGEKATALOG/$TARGET ]; then
			if [ -f $NEODEVICE$IMAGEKATALOG/$TARGET/etc/init.d/udev ]; then
				sed -ie s!"\$4"!"\$3"!g $NEODEVICE$IMAGEKATALOG/$TARGET/etc/init.d/udev
			fi

			if [ -f $NEODEVICE$IMAGEKATALOG/$TARGET/usr/share/bootlogo.mvi ]; then
				/usr/bin/showiframe $NEODEVICE$IMAGEKATALOG/$TARGET/usr/share/bootlogo.mvi
			else
				/usr/bin/showiframe $NEODEVICE$IMAGEKATALOG/$TARGET/usr/share/bootlogo.mvi
			fi

			sleep 1
                       			
			/bin/mount -o bind /dev $NEODEVICE$IMAGEKATALOG/$TARGET/dev
			/bin/mount -o bind /proc $NEODEVICE$IMAGEKATALOG/$TARGET/proc
			/bin/mount -o bind /sys $NEODEVICE$IMAGEKATALOG/$TARGET/sys
                        			
			rm $NEODEVICE$IMAGEKATALOG/$TARGET$NEODEVICE > /dev/null 2>&1
			mkdir $NEODEVICE$IMAGEKATALOG/$TARGET$NEODEVICE > /dev/null 2>&1
                     
			if [ -f $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh ]; then
				rm -f $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh > /dev/null 2>&1
			fi
                                                    
                            orgimag=`mount | sed '/sd/!d' | cut -d" " -f1`
                               for item in $orgimag; do
                                   ohdd=`echo  $item | cut -d"/" -f3`
                                   nhdd=`mount | sed "/\$ohdd/!d" | sed q | cut -d" " -f3`
                                   if [ $nhdd == '`cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`' ]; then
                                      echo $nhdd
                                      echo "mkdir "$nhdd  >> $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh
                                      echo "mount "$item $nhdd  >> $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh 
                                   else
                                      echo "umount "$nhdd  >> $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh
                                      echo "mkdir "$nhdd  >> $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh
                                      echo "mount "$item $nhdd  >> $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh 
                                      echo ok 
                                   fi    
                               done	
                       	if [ ! -e $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh ]; then
                            cp -f /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/mountpoint.sh $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh 
                       	fi
                        chmod 755 `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh                                                                        
                        echo "NeoBOOT created the file mount enigma2_pre_start.sh " 
                        
                        echo " [NEOBOOT] Use chroot ... exec /usr/sbin/chroot..."
                                                                      
			if [ -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/sbin/init.sysvinit ]; then   
                                    echo "----------------------------------------"
	                            echo "   -=*[ BOOT UP IMAGE FROM DISK ]*=-    "
                                    echo "----------------------------------------"                                                                                                                     
                                    exec /usr/sbin/chroot `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET /sbin/init.sysvinit
			elif [ -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/sbin/init ]; then                                    
                                    exec /usr/sbin/chroot `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET /sbin/init        
			else
                                    echo " "                  
                                    echo "                       NEOBOOT - ERROR !!!                                 "
                                    echo "Not found correctly unpacked image "$TARGET" z partycji " $DEVICE
                                    echo "Check the correctness of unpacked catalogs in the selected one image.      "
                                    echo "                      Back to image Flash...                             "                                                                    
                                    /usr/bin/showiframe /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/error.mvi > /dev/null 2>&1
                                    sync; ln -sfn /sbin/init.sysvinit /sbin/init
                                    echo "Flash "  > `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/.neonextboot
                                    echo "Used Kernel: Reinstall kernel !"  > `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$UPLOAD/.kernel/used_flash_kernel
                                    sleep 15; reboot -f

			fi
			exit 0
		fi
	fi
fi

# boot Flash 

if [ -f /sbin/init.sysvinit ]; then
		#echo "Running /sbin/init.sysvinit"
		exec /sbin/init.sysvinit $1
fi

exit 0
;;
esac
exit
