やりたいこと
Raspberrypi4はデフォルトでSDカードからブートするようになっている。SDカードには書き込み回数上限があるので、サーバー的に運用するには安定性に欠ける。そこで、Overlayfsを使ってSDカードをリードオンリー化する機能があるが、一方で起動の度にログなど含めてすべてリセットされるのもそれは問題。ということで、/varを別パーティションにすることでログは残りづけるが、基本はリードオンリー化された状態を作りたい。
手順
1.まずは適当なディスクに/var用のパーティションを作る
2.上で作ったパーティションを適当なディレクトリにマウントする
sudo mount -t btrfs -o defaults,noatime,compress=lzo /dev/disk/by-partlabel/varpt01 /data/var
3.上でマウントしたディレクトリに/varの内容をコピーする
なるべく何も動いてない状態で作業したいので、シングルユーザモードに変更して行う
sudo init 1
cp -a /var/* /data/var/
mv /var /var.org
mkdir /var
4.fstabを修正して/varに作ったパーティションをマウントするようにする
/etc/fstab
PARTLABEL=varpt01 /var btrfs defaults,noatime,compress=lzo 0 2
5.再起動して/varにマウントされていることを確認する
sudo shutdown -r now
mount
ls -l /var
6.dphys-swapfileを無効化する
起動ログにdphys-swapfileのエラーが出るのでこれを無効化する。
sudo systemctl disable dphys-swapfile.service
もう一回再起動してFAILEDが出ないことを確認する。
もう/var/swapfileは不要なので、削除する。
sudo rm /var/swap
7.代わりにswapパーティションを有効にする
fstabに以下の行を追加する。
/etc/fstab
PARTLABEL=swappt01 swap swap defaults 0 0
あとは、raspi-configでReadonly化すればOK