aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoy Marples <roy@marples.name>2007-09-20 22:45:16 +0000
committerRoy Marples <roy@marples.name>2007-09-20 22:45:16 +0000
commitca58877ed06b259ce37a6240746c733d47b0a179 (patch)
tree11873b159360a75ea7b2a4b22a81c2dba35336b6
parent963229dce839c4b144c1819f60cfeef788b35160 (diff)
Harden startup and shutdown
-rw-r--r--etc.BSD/rc14
-rw-r--r--etc.BSD/rc.shutdown7
2 files changed, 12 insertions, 9 deletions
diff --git a/etc.BSD/rc b/etc.BSD/rc
index f9f76b87..1bf06e32 100644
--- a/etc.BSD/rc
+++ b/etc.BSD/rc
@@ -7,7 +7,11 @@
# If $TERM is not set then assume default of cons25
# This gives us a nice colour boot :)
-[ -z "$TERM" ] && export TERM="cons25"
+[ -z "$TERM" -o "$TERM" = "dumb" ] && export TERM="cons25"
+
+# Handle interupts
+trap : SIGINT
+trap "echo 'Boot interrupted'; exit 1" SIGQUIT
# BSD's init works somewhat differently to sysvinit.
# This block should 'translate' from the way init calls it to the way it would
@@ -16,10 +20,6 @@ RUNLEVEL="1" /sbin/rc sysinit || exit 1
RUNLEVEL="1" /sbin/rc boot || exit 1
PREVLEVEL="1" /sbin/rc default
-# If we return non zero after starting rc then 2 things may happen
-# 1) We get the message "init: can't get /dev/console for controlling terminal"
-# every few seconds
-# 2) We get no error and console freezes.
-# This is probably a bug somewhere in rc, but until that is fixed we have to
-# return 0.
+# We don't actually care if rc default worked or not, we should exit 0
+# to allow logins
exit 0
diff --git a/etc.BSD/rc.shutdown b/etc.BSD/rc.shutdown
index 81dc20fe..eb2344b2 100644
--- a/etc.BSD/rc.shutdown
+++ b/etc.BSD/rc.shutdown
@@ -5,13 +5,16 @@
# Ensure we are called by init
[ "$PPID" = "1" ] || exit 0
+# Handle interupts
+trap : SIGINT SIGQUIT
+
# Try and use stuff in /lib over anywhere else so we can shutdown
# local mounts correctly.
export LD_LIBRARY_PATH="/lib${LD_LIBRARY_PATH:+:}${LDLIBRARY_PATH}"
# If $TERM is not set then assume default of cons25
-# This gives us a nice colour shutdown :)
-[ -z "$TERM" ] && export TERM="cons25"
+# This gives us a nice colour boot :)
+[ -z "$TERM" -o "$TERM" = "dumb" ] && export TERM="cons25"
# BSD's init works somewhat differently to sysvinit.
# This block should 'translate' from the way init calls it to the way it would