Raspberry Pi 4 BをMacbook Airで初期設定する

#はじめに
はじめまして、ゆーじです。ニューヨークでSEをやる予定の新卒です。
今回がQiita初投稿です！

本記事ではRaspberry pi 4Bをモニター、マウス、キーボード、LANケーブル**全て無し**で初期設定をし、Macbook AirからSSHとVNC接続をします。

#環境情報
##Macbook Air
| 項目 | 内容 |
|:--|:--|
|モデル|MacBook Air(13-inch, Early 2015)|
| OS | macOS Catalina 10.15.4  |
| プロセッサ  | 1.6 GHz デュアルコアIntel Core i5  |
|  メモリ |  8 GB 1600 MHz DDR3 |

##Raspberry Pi 4
 項目 | 内容 |
|:--|:--|
|モデル|Raspberry Pi 4 Model B|
| OS | Raspberry Pi OS  |
| SDカード  | SanDisk microSD 32GB SDSQUAR-032G-EPK |

#Raspberry Pi OSをSDカードに書き込む
[Raspberry Pi Imager](raspberrypi.org/downloads/)でmicroSDカードにRaspberry Pi OSを書き込みます。
Raspberry Pi ImagerをMacbook Airにインストール後、SDカードを挿します。
Raspberry Pi Imagerを起動し、以下の画面で、Raspberry PiのOSとSDカードを選択します。
![スクリーンショット 2020-07-20 17.45.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/4c7ae73b-408c-3e00-c039-cffb0a3175f5.png)
今回はRaspberry Pi OS (32-bit)を書き込みます。
![スクリーンショット 2020-07-20 17.46.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/d2ad0377-4a0f-1782-1970-a095b5e899d9.png)
SDカードを選択後、"WRITE"をクリックし、SDカードにOSを書き込みます。

#OSイメージの編集
SDカードにOSを書き込んだ後は、SSHを有効化し（OS書き込み段階では無効化されているため）、Raspberry Piが初めからWi-Fiに接続できるように、OSイメージを編集します。
両方の作業をMacbookの「**ターミナル**」を使って行います。

##SSHの有効化
「**ターミナル**」を開きます。
以下のように`boot`ディレクトリ直下に`ssh`という名前の空ファイルを作成します。

```
touch /Volumes/boot/ssh
```
これでSSHを有効化できます。
##Wi-Fiの有効化
SSHの有効化同様、「**ターミナル**」を使い、Wi-Fiを有効化します。
今回は`boot`ディレクトリ 直下に`wpa_supplicant.conf`というファイルを作成します。このファイルには何行か書き込むので以下のように`nano`コマンドを使います。

```
nano /Volumes/boot/wpa_supplicant.conf
```
こうすると以下のような画面が開きます。
![スクリーンショット 2020-07-20 19.20.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/42f233bb-5e60-cc01-ea7e-28f09c06ee36.png)
ここに以下を入力します。
SSIDとpsk(Wi-Fiのパスワード)は自分のネット環境に合わせて入力します。

```
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
country=JP
update_config=1

network={
    ssid="Wi-FiのSSID"
    psk="Wi-Fiのパスワード"
}
```
![wpa_supplicant.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/e8896eb3-485a-5bff-95a1-f5a04148bb92.png)

「**control**」と「**o**」を同時に押して、次に「**Enter**」を押して、書き込んだ内容を保存します。これでWi-Fi設定は完了です。

#Raspberry PiにSSHで接続
SDカードの準備が終わったので、SDカードをRaspberry Piに挿入し、電源を入れます（１分ほど待ちます）
「**ターミナル**」の`ssh`コマンドでRaspberry Piに接続します。Raspberry Piのデフォルト設定は以下です。

* ホスト名：raspberrypi.local
* ユーザー名：pi
* パスワード：raspberry

```
ssh pi@raspberrypi.local
```

以下のような画面になれば、SSH接続できていることになります。
![スクリーンショット 2020-07-21 23.20.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/aa980023-a66b-401e-0b4c-74c9653783d4.png)

#Raspberry PiにVNC接続
##Raspberry Pi側での準備
SSH接続をすることによって、Raspberry Piの「**ターミナル**」にMacbook Airの「**ターミナル**」からアクセスできるようになりました。
VNC接続をするために、SSH接続を維持しながら、`raspi-config`でいくつかRaspberry Piのソフトウエアの設定を変更します。

まず、以下のコマンドを打ちます。

```
sudo raspi-config
```
そうすると以下の`raspi-config`のメイン画面が出てきます。
![スクリーンショット 2020-07-21 23.38.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/d1a6d48e-2331-5cb3-be59-710af597b025.png)

###VNCサーバーの有効化
`raspi-config`のメイン画面から：
1. 5 Interfacing Options
2. P3 VNC
3. < Yes >
の順に選択します。
![スクリーンショット 2020-07-21 23.39.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/c255dd1a-da1a-300a-6971-d4b23993901f.png)
![スクリーンショット 2020-07-21 23.39.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/c6ceb28f-3381-1745-7e31-59d1906e75b8.png)
![スクリーンショット 2020-07-21 23.39.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/66a99f63-b986-e548-2416-ced39a3a212b.png)

###Raspberry Piのboot時にオートログインする設定
`raspi-config`のメイン画面から
1. 3 Boot Options
2. B1 Desktop / CLI
3. B4 Desktop Autologin
の順に選択します。
![スクリーンショット 2020-07-21 23.39.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/855b5c03-bd36-e46b-b6ad-fd5eee6b8de4.png)
![スクリーンショット 2020-07-21 23.40.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/f7c28f98-806f-0d48-a7f0-fe5a22dd30a7.png)
![スクリーンショット 2020-07-21 23.40.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/48283668-2c14-88d2-3a7c-717f0cbb9bd2.png)

###Raspberry Piのデスクトップのサイズ設定
`raspi-config`のメイン画面から：
1. 7 Advanced Options
2. A5 Resolution
の順で選択します。
![スクリーンショット 2020-07-21 23.40.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/2a5231ac-6209-9d5d-257f-ff220540e430.png)
![スクリーンショット 2020-07-21 23.40.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/8263273b-3618-81d1-bc1e-1b0980421ec7.png)
以下の画面になったら、好みのサイズを選択します。
![スクリーンショット 2020-07-21 23.48.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/8f797301-e152-65bf-d3e9-65f15e2e8a2a.png)

上記の3つの変更後、Raspberry Piの再起動をして、変更を反映させます。
![スクリーンショット 2020-07-21 23.56.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/c40e7655-e378-a180-00bf-e0925e120ce7.png)

これでVNC接続のためのRaspberry Pi側の準備は完了です。

##VNC接続
VNC用のアプリとして[VNC Viewer](https://www.realvnc.com/en/connect/download/viewer/)をMacbook Airにインストールします。

アプリを開いた後、「raspberrypi.local」をホスト名として入力します。
![スクリーンショット 2020-07-22 0.02.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/65797feb-6e8d-7bd6-2fb4-b74194427732.png)

「VNC Server not recognized」（過去にVNC Viewerを使って接続したことのないホストに接続しようとしている）警告が出ても「**Continue**」で進みます。

次に以下の情報でユーザー認証します。

* ユーザー名：pi
* パスワード：raspberry

![スクリーンショット 2020-07-22 0.03.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/db67c4ea-23a4-1c2d-0da0-dcb456cde1eb.png)

以下の画面になればVNC接続は成功です！
![スクリーンショット 2020-07-22 0.03.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/5a610803-805d-d6fd-7b73-37c144c78e8d.png)

（初めてVNC接続した場合、パスワードの変更や時間・場所設定などの初期設定を行っていき、再起動します。）

#最後に
思ったよりあっという間に設定できました。今後は今回セットアップしたRaspberry Piを使って、いろいろなプロジェクトをやっていきたいと思います！

#おまけ
##SSHができない時
過去に違うRaspberry PiにSSHをしたことがあったため、最初は以下のようなエラー画面になりました。
![スクリーンショット 2020-07-20 18.05.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677036/f207224e-9460-8e5e-a262-85a3cc471429.png)
対処法として、以下のコマンドを使ってMacbook Airに既に登録されていたknown hostsからraspberrypi.localに対するキーを取り除きました。

```
ssh-keygen -R raspberrypi.local
```

##Raspberry PiのIPアドレス
```
ping raspberrypi.local
```
このコマンドでMacbook Airの「**ターミナル**」からRaspberry PiのIPアドレスがわかります。


#参考資料

* [Raspberry Pi 4にSSHとVNCで接続してみた](https://dev.classmethod.jp/articles/raspberry-pi-4-ssh-vnc-remote/)
* [ラズパイ(raspberry pi)のセットアップをするよ(win/mac対応)](https://sukiburo.jp/setup-raspberry-pi/#OSSD)
* [ラズパイにSSH接続しようとした際にThe ECDSA host key for raspberrypi.local has changedが出た時の対処](https://qiita.com/takeru56/items/9f8a214d79812d91badc)