You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							84 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							84 lines
						
					
					
						
							1.3 KiB
						
					
					
				| #!/bin/sh | |
|  | |
| . /etc/init.d/globals | |
| . /etc/init.d/functions | |
| 
 | |
| # Neutrino's exit codes | |
| ERROR=-1 | |
| NORMAL=0 | |
| SHUTDOWN=1 | |
| REBOOT=2 | |
| RESTART=3 | |
| 
 | |
| # if neutrino crashes, just restart it or reboot the box? | |
| case "$(get_boxmodel)" in | |
| 	nevis|apollo|shiner|kronos|kronos_v2) | |
| 		REBOOT_ON_ERROR=true | |
| 	;; | |
| 	*) | |
| 		REBOOT_ON_ERROR=false | |
| 	;; | |
| esac | |
| 
 | |
| do_cleanup() { | |
| 	# remove files created by neutrino | |
| 	rm -f /tmp/.timer | |
| } | |
| 
 | |
| do_shutdown() { | |
| 	display_msg "N: SHUTDOWN" | |
| 	poweroff | |
| } | |
| 
 | |
| do_reboot() { | |
| 	display_msg "N: REBOOT" | |
| 	reboot | |
| } | |
| 
 | |
| do_restart() { | |
| 	display_msg "N: RESTART" | |
| } | |
| 
 | |
| while true; do | |
| 	do_cleanup | |
| 
 | |
| 	if [ -e /var/etc/.coredump ]; then | |
| 		# unlimit core file size | |
| 		ulimit -c unlimited | |
| 	fi | |
| 
 | |
| 	neutrino; RET=$? | |
| 	LOGINFO "Neutrino exited with exit code $RET" | |
| 
 | |
| 	if [ $RET -eq $NORMAL ]; then | |
| 		# do nothing | |
| 		break | |
| 	elif [ $RET -eq $SHUTDOWN ]; then | |
| 		do_shutdown | |
| 		break | |
| 	elif [ $RET -eq $REBOOT ]; then | |
| 		do_cleanup | |
| 		do_reboot | |
| 		break | |
| 	elif [ $RET -eq $RESTART ]; then | |
| 		do_restart | |
| 		continue | |
| 	fi | |
| 
 | |
| 	display_msg "NEUTRINO: $RET" | |
| 
 | |
| 	# report errors on external display | |
| 	if [ -e /tmp/.lcd-* -a -e /tmp/lcd ]; then | |
| 		echo "0"		> /tmp/lcd/mode_logo | |
| 		echo "Neutrino"		> /tmp/lcd/service | |
| 		echo "Error: $RET"	> /tmp/lcd/event | |
| 	fi | |
| 
 | |
| 	if $REBOOT_ON_ERROR; then | |
| 		LOGINFO "Rebooting due to REBOOT_ON_ERROR=true and exit code $RET" | |
| 		do_reboot | |
| 		break | |
| 	fi | |
| 
 | |
| 	LOGINFO "Restarting Neutrino after exit code $RET" | |
| done
 | |
| 
 |