こんにちは。
BiTTチームのキー坊です。
今回は今更ですが、Raspberry Pi OSの初期設定周りをお話しようかと思います。
というのも、実はラズパイのケースを新調しました。それで、SSDも搭載できるようになったので、性能調査も兼ねて記事にしてみました。
下で説明する設定の中には、「SSDで起動するならそこまで意味ないんんじゃ?」って思うものもあるかもしれませんが、SSD搭載しているのはあくまで開発機というやつで、本番機は今もラズパイ3でSDカードで稼働しています。
まぁラズパイ4の方が値段も高いですしね。
- Raspberry Pi 4 8GB(開発機)は早くて熱い。必要は時だけ稼働。
- Raspberry Pi 3 Model B+(本番機)はそこそこ早くて常時起動で熱処理に問題が出にくい。
こんな構成で我が家では運用してるので、今回設定していく開発機に対しては不必要なものもあるかもしれません。
ちょっと前置きが長くなっちゃいましたが早速やっていきましょう。
開発機の紹介
こんな外観です。
かっこいいですよね。見かけてすぐにポチッとしちゃいました。
最安だと千石電商さんが安いんですが、僕はAmazonで買ってから気づきました。一応Amazonのリンク貼っときます。
背面を見るとUSB3で底面につながっていて、ここにM.2のSSDが入ってます。なので性能的にはUSB3の速度限界が「超えられない壁」ですね。ただし、そんなスピードには絶対ならないと思うので、実際の所どんなもんかなーってのを見ていこうと思ってます。
僕はこんなケースでSSD一体型にしてますが、普通にUSBでつなげるSSDを買ってきても動作すると思います。
このケースの気に入っているポイントはHDMIがmicroじゃない事。まれに繋ぎたくなった時に変換どこにやったかなーと探す手間が減りました。
OSのインストール
今回はRaspberry Pi OSをインストールしていきます。SSDがあるとはいえ、最初はSDカードにインストールが必要となります。
公式にはRaspberry Pi Imagerがありますが、SSD(というかUSBブート)を使うには64bit版のOSである必要があるそうです。一応32bit版でもできたという記事はありましたが、僕も64bit版で試しています。
そして64bit版はRaspberry Pi Imagerのメニューからインストールはできません。昔ながらの方法で、イメージをダウンロードしてきてSDに入れる必要があるみたいです。
それから、64bit版はまだベータ版らしいです。つまり、それに伴う不具合等が出る場合等もあるかもしれませんのでご注意ください。
また、記事を参考にする方でSSD起動まではやらない方はRaspberry Pi Imagerで32bit版をインストールすると良いと思います。
まずはここからイメージをダウンロードします。
公式サイトは重いらしいので、ミラーサイトからのダウンロードになります。不安な方は公式サイトから64bit版をダウンロードしてください。
ダウンロードしたら、SDカードに書き込みます。僕がいつも使っているのはApplePiBakerというソフトになります(実はRaspberry Pi Imager使った事ありません 笑)。
SDからのバックアップもできるので、ある程度設定が終わったらバックアップとっておくと次からは初期設定が要らなくなるので便利です。
「Select Disk」でSDを選択し、「Restore」でダウンロードしたイメージを選択すればOK。暫く待てば完成です。
とても簡単ですね。
OSの初期設定
と言っても、最初の起動時の画面はあまり見せる所がありません(笑)。
「キーボードの設定は当然USだろ!!」とか言って共感されるはずもなく、ログインやWi-Fiのパスワードは「見せられないよ!」の嵐。
個人的な設定も多いので、この辺りは設定してある前提で割愛してます。画面通りに設定を進めて下さーい。
初期設定で重要なのは下記の2つです。
SSHとVNCでのアクセスを許可
1つ目はSSHとVNCでのアクセスを許可すること。これはどちらもラズパイにアクセスする方法なのですが、GUIありがVNCでGUIなしがSSHという感じです。
左上のメニューから設定 -> Raspberry Piの設定と進みインターフェースのタブを選択すると現れるのでいずれも有効にしておいてください。
これをやっておけば、microHDMI -> HDMIの変換コネクタ探してディスプレイに出力する必要もありません。手元のWindowsやMacからアクセスできます。
Macのターミナルから以下のコマンドでアクセスできます。
$ ssh pi@raspberrypi.local
これはデフォルト設定なので、ユーザを変更している方や、ホスト名を変更している方は適宜読み替えてください。また、以降の説明でも上記のデフォルト設定のまま説明してますので、そちらも適宜読み替えをお願いします!
VNCもMacにVNCviewerをインストールしてあれば起動して、ホスト名やIPアドレスを入力すればデスクトップ画面をMacから見る事ができます。
この記事内の写真はそうやってスクショしてます(笑)。
OSを最新状態へ
2つ目の重要な事としてはOSを最新状態にする事です。SSHでラズパイにアクセスするか、VNCでアクセスしてターミナルを起動して、以下のコマンドを順に打っていってください。
sudo apt update
sudo apt full-upgrade -y
sudo apt autoremove -y
sudo apt clean
sudo reboot
あとは、好きなソフトをインストールするってことでしょうか。僕はvimが使いたいので必ず入れるようにしてます。
記事中ではデフォで入ってるnanoで表記してあると思いますが、実はvim使ってます(笑)。ソフトに関してはこだわりあると思うので、お好きにカスタマイズしてください。
SDカードの寿命を延ばす設定
ラズパイはSDカードを使ってシステムを動作させている関係上、SDカードの書き込み上限に当たると起動しなくなります。
SDカードの種類にもよるのですが、一般的に千回から1万回書き込んだら上限に当たります(数字にすると意外に少ないんです!)。僕も何度かSDカードの書き込み上限で壊れた事があります。
なので、徹底的に書き込みを少なくしていく事こそ俺の正義!(ジャスティス)という体で設定します。若干、正義を貫きすぎてやりすぎ感が溢れている事をご了承ください。
そして、ここからはSSHを使っての作業になります。失敗すると起動しない事もありますので注意してください。ご心配であれば、先に紹介したApplePiBakerでバックアップを取っておいても良いかもしれません。
Macのターミナルを開いて以下のコマンドを入力します。
$ ssh pi@raspberrypi.local
パスワードは初回起動時に設定したものです。
では、設定の方を見ていきましょう。
swapの停止
swapっていうのはメモリが足りない時に一時的に退避する場所なのですが、そもそも100MB位しか確保してないので停止しちゃいます。
swapファイルの無効化
$ sudo swapoff --all
swapサービスの停止と自動起動停止
$ sudo systemctl stop dphys-swapfile
$ sudo systemctl disable dphys-swapfile
再起動して完了です。
テンポラリ領域をメモリに設定
一時的なファイル置き場をメモリ上に設定します。これにより不用意にSDカードに書き込むのを防ぎます。
$ sudo nano /etc/fstab
下の2行を追加します。
tmpfs /tmp tmpfs defaults,size=32m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=16m,noatime,mode=1777 0 0
既存の/tmpと/var/tmpを削除します。
$ sudo rm -rf /tmp
$ sudo rm -rf /var/tmp
再起動して完了です。
ログファイルの出力先をメモリにする
基本的にシステムは色んな動作についてのログを残そうとします。ユーザーがトラブルに遭遇した時に復旧や、回避を行うために必要になるからです。
しかし、そもそも自分や家族だけが使うシステム構築に使っている機材なので不具合が出たたログを母艦のPCに確保しておいて、再起動して捨てちゃう運用としてます。一般的には推奨できません。
なので、こりゃやりすぎでしょという方はやらない方がいいです(笑)。
$ sudo nano /etc/fstab
下の行を追加します。
tmpfs /var/log tmpfs defaults,size=32m,noatime,mode=0755 0 0
既存の/var/logを削除します。
$ sudo rm -rf /var/log
再起動して完了です。
ここまで設定したら、一度ApplePiBakerでバックアップしておくと次にセットアップする時に作業を省けて便利ですよ。
SSDブートの設定
ここからは、SDカードからSSDブートにするための設定になります。ちなみに、僕が買ったこのケースなんですが、挿さるSSDの種類が決まってまして、Key-BまたはKey-B&MのSATASSDとなってます。
僕は説明書をよく見ておらず手持ちのNVMeのSSDを挿しても認識せずにハマりました(3,000円位とは言え思わぬ出費をする羽目に……)。もし参考にしようとする方はご注意を!
と、話はそれましたが、写真の通りSD Card Copierを起動してください。
そしてFromの方にSDカード(mmcblk0の方)、Toの方にSSDを選択します。
この時複数の記録媒体(HDDや、USBメモリ等)を挿してると複数の選択肢が出てきます。間違えると当然データは消えますので、自信がなければ一度それらは外した方が良いと思います。
選択が終わったらStartボタンをポチッと押しちゃいます。
本当にいいの?と言うような警告が出ますので問題なければYesをクリックします。
完了したら、今度はターミナルに移動して以下のコマンドを打ちます。
sudo raspi-config
下の写真の様な青い背景の画面が出ます。
操作方法はキーボードの上下でメニューを選んでEnterキーで選択、Escキーで前に戻る(またはメニュー最上位だと終了)ができます。
バージョンが古い場合もあるので、一度メニューから「Update」を選択して最新バージョンにしておきましょう。
その後は、「Advanced Options」を選んで「Boot Order」を選択して下さい。ここで「USB Boot」を選択して、メニューを辿ってraspi-configを終了させます。
後はシャットダウンをしてSDカードを抜いてから起動すると、SSDで起動します。SDカードを入れたままだと、そちらから起動するので注意です。
これでSSDブートの設定は完了です。
計測してみた
ddコマンドというデータの書き込み等を行うコマンドを使って、どれくらい早くなったのかを計測しました。
SDカードブート時
$ dd if=/dev/zero of=./dd.tmp ibs=1M obs=1M count=1024 status=progress
1032847360 bytes (1.0 GB, 985 MiB) copied, 55 s, 18.8 MB/s
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 55.7949 s, 19.2 MB/s
SSDブート時
$ dd if=/dev/zero of=./dd.tmp ibs=1M obs=1M count=1024 status=progress
1037041664 bytes (1.0 GB, 989 MiB) copied, 6 s, 173 MB/s
1024+0 レコード入力
1024+0 レコード出力
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.21621 s, 173 MB/s
ざっくり9倍位早くなりましたね。
起動も早くなったし、アプリもサクサク起動します。
CPU: 1.5 GHz クアッドコア Cortex-A72
メモリ: 8GB
SSD: 120GB
と、CPUはArmですが、スペックだけ見るとパソコンと言って良いレベル!(Armがダメってわけではないですよ。最近はMacもArm採用してますし。)
開発機としては十分なレベルじゃないでしょうか。皆さんの参考になれば嬉しいです!