Notes on making rachel pi work with a read-only filesystem.
A good reference this is based on. https://hallard.me/raspberry-pi-read-only/
List of actions:
- Remove logging
sudo apt-get install busybox-syslogd; sudo dpkg --purge rsyslog
- Remove some system files and link them in /tmp instead.
sudo rm -rf /var/lib/dhcp/
sudo rm -rf /var/run
sudo rm -rf /var/spool
sudo rm -rf /var/lock
sudo ln -s /tmp /var/lib/dhcp;
sudo ln -s /tmp /var/run;
sudo ln -s /tmp /var/spool;
sudo ln -s /tmp /var/lock;
- Change path used by dhcpcd to tmpfs one.
sudo sed -i -e 's/run/var\/run/g' /etc/systemd/system/dhcpcd5
- Change random seed
sudo rm /var/lib/systemd/random-seed
sudo ln -s /tmp/random-seed /var/lib/systemd/random-seed
sudo sh -c 'echo "ExecStartPre=/bin/echo \"\" >/tmp/random-seed" >> /lib/systemd/system/systemd-random-seed.service'
- Change filesystem to be mounted readonly In fstab, add the 'ro' flag for /boot and /. NOT /proc.
sudo nano /etc/fstab
This is what it should look like.
pi@rachel:~$ cat /etc/fstab
proc /proc proc defaults 0 0
/dev/mmcblk0p1 /boot vfat defaults,ro 0 2
/dev/mmcblk0p2 / ext4 defaults,ro,noatime 0 1
# a swapfile is not a swap partition, no line here
# use dphys-swapfile swap[on|off] for that
In /boot/cmdline, add 'noswap ro'
sudo nano /boot/cmdline
This is what my command line looked like.
pi@rachel:~$ cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait noswap ro
pi@rachel:~$