X-Git-Url: http://git.grml.org/?p=grml-autoconfig.git;a=blobdiff_plain;f=autoconfig.functions;h=19a240da44c68fc80e4d80e7a98dcd7edb4aef46;hp=a019878352f02f479c5b39bdd0bb474d1f347688;hb=e0dbcabf440a716f05f7b29961596f0fba6ae6f8;hpb=9dec7ad803e985c9eada4ecb38bbfa61991c2ff3 diff --git a/autoconfig.functions b/autoconfig.functions index a019878..19a240d 100755 --- a/autoconfig.functions +++ b/autoconfig.functions @@ -23,12 +23,28 @@ umask 022 # Ignore these signals in non-interactive mode: INT, TERM, SEGV [ -z "$PS1" ] && trap "" 2 3 11 -if [[ "$(realpath "$(cat /proc/1/cmdline)")" == "/lib/systemd/systemd" ]] ; then +if [ "$(cat /proc/1/comm 2>/dev/null)" = "systemd" ] ; then SYSTEMD=true else SYSTEMD=false fi +service_wrapper() { + if [ "$#" -lt 2 ] ; then + echo "Usage: service_wrapper " >&2 + return 1 + fi + + local service="$1" + local action="$2" + + if $SYSTEMD ; then + systemctl "$action" "$service" + else + /etc/init.d/"$service" "$action" + fi +} + # zsh stuff iszsh(){ if [ -n "$ZSH_VERSION" ] ; then @@ -180,6 +196,7 @@ fi if checkbootparam 'nocolor'; then RC_NOCOLOR=yes . /etc/grml/lsb-functions + . /etc/grml_nocolors einfo "Disabling colors in bootsequence as requested on commandline." ; eend 0 else . /etc/grml/lsb-functions @@ -709,8 +726,8 @@ else fi if ! pgrep acpid >/dev/null ; then einfo "Starting acpi daemon." - $SYSTEMD && systemctl start acpid.socket - /etc/init.d/acpid start >>$DEBUG 2>&1 ; eend $? + service_wrapper acpid.socket start >>$DEBUG 2>&1 ; eend $? + service_wrapper acpid start >>$DEBUG 2>&1 ; eend $? else ewarn "acpi daemon already running." eend 0 @@ -863,7 +880,11 @@ if $VIRTUALBOX ; then return 0 fi -if [ -x /etc/init.d/loadcpufreq ] ; then +if ! [ -x /etc/init.d/loadcpufreq ] ; then + ewarn "loadcpufreq init script not available, ignoring cpu frequency scaling." + eend 0 + return 0 +else einfo "Trying to set up cpu frequency scaling:" eindent SKIP_CPU_GOVERNOR='' @@ -943,8 +964,8 @@ if checkbootparam 'ssh' ; then fi einfo "Starting secure shell server in background for root and user $localuser" - /etc/init.d/rmnologin start >>$DEBUG 2>>$DEBUG - /etc/init.d/ssh start >>$DEBUG 2>>$DEBUG & + service_wrapper rmnologin start >>$DEBUG 2>>$DEBUG + service_wrapper ssh start >>$DEBUG 2>>$DEBUG & eend $? fi @@ -1173,20 +1194,9 @@ config_syslog(){ if checkbootparam 'nosyslog'; then ewarn "Not starting syslog daemon as requested on boot commandline." ; eend 0 else - SYSLOGD='' - [ -x /etc/init.d/syslog-ng ] && SYSLOGD='syslog-ng' - [ -x /etc/init.d/rsyslog ] && SYSLOGD='rsyslog' - [ -x /etc/init.d/dsyslog ] && SYSLOGD='dsyslog' - [ -x /etc/init.d/sysklogd ] && SYSLOGD='sysklogd' - [ -x /etc/init.d/inetutils-syslogd ] && SYSLOGD='inetutils-syslogd' - - if [ -z "$SYSLOGD" ] ; then - eerror "No syslog daemon found." ; eend 1 - else - einfo "Starting $SYSLOGD in background." - /etc/init.d/$SYSLOGD start >>$DEBUG & - eend 0 - fi + einfo "Starting rsyslog in background." + service_wrapper rsyslog start >>$DEBUG & + eend 0 fi } # }}} @@ -1200,7 +1210,7 @@ config_gpm(){ eerror "No mouse found - not starting GPM." ; eend 1 else einfo "Starting gpm in background." - /etc/init.d/gpm start >>$DEBUG & + service_wrapper gpm start >>$DEBUG & # ( while [ ! -e /dev/psaux ]; do sleep 5; done; /etc/init.d/gpm start >>$DEBUG ) & eend 0 fi @@ -1219,10 +1229,10 @@ config_services(){ # if they contain the keyword "DO_NO_RUN_IN_BACKGROUND". if grep -q 'DO_NO_RUN_IN_BACKGROUND' "/etc/init.d/${service}" 2>>$DEBUG ; then einfo "Starting service ${service}." - /etc/init.d/${service} start >>$DEBUG + service_wrapper "${service}" start >>$DEBUG else einfo "Starting service ${service} in background." - /etc/init.d/${service} start >>$DEBUG & + service_wrapper "${service}" start >>$DEBUG & fi done eend $? @@ -1324,6 +1334,12 @@ config_stats() { # {{{ start X window system via grml-x config_x_startup(){ + + if $SYSTEMD ; then + ewarn "The startx boot option isn't yet supported via systemd, sorry." ; eend 0 + return + fi + # make sure we start X only if startx is used *before* a nostartx option # so it's possible to disable automatic X startup using nostart if checkbootparam 'startx' && ! echo "$CMDLINE" | grep -q 'startx.*nostartx' ; then @@ -1726,8 +1742,7 @@ config_lvm(){ if checkbootparam 'nolvm' ; then ewarn "Skipping LVM code as requested on boot commandline." ; eend 0 else - # Debian etch provides /etc/init.d/lvm only, newer suites provide /etc/init.d/lvm2 - if ! [ -x /sbin/lvm -a -x /sbin/lvdisplay ] || ! [ -x /etc/init.d/lvm2 -o -x /etc/init.d/lvm ] ; then + if ! [ -x /sbin/lvm ] ; then eerror "LVM not available, can not execute it." ; eend 1 else if lvdisplay 2>&1 | grep -v 'No volume groups found' >/dev/null 2>&1 ; then @@ -1737,7 +1752,7 @@ config_lvm(){ eend 0 if checkbootparam 'lvm' ; then einfo "Bootoption LVM found. Searching for logical volumes:" - /etc/init.d/lvm2 start ; eend $? + service_wrapper lvm2 start ; eend $? fi eoutdent fi