リモート接続のみでRaspberry pi をセットアップする

Raspberry piを弄ってみようと思ったものの、近年はすっかりMACノート生活が定着し、外部ディスプレイもUSBキーボードも手元にないため、リモートでRaspberry piのセットアップをしてみます。

## 環境
- Raspberry Pi 3 B+
- MicroSDカード
- MacBook Pro（Catalina）

## 作業手順
### 1.MicroSDカードをMacOSにマウントする。
MicroSDカードに事前にRasbianを入れておく。
（スターターキットを購入したので最初から入っていました。）
MicroSDカードをMacに接続すると、SDカードの中身が見える。

`/Volumes/boot`
### 2.SSH接続の設定
デフォルトではリモート接続がOFFになってるので、SSH接続の設定を行います。
MicroSDカードのルートであるbootにsshという空ファイルを置くことで、SSH接続が有効化されます。

```bash:MacOS
% touch /Volumes/boot/ssh
```
※Raspberry Piを起動後、このファイルは/bootからは削除されます。

### 3.Wi-Fiの設定
Raspberry Piと通信するために、Raspberry PiにWi-Fiの設定をします。
SSID(ssid)とパスワード(psk)を記述した以下の内容のwpa_supplicant.confファイルを、MicroSDのルートディレクトリ/bootに作成します。

```bash:MacOS
% vi /Volumes/boot/wpa_supplicant.conf
```

```bash:wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="XXXXXXXXXXXX"
    psk="00000000000000000000000000000000000000000000"
}
```
パスワードは、平文でも良いようですが、暗号化して記述します。
Raspberry Piでは、Wi−Fiパスワードはwpa_passphraseコマンドで256bit keyの暗号化をしますが、Macでは使えない。以下のサイトで変換してファイルを出力してくれるので、使わせてもらいました。

wpa_supplicant.conf作成
[https://mascii.github.io/wpa-supplicant-conf-tool/](https://mascii.github.io/wpa-supplicant-conf-tool/)

※Raspberry Piを起動後、このファイルは、/etc/wpa_supplicant/にコピーされ、/bootからは削除されます。

### 4.SSH接続
SSHでRaspberry Piに接続します。
MicroSDをRaspberry Piに挿入して電源を入れます。
OSが起動するとLEDが緑色に点灯します。1分程度
MacのTerminalでSSH接続します。
ホスト名は、***raspberrypi.local***
初期パスワードは、***raspberry***

```bash:MacOS
% ssh pi@raspberrypi.local
```
無事にRaspberry Piに接続されると、Mac Tarminalには以下のように表示されます。


```bash:Rasbian
pi@raspberrypi:~ $
```

### 5.VNC接続
Raspberry piには、デフォルトでRealVNCというVNCソフトが用意されていますが、MACの標準サービスで接続するには、色々と大変なようなので、MACと相性の良いtightvncserverをインストールします。
その前に、各種アップデートを行います。

（1）```sudo rpi-update```
（2）```sudo reboot```
Raspberry PiのファームウェアとOSのカーネルをバージョンアップします。

（3）```sudo apt update```
OSのパッケージを管理しているリストを更新します。

（4）```sudo apt dist-upgrade -y```
取得したパッケージリストからパッケージの更新をします。

（5）```sudo apt-get autoremove -y```
（6）```sudo apt-get autoclean```
不要ファイルを削除します。

（7）```sudo reboot```

```bash:Rasbian
pi@raspberrypi:~ $sudo rpi-update
pi@raspberrypi:~ $sudo reboot

pi@raspberrypi:~ $sudo apt update
pi@raspberrypi:~ $sudo apt dist-upgrade -y
pi@raspberrypi:~ $sudo apt-get autoremove -y
pi@raspberrypi:~ $sudo apt-get autoclean
pi@raspberrypi:~ $sudo reboot
```
tightvncserverをインストールします。

```bash:Rasbian
pi@raspberrypi:~ $sudo apt-get install tightvncserver
```
tightvncserverを起動します。
初回起動時、パスワードを設定します。

```bash:Rasbian
pi@raspberrypi:~ $sudo tightvncserver
```

tightvncserverの自動起動を設定をします。

```bash:Rasbian
pi@raspberrypi:~ $sudo vi /etc/init.d/vncboot
```
```bash:vncboot
#! /bin/sh

### BEGIN INIT INFO
# Provides: vncboot
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start VNC Server at boot time
# Description: Start VNC Server at boot time.
### END INIT INFO

# /etc/init.d/vncboot

USER=root
HOME=/root


export USER HOME

case "$1" in
    start)
        echo "Starting VNC Server"
        #Insert your favoured settings for a VNC session
        su $USER -c '/usr/bin/vncserver :1 -geometry 1440x900 -depth 24'
        ;;

    stop)
        echo "Stopping VNC Server"
        su $USER -c '/usr/bin/vncserver -kill :1'
        ;;

    *)
        echo "Usage: /etc/init.d/vncboot {start|stop}"
        exit 1
        ;;
esac

exit 0
```
上記解像度「1440x900」は、MacBook13インチに合わせています。
次に、実行権限を与え、自動起動の設定を行います。
最後に再起動します。

```bash:Rasbian
pi@raspberrypi:~ $sudo chmod 755 /etc/init.d/vncboot
pi@raspberrypi:~ $sudo update-rc.d vncboot defaults
pi@raspberrypi:~ $sudo reboot
```

自動起動の確認をします。
5901番ポートがLISTENされていれば起動しています。

```bash:Rasbian
pi@raspberrypi:~ $sudo netstat -nlt
稼働中のインターネット接続 (サーバのみ)
Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態       
tcp     0      0   0.0.0.0:5901         0.0.0.0:*             LISTEN     
tcp     0      0   0.0.0.0:6001         0.0.0.0:*             LISTEN     
tcp     0      0   0.0.0.0:22           0.0.0.0:*             LISTEN     
tcp6    0      0   :::22                :::*                  LISTEN     
```

MacからVNC接続をします。
Finderの移動タブから「サーバーへ接続」をクリックします。
<img width="222" alt="sc01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547906/a050e704-d827-2dec-b021-6b9828f194c8.png">

「サーバアドレス」の欄にvnc://IPアドレス（ホスト名）:ポート番号と入力して、接続します。
今回は、***vnc://raspberrypi.local:5901***と入力します。
<img width="506" alt="スクショ02.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547906/9af60d9b-adf4-87f2-690d-7ce360b485bd.png">

パスワード入力ダイアログがポップアップされるので、先ほど設定したパスワードを入力します。
<img width="432" alt="スクショ03.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547906/907d3efe-ce3e-a425-d961-f57a36624853.png">
認証が成功すると、画面共有が立ち上がってRaspbianの画面が表示されます。
<img width="1175" alt="スクショ04.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547906/0ddc4629-87c5-8f34-3956-af57eb61733b.png">