Raspberry Pi セットアップ備忘録

需要があるんか分らんけど、Raspberry Pi のセットアップ手順まとめ。
※現時点ではRaspberry Pi 3～5系の記事です。

セットアップに必要な情報はネットで調べられるけど、新旧混在の情報を毎回あちこち確認しながらセットアップするのが面倒なので、ひとまず真っ新な状態からOSが使える状態にするまでの作業をまとめておきます。

それほどセットアップ頻度が多いわけでもないので情報古くなってたらすんません。教えてください。（しかしRaspberry Piって機種増えたよね）

## OSイメージ取得からのSD書き込み

:::note info
Raspberry Pi専用のSDカード書き込みツール **Raspberry Pi Imager** が公開されています。これを使うとイメージ作成時にWiFi設定やSSH設定も済ませることが出来るので、セットアップ時間を大幅に短縮することが可能です。
（うん、次回使ってみよう）
- [Raspberry Pi Imager](https://www.raspberrypi.com/software/)
:::
以下、マニュアル作業の説明です。
- [Raspberry Pi OS](https://www.raspberrypi.com/software/operating-systems/) `Raspberry Pi OS Lite`を選んでおけば良いんかと。軽いし。
- [Win32 Disk Imager](https://sourceforge.net/projects/win32diskimager/) これも定番。

※使い方は省略です。

イメージの書き込みが終わったら、bootf直下に"ssh"の名称で空ファイルを作っておく。
（SSHサーバが起動するようになる）

SDカードをRaspberry Piにセット。



## Raspberry Pi 初期設定①

キーボード、モニタ（HDMI）、LANを接続して起動。
※最初からSSHで繋げられないものか。。。。

ウィザードが起動し、キーボードの指定（`Japanese -> OADG 109A`）と初期ユーザー作成を済ませる。

作成したユーザーで Raspberry Pi にログイン確認。
`ifconfig`で割り当たったIPアドレスを確認しておく。

※この後はSSHで作業可能。

## Raspberry Pi 初期設定②
何はともあれ、まずはIPアドレス固定しておく。
ネットワークの設定は、bookwormからNetworkManagerが主流になっているみたいなので、
これを使おうと思います。 ※`nm-setting-nmcli(5)`

設定するネットワークアダプタ名を確認。有線が`eth0`で無線が`wlan0`。

```console:
$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.101  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::3aa:9571:2a9f:4b0c  prefixlen 64  scopeid 0x20<link>
        inet6 2405:6585:46e0:5f00:aa86:5741:d0e:38a0  prefixlen 64  scopeid 0x0<global>
        ether b8:27:eb:e5:f0:5e  txqueuelen 1000  (Ethernet)
　　　　　：（以下略）
     
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
　　　　　：（以下略）
     
wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether b8:27:eb:b0:a5:06  txqueuelen 1000  (Ethernet)
　　　　　：（以下略）
     
```

いったんeth0に`192.168.1.101`で割り当てられたアドレスを`192.168.1.201`に固定化する。



### 【有線LANの設定】
先のコマンドでアダプタ名が`eth0`と確認出来ているので、下記の場所に設定ファイルを作成します。
設定内容は、、、、雰囲気で掴みましょう。
```console:
$ sudo nano /etc/network/interfaces.d/eth0
```

```console:/etc/network/interfaces.d/eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.1.201
netmask 255.255.255.0
gateway 192.168.1.254
```

### 【無線LAN】
無線LANに接続する際は、コマンド実行するのが早そう。
```console:
-- 接続可能なwifiネットワークを表示する
$ sudo nmcli device wifi list
IN-USE  BSSID              SSID             MODE   CHAN  RATE        SIGNAL  BA>
        5A:9B:49:**:**:4A  myhome-guest     Infra  6     130 Mbit/s  95      ▂ ▄>
        54:9B:49:**:**:4A  myhome-wifi      Infra  6     130 Mbit/s  94      ▂ ▄>
        5E:9B:49:**:**:4A  --               Infra  6     130 Mbit/s  94      ▂ ▄>
        54:9B:49:**:**:4B  myhome-wifi      Infra  128   540 Mbit/s  87      ▂ ▄>
        5A:9B:49:**:**:4B  myhome-guest     Infra  128   540 Mbit/s  87      ▂ ▄>
        5E:9B:49:**:**:4B  --               Infra  128   540 Mbit/s  87      ▂ ▄>
```
```console:
-- wifiネットワークに接続する。
$ sudo nmcli device wifi connect myhome-wifi password <wifi_password>
Device 'wlan0' successfully activated with '7dd9d0e8-3ed1-4adb-9a72-69cf785ec156'.

```
```console:
-- 結果確認
$ nmcli connection 
NAME             UUID                                  TYPE      DEVICE
myhome-wifi      7dd9d0e8-3ed1-4adb-9a72-69cf785ec156  wifi      wlan0
lo               8d374732-32cf-4bbd-93a8-e2adf215b11a  loopback  lo
```
接続出来ると、自動的に/etc/NetworkManager/system-connectionsに設定ファイルが作成されます。
```console:
$ sudo cat /etc/NetworkManager/system-connections/(SSID名).nmconnection
```
```conf:/etc/NetworkManager/system-connections/(SSID名).nmconnection
[connection]
id=myhome-wifi
uuid=7dd9d0e8-3ed1-4adb-9a72-69cf785ec156
type=wifi
interface-name=wlan0

[wifi]
mode=infrastructure
ssid=myhome-wifi

[wifi-security]
auth-alg=open
key-mgmt=wpa-psk
psk=<wifi_password>

[ipv4]
method=auto

[ipv6]
addr-gen-mode=default
```

IPを固定化するために直接設定ファイルを編集しても良いですが、以下のコマンドで変更が出来るので、今回はこちらを使います。
```console:
$sudo nmcli connection modify "割り当てられたUUID" ipv4.medhod "manual" ipv4.addresses "192.168.1.202/24" ipv4.gateway "192.168.1.254"
```
実行結果は以下の通りになりました。
```conf:/etc/NetworkManager/system-connections/(SSID名).nmconnection
-- [ipv4]セクション抜粋
address1=192.168.1.202/24,192.168.1.254
method=manual
```
変更内容を反映する（SSHで作業している場合は、２つ目のコマンドで接続が切れるので再接続が必要）
```console:
$sudo nmcli connection modify "割り当てられたUUID" ipv4.medhod "manual" ipv4.addresses "192.168.1.202/24" ipv4.gateway "192.168.1.254"
```


## Raspberry Pi 初期設定③
以下のコマンドを順に実行する手順になります。

```console:
-- パッケージリストの更新
$ sudo apt update
-- アップグレード（依存関係を考慮しつつ更新。同一バージョン内で最新化されます）
$ sudo apt full-upgrade -y
-- 再起動
$ sudo reboot
-- アップグレードにより使わなくなったパッケージを削除
$ sudo apt autoremove -y
-- アップグレード作業で作成したキャッシュを削除（ストレージを確保）
$ sudo apt clean