#!/sbin/openrc-run # Copyright (c) 2007-2015 The OpenRC Authors. # See the Authors file at the top-level directory of this distribution and # https://github.com/OpenRC/openrc/blob/HEAD/AUTHORS # # This file is part of OpenRC. It is subject to the license terms in # the LICENSE file found in the top-level directory of this # distribution and at https://github.com/OpenRC/openrc/blob/HEAD/LICENSE # This file may not be copied, modified, propagated, or distributed # except according to the terms contained in the LICENSE file. description="Re-mount filesystems read-only for a clean reboot." depend() { after killprocs savecache keyword -docker -lxc -openvz -prefix -systemd-nspawn -vserver } start() { local ret=0 # Flush all pending disk writes now sync ebegin "Remounting remaining filesystems read-only" # We need the do_unmount function . "$RC_LIBEXECDIR"/sh/rc-mount.sh eindent # Bug 381783 local rc_svcdir=$(echo $RC_SVCDIR | sed 's:/lib\(32\|64\)\?/:/lib(32|64)?/:g') local m="/dev|/dev/.*|/proc|/proc.*|/sys|/sys/.*|/run|${rc_svcdir}" x= fs= m="$m|/bin|/sbin|/lib(32|64)?|/libexec" if [ -e "$rc_svcdir"/usr_premounted ]; then m="$m|/usr" fi # RC_NO_UMOUNTS is an env var that can be set by plugins local IFS="$IFS:" for x in $no_umounts $RC_NO_UMOUNTS; do m="$m|$x" done m="^($m)$" fs= for x in $net_fs_list $extra_net_fs_list; do fs="$fs${fs:+|}$x" done [ -n "$fs" ] && fs="^($fs)$" do_unmount "umount -r" \ --skip-point-regex "$m" \ "${fs:+--skip-fstype-regex}" $fs --nonetdev ret=$? eoutdent eend $ret }