FreeBSD Tips and Tricks: Native Read-Only Root File System
![/featured/hard_disk.webp](/featured/hard_disk.webp)
Many years ago, I needed to create some small servers using PCEngines Alix and had to choose the most suitable operating system. One of the challenges was dealing with dirty shutdowns and subsequent reboot issues, sometimes requiring manual intervention (not always feasible). After testing various Linux distributions and *BSD systems, I found the ideal solution: FreeBSD.
One highly useful but often overlooked feature of FreeBSD is its ability to detect that the system is in read-only mode and automatically mount important directories (like /tmp, /var/log, etc.) in tmpfs, allowing the system to function perfectly.
Since then, whenever I need a system that can recover from any type of blackout without manual intervention (such as my Raspberry Pies), I always use this feature. If needed, external storage devices will be mounted automatically (or manually) after boot, and in case of issues, I can always access the device via SSH to perform necessary checks on the external filesystem.
This feature is automatic: simply have the root file system on UFS (not ZFS) and set it to “ro” (from “rw”) in /etc/fstab. After a reboot, the system will operate in read-only mode, helping preserve the integrity of the embedded memory.
For updates, just:
- Temporarily remount the root file system as rw (
mount -uo rw /
) - Modify /etc/fstab, changing “ro” back to “rw”
- Reboot the device and update it normally
Related Content
- Make Your Own E-Mail Server - Part 2 - Adding Webmail and More With Nextcloud
- Make Your Own E-Mail Server - Part 1 - FreeBSD, OpenSMTPD, Rspamd and Dovecot Included
- Installing Alpine Linux on a FreeBSD Jail
- How to Create a FreeBSD Jail Hosting XRDP and XFCE for Remote Desktop Access
- Migrating From VM to Hierarchical Jails in FreeBSD