#!/bin/bash [ -r /etc/insserv.conf ] || exit 0 declare -A facilities facilities["local_fs"]="local-fs.target" facilities["localfs"]="local-fs.target" facilities["named"]="nss-lookup.target" facilities["network"]="network.target" # done in systemd code #facilities["portmap"]="rpcbind.target" facilities["remote_fs"]="remote-fs.target" facilities["syslog"]="syslog.target" facilities["time"]="time-sync.target" while read line ; do case "$line" in \#*|"" ) continue;; \<* ) continue;; \$*) t=${line%% *} target=${facilities[${t:1}]} [ -z $target ] && continue mkdir -p $1/$target.{requires,wants} for dep in ${line##* } ; do stripped_dep=${dep/boot./} case "$stripped_dep" in +*) ln -s -f /lib/systemd/system/${facilities[${stripped_dep:2}]:-${stripped_dep:1}.service} $1/$target.wants/ ;; *) ln -s -f /lib/systemd/system/${facilities[${stripped_dep:1}]:-${stripped_dep}.service} $1/$target.requires/ ;; esac done ;; esac done < /etc/insserv.conf