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
}
# {{{ 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
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
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
}
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
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 $?