Never start systemd services in background
[grml-autoconfig.git] / autoconfig.functions
index 8ae71d1..90bc6bd 100755 (executable)
@@ -31,17 +31,22 @@ fi
 
 service_wrapper() {
   if [ "$#" -lt 2 ] ; then
-    echo "Usage: service_wrapper <service> <action>" >&2
+    echo "Usage: service_wrapper <service> <action> [background]" >&2
     return 1
   fi
 
   local service="$1"
   local action="$2"
+  local background="$3"
 
   if $SYSTEMD ; then
     systemctl "$action" "$service"
   else
-    /etc/init.d/"$service" "$action"
+    if [ "${background:-}" = "background" ] ; then
+      /etc/init.d/"$service" "$action" &
+    else
+      /etc/init.d/"$service" "$action"
+    fi
   fi
 }
 
@@ -512,6 +517,14 @@ config_kernel(){
 
 # {{{ secure boot
 config_secureboot(){
+  # systemd does this for us, but if we are not running under systemd then mokutil
+  # doesn't work as needed as it relies on /sys/firmware/efi/efivars (while
+  # /sys/firmware/efi/vars would exist)
+  if ! $SYSTEMD ; then
+    modprobe efivars
+    mount -t efivarfs efivarfs /sys/firmware/efi/efivars
+  fi
+
   if [ -x /usr/bin/mokutil ] ; then
     local secstate=$(mokutil --sb-state 2>/dev/null) # "SecureBoot enabled"
     if [ -n "$secstate" ] ; then
@@ -962,7 +975,7 @@ if checkbootparam 'ssh' ; then
 
    einfo "Starting secure shell server in background for root and user $localuser"
    service_wrapper rmnologin start >>$DEBUG 2>>$DEBUG
-   service_wrapper ssh start >>$DEBUG 2>>$DEBUG &
+   service_wrapper ssh start background >>$DEBUG 2>>$DEBUG
    eend $?
 
 fi
@@ -1191,7 +1204,7 @@ config_syslog(){
     ewarn "Not starting syslog daemon as requested on boot commandline." ; eend 0
  else
     einfo "Starting rsyslog in background."
-    service_wrapper rsyslog start >>$DEBUG &
+    service_wrapper rsyslog start >>$DEBUG
     eend 0
  fi
 }
@@ -1206,8 +1219,7 @@ config_gpm(){
       eerror "No mouse found - not starting GPM." ; eend 1
     else
       einfo "Starting gpm in background."
-      service_wrapper gpm start >>$DEBUG &
-      # ( while [ ! -e /dev/psaux ]; do sleep 5; done; /etc/init.d/gpm start >>$DEBUG ) &
+      service_wrapper gpm start background >>$DEBUG
       eend 0
     fi
   fi
@@ -1228,7 +1240,7 @@ config_services(){
         service_wrapper "${service}" start >>$DEBUG
       else
         einfo "Starting service ${service} in background."
-        service_wrapper "${service}" start >>$DEBUG &
+        service_wrapper "${service}" start background >>$DEBUG
       fi
     done
     eend $?