diff options
Diffstat (limited to 'sh/init.sh.BSD.in')
-rw-r--r-- | sh/init.sh.BSD.in | 23 |
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 |