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

#!/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