こんにちは。長期連休ごとにラズパイを買い足してしまう病のポン吉です。
ラズパイを24時間365日稼働させたい!と思っている方もいるのではないでしょうか?しかし、何も考えずにラズパイを長期起動させてしまうと数か月で不稼働となってしまう事もあり注意が必要です!
ラズパイ壊れないように使いたい 品薄で値上がり中ですし
今回は、スマートホームでのラズパイ長期稼働実績をベースにノウハウを共有したいと思います。テスト機を含め何十台とセットアップ経験がありますが、マイクロSDカードを使用したラズパイで6年以上安定稼働させています(24時間365日フル稼働)。
この記事を読めば、誰でもラズパイの寿命を何十倍にも延ばせるようになれます!
ラズパイ初心者の方でも簡単に設定できるように記載してみたので、参考にしてもらえると幸いです。
今回のテーマはこちら
- ラズパイを24時間365日フル稼働させても死なない長寿命化の初期セットアップを覚えよう
- 初期設定だけでなく実運用面で寿命を延ばすためのノウハウを覚えよう
ではさっそくやってみましょう~♪
ラズパイ初期設定(セットアップ/インストール)
最小限な作業かつシンプルに設定する方法を紹介。まずは長寿命化の前に基本セットアップから。
セットアップなんて知ってる!はよ極意を教えろ!
そんなあなたは下記リンクをクリック!
\ 長寿命化の極意まで飛ぶ方はクリック /
ラズパイセットアップ(初心者向け)
セットアップツールの進化によりラズパイ初期設定は説明不要なほど簡単!サクッと完了させよう。
Raspberry Pi初期設定手順
- Windows/Mac等のPCに「Raspberry Pi Imager」をインストール
- Raspberry Piイメージファイルの選択&環境設定を実施しマイクロSDカードに書き込み
- マイクロSDカードをラズパイに入れ電源ON!SSH接続できればセットアップ完了!
セットアップする上でラズパイ用キーボード、マウス、ディスプレイは一切不要です。Raspberry Pi Imagerを使っている時点でインターネット+PC環境があるはずなので、その環境からラズパイにリモートログインして使いましょう。
PC環境に合わせ「Windows/Mac/Ubuntu」から選んでダウンロードしインストール。
Raspberry Pi Imager を起動すると以下のような画面が出ます。まず初めにOSを選ぶをクリック。
ラズパイOSのインストール(OSの選び方)
ここではOSのイメージを選び方についてご紹介します。
GUI画面なし版や64bit版を選ぶには、その他(other)をクリック。OS種類がたくさん出てきますが、「32bit版 or 64bit版」、「GUI(画面操作) or CUI(文字操作) 」の4パターンから選択になると思います。
スマートホーム用途ではデスクトップ不要なのでLiteと書いてあるCUI版を推奨
OSの種類 | デスクトップ環境の有無 |
Raspberry Pi OS Lite(32bit) ★おすすめ | ×なし(CUI) |
Raspberry Pi OS (32bit) | 〇あり(GUI) |
Raspberry Pi OS Lite(64bit) ★攻める人はこちら | ×なし(CUI) |
Raspberry Pi OS (64bit) | 〇あり(GUI) |
CUIは「Character User Interface」の略です。
文字によるユーザインターフェイス。黒い画面で文字で操作。
GUIは「Graphical User Interface」の略です。
グラフィック画像によるユーザインターフェイス。Windowsのようにマウス等で操作。
ぶっちゃけどう選べばよいかわからん!
やや細かいですが、下記コラムもご参考までに
以下、どのようにOSを選べばよいのかを解説します。
32bit or 64bit
結論:初心者の方には安定している32bit版を推奨
64bit版使用時にトラブルに直面すると情報が少なくハマるリスクがあります。ラズパイの性能を限界まで引き出したい!自作プログラムで3GB以上のメモリを潤沢に使いたい! と明確な目的がある場合のみ64bit版を使いましょう。
64bit版は32bit版より速いといっても、電子工作中心で使う方はほぼ体感できないと思います。(プログラム次第)
GUI or CUI
結論:ここはあえて初心者の方にもCUI(画面なしlite)を推奨
Windows/Mac等のGUI環境をお持ちだと思いますので、あえてラズパイOSでGUI(画面)操作する必要はありません。ラズパイのカメラで取得した画像・動画・センサ情報等は、ネットワーク経由でWindows/Macで参照しましょう。
ラズパイZero等では特にメモリが少ないです。最軽量でメモリ使用量も少なくパフォーマンスを限界まで引き出せるCUI(画面なしLite版)をお勧めします。
GUI(画面あり)は「OpenCVのテストデバッグ時にimshowで
直接画像表示したら効率的な時があるかも~」という印象です
ラズパイOSの書き込みと動作確認
OSを選んだ次はストレージを選択します。
microSDカードを接続しているストレージを選択します。複数ある場合は間違わないように注意。
歯車アイコンが出てくるのでクリックして詳細設定をします。
詳細設定ができるようになり超便利になりました!(嬉)
…Ansibleで苦労して自動化したスクリプトが徐々に無駄に(涙)
詳細環境設定の例だけご参考までに記載しておきます。SSHを有効化するは確実に設定しましょう。有線LANではなく無線LANを使う場合は、ここでWi-Fiも設定します。ラズパイを複数台使っている方はホスト名が重複しないように注意してください。
詳細設定が終わったら書き込みます。
警告が出てきます「はい」をクリック。間違ったUSB等に書き込まないように注意。
書き込み中になるので数分待ちましょう。
終わった!と思ったら書き込みチェック処理が動きます。もう少し待ちましょう・・・
書き込みが無事終わりました。マイクロSDカードをラズパイに入れて電源ON。(有線LAN環境でしたらLANケーブルも接続)
ちなみに初回起動時のみ再起動が数回動くためやや時間が掛かります。
余裕を見て2~3分まってからターミナルソフトでSSHログインしてみましょう。
使用するターミナルソフトはWindowsならTeraTerm, MacならiTerm2がおすすめ
以下はWindowsのTeraTermを使ったリモートアクセスの例です。
先ほど設定した「ホスト名」を指定してSSH接続します。
初回接続の場合に警告が出ます。known hostsリストに追加するで続行。(以降警告はでません)
詳細設定で指定した「ユーザ名」「パスワード」でログインします。
無事ラズパイにCUIでログイン出来たら初期設定は成功です。
ラズパイ長寿命化の極意
【その1】ディスクI/Oを減らせ!メモリで運用するべし
ラズパイOSをインストールしたmicroSDカードには書き込み回数に制限があります。日々の運用で常時書き込みしてしまうと、ラズパイが壊れるよりも先にマイクロSDカードが死を迎えます(合掌)。極力ディスクに書き込まずにメモリだけで動くように設定しましょう。
■Swap機能を削除しディスクへの書き込みを抑止する
ラズパイにとってSwap機能はSDカードの寿命を短くする要因になるので、以下コマンド1行を実行して消しましょう!
sudo apt autoremove -y dphys-swapfile
Swap機能とは?
ラズパイの物理メモリ容量以上の領域が必要になった場合、あまり使われていない領域をメモリからマイクロSDカードに移動(スワップアウト)させる機能。ちなみにマイクロSDカードはメモリと比べて1000倍以上性能が遅いため、Swapは性能低下にもつながります。
■RAMDISK(tmpfs)機能を使ってメモリ上にファイルを書き込む
先ほどのSwap機能と逆の思想となる「メモリをディスクのように使う機能」を設定します。
sudo vi /etc/fstab で /etc/fstabのファイルを編集。 ※編集できればvi以外のnano等でもOK
ファイルの最後に下記3行を追加
tmpfs /tmp tmpfs defaults,size=256m,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
RAMDISK(tmpfs)として3つのディレクトリをメモリ領域に作るように設定しています。
その後、ラズパイを再起動しましょう。
sudo reboot
再起動後に、dfコマンドでRAMDISK(tmpfs)が作成されているかを確認しましょう。
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/root 30474260 1484076 27717012 6% /
devtmpfs 341060 0 341060 0% /dev
tmpfs 472644 0 472644 0% /dev/shm
tmpfs 189060 3056 186004 2% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 262144 0 262144 0% /tmp
tmpfs 32768 164 32604 1% /var/log
tmpfs 16384 0 16384 0% /var/tmp
/dev/mmcblk0p1 258095 50413 207683 20% /boot
tmpfs 94528 0 94528 0% /run/user/1000
/tmpの容量を256MBとしていますが、ご利用状況に合わせて変更してください。基本的に/tmpにファイル出力するようにプログラムを組みましょう。作成後に永続的に保存したいファイルについては、RAMDISKからNAS、googleドライブ、Dropbox等の外部ストレージにコピーするのがおすすめです。
これら設定だけでほぼ大半のディスク書き込みを減らせます。私はズボラなので割とラズパイの電源をブチっと切ってしまう事も多いですが、ファイルシステムの書き込みを抑止しているためか、ファイルシステム破損のような状況にはなった事はありません。
注意:メモリに書くようにしても電源切る時はちゃんとシャットダウンしましょう
他サイトの記載について
ログディレクトリのRAMDISK化について、他サイトでは「/etc/rc.localのファイルに/var/log/aptを作ったり/tmp/log/wtmpをtouchコマンドで作ったり・・・」という内容が多数出てきますが、ファイルがない場合は自動作成されるため対応不要です。(誤った情報の記事コピーが大量にある?)
ただし、インストールしたパッケージによっては、ログディレクトリが自動作成されず起動時にエラーになるものがあります。エラーになってしまう場合のみ、/etc/rc.local等で起動時にディレクトリを作成するように対応しましょう。
ログまでメモリにして大丈夫?
メモリなので再起動によりログが消えます。トラブルシュートする際に不安・・・と思う方もいると思いますが、ハードウェア障害(電源不足等)を除き、ソフトウェア障害でラズパイの電源が落ちることはまずないです。なので、再起動せずにトラブルシュートしましょう!
停電時にもログは消えますが、この場合はOSログから調査するケースはないです。気になる方は定期的にログを外部にバックアップすることをおすすめします(私はそこまでしていません)
RAMDISK化悪影響
ラズパイの寿命を伸ばすために/tmpをRAMDISK化した場合、api install やpip install 等のパッケージインストールやcmake等のビルド時に/tmp容量不足でエラーになる場合があります。エラー内容に「 No space left on device 」とエラーが出る場合は、環境変数を一時作業場所(Disk)に変更して対処しましょう。
<HOMEディレクトリに一時的なディレクトリtmpを作り作業場所に設定>
mkdir ~/tmp
export TMPDIR=~/tmp
上記コマンド実行後に再度インストールすれば「 No space left on device 」のエラーは解消されるするはずです。一通りメインのパッケージインストールが終わった後にRAMDISK化する事を推奨します。
SSHでアクセスできなくなったー!(泣)という時のためにトラブルシュート用のミニディスプレイとキーボードを用意することをお勧めします。このレスキューセット?がないと原因不明のまま電源切ることになります(涙)
【その2】電源が命!アダプタは確実なものを選ぶべし
続いてハード障害対策です。家に余っている携帯の充電器でなんとなくラズパイを動かしている人はいませんか?ラズパイを長期安定稼働させる上で、安定した電圧を常時供給するのが重要です。電源だけはお金をケチらずに良いものを選択しましょう。
特にGPIOでモータを動かしたりUSB機器を多く接続する場合は注意。電源不安定により強制的にOSがシャットダウンされる不具合にもつながります。また、CPU供給電圧が不安定になるとラズパイの性能が著しく低下するなどの影響が大きいです。
国内ラズパイ販売店からの購入をおすすめします。また、ラズパイ販売の御三家として「RSコンポーネンツさん、SWITCH SCIENCEさん、KSYさん」あたりの製品が確実だと思います。
私が使っているラズパイの電源は「KSYさん」の製品になります。以前販売されていたものはUSBケーブル分離型の電源で、USB端子にぐらつきがあり接触不安定だったので微妙でしたが、現在販売されているものは改善されており大丈夫です!(辛口に評価すみません)
GPIO端子の保護ついて
GPIO端子も5V, 3.3Vと常時電圧が掛かっています。金属クリップを落としただけでも簡単にショートしてラズパイ君がお亡くなりになります(経験談)。小さなお子さんがいる場合は注意。貧乏チューニングでセロテープ張っておくだけでも十分効果あるのでお試しください。
【その3】CPUを冷やせ!冷却機器は用途に投じて選ぶべし
ラズパイはCPU温度が80℃に達するとサーマルスロット機能が発動。CPU周波数を落として放熱を試みるため、突然処理性能が低下する状況となります。
発熱による影響はCPU性能低下だけではありません。パソコンやラズパイでも使われている電解アルミコンデンサは「温度が10℃上昇する毎に寿命は半分になる」と言われています。
よって、ラズパイ長寿命化させるために発熱対策は非常に重要です。
電解液の消失量は温度と関係し、アレニウスの法則と呼ばれる化学反応速度論にほぼ従うことが知られています。これは使用温度が10℃上がれば寿命は2分の1になり、 10℃ 下がれば寿命は2倍になるという法則で、10℃ 2倍則とも呼ばれます。
TDK TECK MAGより引用
ラズパイにも種類が多く「Raspberry Pi Zero, Raspberry Pi 3, Raspberry Pi4」とスペックアップに比例し発熱も大きくなります。特にラズパイ4の発熱は大きいため注意!
電子工作でセンサから値を取得するような場合CPUはほぼ使いません。このようなケースではラズパイ4ではなく安価で低消費電力なラズパイZero等を活用しましょう。
ラズパイ4はすべてに優れているわけじゃないのね
ラズパイ4スペック高いけど、その分発熱が半端ない
うちのスマートホームでも用途ごとにラズパイを使い分けています。下記のシステム構成図も参考にしてみてください。
ラズパイのCPU温度は vcgencmd というコマンドで確認できます。
vcgencmd measure_temp
実行すると以下のように温度が表示されます。
temp=50.6'C
ラズパイ4で4コア使い倒したマルチスレッドプログラムをぶん回したり、AI分析処理等で常に高負荷となるサーバの場合は冷却システムは必須。85度以上の高熱になるとCPU周波数も落とされて性能が低下してしまいます。
できれば60度以下で安定できるよう最適なクーラーやケースを装備しましょう。
Amazonなどでいろいろなラズパイ用のケースや冷却ファンが売られていると思います。
CPU冷却パターン
- GPIOでセンサから情報取得 : Raspberry Pi Zero 1であれば対策不要
- USBカメラを使った動画配信等 : 放熱性のよいケースや小型ファンで対策
- DeepLearningやOpenCVで重い画像処理 : 大型冷却ファンでの冷却を推奨
ラズパイ4のクーラーとしておすすめの商品も紹介します。ICE Tower 無茶苦茶冷えます。うちのスマートホームでは「AI分析処理用ラズパイ4」と「監視カメラ用ラズパイ4」の2台で運用中。
ややサイズが大きいのですが、ラズパイ4の寿命を延ばしたい!というのであればこちらのクーラーを選んでおけば間違いはないです。(2022/7時点)
まとめ
これまでスマートホームとして6年以上長期安定稼働させてきたノウハウを共有させていただきました。皆様のラズパイの長寿命化につながって頂けると幸いです。
ラズパイ長寿命化の極意
- 極意1 ディスクI/Oを減らせ!メモリで運用するべし
- 極意2 電源が命!アダプタは確実なものを選ぶべし
- 極意3 CPUを冷やせ!冷却機器は用途に投じて選ぶべし
これらに気を付けてラズパイの長期安定稼働をしていきましょう!
ラズパイ自体も品薄で購入が難しい状況が続いています。ラズパイの在庫と価格をリアルタイム確認できるページを作りました。ラズパイを購入しようとしている方は是非参考にしてみてください。
USBブートにはしないの?
記事ではUSBメモリによるブートには触れていなかったのですが、書き込みにより寿命を迎える点はSDカードと同じです。ならばUSB接続のHDD/SSD!と思う方もいると思います。OS起動が速くなる等のメリットはありますが、そもそも起動しっぱなしでメモリにしか書かないように設定して使うのでメリットがない(笑)
ストレージへの読み書きを頻繁にするのであればメリットがありますが、ラズパイの用途を考えたうえでメリットがある場合に使いましょう。(無駄な投資にならないように)