浏览代码

New dracut module helper to enable runit services.

Juan RP 10 年之前
父节点
当前提交
ca99f9f5bb
共有 2 个文件被更改,包括 30 次插入0 次删除
  1. 1 0
      dracut/module-setup.sh
  2. 29 0
      dracut/services.sh

+ 1 - 0
dracut/module-setup.sh

@@ -18,4 +18,5 @@ install() {
     inst_hook pre-pivot 02 "$moddir/display-manager-autologin.sh"
     inst_hook pre-pivot 03 "$moddir/copy-initramfs.sh"
     inst_hook pre-pivot 04 "$moddir/locale.sh"
+    inst_hook pre-pivot 05 "$moddir/services.sh"
 }

+ 29 - 0
dracut/services.sh

@@ -0,0 +1,29 @@
+#!/bin/sh
+# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# ex: ts=8 sw=4 sts=4 et filetype=sh
+
+type getarg >/dev/null 2>&1 || . /lib/dracut-lib.sh
+
+SERVICEDIR=$NEWROOT/etc/sv/
+SERVICES="$(getarg live.services)"
+
+for f in ${SERVICES}; do
+        ln -s /etc/sv/$f $NEWROOT/etc/runit/runsvdir/default/
+done
+
+dhcpcd=1
+for f in connmand NetworkManager wicd; do
+    if [ -e $SERVICEDIR/$f ]; then
+        unset dhcpcd
+    fi
+done
+
+# Enable all services by default... with some exceptions.
+for f in $SERVICEDIR/*; do
+    _service=${f##*/}
+    case "${_service}" in
+        agetty-console|sulogin|dhcpcd-*) ;; # ignored
+        dhcpcd) [ -n "$dhcpcd" ] && ln -sf ${f##$NEWROOT} $NEWROOT/etc/runit/runsvdir/default/;;
+        *) ln -sf ${f##$NEWROOT} $NEWROOT/etc/runit/runsvdir/default/;;
+    esac
+done