7.9. Creating the mountfs script

Create a new file /etc/init.d/mountfs containing the following:


cat > mountfs << "EOF"
#!/bin/sh
# Begin /etc/init.d/mountfs

#
# Include the functions declared in the /etc/init.d/functions file
#

source /etc/init.d/functions

case "$1" in
    start)

        #
        # Remount the root partition in read-write mode. -n tells mount
        # not to
        # write to the /etc/mtab file (because it can't do this. The
        # root
        # partition is most likely still mounted in read-only mode
        #

        echo -n "Remounting root file system in read-write mode..."
        /bin/mount -n -o remount,rw /
        evaluate_retval

        #
        # First empty the /etc/mtab file. Then remount root partition 
        # in read-write 
        # mode again but pass -f to mount. This way mount does
        # everything 
        # except the mount itself. This is needed for it to write to the
        # mtab 
        # file which contains a list of currently mounted file systems.
        #

        echo > /etc/mtab
        /bin/mount -f -o remount,rw /

        #
        # Remove the possible /fastboot and /forcefsck files. they are
        # only
        # supposed to be used during the next reboot's checkfs wich just
        # happened. If you want to fastboot or forcefsck again you'll
        # have to
        # recreate the files
        #

        /bin/rm -f /fastboot /forcefsck

        #
        # Walk through /etc/fstab and mount all file systems that don't 
        # have the noauto option set in the fs_mntops field (the 4th
        # field. 
        # See man fstab for more info)
        #

        echo -n "Mounting other file systems..."
        /bin/mount -a
        evaluate_retval
        ;;

    stop)

        #
        # Deactive all the swap partitions
        #

        echo -n "Deactivating swap..."
        /sbin/swapoff -a
        evaluate_retval

        #
        # And unmount all the file systems, mounting the root file
        # system
        # read-only (all are unmounted but because root can't be
        # unmounted 
        # at this point mount will automatically mount it read-only
        # which 
        # is what supposed to happen. This way no data can be written 
        # anymore from disk)
        #

        echo -n "Unmounting file systems..."
        /bin/umount -a -r
        evaluate_retval
        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
    ;;
esac

# End /etc/init.d/mountfs
EOF