3. The `rc` Subsystem and Read-Only Filesystems
Prev |  | Next

## 3. The `rc` Subsystem and Read-Only Filesystems

The post-boot initialization of an embedded FreeBSD system is controlled by `/etc/rc.initdiskless`.

`/etc/rc.d/var` mounts `/var` as a memory filesystem, makes a configurable list of directories in `/var` with the mkdir(1) command, and changes modes on some of those directories. In the execution of `/etc/rc.d/var`, one other `rc.conf` variable comes into play – `varsize`. The `/etc/rc.d/var` file creates a `/var` partition based on the value of this variable in `rc.conf`:

varsize=8192

Remember that this value is in sectors by default.

The fact that `/var` is a read-write filesystem is an important distinction, as the `/` partition (and any other partitions you may have on your flash media) should be mounted read-only. Remember that in Section 1, “Solid State Disk Devices” we detailed the limitations of flash memory - specifically the limited write capability. The importance of not mounting filesystems on flash media read-write, and the importance of not using a swap file, cannot be overstated. A swap file on a busy system can burn through a piece of flash media in less than one year. Heavy logging or temporary file creation and destruction can do the same. Therefore, in addition to removing the `swap` entry from your `/etc/fstab` file, you should also change the Options field for each filesystem to `ro` as follows:

# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1a / ufs ro 1 1

A few applications in the average system will immediately begin to fail as a result of this change. For instance, cron will not run properly as a result of missing cron tabs in the `/var` created by `/etc/rc.d/var`, and syslog and dhcp will encounter problems as well as a result of the read-only filesystem and missing items in the `/var` that `/etc/rc.d/var` has created. These are only temporary problems though, and are addressed, along with solutions to the execution of other common software packages in Section 5, “System Strategies for Small and Read Only Environments”.

An important thing to remember is that a filesystem that was mounted read-only with `/etc/fstab` can be made read-write at any time by issuing the command:

`#` `/sbin/mount -uw `partition``

and can be toggled back to read-only with the command:

`#` `/sbin/mount -ur `partition``

Prev |  | Next
2. Kernel Options | Home | 4. Building a File System From Scratch

This, and other documents, can be downloaded from http://ftp.FreeBSD.org/pub/FreeBSD/doc/

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.