diff options
author | Roy Marples <roy@marples.name> | 2008-11-04 11:28:24 +0000 |
---|---|---|
committer | Roy Marples <roy@marples.name> | 2008-11-04 11:28:24 +0000 |
commit | 45044c9239ef5eb06a3cc9e5110131cd0d8210ef (patch) | |
tree | 4b82968c88d0bfc1c274f3a86c9631974f0bd59c /init.d/mount-ro.in | |
parent | 5fc6f21169268b4ac3111a2f978faaaee3182e3e (diff) |
Typo
Diffstat (limited to 'init.d/mount-ro.in')
-rw-r--r-- | init.d/mount-ro.in | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/init.d/mount-ro.in b/init.d/mount-ro.in new file mode 100644 index 00000000..e39384a3 --- /dev/null +++ b/init.d/mount-ro.in @@ -0,0 +1,45 @@ +#!@PREFIX@/sbin/runscript +# Copyright 2007-2008 Roy Marples <roy@marples.name> +# All rights reserved. Released under the 2-clause BSD license. + +description="Re-mount filesytems read-only for a clean reboot." + +depend() +{ + need killprocs savecache + keyword noprefix noopenvz novserver +} + +start() +{ + # Flush all pending disk writes now + sync; sync + + ebegin "Remounting remaining filesystems read-only" + # We need the do_unmount function + . "${RC_LIBDIR}"/sh/rc-mount.sh + eindent + local m="/dev|/dev/.*|/proc|/proc.*|/sys|/sys/.*|${RC_SVCDIR}" x= fs= + # RC_NO_UMOUNTS is an env var that can be set by plugins + local OIFS=$IFS SIFS=${IFS-y} IFS=$IFS + IFS=$IFS: + for x in ${no_umounts} ${RC_NO_UMOUNTS}; do + m="${m}|${x}" + done + if [ "${SIFS}" = y ]; then + IFS=$OIFS + else + unset IFS + fi + m="^(${m})$" + fs= + for x in ${net_fs_list}; do + fs="${fs}${fs:+|}${x}" + done + [ -n "${fs}" ] && fs="^(${fs})$" + do_unmount "mount -n -o remount,ro" \ + --skip-point-regex "${m}" \ + ${fs:+--skip-fstype-regex} ${fs} --nonetdev + eoutdent + eend $? +} |