LoginSignup
5
5

More than 3 years have passed since last update.

Raspberry Pi の microSD 関連の設定

Posted at

はじめに

安価かつ関連する情報も多いということで、インスタレーション等の作品製作に 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 に負担をかけないように設定となりました。この他にも「こんな風にしたほうが良いよ」とか、ここは誤っている、等の情報がありましたら、ご指摘いただければ幸いです。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5