utils/pb-console: Trap SIGTERM on boot
[petitboot] / utils / pb-console
index 1c2bf62784f62f0aff6faae911063cb385dc71d3..5ba98cc4692564b435d1f7d271bf07355e838c06 100644 (file)
@@ -9,6 +9,7 @@ shell=sh
 getty=/sbin/getty
 use_getty=0
 detach=0
+pb_config=pb-config
 
 usage() {
        cat >&2 <<EOF
@@ -79,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
 
@@ -103,17 +116,30 @@ case "$(tty)" in
        ;;
 esac
 
+# we may have been run from udev - ensure we have a sensible PATH
+if [ -z "$PATH" ]
+then
+       PATH=/usr/bin:/usr/sbin:/bin:/sbin
+fi
+PATH=/var/lib/pb-plugins/bin:$PATH
+export PATH
+
 verbose_opt=
-sysinfo_bin=$(dirname $0)/pb-sysinfo
-if [ -x $sysinfo_bin ] && $sysinfo_bin --debug-enabled
+if $pb_config debug | grep -q enabled
 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