aboutsummaryrefslogtreecommitdiff
path: root/sh/init.sh.BSD.in
diff options
context:
space:
mode:
Diffstat (limited to 'sh/init.sh.BSD.in')
-rw-r--r--sh/init.sh.BSD.in23
1 files changed, 22 insertions, 1 deletions
diff --git a/sh/init.sh.BSD.in b/sh/init.sh.BSD.in
index 0bd3e9bc..2a53dcd8 100644
--- a/sh/init.sh.BSD.in
+++ b/sh/init.sh.BSD.in
@@ -29,4 +29,25 @@ if [ -z "$RC_SYS" -a "$RC_UNAME" = "FreeBSD" ]; then
sysctl hw.bus.devctl_disable=1 >/dev/null
fi
-. "$RC_LIBEXECDIR"/sh/init-common-post.sh
+# mount $RC_SVCDIR as something we can write to if it's not rw
+# On vservers, / is always rw at this point, so we need to clean out
+# the old service state data
+: ${RC_LIBEXECDIR:=@LIBEXECDIR@}
+: ${RC_SVCDIR:=@LIBEXECDIR@/init.d}
+case "$(openrc --sys)" in
+ OPENVZ|VSERVER) rm -rf "$RC_SVCDIR"/*;;
+ *) if mountinfo --quiet "$RC_SVCDIR"; then
+ rm -rf "$RC_SVCDIR"/*
+ else
+ mount_svcdir
+ fi
+ ;;
+esac
+retval=$?
+
+if [ -e "$RC_LIBEXECDIR"/cache/deptree ]; then
+ cp -p "$RC_LIBEXECDIR"/cache/* "$RC_SVCDIR" 2>/dev/null
+fi
+
+echo sysinit >"$RC_SVCDIR"/softlevel
+exit $retval