utils/pb-console: Trap SIGTERM on boot
[petitboot] / utils / pb-console
index 5f8ffa6f3ef130ec8ff52d3a69e9daaf094c34c5..5ba98cc4692564b435d1f7d271bf07355e838c06 100644 (file)
@@ -80,12 +80,24 @@ then
        then
                getty="$getty_arg"
        fi
+
+       login_arg="-l$0"
+       for ttyarg in "$@"
+       do
+               # If the getty args include autologin don't override with -l
+               # and leave calling petitboot-nc to the user's init
+               if [ "$ttyarg" == "-a" ]
+               then
+                       login_arg=""
+               fi
+       done
+
        if [ "$detach" = 1 ]
        then
-               $getty -l $0 "$@" &
+               setsid -c $getty $login_arg "$@" &
                exit
        else
-               exec $getty -l $0 "$@"
+               exec $getty $login_arg "$@"
        fi
 fi
 
@@ -107,8 +119,9 @@ esac
 # we may have been run from udev - ensure we have a sensible PATH
 if [ -z "$PATH" ]
 then
-       PATH=/var/lib/pb-plugins/bin:/usr/bin:/usr/sbin:/bin:/sbin
+       PATH=/usr/bin:/usr/sbin:/bin:/sbin
 fi
+PATH=/var/lib/pb-plugins/bin:$PATH
 export PATH
 
 verbose_opt=
@@ -117,10 +130,16 @@ then
        verbose_opt=--verbose
 fi
 
+# kernel messages may write over the ncurses ui - change log level to only
+# show particularly important messages
+dmesg -n 1
+
+trap '' SIGINT
+trap 'reset; echo "SIGTERM received, booting..."; sleep 2' SIGTERM
+
 while :
 do
        $ui $verbose_opt
        reset
-       echo "Exiting petitboot. Type 'exit' to return."
        $shell
 done