Title. Asides from setting the whole disk to read-only. (It’s not an option since apparently docker dislikes that for some reason.). I’m trying to increase my microsd’s lifespan.
For instance, here’s my current /etc/fstab
tmpfs /tmp tmpfs rw,size=10M,nr_inodes=5k,noexec,nodev,nosuid,uid=gus,gid=notgus,noatime,mode=1700
tmpfs /var/log tmpfs rw,size=10M,nr_inodes=5k,noexec,nodev,nosuid,uid=gus,gid=notgus,noatime,mode=1700
tmpfs /var/tmp tmpfs rw,size=0M,nr_inodes=5k,noexec,nodev,nosuid,uid=gus,gid=notgus,noatime,mode=1700
tmpfs /var/run tmpfs rw,size=0M,nr_inodes=5k,noexec,nodev,nosuid,uid=gus,gid=notgus,noatime,mode=1700
tmpfs /var/spool tmpfs rw,size=0M,nr_inodes=5k,noexec,nodev,nosuid,uid=gus,gid=notgus,noatime,mode=1700
tmpfs /var/lock tmpfs rw,size=0M,nr_inodes=5k,noexec,nodev,nosuid,uid=gus,gid=notgus,noatime,mode=1700
tmpfs /var/cache tmpfs rw,size=0M,nr_inodes=5k,noexec,nodev,nosuid,uid=gus,gid=notgus,noatime,mode=1700
Thanks in advance.
This is what overlayfs is designed for. You can turn it on in the raspi-config tool under performance. While the overlayfs is on, all writes will just happen in memory. You should also have an update-motd script which will let you know when overlayfs is on.
$ cat /etc/update-motd.d/80-overlay #!/bin/sh str=$(mount | grep ' on / ') if echo $str | grep -q 'overlay'; then printf "\n\e[5m\e[1;31m------ INFO: / MOUNTED WITH OVERLAY ------\e[0m\n\n" elif echo $str | grep -q 'rw'; then printf "\n\e[1;32m++++++ INFO: / MOUNTED READ-WRITE ++++++\e[0m\n\n" else printf "\n\e[5m\e[1;31m!!!!!! WARNING: / UNKNOWN STATE !!!!!!\e[0m\n\n" fi
What if my board has barely any available ram for that? (Right now its running sway, docker w/ nextdns and playing a 24/7 livestream through ffplay/yt-dlp and the available ram varies between 90MiB to 300 MiB.)
It would work like the existing tmpfs that you already have. It overlays the tmpfs over the readonly filesystem mount:
/dev/mmcblk0p2 on /media/root-ro type ext4 (ro,relatime) tmpfs-root on /media/root-rw type tmpfs (rw,relatime) overlayroot on / type overlay (rw,relatime,lowerdir=/media/root-ro,upperdir=/media/root-rw/overlay,workdir=/media/root-rw/overlay-workdir/_)
df will tell you how much ram has been reserved for the tmpfs and how much has been “written.” On my 4GB Pi that is ~1.5GB. Mine is usually pretty idle and has been up for 40 days, so at 12% used ~1.5GB will last me quite a bit.
$ df /media/root-* Filesystem 1K-blocks Used Available Use% Mounted on /dev/mmcblk0p2 59839564 1857276 55517464 4% /media/root-ro tmpfs-root 1964220 234828 1729392 12% /media/root-rw
You can use f2fs to increase the lifespan.