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