#はじめに
プログラミングの学習を始めてから4ヶ月。pythonを使い、RaspberryPiでAI、IoTの技術を利用した高齢者見守りシステムを作ってみました。
制作の過程を、何回かに分けてまとめていきます。
今回は、RaspberryPiの初期設定のうちの、OSのインストールと、初期起動前の設定変更についてまとめます。
#使用機材
- PC
- MacBook Pro 16
- 2.3 GHz 8コアIntel Core i9
- 16 GB 2667 MHz DDR4
- macOS Big Sur ver.11.0.1
- メモリリーダーライタ
- ELECOM MR-A39NWHF1
- 変換ケーブル
- Apple USB-C - USBアダプタ
- microSDカード
- SanDisk
- microSDXC UHS-I カード
- 128GB
#RaspberryPiの初期設定
RaspberryPiにキーボードやディスプレイなどを接続せず、PCと無線LANで接続してPCから操作できるように設定します。
RaspberryPiの初期設定は、**ゆうさんのブログ sukiburo**で非常に丁寧に説明されており、参考にして実施しました。
ここに書きました一連の作業はPCで実施します。これらの作業の間は、microSDカードをRaspberryPiには挿入しません。
###Raspberry Pi OSのインストール
sukiburoでは、OSをRaspberryPi公式サイトからダウンロードし、マニュアルでmicroSDカードに書き込む方法が説明されています。この通りにやれば問題なくOSのインストールができるのですが、ここではRaspberry Pi Imagerを使ってインストールする方法を試してみます。
この方法では、事前にOSをダウンドードしたり、microSDカードをフォーマットする必要はありません。
まず、RaspberryPi公式サイトからmacOS用のPaspberry PI Imagerをダウンロードし、PCにインストールします。
詳細手順
>[RaspberryPi公式サイト](https://www.raspberrypi.org/software/)の**Download for macOS**をクリックすると、インストーラー "imager_1.4.dmg"のダウンロードが開始されます。
![RaspberryPiOS_install1 2020-12-04 14.02.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/47e43f03-42eb-b39d-89bd-2fdeae8156b3.png)
ダウンロードが完了したら、保存されたファイル**imager_1.4.dmg**をダブルクリックし、アプリケーションをPCにインストールします。
下記のウインドウが表示されたら、左側のラズベリーのアイコンを、右側のフォルダーのアイコン上にドラッグ&ドロップすればインストールは完了。Launchpadから**Paspberry PI Imager**を起動できるようになります。(インストーラ**imager_1.4.dmg**は削除して問題ありません。)
![raspberrypiimagerインストール 2020-12-04 14.41.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/2c32ca65-8558-c6a6-08b7-58ed62adcade.png)
準備ができたので、Paspberry PI Imagerを使って、microSDカードにraspberryPi OSをインストールします。
詳細手順
>インターネットアクセス可能なPCに接続されたmicroSDカードライターのスロットに、microSDカードを挿入します。
次に、Launchpadで**Paspberry PI Imager**のアイコンをクリックし、**Paspberry PI Imager**を起動します。
下記のウインドウが表示されたら、**CHOOSE OS**をクリックします。
![raspberrypiimage起動画面 2020-12-04 15.48.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/57187fc6-31e5-ca7a-f2f9-1df7a9626e0c.png)
下記のOS選択ウィンドウが表示されますので、**Raspberry Pi OS(32-bit)**をクリックします。
![raspberrypiimage_OS選択 2020-12-04 14.57.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/d7b5fd22-29a2-d089-01b1-56388371fee3.png)
OSを選択すると下記のウインドウが表示されますので、**CHOOSE SD CARD**をクリックします。
![raspberryPiimager_OS選択後 2020-12-07 17.55.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/93764886-1928-0cc6-4ad8-1ccee8b17edf.png)
下記のウインドウが表示されますので、使用するSDカードをクリックします。
![raspberrypiimage_SDカード選択 2020-12-04 14.58.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/d78a7912-c08a-c444-f0b4-eb3fe3f4bc75.png)
OSとSDカードの選択が完了すると、下記のウインドウが表示され、OSの書き込みが開始可能となります。
選択したOS、SDカードに間違いがなければ、**WRITE**をクリックします。
![raspberrypiimage画面 2020-12-04 16.00.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/303d67b5-9504-83df-f2d9-e78c20149d4f.png)
microSDカード上の全てのデータが消去されることを確認すウインドウが表示されるので、問題なければ**YES**をクリックします。
![raspberrypiimage確認画面 2020-12-04 16.02.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/d9a9bede-3a50-51eb-ec49-908a9ab9295f.png)
下記のウインドウが表示され、microSDカードへのOSの書き込みが開始されます。
![raspberrypiimage_書き込み 2020-12-04 16.06.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/1ad37054-5fe2-74bc-b0c9-2dcd7e8e62aa.png)
OSの書き込みが完了すると、自動的にVerifyを開始します。
![raspberrypiimager_verify 2020-12-04 16.26.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/1106ef2b-57e4-3ec7-080a-3b9a77bb6aff.png)
verifyが完了すると下記のウインドウが表示されます。**CONTINUE**をクリックすると、ウインドウが閉じ、OSのインストールが完了します。
筆者が実施した環境では、OSの書き込み開始からVerifyの完了まで、25分程度かかりました。
![raspberrypiimager_finish 2020-12-04 16.28.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/343e6aad-827c-91f6-675f-376e3401bee2.png)
###SSHの有効化
次に、安全に(=他人が勝手にRaspberryPiを操作したり、PCとRaspberryPiとの間の通信を盗聴することを防ぎつつ)、PCからネットワークを経由してRaspberryPiにログインして操作を可能にするために、SSH(Secure Shell)を有効にします。
OSをインストールしたmicroSDカードのrootに、SSHという名前の空のファイルを作成すると、SSHが有効になります。
詳細手順
>ファイルの作成には、Linuxコマンドの**touch**を使用します。Launchpadからターミナルを起動し、`touch /volumes/【microSDカード rootディレクトリ名】/ssh`と入力します。【microSDカード rootディレクトリ名】の部分は、**Finder**でドライブを表示したときに表示されるmicroSDカードのドライブ名です。
![Finder_ドライブ選択 2020-12-07 18.23.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/1248ff56-d5f4-88dd-5efa-79f77e703174.png)
###無線LANの設定
RaspberryPiを無線LANに接続するために、OSをインストールしたmicroSDカードのrootに、wpa_supplicant.confという名前の設定ファイルを作成します。
作成したwpa_supplicant.confには、下記のコードを書き込みます。
wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="SSID"
psk="PIN"
}
上記コード中のSSIDの部分は使用する無線LAN環境のSSID、PINの部分は使用する無線LAN環境のPINとします。
上記コードで、ssidとpskのダブルコーテーション(")が全角になっていたため、コピーして使用しても正常に動作しませんでした。(2021/1/28 修正)。
詳細手順
>ファイルの作成には、macのターミナル上で標準で使用できるテキストエディター **viエディター**を使用します。
Launchpadからターミナルを起動し、`vi /volumes/【microSDカード rootディレクトリ名】/wpa_supplicant.conf`と入力すると、viエディター上でwpa_supplicant.confという名前の新しいファイルが開きます(【microSDカード rootディレクトリ名】の部分は、SSHの有効化のときと同様に、**Finder**でドライブを表示したときに表示されるmicroSDカードのドライブ名です)。
![vi_起動 2020-12-10 15.47.12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/02ce4e0b-6391-db88-d11b-fd9e0e7fbc51.png)
![vi_起動直後 2020-12-10 15.47.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/5cb17dbc-1ecd-fb37-4dc4-55e31ea6b572.png)
次に、使用する無線LANに接続するための情報を書き込みます。
上記の**wpa_supplicant.conf**に書き込むコードを、そのまま(**SSID**、**PIN**の部分も変更せず)コピーします。
viエディターを開いたターミナルのウインドウ上にマウスポインタを移動し、トラックパッドを副ボタンクリック(2本指のクリック)してペーストを選択すれば、コードが入力できます。
![vi_ペースト後 2020-12-10 15.50.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/3ca204e8-bc4a-64ef-23a3-0b966afe958a.png)
次に、使用する無線LANの環境に合わせて編集します。コードの**SSID**と**PIN**の部分を、使用する無線LANのSSIDとPINに書き換えます。
viエディターでは、文字を消去するときは、カーソルを消去したい文字上に移動して**x**を入力します。**SSID**の部分を書き換えるためには、まず矢印キーを使用してカーソルを**SSID**先頭の**S**の位置に移動します。この状態で、**x**キーを4回押すと、**SSID**が削除されます。
![vi_ssidカーソル移動 2020-12-10 15.50.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/f7ce0370-310d-bc69-5ab0-0a59888124ff.png)
![vi_ssid削除 2020-12-10 15.50.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/c4c067dc-eda2-0978-bdfd-aed66eb51a68.png)
次に、使用する無線LAN環境のSSIDを入力します。viエディターで文字を入力する際は、入力したい位置へカーソルを移動した後、**i**キーを押して挿入モードに変更します。この状態で、キーボードから入力した文字が、カーソルの位置に挿入されます。
![vi_ssid挿入モード 2020-12-10 15.51.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/64599a6a-eefd-1422-9f2d-38c923431efe.png)
![vi_ssid入力 2020-12-10 15.51.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/ecc6ab3c-4a88-2382-143d-ab79de34c4b5.png)
入力が完了したら、escキーを押下すれば挿入モードが終了し、入力した内容が確定します。
![vi_ssid確定 2020-12-10 15.52.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/f2e9c9f7-b0f6-fbdc-6362-5a22289f90fb.png)
同様に、カーソルを**PIN**の先頭の**P**の位置に移動し、使用する無線LAN環境のPINに書き換えます。
![vi_pin入力確定 2020-12-10 15.53.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/92a13646-51a1-f6dc-49bd-cac4c54c3539.png)
PINの書き換えが完了したら、キーボードから『:』(コロン)、『w』、『q』、『↩︎』(リターン)の順に入力すると、編集した内容が保存され、viエディターが終了します(このとき、カーソルを移動させる必要はありません)。
![vi_保存終了 2020-12-10 15.53.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/e9ee093d-1b74-f9be-aa74-ba21084b882c.png)
Linuxコマンドの**cat**を使用すると、作成したwpa_supplicant.confの内容を確認できます。ターミナルで、`cat /volumes/【microSDカード rootディレクトリ名】/wpa_supplicant.conf`と入力します(【microSDカード rootディレクトリ名】の部分は、**Finder**でドライブを表示したときに表示されるmicroSDカードのドライブ名です)。
![cat 2020-12-10 15.56.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/f690fafb-322d-b8ed-f6ab-64a75c1cfae1.png)
###画面出力設定
RaspberryPi OSは、標準の設定ではHDMIでディスプレイを接続していないと、PCからリモートデスクトップ接続してもRaspberryPiの画面が表示されずにエラーとなってしまいます。ディスプレイを接続していないRaspberryPiへのリモートデスクトップ接続でRaspberryPiの画面をPCに表示できるよう、設定を変更します。
OSをインストールしたmicroSDカードのrootにあるconfig.txtを編集することで、設定が変更できます。
config.txtの中でコメントアウトされている# hdmi_force_hotplug=1
という設定を有効にすることで、リモートデスクトップ接続しているPCでRaspberryPiの画面を表示できるようになります。
詳細手順
>
1. ターミナルで、`vi /volumes/【microSDカード rootディレクトリ名】/config.txt`と入力し、viエディター上で**config.txt**を開きます(【microSDカード rootディレクトリ名】の部分は、**Finder**でドライブを表示したときに表示されるmicroSDカードのドライブ名です)。
2. 矢印キーでカーソルを、```# hdmi_force_hotplug=1```の**#**の上に移動します。
![vi_config修正 2020-12-09 19.05.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/679257/13196056-56f5-0aef-084d-ec7fa7c1ede8.png)
3. xキーを押下します。(**#**が削除されます。)
4. キーボードから『:』(コロン)、『w』、『q』、『↩︎』(リターン)の順に入力します。(変更が保存され、viエディターが終了します。)
5. ターミナルで、`cat /volumes/【microSDカード rootディレクトリ名】/config.txt`と入力すれば、**config.txt**の内容が表示され、変更が行われていることを確認できます(【microSDカード rootディレクトリ名】の部分は、**Finder**でドライブを表示したときに表示されるmicroSDカードのドライブ名です)。
これで、OSのインストールと、RaspberryPi初期起動前の設定変更は完了です。
#参考
今回の作業の実施にあたり、下記を参考にいたしました。
- Raspberry PI OSのインストール、SSHの有効化、無線LANの設定
- Raspberry Pi OS (公式サイト)
- sukiburo ラズパイ(raspberry pi)の初期設定をするよ(win/mac対応)
- 画面出力設定
- Developers.IO Raspberry Pi 4にSSHとVNCで接続してみた
#関連投稿
RaspberryPi 4BでAI、RaspberryPi 4BでIoT(まえがき)
RaspberryPi 4BでAI、RaspberryPi 4BでIoT(システム概要)
RaspberryPi 4BでAI、RaspberryPi 4BでIoT(開発環境)
#おわりに
プログラミング初心者のため、誤りが多々あると思います。アドバイス、励ましのコメントなどいただけると嬉しいです。