はじめに
安価かつ関連する情報も多いということで、インスタレーション等の作品製作に Raspberry Pi が使われることも多いかと思います(私自身も参加した作品に使用したことがあります)。
Raspberry Pi は HDD や SSD ではなく、microSD を使う珍しいシステムであり、また microSD はそのような用途に使用されることを想定されていませんので、使い方によっては簡単に壊れてしまいます(特別な設定無しでも問題なく使用できるという意見もありますが、私が関わった範囲では、最短で 2 週間で壊れてしまったという事例も経験しております)。
標準の設定のままでも問題ないかもしれないですが、microSD カードに優しい設定にしておくと良いかも(安心かも)…ということで、ここに関連する情報をまとめておきます。
ちなみに、毎日ではないですがボチボチと使う程度では、本記事の設定にて何年も使うことができております。これで絶対に大丈夫!ということではありませんが、皆様のラズパイ・ライフにおける心の安息に役立てば幸いです。
なお、当初は自分のためのメモということで、以下の情報は 5 年ほど前からコツコツとまとめていたものです。そのため、どのページから情報収集したのか記録しておりませんでした。このページにも書いてあるよ、という情報はコメント欄に書いていただければ幸いです。
ステップ1: swap の無効化
まず、swapoff で swap の無効化を行います。
(参考: https://tech.nikkeibp.co.jp/it/article/COLUMN/20130909/503369/ )
sudo swapoff --all
chkconfig をインストールし、スワップファイルを生成しないようにします(もしかしたら swapoff だけで十分なのかもしれませんが、とりあえず)。
sudo apt-get install chkconfig
sudo chkconfig dphys-swapfile off
ステップ2: /tmp, /var/tmp, /var/log の RAM ディスク化
各種プログラムがログを書き込むディレクトリを RAM ディスク上に作成し、microSD への書き込みを抑制します。なお、この設定を行うと、トラブル発生時にログファイルでの解析ができなくなります。その場合は fstab の該当エントリをコメントアウトするなどして、再度の問題発生時にファイルとして記録できるようにする等してください。
fstab の編集
sudo vi /etc/fstab などして、fstab を以下のように編集します:
tmpfs /tmp tmpfs defaults,size=32m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,size=32m,noatime,mode=0755 0 0
編集が終了したら、sudo reboot now を実行して再起動します。
きちんと RAM ディスク化されているか確認
再起動後、df -h でファイルシステム毎のファイルサイズを確認します。
...
tmpfs 32M 156K 32M 1% /var/log
tmpfs 16M 0 16M 0% /var/tmp
tmpfs 32M 0 32M 0% /tmp
...
等という表示がされれば OK。
ステップ3: 念のため起動時に確認するようにする
microSD 上のファイルシステムが正常であるかどうか、念のために起動のたびに確認するようにします。この設定をすると、起動に時間がかかるようになりますので、少しでも起動時間を短縮したい場合はこの設定をしないほうがよいです。
ファイルシステムのチェックには fsck コマンドを使いますが、fsck の対象とするデバイスを特定するため、以下のコマンドを実行します:
mount -l | grep mmc
すると、次のような出力が得られます:
/dev/mmcblk0p7 on / type ext4 (rw,noatime,data=ordered) [root]
/dev/mmcblk0p6 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro) [boot]
root という記述のある、/dev/mmcblk0p7 がルートファイシステムとなっていることが分かるので、 これを fsck の対象とします。
sudo tune2fs -c 1 /dev/mmcblk0p7
最新版にする
以上の設定にて、microSD に優しい状態となりましたので、
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo rpi-update
などして、最新の状態に更新します。
まとめ
以上で、swap と一時ファイルに関して microSD に負担をかけないように設定となりました。この他にも「こんな風にしたほうが良いよ」とか、ここは誤っている、等の情報がありましたら、ご指摘いただければ幸いです。