Revamping svc. - svc - Simple service scripts and examples, to be used everywhere.
Log
Files
Refs
LICENSE
---
commit efe529f24617c52a4ed2145efaf9db33c8a2c6f6
parent 7161edc222ae1b1a0a6a36881a7a94c5cb6de149
Author: Christoph Lohmann <20h@r-36.net>
Date:   Wed,  5 Feb 2014 18:53:56 +0100

Revamping svc.

The changes include moving the main path to /bin/svc.d, due to all executables
which should be in /bin.

The second change is some more services and updates to services.

Diffstat:
  LICENSE                             |       2 +-
  README.md                           |      30 +++++++++++++++---------------
  bin/svc                             |      29 ++++++++++++++++-------------
  svc.d/avail/acpid                   |       0 
  svc.d/avail/alsa                    |      33 +++++++++++++++++++++++++++++++
  svc.d/avail/atd                     |       0 
  svc.d/avail/barebone                |      22 ++++++++++++++++++++++
  svc.d/avail/crond                   |       0 
  svc.d/avail/cupsd                   |       0 
  svc.d/avail/dovecot                 |       0 
  svc.d/avail/fancontrol              |      32 +++++++++++++++++++++++++++++++
  svc.d/avail/gpsd                    |       0 
  svc.d/avail/hostapd                 |       0 
  svc.d/avail/hwclock                 |      15 +++++++++++++++
  svc.d/avail/input-event-daemon      |       0 
  svc.d/avail/laptop-mode             |      24 ++++++++++++++++++++++++
  svc.d/avail/nscd                    |      31 +++++++++++++++++++++++++++++++
  svc.d/avail/ntpd                    |      32 +++++++++++++++++++++++++++++++
  svc.d/avail/oscam                   |       0 
  svc.d/avail/rfkill                  |      23 +++++++++++++++++++++++
  svc.d/avail/rfkilld                 |       0 
  svc.d/avail/sensors                 |      18 ++++++++++++++++++
  svc.d/avail/sshd                    |      33 +++++++++++++++++++++++++++++++
  svc.d/avail/syslog-ng               |       0 
  svc.d/avail/thinkfan                |      29 +++++++++++++++++++++++++++++
  svc.d/avail/wireless-regdom         |      15 +++++++++++++++
  svc.d/bare.sh                       |      37 +++++++++++++++++++++++++++++++
  svc.d/default/alsa                  |       6 ++++++
  svc.d/default/crond                 |       2 ++
  svc.d/default/dovecot               |       2 ++
  svc.d/default/fancontrol            |       2 ++
  svc.d/default/gpsd                  |       2 ++
  svc.d/default/hostapd               |       2 ++
  svc.d/default/hwclock               |       3 +++
  svc.d/default/ntpd                  |       2 ++
  svc.d/default/oscam                 |       2 ++
  svc.d/default/rfkill                |       3 +++
  svc.d/default/sensors               |       5 +++++
  svc.d/default/wireless-regdom       |       2 ++
  svc.d/run/acpid                     |       2 ++
  svc.d/run/alsa                      |       2 ++
  svc.d/run/atd                       |       2 ++
  svc.d/run/crond                     |       2 ++
  svc.d/run/dovecot                   |       2 ++
  svc.d/run/gpsd                      |       2 ++
  svc.d/run/hwclock                   |       2 ++
  svc.d/run/laptop-mode               |       2 ++
  svc.d/run/nscd                      |       2 ++
  svc.d/run/rfkill                    |       2 ++
  svc.d/run/rfkilld                   |       2 ++
  svc.d/run/sensors                   |       2 ++
  svc.d/run/sshd                      |       2 ++
  svc.d/run/syslog-ng                 |       2 ++
  svc.d/run/wireless-regdom           |       2 ++
  svc/avail/acpid                     |       0 
  svc/avail/alsa                      |      33 -------------------------------
  svc/avail/atd                       |       0 
  svc/avail/barebone                  |      22 ----------------------
  svc/avail/crond                     |       0 
  svc/avail/dovecot                   |       0 
  svc/avail/fancontrol                |      32 -------------------------------
  svc/avail/gpsd                      |       0 
  svc/avail/hostapd                   |       0 
  svc/avail/hwclock                   |      15 ---------------
  svc/avail/input-event-daemon        |       0 
  svc/avail/laptop-mode               |      24 ------------------------
  svc/avail/nscd                      |      31 -------------------------------
  svc/avail/oscam                     |       0 
  svc/avail/rfkill                    |      23 -----------------------
  svc/avail/rfkilld                   |       0 
  svc/avail/sensors                   |      18 ------------------
  svc/avail/sshd                      |      33 -------------------------------
  svc/avail/syslog-ng                 |       0 
  svc/avail/wireless-regdom           |      15 ---------------
  svc/bare.sh                         |      37 -------------------------------
  svc/default/alsa                    |       6 ------
  svc/default/crond                   |       2 --
  svc/default/dovecot                 |       2 --
  svc/default/fancontrol              |       2 --
  svc/default/gpsd                    |       2 --
  svc/default/hostapd                 |       2 --
  svc/default/hwclock                 |       3 ---
  svc/default/oscam                   |       2 --
  svc/default/rfkill                  |       3 ---
  svc/default/sensors                 |       5 -----
  svc/default/wireless-regdom         |       2 --

86 files changed, 439 insertions(+), 343 deletions(-)
---
diff --git a/LICENSE b/LICENSE
@@ -1,6 +1,6 @@
 MIT/X Consortium License
 
-© 2012-13 Christoph Lohmann <20h@r-36.net>
+© 2012-14 Christoph Lohmann <20h@r-36.net>
 
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the "Software"),
diff --git a/README.md b/README.md
@@ -7,45 +7,45 @@ The documentation is sparse due to it being in alpha stage.
 ## Installation
 
         % chmod 755 /bin/svc
-        % cp -rf svc /
+        % cp -rf svc.d /bin/svc.d
 
 ## Services
 ### Simplest case
 
-        % touch /svc/avail/somebin
+        % touch /bin/svc.d/avail/somebin
         % svc -s somebin
 
-This will run »somebin« in the $PATH using the script in /svc/bare.sh.
+This will run »somebin« in the $PATH using the script in /bin/svc.d/bare.sh.
 
 ### Some params
 
-        % touch /svc/avail/somebin
-        % echo 'PARAMS="-a"' > /svc/default/somebin
+        % touch /bin/svc.d/avail/somebin
+        % echo 'PARAMS="-a"' > /bin/svc.d/default/somebin
         % svc -s somebin
 
-This will run »somebin -a« in the $PATH using the script /svc/bare.sh.
+This will run »somebin -a« in the $PATH using the script /bin/svc.d/bare.sh.
 
 ### Own script
 
-        % cp /svc/bare.sh /svc/default/somebin
-        % $EDITOR /svc/default/somebin
-        % echo 'SOME_VAR="no"' > /svc/default/somebin
+        % cp /bin/svc.d/bare.sh /bin/svc.d/default/somebin
+        % $EDITOR /bin/svc.d/default/somebin
+        % echo 'SOME_VAR="no"' > /bin/svc.d/default/somebin
         % svc -s somebin
 
-This will run »somebin« with the script at /svc/default/somebin using the
-special variable from /svc/default/somebin.
+This will run »somebin« with the script at /bin/svc.d/default/somebin using the
+special variable from /bin/svc.d/default/somebin.
 
 ## svc(1)
 
-        % svc -a        # list all links in /svc/run (all activated services)
+        % svc -a        # list all links in /bin/svc.d/run (all activated services)
         % svc -a ser        # activate service »ser« to be run on startup
         % svc -c        # create the basic directories of svc (configure)
         % svc -d ser        # deactivate service »ser«
-        % svc -k        # kill all services linked to /svc/run
+        % svc -k        # kill all services linked to /bin/svc.d/run
         % svc -k ser        # kill the service »ser«
-        % svc -s        # run all services linked to /svc/run
+        % svc -s        # run all services linked to /bin/svc.d/run
         % svc -s ser        # run service »ser«
-        % svc -l        # list all services in /svc/avail
+        % svc -l        # list all services in /bin/svc.d/avail
         % svc -r ser        # restart service »ser«
 
 Have fun!
diff --git a/bin/svc b/bin/svc
@@ -3,9 +3,12 @@
 # See LICENSE file for license details.
 #
 
-BASEDIR="/svc"
+BASEDIR="/bin/svc.d"
 BASENAME="$(basename $0)"
 
+t[ -d "$BASEDIR" ] || mkdir -p "$BASEDIR"
+cd $BASEDIR
+
 usage() {
         printf "usage: %s [-acdklrs] [service]\n" "$BASENAME" >&2
         exit 1
@@ -21,11 +24,11 @@ runservice() {
         dir="$2"
         cmd="$3"
 
-        if [ $(stat -L -t "$BASEDIR/$dir/$service" | cut -d' ' -f 2) -eq 0 ];
+        if [ $(stat -L -t "$dir/$service" | cut -d' ' -f 2) -eq 0 ];
         then
-                "$BASEDIR/bare.sh" "$service" "$cmd" 2>&1 >/dev/null &
+                "./bare.sh" "$service" "$cmd" 2>&1 >/dev/null &
         else
-                "$BASEDIR/$dir/$service" "$cmd" 2>&1 >/dev/null &
+                "$dir/$service" "$cmd" 2>&1 >/dev/null &
         fi
 }
 
@@ -35,8 +38,7 @@ doservice() {
 
         if [ -z "${service}" ];
         then
-                cd $BASEDIR/run
-                services=$(ls -1 .)
+                services=$(ls -1 run)
                 for s in ${services};
                 do
                         runservice "$s" run "$cmd"
@@ -44,7 +46,7 @@ doservice() {
                                 "$BASENAME" "$s" "$cmd"
                 done
         else
-                if [ -x "$BASEDIR/avail/$service" ];
+                if [ -x "avail/$service" ];
                 then        
                         runservice "$service" avail "$cmd"
                         printf "%s: '%s' %s.\n" \
@@ -59,13 +61,13 @@ doservice() {
 
 case "$1" in
         -a)
-                if [ $# -gt 1 ] && [ -e "$BASEDIR/avail/$2" ];
+                if [ $# -gt 1 ] && [ -e "avail/$2" ];
                 then
-                        ln -sf "$BASEDIR/avail/$2" "$BASEDIR/run/$2"
+                        ln -sf "../avail/$2" "run/$2"
                         printf "%s: '%s' activated.\n" \
                                 "$BASENAME" "$2"
                 else
-                        cd $BASEDIR/run
+                        cd run
                         ls .
                 fi 
                 ;;        
@@ -76,9 +78,9 @@ case "$1" in
                 [ -d "$BASEDIR/run" ] || mkdir -p "$BASEDIR/run"
                 ;;
         -d)
-                if [ $# -gt 1 ] && [ -e "$BASEDIR/run/$2" ];
+                if [ $# -gt 1 ] && [ -e "run/$2" ];
                 then
-                        rm -f "$BASEDIR/run/$2"
+                        rm -f "run/$2"
                         printf "%s: '%s' deactivated.\n" \
                                 "$BASENAME" "$2"
                 else
@@ -91,12 +93,13 @@ case "$1" in
                 doservice "$1" "$2"
                 ;;
         -l)
-                cd $BASEDIR/avail
+                cd avail
                 ls .
                 ;;
         -r)
                 if [ $# -gt 1 ];
                 then
+                        set -x
                         svc -k "$2"
                         svc -s "$2"
                 else
diff --git a/svc.d/avail/acpid b/svc.d/avail/acpid
diff --git a/svc.d/avail/alsa b/svc.d/avail/alsa
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+SERVICE="alsa"
+
+t[ -e "/etc/svc/default/$SERVICE" ] && . "/etc/svc/default/$SERVICE"
+
+PID=$(pidof -o %PPID $BIN)
+
+case $1 in
+        -s)
+                [ -e "$STATEFILE" ] || alsactl $PARAMS store
+                alsactl $PARAMS restore
+
+                dfiles="/sys/modules/snd_ac97_codec/parameters/power_save
+                        /sys/modules/snd_hda_intel/parameters/power_save"
+                for f in dfiles;
+                do
+                        if [ -e $f ];
+                        then
+                                echo $POWERSAVE > $f
+                                [ -c /dev/dsp ] && echo 1 > /dev/dsp
+                        fi
+                done
+                ;;
+        -k)
+                [ "$SAVEVOLUME" = "yes" ] && alsactl $PARAMS store
+                [ "$MUTEVOLUME" = "yes" ] && amixer -q set Master 0 mute
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/atd b/svc.d/avail/atd
diff --git a/svc.d/avail/barebone b/svc.d/avail/barebone
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+SERVICE="barebone"
+
+t[ -e "/etc/svc/default/$SERVICE" ] && . "/etc/svc/default/$SERVICE"
+
+BIN="/usr/bin/$SERVICE"
+
+PID=$(pidof -o %PPID $BIN)
+
+case $1 in
+        -s)
+                [ -z "$PID" ] && $BIN $PARAMS;
+                ;;
+        -k)
+                [ -n "$PID" ] && kill -9 $PID &> /dev/null;
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/crond b/svc.d/avail/crond
diff --git a/svc.d/avail/cupsd b/svc.d/avail/cupsd
diff --git a/svc.d/avail/dovecot b/svc.d/avail/dovecot
diff --git a/svc.d/avail/fancontrol b/svc.d/avail/fancontrol
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+set -x
+
+SERVICE="fancontrol"
+
+t[ -e "/etc/svc/default/$SERVICE" ] && . "/etc/svc/default/$SERVICE"
+
+BIN="/usr/sbin/$SERVICE"
+
+PID=$(pidof -o %PPID -x $BIN)
+
+case $1 in
+        -s)
+                [ -z "$PID" ] && {
+                        rm /run/fancontrol.pid
+                        $BIN $PARAMS
+                }
+                ;;
+        -k)
+                [ -n "$PID" ] && {
+                        for p in $PID;
+                        do
+                                kill -9 $p &> /dev/null;
+                        done
+                }
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/gpsd b/svc.d/avail/gpsd
diff --git a/svc.d/avail/hostapd b/svc.d/avail/hostapd
diff --git a/svc.d/avail/hwclock b/svc.d/avail/hwclock
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. /svc/etc/default/hwclock
+
+case $1 in
+        -s)
+                ;;
+        -k)
+                hwclock --adjust $PARAMS
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/input-event-daemon b/svc.d/avail/input-event-daemon
diff --git a/svc.d/avail/laptop-mode b/svc.d/avail/laptop-mode
@@ -0,0 +1,24 @@
+#!/bin/sh
+
+SERVICE="laptop-mode"
+
+t[ -e "/etc/svc/default/$SERVICE" ] && . "/etc/svc/default/$SERVICE"
+
+BIN="/usr/sbin/$SERVICE"
+
+case $1 in
+        -s)
+                [ ! -d /run/laptop-mode-tools ] && install -d /run/laptop-mode-tools
+                rm -f /run/laptop-mode-tools/*
+                touch /run/laptop-mode-tools/enabled
+                $BIN auto 2>&1 >/dev/null
+                ;;
+        -k)
+                rm -f /run/laptop-mode-tools/enabled
+                $BIN stop 2>&1 >/dev/null
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/nscd b/svc.d/avail/nscd
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+SERVICE="nscd"
+
+BIN="/bin/$SERVICE"
+
+PID=$(pidof -o %PPID $BIN)
+
+case $1 in
+        -s)
+                if [ -z $PID ];
+                then
+                        rm -f "/run/$SERVICE.pid" 2>&1 >/dev/null
+                        mkdir -p /run/nscd /var/db/nscd
+                        rm -f /run/nscd/* /var/db/nscd/* 2>&1 >/dev/null
+
+                        $BIN $PARAMS >/dev/null 2>&1;
+                fi
+                ;;
+        -k)
+                if [ -n $PID ];
+                then
+                        nscd -K 2>&1 >/dev/null
+                        rm -f "/run/$SERVICE.pid" 2>&1 >/dev/null
+                fi
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/ntpd b/svc.d/avail/ntpd
@@ -0,0 +1,32 @@
+#!/bin/sh
+
+SERVICE="ntpd"
+
+t[ -e "/etc/svc/default/$SERVICE" ] && . "/etc/svc/default/$SERVICE"
+
+BIN="/bin/$SERVICE"
+
+PID=$(pidof -o %PPID $BIN)
+
+case $1 in
+        -s)
+                if [ -z "$PID" ];
+                then
+                        mkdir -p /run/openntpd >/dev/null 2>&1
+                        $BIN $PARAMS >/dev/null 2>&1 &
+                fi
+                ;;
+        -k)
+                if [ -n "$PID" ];
+                then
+                        for p in $PID;
+                        do
+                                kill -9 $p >/dev/null 2>&1
+                        done
+                fi
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/oscam b/svc.d/avail/oscam
diff --git a/svc.d/avail/rfkill b/svc.d/avail/rfkill
@@ -0,0 +1,23 @@
+#!/bin/sh
+
+. /etc/svc/default/rfkill
+
+case $1 in
+        -s)
+                for s in $BLOCK;
+                do
+                        rfkill block $s
+                done
+
+                for s in $UNBLOCK
+                do
+                        rfkill unblock $s
+                done
+                ;;
+        -k)
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/rfkilld b/svc.d/avail/rfkilld
diff --git a/svc.d/avail/sensors b/svc.d/avail/sensors
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+. /etc/svc/default/sensors
+
+case $1 in
+        -s)
+                for m in $HWMON_MODULES;
+                do
+                        modprobe $m
+                done
+                ;;
+        -k)
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/sshd b/svc.d/avail/sshd
@@ -0,0 +1,33 @@
+#!/bin/sh
+
+SERVICE="sshd"
+
+t[ -e "/etc/svc/default/$SERVICE" ] && . "/etc/svc/default/$SERVICE"
+
+BIN=""
+for p in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin;
+do
+        if [ -x "$p/$SERVICE" ];
+        then
+                BIN="$p/$SERVICE"
+                break
+        fi
+done
+t[ -z "$BIN" ] && exit 1
+
+PID=$(pidof -o %PPID $BIN)
+
+case $1 in
+        -s)
+                ssh-keygen -A
+                [ -d /var/empty ] || mkdir -p /var/empty
+                [ -z "$PID" ] && $BIN $PARAMS;
+                ;;
+        -k)
+                [ -n "$PID" ] && kill -9 $PID &> /dev/null;
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/syslog-ng b/svc.d/avail/syslog-ng
diff --git a/svc.d/avail/thinkfan b/svc.d/avail/thinkfan
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+SERVICE="thinkfan"
+BIN="/usr/bin/thinkfan"
+PIDFILE="/var/run/thinkfan.pid"
+
+t[ -e "/etc/svc/default/$SERVICE" ] && . "/etc/svc/default/$SERVICE"
+
+if [ -e "$PIDFILE" ];
+tthen
+        PID="$(cat "$PIDFILE")"
+else
+        PID=$(pidof -o %PPID $BIN)
+fi
+
+case $1 in
+        -s)
+                [ -e "$PIDFILE" ] && rm -f "$PIDFILE" && PID=""
+                [ -z "$PID" ] && $BIN $PARAMS >/dev/null 2>&1;
+                ;;
+        -k)
+                [ -n "$PID" ] && kill -HUP $PID &> /dev/null;
+                [ -e "$PIDFILE" ] && rm -f "$PIDFILE"
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/avail/wireless-regdom b/svc.d/avail/wireless-regdom
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+. /etc/svc/default/wireless-regdom
+
+case $1 in
+        -s)
+                ;;
+        -k)
+                iw reg set $REGDOM
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/bare.sh b/svc.d/bare.sh
@@ -0,0 +1,37 @@
+#!/bin/sh
+
+t[ $# -eq 0 ] && SERVICE="$0"
+
+if [ $# -gt 0 ];
+tthen
+        SERVICE="$1"
+        shift 1
+fi
+
+t[ -e "/etc/svc/default/$SERVICE" ] && . "/etc/svc/default/$SERVICE"
+
+BIN=""
+for p in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin;
+do
+        if [ -x "$p/$SERVICE" ];
+        then
+                BIN="$p/$SERVICE"
+                break
+        fi
+done
+t[ -z "$BIN" ] && exit 1
+
+PID=$(pidof -o %PPID $BIN)
+
+case $1 in
+        -s)
+                [ -z "$PID" ] && $BIN $PARAMS;
+                ;;
+        -k)
+                [ -n "$PID" ] && kill -9 $PID &> /dev/null;
+                ;;
+        *)
+                echo "usage: $0 -s|-k"
+                exit 1
+esac
+
diff --git a/svc.d/default/alsa b/svc.d/default/alsa
@@ -0,0 +1,6 @@
+STATEFILE="/var/lib/alsa/asound.state"
+PARAMS=""
+SAVEVOLUME="yes"
+MUTEVOLUME="no"
+POWERSAVE=0
+
diff --git a/svc.d/default/crond b/svc.d/default/crond
@@ -0,0 +1,2 @@
+PARAMS="-s /etc/cron/cron.d -c /var/spool/cron -t /var/spool/cron -S -l info"
+
diff --git a/svc.d/default/dovecot b/svc.d/default/dovecot
@@ -0,0 +1,2 @@
+PARAMS="-c /etc/dovecot/dovecot.conf"
+
diff --git a/svc.d/default/fancontrol b/svc.d/default/fancontrol
@@ -0,0 +1,2 @@
+PARAMS="-D"
+
diff --git a/svc.d/default/gpsd b/svc.d/default/gpsd
@@ -0,0 +1,2 @@
+PARAMS="-F /run/gpsd.sock /dev/ttyUSB0"
+
diff --git a/svc.d/default/hostapd b/svc.d/default/hostapd
@@ -0,0 +1,2 @@
+PARAMS="-B /etc/hostapd/hostapd.conf"
+
diff --git a/svc.d/default/hwclock b/svc.d/default/hwclock
@@ -0,0 +1,3 @@
+# --utc or --localtime
+PARAMS="--utc"
+
diff --git a/svc.d/default/ntpd b/svc.d/default/ntpd
@@ -0,0 +1,2 @@
+PARAMS="-s"
+
diff --git a/svc.d/default/oscam b/svc.d/default/oscam
@@ -0,0 +1,2 @@
+PARAMS="-b -c /etc/oscam"
+
diff --git a/svc.d/default/rfkill b/svc.d/default/rfkill
@@ -0,0 +1,3 @@
+BLOCK="wwan bluetooth"
+UNBLOCK="wifi"
+
diff --git a/svc.d/default/sensors b/svc.d/default/sensors
@@ -0,0 +1,5 @@
+# Get here the HWMON_MODULES from the generated lm_sensors file, which
+# sensors-detect(8) generates.
+
+HWMON_MODULES="coretemp"
+
diff --git a/svc.d/default/wireless-regdom b/svc.d/default/wireless-regdom
@@ -0,0 +1,2 @@
+REGDOM="de"
+
diff --git a/svc.d/run/acpid b/svc.d/run/acpid
@@ -0,0 +1 @@
+../avail/acpid+
\ No newline at end of file
diff --git a/svc.d/run/alsa b/svc.d/run/alsa
@@ -0,0 +1 @@
+../avail/alsa+
\ No newline at end of file
diff --git a/svc.d/run/atd b/svc.d/run/atd
@@ -0,0 +1 @@
+../avail/atd+
\ No newline at end of file
diff --git a/svc.d/run/crond b/svc.d/run/crond
@@ -0,0 +1 @@
+../avail/crond+
\ No newline at end of file
diff --git a/svc.d/run/dovecot b/svc.d/run/dovecot
@@ -0,0 +1 @@
+../avail/dovecot+
\ No newline at end of file
diff --git a/svc.d/run/gpsd b/svc.d/run/gpsd
@@ -0,0 +1 @@
+../avail/gpsd+
\ No newline at end of file
diff --git a/svc.d/run/hwclock b/svc.d/run/hwclock
@@ -0,0 +1 @@
+../avail/hwclock+
\ No newline at end of file
diff --git a/svc.d/run/laptop-mode b/svc.d/run/laptop-mode
@@ -0,0 +1 @@
+../avail/laptop-mode+
\ No newline at end of file
diff --git a/svc.d/run/nscd b/svc.d/run/nscd
@@ -0,0 +1 @@
+../avail/nscd+
\ No newline at end of file
diff --git a/svc.d/run/rfkill b/svc.d/run/rfkill
@@ -0,0 +1 @@
+../avail/rfkill+
\ No newline at end of file
diff --git a/svc.d/run/rfkilld b/svc.d/run/rfkilld
@@ -0,0 +1 @@
+../avail/rfkilld+
\ No newline at end of file
diff --git a/svc.d/run/sensors b/svc.d/run/sensors
@@ -0,0 +1 @@
+../avail/sensors+
\ No newline at end of file
diff --git a/svc.d/run/sshd b/svc.d/run/sshd
@@ -0,0 +1 @@
+../avail/sshd+
\ No newline at end of file
diff --git a/svc.d/run/syslog-ng b/svc.d/run/syslog-ng
@@ -0,0 +1 @@
+../avail/syslog-ng+
\ No newline at end of file
diff --git a/svc.d/run/wireless-regdom b/svc.d/run/wireless-regdom
@@ -0,0 +1 @@
+../avail/wireless-regdom+
\ No newline at end of file
diff --git a/svc/avail/acpid b/svc/avail/acpid
diff --git a/svc/avail/alsa b/svc/avail/alsa
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-SERVICE="alsa"
-
-t[ -e "/svc/default/$SERVICE" ] && . "/svc/default/$SERVICE"
-
-PID=$(pidof -o %PPID $BIN)
-
-case $1 in
-        -s)
-                [ -e "$STATEFILE" ] || alsactl $PARAMS store
-                alsactl $PARAMS restore
-
-                dfiles="/sys/modules/snd_ac97_codec/parameters/power_save
-                        /sys/modules/snd_hda_intel/parameters/power_save"
-                for f in dfiles;
-                do
-                        if [ -e $f ];
-                        then
-                                echo $POWERSAVE > $f
-                                [ -c /dev/dsp ] && echo 1 > /dev/dsp
-                        fi
-                done
-                ;;
-        -k)
-                [ "$SAVEVOLUME" = "yes" ] && alsactl $PARAMS store
-                [ "$MUTEVOLUME" = "yes" ] && amixer -q set Master 0 mute
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/atd b/svc/avail/atd
diff --git a/svc/avail/barebone b/svc/avail/barebone
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-SERVICE="barebone"
-
-t[ -e "/svc/default/$SERVICE" ] && . "/svc/default/$SERVICE"
-
-BIN="/usr/bin/$SERVICE"
-
-PID=$(pidof -o %PPID $BIN)
-
-case $1 in
-        -s)
-                [ -z "$PID" ] && $BIN $PARAMS;
-                ;;
-        -k)
-                [ -n "$PID" ] && kill -9 $PID &> /dev/null;
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/crond b/svc/avail/crond
diff --git a/svc/avail/dovecot b/svc/avail/dovecot
diff --git a/svc/avail/fancontrol b/svc/avail/fancontrol
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-set -x
-
-SERVICE="fancontrol"
-
-t[ -e "/svc/default/$SERVICE" ] && . "/svc/default/$SERVICE"
-
-BIN="/usr/sbin/$SERVICE"
-
-PID=$(pidof -o %PPID -x $BIN)
-
-case $1 in
-        -s)
-                [ -z "$PID" ] && {
-                        rm /run/fancontrol.pid
-                        $BIN $PARAMS
-                }
-                ;;
-        -k)
-                [ -n "$PID" ] && {
-                        for p in $PID;
-                        do
-                                kill -9 $p &> /dev/null;
-                        done
-                }
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/gpsd b/svc/avail/gpsd
diff --git a/svc/avail/hostapd b/svc/avail/hostapd
diff --git a/svc/avail/hwclock b/svc/avail/hwclock
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-. /svc/default/hwclock
-
-case $1 in
-        -s)
-                ;;
-        -k)
-                hwclock --adjust $PARAMS
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/input-event-daemon b/svc/avail/input-event-daemon
diff --git a/svc/avail/laptop-mode b/svc/avail/laptop-mode
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-SERVICE="laptop-mode"
-
-t[ -e "/svc/default/$SERVICE" ] && . "/svc/default/$SERVICE"
-
-BIN="/usr/sbin/$SERVICE"
-
-case $1 in
-        -s)
-                [ ! -d /run/laptop-mode-tools ] && install -d /run/laptop-mode-tools
-                rm -f /run/laptop-mode-tools/*
-                touch /run/laptop-mode-tools/enabled
-                $BIN auto 2>&1 >/dev/null
-                ;;
-        -k)
-                rm -f /run/laptop-mode-tools/enabled
-                $BIN stop 2>&1 >/dev/null
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/nscd b/svc/avail/nscd
@@ -1,31 +0,0 @@
-#!/bin/sh
-
-SERVICE="nscd"
-
-BIN="/usr/sbin/$SERVICE"
-
-PID=$(pidof -o %PPID $BIN)
-
-case $1 in
-        -s)
-                if [ -z $PID ];
-                then
-                        rm -f "/run/$SERVICE.pid" 2>&1 >/dev/null
-                        mkdir -p /run/nscd /var/db/nscd
-                        rm -f /run/nscd/* /var/db/nscd/* 2>&1 >/dev/null
-
-                        $BIN $PARAMS;
-                fi
-                ;;
-        -k)
-                if [ -n $PID ];
-                then
-                        nscd --shutdown 2>&1 >/dev/null
-                        rm -f "/run/$SERVICE.pid" 2>&1 >/dev/null
-                fi
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/oscam b/svc/avail/oscam
diff --git a/svc/avail/rfkill b/svc/avail/rfkill
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-. /svc/default/rfkill
-
-case $1 in
-        -s)
-                for s in $BLOCK;
-                do
-                        rfkill block $s
-                done
-
-                for s in $UNBLOCK
-                do
-                        rfkill unblock $s
-                done
-                ;;
-        -k)
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/rfkilld b/svc/avail/rfkilld
diff --git a/svc/avail/sensors b/svc/avail/sensors
@@ -1,18 +0,0 @@
-#!/bin/sh
-
-. /svc/default/sensors
-
-case $1 in
-        -s)
-                for m in $HWMON_MODULES;
-                do
-                        modprobe $m
-                done
-                ;;
-        -k)
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/sshd b/svc/avail/sshd
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-SERVICE="sshd"
-
-t[ -e "/svc/default/$SERVICE" ] && . "/svc/default/$SERVICE"
-
-BIN=""
-for p in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin;
-do
-        if [ -x "$p/$SERVICE" ];
-        then
-                BIN="$p/$SERVICE"
-                break
-        fi
-done
-t[ -z "$BIN" ] && exit 1
-
-PID=$(pidof -o %PPID $BIN)
-
-case $1 in
-        -s)
-                ssh-keygen -A
-                [ -d /var/empty ] || mkdir -p /var/empty
-                [ -z "$PID" ] && $BIN $PARAMS;
-                ;;
-        -k)
-                [ -n "$PID" ] && kill -9 $PID &> /dev/null;
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/avail/syslog-ng b/svc/avail/syslog-ng
diff --git a/svc/avail/wireless-regdom b/svc/avail/wireless-regdom
@@ -1,15 +0,0 @@
-#!/bin/sh
-
-. /svc/default/wireless-regdom
-
-case $1 in
-        -s)
-                ;;
-        -k)
-                iw reg set $REGDOM
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/bare.sh b/svc/bare.sh
@@ -1,37 +0,0 @@
-#!/bin/sh
-
-t[ $# -eq 0 ] && SERVICE="$0"
-
-if [ $# -gt 0 ];
-tthen
-        SERVICE="$1"
-        shift 1
-fi
-
-t[ -e "/svc/default/$SERVICE" ] && . "/svc/default/$SERVICE"
-
-BIN=""
-for p in /bin /sbin /usr/bin /usr/sbin /usr/local/bin /usr/local/sbin;
-do
-        if [ -x "$p/$SERVICE" ];
-        then
-                BIN="$p/$SERVICE"
-                break
-        fi
-done
-t[ -z "$BIN" ] && exit 1
-
-PID=$(pidof -o %PPID $BIN)
-
-case $1 in
-        -s)
-                [ -z "$PID" ] && $BIN $PARAMS;
-                ;;
-        -k)
-                [ -n "$PID" ] && kill -9 $PID &> /dev/null;
-                ;;
-        *)
-                echo "usage: $0 -s|-k"
-                exit 1
-esac
-
diff --git a/svc/default/alsa b/svc/default/alsa
@@ -1,6 +0,0 @@
-STATEFILE="/var/lib/alsa/asound.state"
-PARAMS=""
-SAVEVOLUME="yes"
-MUTEVOLUME="no"
-POWERSAVE=0
-
diff --git a/svc/default/crond b/svc/default/crond
@@ -1,2 +0,0 @@
-PARAMS="-s /cron/cron.d -c /cron/crontabs -t /cron/cronstamps -S -l info"
-
diff --git a/svc/default/dovecot b/svc/default/dovecot
@@ -1,2 +0,0 @@
-PARAMS="-c /cfg/dovecot/dovecot.conf"
-
diff --git a/svc/default/fancontrol b/svc/default/fancontrol
@@ -1,2 +0,0 @@
-PARAMS="-D"
-
diff --git a/svc/default/gpsd b/svc/default/gpsd
@@ -1,2 +0,0 @@
-PARAMS="-F /run/gpsd.sock /dev/ttyUSB0"
-
diff --git a/svc/default/hostapd b/svc/default/hostapd
@@ -1,2 +0,0 @@
-PARAMS="-B /cfg/hostapd/hostapd.conf"
-
diff --git a/svc/default/hwclock b/svc/default/hwclock
@@ -1,3 +0,0 @@
-# --utc or --localtime
-PARAMS="--utc"
-
diff --git a/svc/default/oscam b/svc/default/oscam
@@ -1,2 +0,0 @@
-PARAMS="-b -c /cfg/oscam"
-
diff --git a/svc/default/rfkill b/svc/default/rfkill
@@ -1,3 +0,0 @@
-BLOCK="wwan bluetooth"
-UNBLOCK="wifi"
-
diff --git a/svc/default/sensors b/svc/default/sensors
@@ -1,5 +0,0 @@
-# Get here the HWMON_MODULES from the generated lm_sensors file, which
-# sensors-detect(8) generates.
-
-HWMON_MODULES="coretemp"
-
diff --git a/svc/default/wireless-regdom b/svc/default/wireless-regdom
@@ -1,2 +0,0 @@
-REGDOM="de"
-