Raspberry Pi 4をキーボードなし，ディスプレイ無しで初期設定【Raspberry Pi】

## ゴール
Raspberry PiにOSをインストールし，OSが起動できる段階までのチュートリアルです．
キーボード，ディスプレイが無くてもPCからSSH接続で初期設定ができます．

## 必要なもの
・Raspberry Pi 4B
・USB-C アダプタ及び充電器(5V,2A)
・micro SDカード（最低8GB）


## 注意事項
+ Raspberry Piの端子等はむき出しになっているため，直接触れると静電気によって壊れる可能性があります．端子や基盤表面には触れず，ケースを使うなど注意が必要です．
+ マイコンなどと違い，電源OFFにする際にはシステムのシャットダウンをする必要があります．いきなり電源端子等を抜かず，ターミナルでのコマンド```$ sudo shotdown -h now```またはスタートボタンからシャットダウンを行いましょう．
+ HDMIケーブルを接続する前に電源をONにすると，その後HDMIケーブルを接続しても認識されません．再起動が必要です．

## 手順
1. **OSインストール** micro SDカードにOSをダウンロードし，Raspberry Piにインストール
2. **各種設定** WiFiの設定やssh接続の設定
3. **VNC接続** Raspberry PiをPC画面から操作


##### 1. OSインストール
Raspberry PiのOSは数種類ありますが，スタンダードな"RASPBERRY PI OS(32-BIT)をインストールします．micro SDカードにOSをダウンロードし，それを読み込むことでインストールできます．
まずはOSインストールに必要な[Raspberry Pi Imager v1.4（2021年現在最新版）](https://www.raspberrypi.org/software/)をダウンロードします．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/993ec418-e3c0-b41a-1308-c79c245f5f87.png)

ダウンロードしたImagerソフトを起動し，OSをインストールするmicro SDカードをPCに挿入します．画面上から任意のOSとSDカードを選択し，"WRITE"を押すとインストールが始まります．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/879573d1-5d59-719b-7e7d-2aeb6a8d9fe1.png)
RASPBERRY PI OS(32-BIT)を選択し，実行します．ダウンロードには時間がかかります．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/2251d88a-3048-01f0-e984-936afbe88b67.png)
#### 2. 各種設定
ここでは，Raspberry Piの設定をローカルネットワーク経由で操作ができるようにsshとWiFiの初期設定を行います．micro SDカードのOSに直接書き込むので，外付けキーボード・ディスプレイは必要ありません．

##### ssh接続設定
sshとは，Secure Shellの略で，ネットワークに接続された機器を遠隔操作し管理するための手段です．ご自宅などのネットワークに接続されたPC（有線無線問わず）と，同じネットワークに存在するRaspberry Piを接続することができます．接続後にはPCからRaspberry PiをPC画面から操作するだけでなく，ファイルの送受信や編集が行えます．

インストールが完了したSDカードは自動的にPCから切断されているため再度スロットに入れなおし，OS起動時のSSH設定をおこないます．エクスプローラからSDカードのディレクトリへ移動し，テキストドキュメントの新規作成を行います．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/15061aa2-eba4-b1ea-681d-dedf9ce59484.png)
ファイル名をssh（拡張子なし）で保存します．この時警告のダイアログが出ますが無視します．
ファイルの中は空で大丈夫です．

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/f271aadf-64b2-5f5e-2f79-026421618985.png)

##### WiFi設定
sshのファイルを作成したときと同じディレクトリ内に，```wpa_supplicant.conf```という名前のファイルを作成します．先ほど同様にテキストファイルで作成し，拡張子を```.conf```に変更します．ファイルの内容は以下のようにし，SSIDとパスワードの部分を変更します．ダブルクオーテーションは必要です．

```shell:wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="WiFiのSSID"
    psk="Wi-Fiのパスワード"
    scan_ssid=1
}
```

以上の設定が終わったらRaspberry Pi本体にmicro SDカードを入れ，電源を起動します．

#### 動作確認

初回起動時には時間がかかるため，3~5分程度待ちます．
その後，PCのコマンドプロンプトから以下のコマンドを入力し，パスワードを入力します．Raspberry Piのデフォルトアカウント名はpi，パスワードはraspberryとなっています．
コマンドの意味としてはsshコマンドで，raspberrypi.localというホストに存在するアカウントpiにログインするという内容です．

```shell:terminal(PC)
ssh pi@raspberrypi.local

#パスワードの前に以下の内容が聞かれた場合にはyesとEnterキーを入力します．
The authenticity of host 'raspberrypi.local (---)' can't be established.
ECDSA key fingerprint is ---.
Are you sure you want to continue connecting (yes/no)? yes

#パスワードが聞かれます．
pi@raspberrypi.local's password:
```

以上で接続が行えればssh及びWiFiの設定は成功です．


#### 固定IPアドレス設定

https://mugeek.hatenablog.com/entry/2019/05/27/230256

#### VNC仮想ディスプレイ接続
ここまでで，コマンドによってRaspberry Piを操作できるようにはなっています．Raspberry Pi OSのグラフィカルユーザーインターフェース（GUI）からマウスで操作できるようにするには①HDMIケーブルで外付けディスプレイに接続，②VNCというソフトを使用してPC画面から操作，という二つの方法があります．今回は外部ディスプレイを使用せず，VNCによる方法を紹介します．

VNCとは，ネットワークを通じて接続された他のコンピューターの画面を遠隔操作するソフトウェアのことです．このソフトを使うためRaspberry Pi，PCの両者の設定が必要です．

#### Raspberry Piファームウェアを最新のものにアップデートします．

```shel:terminal
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
```
"upgrade"はパッケージ構成を変えない範囲でアップグレードする処理を実行します．
"dist-upgrade"はパッケージ構成の変更に追随してアップグレードする処理を実行します．

#### VNCの準備
VNCのインストールおよび，VNCの有効化を行います．
以下のコマンドを入力します．

```shel:terminal
#Raspberry Pi OSを選択した場合にはインストールは必要ありません．有効化のみ行ってください．
$ sudo apt-get install realvnc-vnc-server
#有効化
$ sudo raspi-config
```

2番目のコマンド入力後，コマンドプロンプトに以下のGUIが表示されます．
```3 Interface Options```を選択します．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/4ecd2154-e461-ca90-e600-8f0ce8022365.png)
```P2 VNC```を選択肢，VNCの有効化を行います．
VNCの設定からenabledに変更することで仮想ディスプレイの接続が行えるようになります．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/193dcffb-9787-be6a-6282-eaf957c56fd9.png)
下の画面が表示されればVNCは有効化できました．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/43c3a731-79a5-03f8-0c6a-61874e5bca5c.png)

####ディスプレイ設定
VNCでRaspberry Piの画面を表示する際のディスプレイサイズを設定します．
再度コンフィグの画面を開きます．閉じてしまった場合は```sudo raspi-config```のコマンドでもう一度開きます．
```2 Display Options```を選択します．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/fa5537d0-fdae-e6ac-75a8-633eff46817d.png)
```D1 Resolution```を選択します．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/23a7a95f-5fcd-8f72-525e-a20de2b85edb.png)
画面解像度の選択ができます．PCに表示したいサイズ（FHDの場合は1920*1080推奨です）を選択します．後からも同じ方法で選択ができます．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/cb632a84-0e10-3a2c-8cc5-089472189b97.png)

####VNCのインストール（PC操作）
VNC接続にはReal VNC viewerというソフトを使います．[こちら](https://www.realvnc.com/en/connect/download/viewer/)からダウンロードできます．
Real VNC viewerを起動し，新規接続から先ほど調べたローカルアドレスに接続を行います．
ssh接続しているRaspberry Piのターミナルに``ifconfig```コマンドを入力しアドレスを調べます．
wlan0の項目にあるinetにあるアドレスがローカルアドレスとなります．
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/969489/ae4ee89a-e685-c12e-f0de-525c8810935e.png)
アドレス入力して接続ボタンを押せばRaspberry Piの画面が表示されます．
初回起動時に警告が出たらContinueで大丈夫です．

お疲れさまでした．