#!/bin/sh
#script mod by gutosie
#neo init arm 

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 `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`IMAGEKATALOG/.neonextboot ]  ; then 	    
            CELBOOT=`cat $NEODEVICE$IMAGEKATALOG/.neonextboot`
	    if [ $CELBOOT = "Flash" ]; then 
                   exec /sbin/init.sysvinit $*	  
                   exit 0
            else
                echo " "
                break;
            fi
	fi      

	LIBDIR=/lib/modules/`uname -r`
	if [ ! -d $LIBDIR ]; then
		LIBDIR=/lib/modules/`ls /lib/modules | tail -n 1`
	fi
	echo "Mount kernel filesystems ..."	
	if [ `mount | grep /proc | wc -l` -lt 1 ]; then	
	        export PATH=/bin:/usr/bin:/sbin:/usr/sbin
	        /bin/mount -a          	             
		/bin/mount -n -t proc proc /proc > /dev/null 2>&1
		/bin/mount -n -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
	
	if [ ! -e `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`  ]; then
		mkdir `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1
	fi
	
	mnttest="nouuid"
	if [ -e /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/install  ]; then
        	orgimag1=`mount | sed '/sd/!d' | cut -d" " -f1`
                hdd=`/bin/mount | sed '/\/sd/!d' | grep 'hdd' | cut -d' ' -f1`
                usb=`/bin/mount | sed '/\/sd/!d' | grep 'usb' | cut -d' ' -f1`
                usb1=`/bin/mount | sed '/\/sd/!d' | grep 'usb' | cut -d' ' -f1`                 
                card=`/bin/mount | sed '/\/sd/!d' | grep 'usb' | cut -d' ' -f1` 
                cf=`/bin/mount | sed '/\/sd/!d' | grep 'usb' | cut -d' ' -f1`                      	
		selectinstall=`cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/bin/install`
		for item in $orgimag1; do        
                        selectmnt=`/bin/mount | sed '/\/sd/!d' | grep '$selectinstall' | cut -d' ' -f1`
		        mntselect=`blkid | sed "$selectinstall/!d" | cut -d":" -f1`
			if [ $selectinstall == $hdd ]; then
				echo "selectinstall=" $selectinstall
                        	mnttest="label"
				mount $selectmnt `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1
			elif [ $selectinstall == $usb ]; then
				echo "selectinstall=" $selectinstall
                        	mnttest="label"
				mount $selectmnt `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1			
			elif [ $selectinstall == $usb1 ]; then
				echo "selectinstall=" $selectinstall
                        	mnttest="label"
				mount $selectmnt `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1
			elif [ $selectinstall == $card]; then
				echo "selectinstall=" $selectinstall
                        	mnttest="label"
				mount $selectmnt `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1
			elif [ $selectinstall == $cf ]; then
				echo "selectinstall=" $selectinstall
                        	mnttest="label"
				mount $selectmnt `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1				
			elif [ $mntselect == $item ]; then
				echo "mntselect=" $mntselect
                        	mnttest="uuid"
				mount $mntselect `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1
				echo " 1-2 NeoBoot has been installed on: " $mntselect
				break;
			fi				
			if [ ! -e `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`ImageBoot  ]; then
				echo "NeoBoot hasn't been installed on: " $selectinstall
				umount -l `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1 
			else
				echo "NeoBoot has been installed on: " $selectinstall
				sleep 10
				break;
			fi 			
		done
	fi	
	if [ $mnttest == "nouuid" ] ; then
	        echo "NeoBoot mount by Device"
		DEVICES1=`find /dev/sd??`
		for DEVICE in $DEVICES1;
		do
			if [ -e `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`  ]; then
				echo "neoboot checking installation on: " $DEVICE
				mount $DEVICE `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1 
			fi
			if [ ! -e `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`ImageBoot  ]; then
				echo " 4 NeoBoot hasn't been installed on: " $DEVICE
				umount -l `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` > /dev/null 2>&1 
			else
				echo "2 NeoBoot has been installed on: " $DEVICE
				break;
			fi 
		done
        fi
	if [ ! -e $NEODEVICE$IMAGEKATALOG/.neonextboot  ]; then
	    if [ -e /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/mountpoint.sh  ]; then
                /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/neo.sh
                echo "_______________________NeoBoot mount by MOUNTPOINT_______________________" 
	    fi                
	elif [ $mnttest == "label" ]; then	
		echo "_______________________ NeoBoot mount by LABEL_______________________"
	elif [ $mnttest == "uuid" ]; then	
		echo "_______________________ NeoBoot mount by UUID_______________________ "
	fi

        neoLOG=$NEODEVICE$IMAGEKATALOG/NeoInit.log
        TiME=$(date +"%d.%m.%Y - %H:%M:%S")
        if [ -f $neoLOG ]; then
            echo "NeoInit.log FOUND"
            echo -e "\n \n>>>>>>>>>>>>>>>>> \nSTART NEXT LOG... \n>>>>>>>>>>>>>>>>> \n"  >> $neoLOG
            echo "..............-=*[ NEOBOOT - BOOT UP ]*=-.............."  >> $neoLOG
            echo "    ____q(-_-)p____START NEXT Image...____q(-_-)p____  "  >> $neoLOG
            echo "......................................................."  >> $neoLOG
            echo "\n:>" >> $neoLOG
        else
            touch $neoLOG
            echo
            echo "NeoInit.log READY"
        fi
        echo "Tuner name:" `cat /etc/hostname` >> $neoLOG
        echo "Boot image:" `cat $NEODEVICE$IMAGEKATALOG/.neonextboot` >> $neoLOG   
        echo "Time start:" $TiME >> $neoLOG 
        echo "Image launched on a base kernel:" `cat $NEODEVICE$IMAGEKATALOG/.neonextboot` >> $neoLOG

        UPLOAD=ImagesUpload
	if [ ! -e $NEODEVICE$IMAGEKATALOG ]; then
                echo " Sending all processes the TERM- KILL signal..." >> $neoLOG	
                echo "Error mounting, Return to image Flash..."; echo "Error mounting, Return to image Flash..." >> $neoLOG
                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..." 
		/bin/umount -l /media/usb > /dev/null 2>&1
		/bin/umount -l /media/hdd > /dev/null 2>&1
                reboot -f
	fi

	TARGET=Flash
	if [ -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/.neonextboot ]; then
	  TARGET=`cat $NEODEVICE$IMAGEKATALOG/.neonextboot`
	fi                                                                                               

        HOSTNAME=`cat /etc/hostname`
	if [ ! -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/boot/zImage.$HOSTNAME ]; then

            echo "Image launched on a base kernel flash. " >> $neoLOG
            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
	fi
	    	        
	if [ $TARGET = "Flash" ]; then
		echo "NEOBOOT is booting image from " $TARGET
		/bin/umount -l /media/usb > /dev/null 2>&1
		/bin/umount -l /media/hdd > /dev/null 2>&1				
		/usr/bin/showiframe /usr/share/bootlogo.mvi > /dev/null 2>&1
		ln -sfn /sbin/init.sysvinit /sbin/init
                echo "----------------------------------"
	        echo "     BOOT UP IMAGE FROM FLASH     "
                echo "----------------------------------";		
                echo "     BOOT UP IMAGE FROM FLASH     " >> $neoLOG
	else                                                                                                                                             
                if [ -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/.control_ok ]; then
	            echo "No Error - Booting image normal..."; 
                    echo "No Error - Booting image normal... " >> $neoLOG
		else 
		    if [ -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/.control_boot_new_image ]; then
                        echo " First start image - The first attempt to launch a new image..." >> $neoLOG
                        echo "First start image - The first attempt to launch a new image... " 
                        rm -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/.control_boot_new_image > /dev/null 2>&1 
		    else 
		        HOSTNAME=`cat /etc/hostname` 
                        if [ ! -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/.control_ok ] ; then                                          
                            if [ $HOSTNAME  = "vuultimo4k" ] || [ $HOSTNAME  = "vusolo4k" ] || [ $HOSTNAME  = "vuuno4kse" ] || [ $HOSTNAME  = "vuuno4k" ]; then                                                         			        
                                dd if=`cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$UPLOAD/.kernel/flash-kernel-$HOSTNAME.bin of=/dev/mmcblk0p1
                            elif [ $HOSTNAME  = "vuzero4k" ] ; then                                                         			        
                                dd if=`cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$UPLOAD/.kernel/flash-kernel-$HOSTNAME.bin of=/dev/mmcblk0p4
                            elif [ $HOSTNAME  = "vuduo4k" ] ; then                                                         			        
                               dd if=`cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$UPLOAD/.kernel/flash-kernel-$HOSTNAME.bin of=/dev/mmcblk0p6                                            
                            fi
                            echo " Wrong kernel. FATAL ERROR - Back to image Flash..." >> $neoLOG
                            echo "Wrong kernel. Press number 3"  > `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$UPLOAD/.kernel/used_flash_kernel
                            ln -sfn /sbin/init.sysvinit /sbin/init
                            echo "Flash "  > `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/.neonextboot                 	
		            /bin/umount -l /media/usb > /dev/null 2>&1
		            /bin/umount -l /media/hdd > /dev/null 2>&1                            
                            sleep 5; reboot -f              
                        fi
		    fi
		fi 

		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     			

                        HARDWARETYPE=`uname -m`           
			if [ $HARDWARETYPE != "armv7l" ]; then
			    echo "NeoBOOT - HARDWARETYPE "
			    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
			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
                                                                                                                                                                                                
                        orgimag=`mount | sed '/sd/!d' | cut -d" " -f1`
		        rm -f $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh                              
                           for item in $orgimag; do
                               ohdd=`echo  $item | cut -d"/" -f3`
                               nhdd=`mount | sed "/\$ohdd/!d" | sed q | cut -d" " -f3`
                                  echo " COPIED mountpoint.sh - enigma2_pre_start.sh " >> $neoLOG
                                  cp -f /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/mountpoint.sh $NEODEVICE$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh  
                                  echo ok  
                           done	

                        chmod 755 `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/usr/bin/enigma2_pre_start.sh                                                                        
                        echo "NeoBOOT created the file enigma2_pre_start.sh " 

                        echo " [NEOBOOT] Use chroot ... exec /usr/sbin/chroot..."
                        cp -f -r /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/mountpoint.sh $NEODEVICE$IMAGEKATALOG/$TARGET/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/mountpoint.sh                                              
                                                
                        #/bin/mount /dev/sda1 `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$TARGET/media/hdd                       
			if [ -f `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET/sbin/init.sysvinit ]; then 
                                    echo " -=*[ BOOT UP IMAGE FROM DISK ]*=- " >> $neoLOG
                                    echo "Boot from " `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location` >> $neoLOG 
                                    echo "start file - init.sysvinit >" $TARGET  >> $neoLOG  
                                    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  
                                    echo " start file - init" >> $neoLOG                       
                                    exec /usr/sbin/chroot `cat /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/.location`$IMAGEKATALOG/$TARGET /sbin/init                                            
			else
			            echo " FATAL ERROR - Back to image Flash..." >> $neoLOG
                                    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
                                    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
		                    /bin/umount -l /media/usb > /dev/null 2>&1
	                            /bin/umount -l /media/hdd > /dev/null 2>&1
                                    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
