Debian Bookworm のインストールウィザードに従って Wi-Fi の設定をすると、/etc/network/interfaces
にアクセスポイントに関する具体的な設定が直接書かれ、/etc/wpa_supplicant/*.conf
は何も読まれない。
これだと一つしかアクセスポイントを設定できなく (できる?)、また wpa_cli で save_config
ができず不便なので、wpa_supplicant の設定ファイルを読むように設定する。
まず、/etc/network/interfaces
は ifup/ifdown によって読まれる (INTERFACES(5))。
ifup はこれを読んでネットワークインターフェースを UP したりプロトコルデーモンを起動したり wpa_supplicant を起動したり (今回はこれをやめてほしい) dhclient を実行したり (これはやってほしい) する。
ということは、/etc/network/interfaces
を適当に記述して ifup (systemd unit ifup@.service
により呼び出し) が *.conf
を読まない wpa_supplicant を起動しないようにすればよい。
具体的には、Debian install wizard によって /etc/network/interfaces
に
# The primary network interface
allow-hotplug wlp4s0
iface wlp4s0 inet dhcp
wpa-ssid "your_ssid"
wpa-psk "your_psk"
と書かれたとすれば、wpa-*
なる行を削除してやればいい。
# The primary network interface
allow-hotplug wlp4s0
iface wlp4s0 inet dhcp
これで、ifup@.service
を start しても意図しない wpa_supplicant は起動しなくなった。
続いて、プリインストールされており便利だが初期インストール時では無効化されている wpa_supplicant@${IFNAME}.service
を有効化する。
上記の interfaces
ファイルを仮定すれば IFNAME=wlp4s0
。
wpa_supplicant@.service
を見るとわかるが、これ (instantiate された サービステンプレート) はテンプレート部分の suffix をつけた wpa supplicant config file /etc/wpa_supplicant/wpa_supplicant-${IFNAME}.conf
を読むので、同 wpa_supplicant-${IFNAME}.conf
の初期設定を書く。オンラインマニュアルの wpa_supplicant.conf
を参考に、
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
とした。あとは wpa_cli で設定をし save_config
を発行してもいいし、同コンフィグファイルを手動で編集してもよい。
以下過去の記述
ます、ifup@.service
を止めて無効化する。このサービスが ExecStart
する ifup
が wpa_supplicant
を起動するため、後に設定する wpa_supplicant@.service
とプロセスが衝突するのを防ぐ必要がある。ついでに、ifup
は dhclient も実行するようだ。
つぎに、/etc/wpa_supplicant/wpa_supplicant-${IFNAME}.conf
を作成する。man を参考に、ctrl_interface
と udpate_config
だけ書いておき、具体的な AP の設定は wpa_cli でやることにする。
最後に wpa_supplicant@${IFNAME}.service
を有効化・開始する。これで wpa_cli 経由で複数の AP を登録することができる。
ifup@.service
を止めると dhclient を手動で発行しないといけない。適当に新たにサービスを作るか、またはすでになにか用意されていないか確認する。