Raspberry Pi Zero WH カメラモジュールで遊ぶ その0

前→なし
次→[Raspberry Pi Zero WH カメラモジュールで遊ぶ その1](https://qiita.com/yuzzy22/items/2ed472a3e690fed1b2ba)

本記事では、Raspberry Pi Zero WHの初期設定を行います。

<!-- TOC -->

- [1. OSのインストール(母艦での作業)](#1-osのインストール母艦での作業)
    - [1.1. ダウンロードページへのアクセス](#11-ダウンロードページへのアクセス)
    - [1.2. Raspberry Pi Imagerのダウンロードとインストール](#12-raspberry-pi-imagerのダウンロードとインストール)
    - [1.3. SDカードへのOSの書き込み](#13-sdカードへのosの書き込み)
- [2. 各種初期設定(以降、ラズパイ上での作業)](#2-各種初期設定以降ラズパイ上での作業)
    - [2.1. 初回起動](#21-初回起動)
    - [2.2. パッケージ更新](#22-パッケージ更新)
    - [2.3. Vim設定(お好みで)](#23-vim設定お好みで)
    - [2.4. SSH設定](#24-ssh設定)
    - [2.5. プライベートIPアドレス固定](#25-プライベートipアドレス固定)
    - [2.6. 外部ネットワークからの接続設定](#26-外部ネットワークからの接続設定)
    - [2.7. その他、ユーザ作成とpiユーザの削除、VNC設定、WiFiの平文パスワード削除(hash化)、など](#27-その他ユーザ作成とpiユーザの削除vnc設定wifiの平文パスワード削除hash化など)
- [3. おまけ：各種便利コマンド](#3-おまけ各種便利コマンド)

<!-- /TOC -->

## 1. OSのインストール(母艦での作業)

### 1.1. ダウンロードページへのアクセス

<https://www.raspberrypi.org/downloads/>

### 1.2. Raspberry Pi Imagerのダウンロードとインストール

Raspberry Pi Imagerは、SDカードのフォーマットやOSの書き込みなど、一挙に担ってくれる便利ツールです。
はじめに"- Raspberry Pi Imager for (母艦のOS)"のリンクをクリックし、Raspberry Pi Imagerをダウンロードします。(以下、Mac版の例になります。)

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/8cc54249-c445-9b72-f16d-0d2953209106.png)

ダウンロードが終わったらインストールします。Rapsberry Pi ImagerをApplicationsにドラッグ&ドロップで終了です。

![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/c4f321a8-2441-08e1-082b-cacd6c9f466e.png)

### 1.3. SDカードへのOSの書き込み

Raspberry Pi Imagerを立ち上げます。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/6058724f-dc0c-c450-1f16-346f09127498.png)

はじめにSDカードをフォーマットします。"Operating System"から"ERASE"を選択し、"SD Card"からフォーマットしたいSDカードを選択、"WRITE"をクリックします。

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/ea4cff48-0ede-d3bc-adb2-f9d1cc04d05b.png)

フォーマット終了後、"Operating System"からインストールしたいOS(今回は"Raspberry Pi OS(32-bit)")を選択し、"SD Card"からフォーマットしたいSDカードを選択、"WRITE"をクリックします。

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/687c45a8-affc-a22a-1f4f-bb85ea98abe8.png)
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/bfc530ac-d082-de38-9532-dd4ee58575bd.png)


"Writing..." → "Verifying..."の後、"Write Successful"のポップアップが表示されれば書き込みは完了です。(ネットワーク環境によっては書き込みに長時間かかるようです。)

![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/c982bafe-468b-b0aa-4353-c557c9c557d4.png)
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/9dd0a1bf-b01f-472d-cc6b-a820ee1c0632.png)
![9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/dfa442cc-79f5-d9e8-36ea-dcd32c00f535.png)

## 2. 各種初期設定(以降、ラズパイ上での作業)

インストールしたSDカードをラズパイに挿入し、起動します。
今回はモニターに接続した場合の操作になります。

### 2.1. 初回起動

"Welcome to Raspberry Pi"のウィンドウが自動的に立ち上がるので、「地域設定」「パスワード変更」「WiFi接続」「ソフトウェアアップデート」を実施します。
実施後、再起動を求められるので再起動します。

### 2.2. パッケージ更新

```bash
# パッケージ更新
$ sudo apt-get update
$ sudo apt-get upgrade
```

### 2.3. Vim設定(お好みで)

デフォルトで入っているのが軽量版のvim-tinyなので、通常のvimに入れ替えます。

```bash
# 入れ替え
$ sudo apt-get --purge remove vim-common vim-tiny
$ sudo apt-get install vim
```

```bash
# ~/.vimrcの設定
syntax enable

set showcmd
set showmatch
set matchtime=1

set hlsearch

set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab

set whichwrap=b,s,[,],<,>

augroup fileTypeIndent
    autocmd!
    autocmd BufNewFile,BufRead *.py setlocal tabstop=4 softtabstop=4 shiftwidth=4
    autocmd BufNewFile,BufRead *.rb setlocal tabstop=2 softtabstop=2 shiftwidth=2
augroup END
```

### 2.4. SSH設定

はじめに「設定」→「Raspberry Piの設定」→「インターフェース」から、SSHを有効化します。![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/543188/aa283bb1-d645-e5b1-8811-12eacc7f7eeb.png)

その後、母艦からラズパイに公開鍵を送ります。(今回はed25519鍵を使用、秘密鍵/公開鍵の作成方法は`ssh-keygen`コマンドをググってください。)

```bash
# 母艦からラズパイに公開鍵を送付(母艦での作業)
$ cd
$ scp .ssh/id_ed25519.pub pi@raspberrypi.local:/home/pi
```

ラズパイ上で各種設定を行います。

```bash
# authorized_keysへの登録
$ cd
$ mkdir -m 700 .ssh
$ touch .ssh/authorized_keys
$ cat id_ed25519.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
$ rm id_ed25519.pub
```

```bash
# /etc/ssh/ssh_configの設定

# パスワード認証から鍵認証へ変更
PubkeyAuthentication yes
PasswordAuthentication no

# rootログインの禁止
PermitRootLogin no
```

```bash
# ssh再起動
$ sudo /etc/init.d/ssh restart
```

お好みで、わざわざ`ssh pi@raspberrypi.local`や`ssh pi@192.168.xxx.yyy`と打ち込まずに`ssh raspi`と打ち込めばいいように設定します。

```bash
# ~/.ssh/configの設定(Hostnameはどちらか)
Host raspi
    Hostname raspberrypi.local
    #Hostname 192.168.xxx.yyy (プライベートIPアドレス、IP固定化後に切替をオススメ)
    User pi
    Port 22
    IdentityFile ~/.ssh/id_ed25519
```

### 2.5. プライベートIPアドレス固定

はじめに現在のIPアドレスを確認します。ラズパイが無線LANでネットワークに接続している場合、"wlan0"の"inet 192.168.xxx.yyy"を確認します。

```bash
# 現在のIPアドレスを確認
$ ifconfig
```

次に固定したいIPアドレスが未使用か確認します。下記コマンドを実行し"Destination Host Unreachable"が複数回の後コマンドを停止させ、"100% packet loss"と表示されれば、未使用のIPアドレスです。

```bash
# IPアドレスが未使用か確認
$ ping 192.168.xxx.zzz
```

未使用であると確認できたIPアドレスを設定ファイルに書き込み、再起動します。

```bash
# /etc/dhcpcd.conf最下部に追記
interface wlan0
static ip_address=192.168.xxx.zzz/24
static routers=192.168.xxx.1
static domain_name_servers=192.168.xxx.1
```

```bash
# 再起動
$ sudo reboot
```

### 2.6. 外部ネットワークからの接続設定

…やらねば

### 2.7. その他、ユーザ作成とpiユーザの削除、VNC設定、WiFiの平文パスワード削除(hash化)、など

…やらねば。

## 3. おまけ：各種便利コマンド

```bash
# CPU温度の取得
$ vcgencmd measure_temp

# GPIO配列の確認
$ pinout

# OS versionの確認
$ lsb_release -a

# Kernel versionの確認
$ uname -a
```