Subject: Read only filesystem support from FreeBSD
To: tech-embed@NetBSD.org <tech-embed@NetBSD.org>
From: Adam Hoka <adam.hoka@gmail.com>
List: tech-embed
Date: 06/12/2007 19:26:51
Someone mentioned on the list earlier the out of the box support of read only filesystems, like FreeBSD has.
I have ported it to NetBSD. I don`t think it`s perfect, but it`s working for me.

Please test it and tell me what do you think about it. I don`t know if I left some FreeBSD-isms in them. :)
The rc.d files and the patch needed for /etc/defaults/rc.conf are here:
http://freeshells.ch/~replaced/ro_boot.tar

If you are not familiar with this ability of FreeBSD, here`s a short explanation, from the FreeBSD manpage:

     tmpmfs      Controls the creation of a /tmp memory file system.  Always
                 happens if set to ``YES'' and never happens if set to ``NO''.
                 If set to anything else, a memory file system is created if
                 /tmp is not writable.

     tmpsize     Controls the size of a created /tmp memory file system.

     tmpmfs_flags
                 Extra options passed to the mdmfs(8) utility when the memory
                 file system for /tmp is created.  The default is ``-S -M'',
                 which inhibits the use of softupdates on /tmp to waste as
                 little space as possible and creates a pure memory backed
                 disk, which will never be swapped out, for maximum perfor-
                 mance and system stability at low memory conditions.  See
                 mdmfs(8) for other options you can use in tmpmfs_flags.

     varmfs      Controls the creation of a /var memory file system.  Always
                 happens if set to ``YES'' and never happens if set to ``NO''.
                 If set to anything else, a memory file system is created if
                 /var is not writable.

     varsize     Controls the size of a created /var memory file system.

     varmfs_flags
                 Extra options passed to the mdmfs(8) utility when the memory
                 file system for /var is created.  The default is ``-S -M'',
                 which inhibits the use of softupdates on /var to waste as
                 little space as possible and creates a pure memory backed
                 disk, which will never be swapped out, for maximum perfor-
                 mance and system stability at low memory conditions.  See
                 mdmfs(8) for other options you can use in varmfs_flags.

     populate_var
                 Controls the automatic population of the /var file system.
                 Always happens if set to ``YES'' and never happens if set to
                 ``NO''.  If set to anything else, a memory file system is
                 created if /var is not writable.  Note that this process
                 requires access to certain commands in /usr before /usr is
                 mounted on normal systems.

It`s mounting a ramdisk device, and populating /var using mtree(8).
The only major change, that it`s using mount_tmpfs(8), so the flags are empty by default, but I want to add support for mount_mfs(8).

Cheers! :)

-- 
Adam