Sure, that seems pretty reasonable. Here’s the init script for sddm:
#!/usr/bin/openrc-run
supervisor=supervise-daemon
command="/usr/bin/sddm"
depend() {
need localmount
after bootmisc consolefont modules netmount
after ypbind autofs openvpn gpm lircmd
after quota keymaps
before alsasound
want logind
use xfs
provide xdm display-manager
}
That’s it. That’s the whole thing.
That’s a pretty simple one though, so here’s Alsa. It’s a more complex one:
code
#!/usr/bin/openrc-run# Copyright 1999-2019 Gentoo Authors# Distributed under the terms of the GNU General Public License v2
alsastatedir=/var/lib/alsa
alsascrdir=/etc/alsa.d
alsahomedir=/run/alsasound
extra_commands="save restore"depend() {
need localmount
after bootmisc modules isapnp coldplug hotplug
}
restore() {
ebegin "Restoring Mixer Levels"
checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
if [ ! -r "${alsastatedir}/asound.state" ] ; then
ewarn "No mixer config in ${alsastatedir}/asound.state, you have to unmute your card!"
eend 0
return 0
filocal cards="$(sed -n -e 's/^ *\([[:digit:]]*\) .*/\1/p' /proc/asound/cards)"local CARDNUM
for cardnum in${cards}; do
[ -e /dev/snd/controlC${cardnum} ] || sleep 2
[ -e /dev/snd/controlC${cardnum} ] || sleep 2
[ -e /dev/snd/controlC${cardnum} ] || sleep 2
[ -e /dev/snd/controlC${cardnum} ] || sleep 2
alsactl -E HOME="${alsahomedir}" -I -f "${alsastatedir}/asound.state" restore ${cardnum} \
|| ewarn "Errors while restoring defaults, ignoring"donefor ossfile in"${alsastatedir}"/oss/card*_pcm* ; do
[ -e "${ossfile}" ] || continue# We use cat because I'm not sure if cp works properly on /proclocal procfile=${ossfile##${alsastatedir}/oss}
procfile="$(echo "${procfile}" | sed -e 's,_,/,g')"if [ -e /proc/asound/"${procfile}"/oss ] ; thencat"${ossfile}" > /proc/asound/"${procfile}"/oss
fidone
eend 0
}
save() {
ebegin "Storing ALSA Mixer Levels"
checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1
mkdir -p "${alsastatedir}"if ! alsactl -E HOME="${alsahomedir}" -f "${alsastatedir}/asound.state" store; then
eerror "Error saving levels."
eend 1
return 1
fifor ossfile in /proc/asound/card*/pcm*/oss; do
[ -e "${ossfile}" ] || continuelocal device=${ossfile##/proc/asound/} ; device=${device%%/oss}
device="$(echo "${device}" | sed -e 's,/,_,g')"mkdir -p "${alsastatedir}/oss/"cp"${ossfile}""${alsastatedir}/oss/${device}"done
eend 0
}
start() {
if [ "${RESTORE_ON_START}" = "yes" ]; then
restore
fireturn 0
}
stop() {
if [ "${SAVE_ON_STOP}" = "yes" ]; then
save
fireturn 0
}
That’s definitely longer than a systemd service, but you’d have to write an awful lot of them to be more code than all of systemd. Overall the entire /etc/init.d folder on my PC where all the init scripts even for the stuff I’m not using are stored is a grand total of 147.7 KiB. Not exactly an unmanageable amount of code, in my humble opinion.
Its certainly easier to read than most old init scripts and I can see why some distros and openbsd would pick it over systemd for more control. I’m not likely to pick a distro that uses it anytime soon, but i can see why some do.
can you give examples of some? Not trying to bd sarcastic, i do just want to see what alternatives are doing.
Sure, that seems pretty reasonable. Here’s the init script for sddm:
#!/usr/bin/openrc-run supervisor=supervise-daemon command="/usr/bin/sddm" depend() { need localmount after bootmisc consolefont modules netmount after ypbind autofs openvpn gpm lircmd after quota keymaps before alsasound want logind use xfs provide xdm display-manager }
That’s it. That’s the whole thing.
That’s a pretty simple one though, so here’s Alsa. It’s a more complex one:
code
#!/usr/bin/openrc-run # Copyright 1999-2019 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 alsastatedir=/var/lib/alsa alsascrdir=/etc/alsa.d alsahomedir=/run/alsasound extra_commands="save restore" depend() { need localmount after bootmisc modules isapnp coldplug hotplug } restore() { ebegin "Restoring Mixer Levels" checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1 if [ ! -r "${alsastatedir}/asound.state" ] ; then ewarn "No mixer config in ${alsastatedir}/asound.state, you have to unmute your card!" eend 0 return 0 fi local cards="$(sed -n -e 's/^ *\([[:digit:]]*\) .*/\1/p' /proc/asound/cards)" local CARDNUM for cardnum in ${cards}; do [ -e /dev/snd/controlC${cardnum} ] || sleep 2 [ -e /dev/snd/controlC${cardnum} ] || sleep 2 [ -e /dev/snd/controlC${cardnum} ] || sleep 2 [ -e /dev/snd/controlC${cardnum} ] || sleep 2 alsactl -E HOME="${alsahomedir}" -I -f "${alsastatedir}/asound.state" restore ${cardnum} \ || ewarn "Errors while restoring defaults, ignoring" done for ossfile in "${alsastatedir}"/oss/card*_pcm* ; do [ -e "${ossfile}" ] || continue # We use cat because I'm not sure if cp works properly on /proc local procfile=${ossfile##${alsastatedir}/oss} procfile="$(echo "${procfile}" | sed -e 's,_,/,g')" if [ -e /proc/asound/"${procfile}"/oss ] ; then cat "${ossfile}" > /proc/asound/"${procfile}"/oss fi done eend 0 } save() { ebegin "Storing ALSA Mixer Levels" checkpath -q -d -m 0700 -o root:root ${alsahomedir} || return 1 mkdir -p "${alsastatedir}" if ! alsactl -E HOME="${alsahomedir}" -f "${alsastatedir}/asound.state" store; then eerror "Error saving levels." eend 1 return 1 fi for ossfile in /proc/asound/card*/pcm*/oss; do [ -e "${ossfile}" ] || continue local device=${ossfile##/proc/asound/} ; device=${device%%/oss} device="$(echo "${device}" | sed -e 's,/,_,g')" mkdir -p "${alsastatedir}/oss/" cp "${ossfile}" "${alsastatedir}/oss/${device}" done eend 0 } start() { if [ "${RESTORE_ON_START}" = "yes" ]; then restore fi return 0 } stop() { if [ "${SAVE_ON_STOP}" = "yes" ]; then save fi return 0 }
That’s definitely longer than a systemd service, but you’d have to write an awful lot of them to be more code than all of systemd. Overall the entire /etc/init.d folder on my PC where all the init scripts even for the stuff I’m not using are stored is a grand total of 147.7 KiB. Not exactly an unmanageable amount of code, in my humble opinion.
Its certainly easier to read than most old init scripts and I can see why some distros and openbsd would pick it over systemd for more control. I’m not likely to pick a distro that uses it anytime soon, but i can see why some do.