Raspberry Pi 400 で Raspberry Pi OS のセットアップをしてみた。

開発用の環境として、余っていた Raspberry Pi 400 のセットアップをしてみました。
Raspberry Pi 4 など他の種類でも同様にセットアップができます。


# 環境
#### 作業PC
- Windows11

#### Raspberry Pi
- Raspberry Pi 400
- microSD（64GB）

#### 拡張パーツ（※必須ではありません）
- HyperPixel 4.0 - Raspberry Pi用高解像度タッチディスプレイ
- Raspberry Pi 400用CYBERDECK HAT


# 秘密鍵の用意
SSH接続に必要な秘密鍵を作成します。

## Git のインストール
事前に `Git` をインストールします。
こちらを参考にしてインストールしてくだい。
- [WindowsにGitをインストールする手順](https://www.curict.com/item/60/60bfe0e.html "WindowsにGitをインストールする手順")

## 秘密鍵の作成
PowerShellを立ち上げて、秘密鍵を作成します。
```powershell
ssh-keygen
```
秘密鍵の保存先を聞かれるので、必要に応じて保存先を入力し、Enterキーを押下します。
※変更する必要がなければそのままEnterキーを押して大丈夫です。
```powershell
Enter file in which to save the key:
```
秘密鍵のパスフレーズを聞かれるので、任意のパスフレーズを入力し、Enterキーを押下します。
```powershell
Enter passphrase (empty for no passphrase):
```
確認のため、もう一度パスフレーズを入力し、Enterキーを押下します。
```powershell
Enter same passphrase again:
```


# Raspberry Pi OS の作成
Raspberry Pi Imager を用いて、Raspberry Pi OS をSDカードに書き込みます。

## Raspberry Pi Imager のインストール
Raspberry Pi Imager をダウンロードし、インストールします。

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

## Raspberry Pi OS のダウンロード
Raspberry Pi OS を事前にダウンロードしておきます。
今回は `Raspberry Pi OS (64-bit)` の `Raspberry Pi OS with desktop` を使用します。

https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit

## Raspberry Pi Imager の設定
Raspberry Pi OS をSDカードに書き込むにあたり、事前にいくつかの設定を行います。
![RaspberryPi400_Setup_20230202125724.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/3a895298-0e78-812a-3c33-d2a79653bfc5.png)

### OS の選択
`OSを選ぶ` を押下し、一番下の `カスタムイメージを使う` を選択し、ダウンロードした Raspberry Pi OS を選択します。
![RaspberryPi400_Setup_20230202125718.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/4063ae60-7f2e-0429-ab0c-e29d954d9ead.png)

### SD の選択
`ストレージを選ぶ` を押下し、書き込みたいSDカードを選択します。
![RaspberryPi400_Setup_20230202132141.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/108021be-8b72-28b9-975e-a48e68d6cfbd.png)


### 設定
`歯車マーク` を押下し、下記の項目を設定します。

#### ホスト名
`ホスト名` にチェックを入れ、任意の `ホスト名` を入力します。
今回は `pi400` としました。

#### SSHを有効化する
`SSHを有効化する` にチェックをいれます。
`公開鍵認証のみを許可する` を選択し、作成された公開鍵 `id_ras.pub` をテキストエディタ（メモ帳など）で開いて、中身をコピペします。

:::note warn
公開鍵のファイルパスではなく、ファイルの中身をコピペしてください。
:::

#### ユーザー名とパスワード
`ユーザー名とパスワードを設定する` をチェックし、任意の `ユーザー名` と `パスワード` を入力します。

#### Wi-Fi
`Wi-Fiを設定する` にチェックを入れ、Wi-Fiの `SSID` と `パスワード` を入力します。
`Wi-Fiを使う国` を `JP` にします。

:::note info
有線LANで接続する場合は、省略可能です。
:::

#### ロケール設定
`ロケール設定をする` にチェックを入れ、 `タイムゾーン` と `キーボードレイアウト` を設定します。
- タイムゾーン：Asia/Tokyo
- キーボードレイアウト：jp

![RaspberryPi400_Setup_20230202134113 - コピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/53445648-d5d0-9e15-78c8-a50539a254f9.png)

### SDに書き込み
`書き込み` を押下し、SDカードへ書き込みます。


# HyperPixel 4 高解像度タッチディスプレイ（※任意）
任意で、HyperPixel 4 高解像度タッチディスプレイの設定を行います。
詳細は下記のページを参考にしてください。

https://qiita.com/IoriGunji/items/0a5f2c6ac62e486ea409?0


# Raspberry Pi OS の初期設定
出来上がったSDカードを Raspberry Pi 400 に挿入し、起動して、初期設定を行います。
事前にルーターなどの情報から Raspberry Pi 400 のIPアドレスを確認してください。

<details>
<summary>Raspberry Pi 400 のIPアドレスがわからない場合</summary>

Raspberry Pi 400 の背面にある `マイクロHDMI` コネクタと外部モニターをHDMIケーブルで接続し、画面表示を行います。
`Terminal` を開いて、下記のコマンドを実行し、IPアドレスを確認します。
```bash
ip -br -4  address
```
![RaspberryPi400_Setup_2023-03-02-165144_800x480_scrot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/212972/9ef5f596-a745-106e-733e-1368022d051f.png)


</details>

## 起動
Raspberry Pi 400 を起動します。
`Fn` と `F10` を同時押しすると起動します。
起動したら、SSHで接続を行います。

## アップデート
```bash
sudo apt update
sudo apt -y upgrade
sudo apt -y autoremove
sudo apt -y dist-upgrade
sudo rpi-update
```

## 日本語化
#### raspi-config
`Raspberry Pi Software Configuration Tool` を開き、設定を行います。

```bash
sudo raspi-config
```
1. `5 Localisation Options` を選択します。
1. `L1 Locale` を選択します。
1. `ja_JP.UTF-8 UTF-8` を選択し、 `Spaceキー` を押下し、 `Enterキー` を押下します。
1. `ja_JP.UTF-8` を選択します。
1. `Finish` を選択します。

### 日本語入力のインストール
日本語入力（IME）をインストールします。
```bash
sudo apt install -y uim uim-anthy
```

再起動します。
```bash
sudo reboot
```

## nano エディタの設定（※任意）
任意で `nanoエディタ` の設定を行います。


<details>
<summary>nanorc の編集</summary>

`nanorc` をテキストエディタで開き、編集します。
```bash
sudo nano /etc/nanorc
```

- 改行時のオートインデントの有効化
```diff_shell
- # set autoindent
+ set autoindent
```

- ファイル保存時の自動バックアップの有効化
```diff_shell
- # set backup
+ set backup
```

- バックアップの保存先の設定
```diff_shell
- # set backupdir ""
+ set backupdir "/tmp"
```

:::note warn
バックアップ先のディレクトリを誤って設定すると、 `nano` が開けなくなります。
トラブルの元になりやすいため、ディレクトリは上記のままにしておくことをオススメします。
なお、 `nano` が開けなくなった場合は、 `vi` などの他のテキストエディタで再編集すれば改善します。
:::

- Tabサイズの変更
```diff_shell
- # set tabsize 8
+ set tabsize 4
```

- TabをSpaceに変換
```diff_shell
- # set tabstospaces
+ set tabstospaces
```

- 画面に収まらない場合に自動的に改行
```diff_shell
- # set softwrap
+ set softwrap
```

- 行番号の表示
```diff_shell
- # set linenumbers
+ set linenumbers
```

</details>


## SSH 接続の設定変更（※任意）
任意で、セキュリティ強化のために、SSH接続の設定を変更します。

<details>
<summary>sshd_config の編集</summary>

`sshd_config` をテキストエディタで開き、編集します。
```bash
sudo nano /etc/ssh/sshd_config
```

:::note alert
接続の確認がとれるまで、SSH接続を切断しないでください。
:::

- ポート番号の変更
ポート番号は任意で、49152番から65535番の間で設定することをおすすめします。
```diff_shell
- #Port 22
+ Port 56789
```

- rootユーザーのSSHログインを禁止	
```diff_shell
- #PermitRootLogin prohibit-password
+ PermitRootLogin no
```

- SSHの再起動
```bash
sudo /etc/init.d/ssh restart
```

</details>


## CLI へ変更（※任意）
任意で、Raspberry Pi 400 の起動時の画面を `CLI` へ変更します。

<details>
<summary>raspi-config の編集</summary>

`raspi-config` をテキストエディタで開き、編集します。
```bash
sudo raspi-config
```

表示された画面から下記の項目を選んでいきます。
1. `1 System Options` を選択します。
1. `S5 Boot / Auto Login` を選択します。
1. `B1 Console` か `B2 Console Autologin` を選択します。
1. `<Finish>` を選択します。

</details>


# 関連記事
セットアップした Raspberry Pi 400 を利用して、Docker環境の構築などを行っています。
よろしければ下記の記事も参考にしてみてください。

https://qiita.com/IoriGunji/items/f581b18b9363e65cdd08?0