@@ -, +, @@ contain ro flag for the particular mount points. --- init.d/localmount.in | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) --- a/init.d/localmount.in +++ a/init.d/localmount.in @@ -24,6 +24,32 @@ start() no_netdev="-O no_netdev" fi ebegin "Mounting local filesystems" + + # Remount already-mounted filesystems into rw unless fstab contain ro flag for the particular mount points. + for mountpoint in $(fstabinfo); do + case "${mountpoint}" in + '/'*) + if mountinfo -q "${mountpoint}" && mountinfo -q -o ro "${mountpoint}"; then + case ",$(fstabinfo -o "${mountpoint}")," in + *,ro,*) + : + ;; + *) + case "$RC_UNAME" in + Linux) + mount -o remount,rw "${mountpoint}" + ;; + *BSD|DragonFly) + mount -u -o rw "${mountpoint}" + ;; + esac + ;; + esac + fi + ;; + esac + done; unset mountpoint + mount -at "$types" $no_netdev eend $? "Some local filesystem failed to mount" --