Raspberry Pi OS 12でdhcpcdをどうしても使いたい人向けのセットアップ方法

## イントロダクション
　Raspberry Pi OSを仕事で使っているのですが、LAN設定がdhcpcdからNetworkManagerに切り替わってしまいちょっと使いづらかったので、できるだけdhcpcdでIP設定できるようにしてみました。

## 必要なもの
- Raspberry Pi 3/4/400/5
- RasPiのケースとACアダプター
- microSDカード（個人的にはSanDiskかSAMSUNG製の耐久性が高いやつ
- MacかWindowsでSDカードが書き込める環境
- SDカードリーダ・ライタ（個人的にTrancend製をオススメ）
- 根気

## Raspberry Pi OS 12をSDカードに焼く
### Raspberry PI Imager をセットアップ
[Raspberry PI Imager](https://www.raspberrypi.com/software/)をダウンロードし、セットアップします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359920/cd78d908-f9e3-f785-dd5b-fcdba07a6e61.png)

### Raspberry Piを用意（組み立てて置くのを忘れずに）

### SDカードリーダ・ライタにMicroSDカードを差し込んでPC or MacのUSB端子に挿す

### Raspberry Pi Imagerを起動します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359920/7204bc3e-8ccc-5ff9-0c0d-66de88bb17f6.png)
#### デバイスを選択します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359920/fe17371f-f0db-a7bc-4ef7-f6887a02f4f7.png)
　今回はRaspberry PI 3/4/400/5 どれでも動くようにするのですが、使うRaspberry Piを選択します。
### OSを選択
#### Raspberry Pi OS (other) を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359920/297dc193-9c17-caf5-fd8f-b3af548a0912.png)
#### Raspberry Pi OS Lite (64bit) Bookworm を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359920/f204d900-9880-fd26-5a96-931573e84d1d.png)
#### ストレージを選んで設定を変更（SSHやWi-Fiの設定など）を行い、SDカードに書き込みます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359920/13dd5c8b-d045-8bc2-8df0-79425f208d72.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/359920/1e9ae0e8-9668-9a5d-4add-14e8bc664331.png)
書き込みが完了すると、SDカードは自動的にアンマウントされますので、普通にSDカードを抜いて問題無いです

## RasPiを起動して設定を行います。

[ここ](https://forums.raspberrypi.com/viewtopic.php?t=360586)に書いてある情報から、まずNetworkManagerを停止させてdhcpcdをセットアップします。
```bash:bash
sudo systemctl disable NetworkManager
sudo systemctl stop NetworkManager
sudo apt update
sudo apt upgrade -y
sudo apt install -y dhcpcd5
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
```
```conf:/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
```
/etc/dhcpcd.confの最後尾に下記を追加
※ipアドレス設定は自分の環境に書き換えてください
```conf:/etc/dhcpcd.conf（抜粋）
interface eth0
static ip_address=192.168.3.240/24
static routers=192.168.3.1
static domain_name_servers=192.168.3.1 8.8.8.8 8.8.4.4
static domain_search=
```
### 再起動
```bash:bash
sudo reboot
```
これで、先ほどのアドレスにIPが固定できれば問題ありません。

### 必要に応じてX-Windowなどをセットアップ
 [こちらの記事から拝借しました](https://tkyonezu.com/iot/raspberry-pi-os-lite%E3%81%AE%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E5%8C%96/)
```bash:bash
sudo apt install -y xserver-xorg raspberrypi-ui-mods
sudo apt install -y fcitx-mozc chromium-browser
sudo apt install -y rp-prefapps
```
### 設定の変更
キーボード設定の変更（JISキーボードの場合）
```conf:/etc/default/keyboard
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL='pc105'
XKBLAYOUT='jp'
XKBVARIANT='OADG109A'
XKBOPTIONS='terminate:ctrl_alt_bksp'

BACKSPACE='guess'
```
NTPの修正
```conf:/etc/systemd/timesyncd.conf
[Time]
NTP=ntp.jst.mfeed.ad.jp ntp.nict.jp
FallbackNTP=time.google.com
```
```bash:bash
sudo timedatectl set-ntp true
sudo systemctl daemon-reload
sudo systemctl restart systemd-timesyncd.service
```
日本語ロケールにする
```bash:bash
export LANG=ja_JP.UTF-8
export LC_ALL=ja_JP.UTF-8
export LANGUAGE=ja_JP.UTF-8
sudo locale-gen --purge ja_JP.UTF-8
sudo sed -i 's/# ja_JP.UTF-8 UTF-8/ja_JP.UTF-8 UTF-8/g' /etc/locale.gen
sudo locale-gen
sudo dpkg-reconfigure -f noninteractive locales
sudo /usr/sbin/update-locale LANG=ja_JP.UTF-8 LC_ALL=ja_JP.UTF-8
```
RasPiの起動オプションを修正
```bash:bash
sudo raspi-config
```
System Options を選択し、S5 Boot / Auto Login を選択 した上で B3 Desktop を選択、Finish を選択して再起動させる

ログイン画面が出てくれば問題無く動くかと思います。


## 参考記事
　以下の記事を参考にいたしました。ありがとうございます。
- [Replacing NetworkManager - forums.raspberrypi.com](https://forums.raspberrypi.com/viewtopic.php?t=360586)
- [Raspberry Pi OS Liteのデスクトップ化 - Takeshi Yonezu](https://tkyonezu.com/iot/raspberry-pi-os-lite%E3%81%AE%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E5%8C%96/)