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
							 | 
						|
								
							 |