Raspberry Pi セットアップ

# はじめに

Raspberry Pi を購入してから、セットアップするまでの流れを整理します。

セットアップの対象は Raspberry Pi 4B です。

https://www.amazon.co.jp/Vemico-4GB%E3%83%A9%E3%82%BA%E3%83%99%E3%83%AA%E3%83%BC%E3%83%91%E3%82%A44b-%E3%83%A9%E3%82%BA%E3%83%91%E3%82%A4MicroSD%E3%82%AB%E3%83%BC%E3%83%8932GB-USB-Type-C-HDMI%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB%E3%83%A9%E3%82%A4%E3%83%B3/dp/B07ZRF5BC1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1YHEYKDY5LZ6V&keywords=Raspberry+Pi&qid=1654783902&s=computers&sprefix=raspberry+pi%2Ccomputers%2C145&sr=1-1-spons&psc=1&spLa=ZW5jcnlwdGVkUXVhbGlmaWVyPUEyMkxCMFhEWVlJTDFLJmVuY3J5cHRlZElkPUEwNDkwNTk2MTM5SDFENE5aQjI1MCZlbmNyeXB0ZWRBZElkPUEyRzZIVUhLUEZUSlhTJndpZGdldE5hbWU9c3BfYXRmJmFjdGlvbj1jbGlja1JlZGlyZWN0JmRvTm90TG9nQ2xpY2s9dHJ1ZQ%3D%3D&linkCode=ll1&tag=i0fe2-22&linkId=e0c4511986c52ea3be8f6cebe0064753&language=ja_JP&ref_=as_li_ss_tl

# OS準備

まずはRaspberry Piに焼くOSを準備します。

## Raspberry Pi Imager をインストール

Raspberry Pi Imagerをインストールします。

https://www.raspberrypi.com/software/

Ubuntu 20.04 では snap コマンドでインストールできるので便利です。

```bash
$ sudo snap install rpi-imager
rpi-imager 1.6.2 from Alan Pope 🐧 (popey) installed
```

## SDカードに書き込み

次に、SDカードにOSを焼きます。

Raspberry Pi Imager を起動して、最初にOSを選択します。

![Screenshot from 2022-01-02 14-04-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/a29e5fb1-0038-e7fa-e720-49586e575202.png)

![Screenshot from 2022-01-02 14-07-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/31c7e90b-a399-cfad-e761-b34cf2a6db7a.png)

Raspberry Pi 4B は Arm64 (64-bit) の CPUを搭載しているので、Raspberry Pi OS (64-bit) か Ubuntu (64-bit) が良いでしょう。

Storage に SDカードを選択して、WRITEボタンを押して焼き込みます。

![Screenshot from 2022-01-02 14-52-09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/a904fe85-d36c-d225-548b-966bb13df47f.png)

かなり簡単です。

## 設定

OSの初回起動後に、オプションを設定しましょう。

Raspberry Pi OS には、`raspi-config`という対話式でネットワークやデバイスの設定をできるツールがデフォルトでインストールされています。

管理者権限でコマンドを実行すると、

```bash
$ sudo raspi-config
```

コンソールに設定画面が表示されます。

![Screenshot from 2021-11-21 10-49-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/3627495f-ccd6-75e9-553b-ebf3776fee92.png)

設定していきます。

### インタフェース

sshとvncを有効にします。

#### ssh

5 > P2 を選択して、Enableに設定します。

![Screenshot from 2021-11-21 10-49-25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/3627495f-ccd6-75e9-553b-ebf3776fee92.png)

![Screenshot from 2021-11-21 10-49-28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/d0628a4d-c2bf-1766-0470-83b3335a3c0b.png)

#### VNC

5 > P3 を選択して、Enableに設定します。

![Screenshot from 2021-11-21 10-49-47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/4026ea88-6d32-5ca9-9c48-56220abc4cec.png)

### 解像度

解像度を設定します。
設定しないと、解像度が小さすぎるせいか、VNCでログインできないことがあります。

7 > P5 で解像度選択画面を表示します。

![Screenshot from 2021-11-21 10-47-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/1331136d-fb44-7dd7-706f-01ce2f64ecea.png)

![Screenshot from 2021-11-21 10-47-16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/2531044d-8300-3dec-4f16-667d79374cac.png)

ディスプレイに合わせた解像度を選択します。

![Screenshot from 2021-11-21 10-47-18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/b5bc0aef-59e0-46a9-3abd-803a3ecc9851.png)

## 接続

実際に接続してみましょう。

### SSH接続

![Screenshot from 2021-11-21 10-27-46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/00940dba-fdc7-9bf5-a8c8-9456612e1fe7.png)

### VNC接続

VNC Viewer で接続します。

![Screenshot from 2021-11-21 10-32-49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/7f18d672-73f4-535f-5bd3-f13250256c9b.png)

![Screenshot from 2021-11-21 10-28-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/8045074d-32f1-09af-39c6-3ec408197258.png)

## スワップ

SDカードの寿命を長くするために、以下の記事に従ってスワップを無効化します。

以下のサイトを参考に、

https://qiita.com/homelan/items/62a09aa0d0586d0280a2

次のコマンドを打ちます。

```bash
sudo systemctl stop dphys-swapfile
sudo systemctl disable dphys-swapfile
systemctl status dphys-swapfile
```

## Node-RED

Raspberry Pi OS にはデフォルトで Node-REDがインストールされています。

Node-REDの自動起動設定を有効化しておきます。

```bash
sudo systemctl enable nodered.service 
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/d21f949f-19e9-9a4e-92a7-31bfc8372ceb.png)

## ピンアサインの確認

Raspberry Pi OS にはデフォルトで ピンアサインを確認する pinout コマンドがインストールされています。
試しに実行してみましょう。

![Screenshot from 2021-11-21 10-56-52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114392/f650e2c9-e7a2-9869-b6c9-e4a14835c30e.png)

```bash
pi@raspberrypi:~ $ pinout 
,--------------------------------.
| oooooooooooooooooooo J8   +======
| 1ooooooooooooooooooo  PoE |   Net
|  Wi                    oo +======
|  Fi  Pi Model 4B  V1.4 oo      |
|        ,----.               +====
| |D|    |SoC |               |USB3
| |S|    |    |               +====
| |I|    `----'                  |
|                   |C|       +====
|                   |S|       |USB2
| pwr   |HD|   |HD| |I||A|    +====
`-| |---|MI|---|MI|----|V|-------'

Revision           : c03114
SoC                : BCM2711
RAM                : 4096Mb
Storage            : MicroSD
USB ports          : 4 (excluding power)
Ethernet ports     : 1
Wi-fi              : True
Bluetooth          : True
Camera ports (CSI) : 1
Display ports (DSI): 1

J8:
   3V3  (1) (2)  5V    
 GPIO2  (3) (4)  5V    
 GPIO3  (5) (6)  GND   
 GPIO4  (7) (8)  GPIO14
   GND  (9) (10) GPIO15
GPIO17 (11) (12) GPIO18
GPIO27 (13) (14) GND   
GPIO22 (15) (16) GPIO23
   3V3 (17) (18) GPIO24
GPIO10 (19) (20) GND   
 GPIO9 (21) (22) GPIO25
GPIO11 (23) (24) GPIO8 
   GND (25) (26) GPIO7 
 GPIO0 (27) (28) GPIO1 
 GPIO5 (29) (30) GND   
 GPIO6 (31) (32) GPIO12
GPIO13 (33) (34) GND   
GPIO19 (35) (36) GPIO16
GPIO26 (37) (38) GPIO20
   GND (39) (40) GPIO21

For further information, please refer to https://pinout.xyz/
```

## Dockerインストール

Dockerはデフォルトでインストールされていません。

以下の記事に書いてある通り、convenience scripts でインストールしてみましょう。

https://docs.docker.com/engine/install/debian/#install-using-the-convenience-script

> In testing and development environments, some users choose to use automated convenience scripts to install Docker. 
> This is currently the only approach for Raspbian.

記事の通り、次のコマンドを実行してみます。

```bash
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo usermod -aG docker pi
sudo pip3 install docker-compose
```

## Ansible インストール

Ansibleもデフォルトでインストールされていません。

インストールします。

Raspberry pi OS公式リポジトリのAnsibleはかなり古いです。

```bash
# Raspberry pi OS公式版は古い
# $ sudo apt install ansible

# ansible 2.7.7
#  config file = /etc/ansible/ansible.cfg
#  configured module search path = ['/home/pi/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
#  ansible python module location = /usr/lib/python3/dist-packages/ansible
#  executable location = /usr/bin/ansible
#  python version = 3.7.3 (default, Jan 22 2021, 20:04:44) [GCC 8.3.0]
```

Ansibleコミュニティが推奨している公式Pythonパッケージ版をインストールしましょう。

```bash
# ansible公式Pythonパッケージを使う
$ pip install --user ansible
```

## NASマウント設定

Raspberry pi のストレージはSDカードで、容量が限られています。
そこで、 NAS をマウントしてストレージ容量を水増ししましょう。

以下のサイトを参考に。

https://qiita.com/fstyle/items/284508cfc33af54d826d

fstab で設定します。

```bash
$ sudo apt-get install cifs-utils
$ sudo cat /etc/fstab 
//IP_ADDRESS/disk    /mnt/disk/    cifs vers=1.0,user=USER_NAME,password=PASSWORD,suid,rw,async 0 2
$ sudo mount -a
```