みなさん、こんにちは。
日々Raspberry Pi(ラズパイ)でさまざまなシステムを構築していると、OSのサポート期間には敏感になりますよね。
未だ多くのユーザーが利用している Raspberry Pi OS Bullseye ですが、そのLTSサポートは2026年8月までとなっています。セキュリティ面を考えると、そろそろ次世代の Bookworm や、その先の Trixie への移行を検討し始めている方も多いのではないでしょうか。
しかし、ここで一つ大きな壁が立ちはだかります。それが 「Wi-Fi管理方式の変更」 です。
自作アプリなどでwpa_supplicantを使っていた方は、これまでの「慣れた設定」が通用せず、戸惑っている方も多いはず。そこで今回は、Bookworm / Trixie をあえて従来の 「dhcpcd + wpa_supplicant」方式に戻す手順 を解説します。
OSバージョンによるネットワーク管理の違い
まず、ラズパイのOSバージョンごとに、ネットワークがどのように管理されているかを整理しましょう。
| OSバージョン | コードネーム | Wi-Fi 管理方式 | wpa_supplicant.conf |
| Debian 11 | Bullseye | dhcpcd + wpa_supplicant | あり(標準) |
| Debian 12 | Bookworm | NetworkManager(標準) | 基本なし(※1) |
| Debian 13 | Trixie | NetworkManager に完全統一 | なし |
(※1)BookwormのLite版では移行期のため従来方式が残っていましたが、Trixieでは完全に姿を消しました。
これまでの Bullseye では /etc/wpa_supplicant/wpa_supplicant.conf を編集するのが当たり前でしたが、最新の Trixie では NetworkManager がバックエンドで wpa_supplicant を制御する 形に変わっています。そのため、設定ファイルそのものが存在しないのが「正常な状態」です。
なぜ「従来方式」に戻す必要があるのか?
「新しい方式(NetworkManager)に慣れればいいのでは?」という意見もありますが、以下のようなケースでは、あえて従来方式に戻すメリットがあります。
- 既存のデプロイ用スクリプトがある
多数のラズパイを自動設定する仕組みが wpa_supplicant 前提で作られている場合。 - ヘッドレス運用での安定性
GUIを持たない環境で、シンプルに1つの設定ファイルを書き換えるだけでWi-Fiを切り替えたい。 - リソースの節約
非常にリソースが限られた環境で、NetworkManager よりも軽量な dhcpcd を好む場合。
特に自作アプリやIoTデバイスとしてラズパイを組み込んでいる場合、この変更は死活問題になりかねません。実際、私はwpa_supplicantをスクリプトで直接書き換えるプログラムが動かなくなり、一瞬途方にくれました。
時代の流れに合わせてNetworkManagerへ移行することも検討しましたが、すでに動作検証が済んでいる「安定環境」という資産を壊したくない……。その一心で、あえてwpa_supplicant方式への「逆行」を決断しました。
ヘッドレス環境とデスクトップ環境の大きな違い
ここで注意したいのが、使用しているOSのタイプ(Lite版かデスクトップ版か)によって挙動が異なる点です。
ヘッドレス環境(Lite版)
Lite版では、基本的に NetworkManager のみがネットワークを管理 しています。そのため、NetworkManager を無効化(disable)してしまえば、比較的スムーズに dhcpcd への切り替えが可能です。
デスクトップ環境(Full/Standard版)
デスクトップ版では、GUIでネットワークを管理するために、裏側で systemd-networkd や iwd、さらにはグローバルな wpa_supplicant.service などが動いています。
これらがインターフェース(wlan0)を掴んでしまうと、dhcpcd が IPを取得できず「インターフェースが busy(使用中)」となってしまいます。
Trixie ヘッドレス環境での「最小構成」復旧手順
それでは、実際に私が検証して動作を確認した、Trixie で wpa_supplicant を復活させるための最小手順をご紹介します。
手順1 – 設定ファイルの作成
まずは、おなじみの設定ファイルを作成します。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
内容は以下を参考にしてください。
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
ssid="あなたのSSID"
psk="あなたのパスワード"
}
作成後、セキュリティのために権限を絞っておきましょう。
sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant.conf
手順2 – dhcpcd のインストールと有効化
Trixie では標準でインストールされていないため、手動で導入します。
sudo apt update
sudo apt install dhcpcd5
sudo systemctl enable dhcpcd
手順3 – wpa_supplicant@wlan0 の有効化
特定のインターフェース(wlan0)に対して wpa_supplicant を紐付けます。
sudo systemctl enable wpa_supplicant@wlan0
手順4 – systemd override の作成(最重要!)
ここが最大のポイントです。
Trixie ではデフォルトのサービス定義が wpa_supplicant.conf を参照しないようになっているため、明示的に設定ファイルを指定する「オーバーライド」が必要です。
sudo mkdir -p /etc/systemd/system/wpa_supplicant@wlan0.service.d
sudo vi /etc/systemd/system/wpa_supplicant@wlan0.service.d/override.conf
以下の内容を記述します。
[Service]
ExecStart=
ExecStart=/usr/sbin/wpa_supplicant -c /etc/wpa_supplicant/wpa_supplicant.conf -i wlan0
手順5 – NetworkManager の無効化と起動
最後に、競合する NetworkManager を停止させ、設定を反映します。
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
sudo systemctl daemon-reload
sudo systemctl start wpa_supplicant@wlan0
sudo systemctl start dhcpcd
これで、Bullseyeまでと同じように /etc/wpa_supplicant/wpa_supplicant.conf で Wi-Fi を管理できるようになります!
デスクトップ環境での追加対策
もしデスクトップ環境でうまく繋がらない場合は、以下のサービスが邪魔をしていないか確認してください。
# 状態確認
systemctl status iwd
systemctl status systemd-networkd
もしこれらが active になっている場合は、同様に停止・無効化を行いましょう。
sudo systemctl stop iwd
sudo systemctl disable iwd
sudo systemctl stop systemd-networkd
sudo systemctl disable systemd-networkd
古い方法を変えられない理由がある
今回のポイントを整理すると以下の通りです。
- Trixie では NetworkManager が標準。wpa_supplicant.conf はデフォルトでは使われない。
- 従来方式に戻すには dhcpcd5 の手動インストール が必要。
- systemd の override 設定 がないと、設定ファイルを読み込んでくれない。
- デスクトップ環境では iwd などの競合サービスにも注意。
時代の流れとしては NetworkManager への移行が推奨されていますが、開発環境の都合や運用ポリシー上、どうしても変えられない場面はありますよね。そんな時は、ぜひこの記事の手順を試してみてください。
本日も最後までお読みいただきありがとうございました。
それでは、よい Raspberry Pi ライフを!



