外付けディスプレイなしでラズパイ4セットアップ

Raspberry Pi 4をセットアップしたので、その手順を備忘録としてまとめます。

自宅Wi-FiをWPA2 Enterprise認証化(EAP-TLS認証)するにあたってRADIUSサーバー構築が必要になり、RADIUSサーバー運用のためにRaspberry Pi 4(以下、ラズパイ4もしくはラズパイ)をセットアップしました。

最初は「ラズパイのセットアップには、外付けディスプレイ(外部ディスプレイ)が必須」と思い込んでいて、「ノートパソコンしかもっていないのに、どうしよう?」と考えていたのですが、調べたところ、外付けディスプレイなしでセットアップする方法があることがわかり、その方法でセットアップを試みたところ、成功しました。

詳細は後述しますが、ラズパイに初回起動時からSSHでログインする方法があり、この方法を使うことで外付けディスプレイなしでも、他のパソコンからSSHでログインしてラズパイをセットアップすることが可能です。SSHでログインした際にVNCサーバーの有効化もできるので、外付けディスプレイなしでラズパイをセットアップして、さらにデスクトップ環境(GUI環境)にログインすることまで可能です。

1. ラズパイをセットアップする際に大事なこと
2. ラズパイを購入
3. マイクロSDカードを購入
4. マイクロSDカードに書き込み
5. ラズパイ起動
6. ラズパイのIPアドレスを調べる
7. ラズパイにSSHログイン
8. ラズパイ初期設定
9. SDカード延命化(1)
10. SDカード延命化(2)
11. SDカード延命化(3)
12. アップデート
13. (VNC接続時のみ)画面解像度変更
14. その他

1. ラズパイをセットアップする際に大事なこと

ラズパイは、ふつうのパソコン同様にLinux等のOSをインストールして使うことができ、その点ではパソコンに近いのですが、パソコンと大きな違いが1点あります。それは、「内蔵ストレージ(※1)がHDD/SSDではなく、マイクロSDカードであること」です。内蔵ストレージでは頻繁に読み書きが発生しますが、特に書き込みにおいて、マイクロSDカードにはHDD/SSDほどの耐久性はありません。「いかにして、マイクロSDカードを長持ちさせるか」が信頼性・耐久性の要となり、特にラズパイを自宅サーバーとして運用する際に重要となってきます。

ラズパイ4の最新のファームウェアではUSB接続のストレージ(USBマスストレージ)からの起動がサポートされているものの、USB接続のHDD/SSDを使うと、ラズパイの魅力のひとつである「手軽さ・気軽さ・値段の安さ」が失われることになりますので、「マイクロSDカードを長持ちさせる手法」が無駄にはなることはないです。

※1:情報工学的用語を使うと、二次記憶装置、補助記憶装置といいます。

2. ラズパイを購入

ラズパイの購入先として、以下のようなものがあげられます。

[定番ネットショップ]
RSオンライン
KSYショップ
スイッチサイエンス

[その他ショップ]
Amazon.co.jp(ネット)
千石電商(実店舗、ネット)
秋月電子(実店舗、ネット)

定番ネットショップには、正規代理店の3ショップをあげました。値段もこれらショップは安めです。秋葉原他に実店舗を構える千石電商、秋月電子は店頭在庫があればその場ですぐに買って持ち帰れるのは魅力であるものの、値段は若干高めです。

3. マイクロSDカードを購入

マイクロSDカードは、通常のマイクロSDカードではなく、「ドライブレコーダー用マイクロSDカード」として売られているものを購入するのがオススメです。値段も通常のマイクロSDカードと比べて若干高めであるものの、まったく手が出ないような価格ではなく、十分現実的で手が届く値段です。

ドライブレコーダー用マイクロSDカードは、ドライブレコーダーでの長時間連続書き込みを想定して耐久性が高められており、ラズパイの内蔵ストレージとして使うのに、通常のマイクロSDカードよりも好適です。

さらに耐久性を求めるのであれば、「産業用マイクロSDカード」を使うという選択肢もあるものの、産業用製品となるとかなり割高になり、そこにお金を使うよりは、マイクロSDカードは消耗品と割り切ってドライブレコーダー用マイクロSDカードを使い、マイクロSDカードの調子が悪くなった時もしくは定期的にマイクロSDカードを交換する方が、ラズパイを自宅サーバーとして運用するのであれば現実的かと思います。

容量についてはラズパイの用途によって様々と思いますので毛流麦花の実例を紹介します。RADIUSサーバーとして運用するラズパイ(OSはRaspberry Pi OS Lite)には32GB、デスクトップ環境を使うラズパイ(OSはRaspberry Pi OS Full)については64GBを購入しました。

ドライブレコーダー用マイクロSDカードはAmazonで購入できますが、マイクロSDカードは偽物が多数流通していると言われており、偽物をつかまされることのないよう、Amazon.co.jpが販売・発送しているものを購入するようにしましょう。ちなみに毛流麦花は、SanDiskのマイクロSDカードを購入しました。SAMSUNGやTranscendのものよりも安く、「SanDiskの正規品であれば大丈夫だろう」という安心感があったためです。

以下、余談です。本記事を書くためにあらためてAmazonで調査したところ、Transcendの産業用マイクロSDカードがリーズナブルな値段で、しかもTBWが明記されていて、非常によさそうです。次回購入時に試してみたいです。

比較用に、TranscendのSLC(正確にはTLCのSLCモード)搭載マイクロSDカードも載せておきます。値段はドライブレコーダー用マイクロSDカードの4〜5倍もするものの、TBWが桁違いです。ただし読み出し/書込み速度があまり速くないので、ラズパイで使うのにはやや不向きかもしれません。

4. マイクロSDカードに書き込み

マイクロSDカードへのOS書き込みについては、Raspberry Pi公式ツールであるRaspberry Pi Imagerの利用がオススメです。

OSを選び、SDカードを選び、WRITEボタンを押すだけです。OSは、Raspberry Pi OS(旧称 Raspbian)がオススメです。

なお、64GB以上のマイクロSDカードを使う場合は、OSを書き込む前に、Eraseを使ってFAT32でフォーマットし直す必要があります。(OSの一覧の下の方にEraseがあります。)ラズパイがexFATでフォーマットされたマイクロSDカードからの起動に対応していないためです。

OS書き込み完了後、マイクロSDカードのルートディレクトリにファイル名がsshというファイルを作ります。中身は空でよく、拡張子は不要(※2)です。テキストエディタを開き、ファイル名をsshにして保存して作っても良いし、MacOSやLinux等Unix由来のOSを使っているのであれば、以下のようにtouchコマンドを使って作ることもできます。

(1)マイクロSDカードをパソコンの該当スロットに挿入する、もしくは挿入したカードリーダーをパソコンにつなぐ。

(2)以下のコマンドを実行する。
$ df

(3)表示された内容を見て、マイクロSDカードのマウントされたディレクトリ(Mounted onの項)を調べる。

(4)以下のコマンドを実行する。
$ cd (マイクロSDカードのマウントされたディレクトリ)
$ touch ./ssh

※2: 拡張子なしでの保存ができないWindowsのメモ帳を考慮して、ssh.txtでも大丈夫という話を聞いたことがありますが、毛流麦花は試したことがなく、真偽はわかりません。

5. ラズパイ起動

OSを書き込んだマイクロSDカードをラズパイ4のマイクロSDカードスロットに挿入します(※3)。さらにLANケーブルもつなぎますが、パソコンからSSHでログインするので、パソコンと同じセグメント内(同じネットワークアドレス内)でつなぐのが無難です(※4)。USB-Cコネクタの給電ポートにACアダプタをさして、ラズパイを起動させます。

※3: マイクロSDカードをラズパイ4のスロットに挿入しても、カチッとロックがかかりませんが、それで正常です。ちなみに抜く時は、押してもイジェクトされることはないので、ゆっくりと丁寧に引き抜きます。

※4: ちなみにセットアップ時に有線LAN(Ethernet)ではなく無線LAN(Wi-Fi)につなぐ方法もありますが、本記事では割愛します。

6. ラズパイのIPアドレスを調べる

ラズパイのネットワークインターフェース(Ethernet)は初期設定では、DHCPでIPアドレスを取得するようになっています。ラズパイにSSHでログインするために、このIPアドレスを調べる必要があります。ラズパイのIPアドレスを調べる方法は複数あるものの、一番確実なのは、DHCPサーバーでのIPアドレスのリース状況を見て、該当するIPアドレスを調べる方法です。

毛流麦花はDHCPサーバーが稼働しているルーターにログインして、ラズパイのIPアドレスを調べました。

7. ラズパイにSSHログイン

パソコンからラズパイに、以下のようにしてSSHでログインします。初期パスワードはraspberryです。

$ ssh pi@ラズパイのIPアドレス

Windowsについては、Windows10(1803)以降であればデフォルトでSSHクライアントが有効になっており、コマンドプロンプトからSSHを直接利用可能です。

8. ラズパイ初期設定

以下のようにして、ラズパイの設定を開始します。

$ sudo raspi-config

(1)全般

・(必須)「Change User Password」でUser ID「Pi」のパスワードを変更します。

(2)Network Options

・(2台目以降のラズパイをセットアップする時に推奨)「Hostname」でホスト名を変更します。

(3)Boot Options

・(推奨)「Desktop/CLI」でデスクトップ環境で起動するのか、CUI環境で起動するのかを選択します。

(4)Localisation Options

・(必須)「Change Locale」で日本語(ja_JP)を有効にし、「Change Time Zone」でタイムゾーンをAsia→Tokyoにします。

(5)Interfacing Options

・(VNC接続をする場合必須)パソコンからラズパイにVNC接続をしたい場合は、「VNC」でラズパイのVNCサーバーを有効にします。

(6)Advanced Options

・(必須)「Expand Filesystem」全容量すべてFAT32でフォーマットされているマイクロSDカードについて、FAT32でフォーマットされたパーティションのサイズを縮小して、残りをext4フォーマットに変換します。
・(VNC接続をする場合必須)「Resolution」画面解像度を選択します。ここで画面解像度を選択しないでVNC接続をしようとすると、「Cannot currently show the desktop」のエラーメッセージが出るので、忘れずに画面解像度を選択しましょう。
・(SSH接続専用にする場合推奨)「Memory Split」メインメモリ(RAM)からGPUに割り当てる容量を指定します。デスクトップ環境を一切使わず(もしくはデスクトップ環境自体をインストールせず)SSH接続専用にする場合は、GPUに割り当てる容量を最小にすることで、メインメモリ(RAM)として使える容量を少しであるものの増やすことができます。

設定完了後、画面指示にしたがって再起動します。手動で再起動する場合は、以下のように入力します。

$ sudo shutdown -r now

9. SDカード延命化(1)

SDカード延命化のためには、ストレージへの書き込みを極力減らすことが要となります。この観点から、スワップファイル自体をなくしてしまいます。ラズパイ4は最大で8GBのメインメモリ容量があり、自宅でRADIUSサーバーとして稼働させる場合はたいしてメモリを使いませんので、スワップファイル自体をなくしても問題ないと判断しました。以下のようにコマンドを実行して、スワップファイル自体をなくしてしまいます。

$ sudo swapoff --all
$ sudo apt-get remove dphys-swapfile
$ sudo rm /var/swap

10. SDカード延命化(2)

SDカード延命化のためには、ストレージへの書き込みを極力減らすことが要となりますが、どうしてもなくせない書き込みがあります。/tmpや/var/logなどへの書き込みです。書き込み自体をなくすことは困難なので、書き込み先をRAMディスク化して、マイクロSDカードへの書き込みを抑止します。

テキストエディタ(nanoやviなど)を使って、/etc/fstabファイルに以下の内容(4行)を追記します。なお、/etc/fstabは一般ユーザーでは編集できませんので、sudoコマンドを使ってテキストエディタを起動します。(/usr/local/var/logはFreeRADIUSのログの出力先として使われていたので、RAMディスク化しています。)

$ tail -n 4 /etc/fstab
tmpfs /tmp tmpfs defaults,size=128m,noatime,mode=1777 0 0
tmpfs /var/tmp tmpfs defaults,size=128m,noatime,mode=1777 0 0
tmpfs /var/log tmpfs defaults,size=128m,noatime,mode=0755 0 0
tmpfs /usr/local/var/log tmpfs defaults,size=128m,noatime,mode=0755 0 0

11. SDカード延命化(3)

ext4ファイルシステムで使われているジャーナリング機能は、突然の電源断によるファイルの不整合やファイルシステムの破損を抑止するのに有効であるものの、SDカードへの書き込み回数を増加させる要因になるので、ジャーナリング機能を止めてしまいます。ジャーナリング機能を止めた場合、突然の電源断によるファイル破損のリスクが高まるものの、自宅でRADIUSサーバーとして稼働させるのが主目的であり、ファイル破損のリスクよりもマイクロSDカード延命化の方を優先しました。

まず、ラズパイ4をシャットダウンの上、電源を抜いてから、マイクロSDカードを取り外し、パソコンで開きます。パソコンとしては、WSLを有効化したWindows10か、Linuxが稼働しているパソコンを使います。MacOSではHomebrewをインストールの上、別途該当パッケージをインストールする必要があり手間がかかります。(毛流麦花は最初MacOS上でやろうとしたものの、うまくいかず、結局Ubuntu上で実行しました。)

【以下、WSLを有効化したWindows10かLinux上で実行する】
(1)以下のコマンドを実行する。
$ df|head -n 1;df|grep rootfs

(2)上記コマンドの実行結果を見て、以下のものを控える。
① Filesystemの項目に表示された文字列(例:/dev/sd?2)
② Mounted Onの項目に表示された文字列(例:/media/????????/rootfs)

(3)以下のコマンドを実行する。
$ umount ②の文字列
$ sudo tune2fs -O ^has_journal ①の文字列
$ sudo e2fsck -f ①の文字列

(4)ファイル管理ソフト(Windows10であればエクスプローラー、Linuxであればそれに該当するもの)を使って、マイクロSDカードを完全にイジェクト(アンマウント)してから、マイクロSDカードをパソコンから取り外す。

【以下、ラズパイ上で実行する】
(5)取り外したマイクロSDカードをラズパイに挿入して、ラズパイを起動する。

(6)ラズパイ上で以下のコマンドを実行する。
$ sudo tune2fs -l /dev/mmcblk0p2|grep features

(7)上記コマンドの実行結果内にhas_journalが含まれていなければジャーナリング無効化完了。

12. アップデート

以下のコマンドを実行して、OSやパッケージ類をアップデートをする。

$ sudo apt-get update
$ sudo apt full-upgrade -y
$ sudo apt autoremove -y

13. (VNC接続時のみ)画面解像度変更

パソコンにRealVNC Viewerソフトをインストールし、ラズパイのIPアドレスをViewerソフトのアドレスバーに入力すれば、ラズパイにVNC接続できます。

毛流麦花が試したところ最初は1024×768以外の解像度に変更できなかったものの、以下の方法で変更できました。

(1)Video options in config.txtを開き、hdmi_modeの項目の、hdmi_group=2(DST)の表を探す。

(2)設定したい画面解像度と周波数に対応するhdmi_modeの値を控える。

(3)テキストエディタを使って、/boot/config.txtを以下のように修正する。
hdmi_group=2
hdmi_mode=控えておいたhdmi_modeの値

(4)ラズパイを再起動する。

(5)ラズパイアイコン→設定→Screen Configurationをクリックする。

(6)起動したScreen Layout Editorで、Configure→Screens→HDMI-1→解像度→(目的の解像度)をクリックする。

(7)Screen Layout Editorで、Configure→適用をクリックする。

余談ですが、毛流麦花は最初「VNC接続は画面がカクカクする」ものと思い込んでいたので、半信半疑でVNC接続してみたところ、ネットワーク経由でVNC接続していることがわからないほど画面の動きがスムーズなのを見て、びっくりしました。ラズパイ、パソコン共に1Gbpsの有線LAN(Ethernet)で接続しており、RealVNC ViewerのInformation画面を見ると、VNCの通信で50Mbps〜80Mbps程度の帯域を使っているみたいです。動画を再生させても違和感がないほどで、「ここまで画面の動きがスムーズなら、ラズパイの利用はSSH接続もしくはVNC接続で十分」と思いました。外付けディスプレイを買うお金は、ラズパイの追加購入に回したよさそうです。

14. その他

外付けディスプレイ(外部ディスプレイ)なしでセットアップすることを一般に「ヘッドレス・セットアップ(Headless Setup)」と呼称しているので、「Raspberry Pi headless setup」で検索すると、よりたくさんの解説・事例を見つけられると思います。

スポンサーリンク

フォローする

スポンサーリンク