You need to make your target device able to survive unexpected events, including file corruption, and still be able to boot and achieve at least a minimum level of function. Making the root filesystem read-only is a key part of achieving this ambition because it eliminates accidental overwrites. Making it read-only is easy: replace rw with ro on the kernel command line or use an inherently read-only filesystem such as squashfs. However, you will find that there are a few files and directories that are traditionally writable:
- /etc/resolv.conf: This file is written by network configuration scripts to record the addresses of DNS name servers. The information is volatile, so you simply have to make it a symlink to a temporary directory, for example, /etc/resolv.conf -> /var/run/resolv.conf.
- /etc/passwd: This file, along with /etc/group, /etc...