inohilog

/var/log/inohiro.log

テストファイルに変更があったら検知して勝手に rspec を実行する

entr をインストールして(Homebrew で入る)、以下のような感じで

$ find spec/models/user_spec.rb | entr bundle exec rspec /_

昔だと guard 入れて設定ファイル書いてとちょっと煩雑だった気がするけど、entr はすぐ動くので、もうかれこれ過去3年以上はこのやり方。

あとは、spec_helper.rb にある filter_run_when_matching :focus のコメントを解除すると、focus モードが使えて it に focus の 'f' を付けて fit にするとそのテストケースだけ実行してくれる、という便利機能を愛用しています。が、最近は Claude Code にコードを書いてもらいレビューばっかりしています。

Class: RSpec::Core::Configuration — Documentation by YARD 0.9.24

wpa_supplicant.conf を直接編集しても反映されなかったのは、NetworkManager (nmcli)を使わなないといけなかった話

実家(日本)に設置している Raspberry Pi 5 に新しい Wifi 接続先を追加したかったので wpa_supplicant.conf に直接設定を追加したり、wpa_cli コマンドで追加しようとしたけど、なかなか読み込んでくれなくて、ChatGPT さんに説明してチェックするべき箇所など教えてもらった。さらにそのやりとりをブログ記事用の Markdown にして出力してくださいとお願いした内容。多少手直しは必要でした(以下)


D-Bus と NetworkManager による Wi-Fi 設定の優先順位調整

最近、リモートの Linux サーバーに接続している環境で、wpa_supplicant に新しい SSID を追加しても、優先順位(priority)が適切に反映されないという問題に直面しました。最初は、wpa_supplicant.conf の設定や wpa_cli コマンドを使って手動で接続先を変更しようとしていましたが、なかなかうまくいきませんでした。

問題の本質は、wpa_supplicantD-Bus モード で実行されていたことに気づいたことにあります。これにより、wpa_supplicant の設定やネットワーク管理が NetworkManager によって制御されていたため、wpa_supplicant の設定ファイルを直接変更しても反映されなかったのです。

問題の背景

  • wpa_supplicant で新しい SSID を追加しても priority が適切に設定されない。
  • wpa_supplicantD-Bus モード で動作しており、NetworkManager がネットワーク設定を管理しているため、直接的な設定変更が効かない。
  • wpa_cli コマンドでも、手動で設定した接続先が list_networks に表示されず、期待した動作をしない。

解決策

最終的に解決策として、NetworkManager を使って Wi-Fi 接続先の優先順位を管理する方法が正しいと判明しました。NetworkManagerD-Bus を使用してネットワーク設定を行うため、wpa_supplicant に直接設定を行う必要はありませんでした。

NetworkManagerSSID の優先順位を設定

NetworkManager では、nmcli コマンドを使って接続先の優先順位を変更することができます。このコマンドを使えば、Wi-Fi 接続の優先順位を簡単に設定できます。

# nmcli connection modify "SSID_A" connection.autoconnect-priority 100

上記のコマンドで、SSID_A の優先順位を 100 に設定することができます。これにより、NetworkManager はこの接続先を高い優先度で選択します。

nmcli で新しい接続先を追加する方法

nmcli を使うことで、新しい Wi-Fi 接続先を簡単に追加できます。以下の手順で新しいネットワークを手動で追加することができます。

  1. 新しい接続を追加する 以下のコマンドで、新しい SSID(例: SSID_B)を指定して接続を作成します。
# nmcli device wifi connect "SSID_B" password "your_wifi_password"

このコマンドは、SSID_B に対して指定されたパスワードを使って接続します。

  1. 接続設定を確認する 新しく追加した接続設定が一覧に表示されることを確認するために、次のコマンドを実行します。
# nmcli connection show

これにより、現在の接続設定が表示され、接続したネットワークの詳細を確認できます。

接続の優先順位を設定する 新しい接続を追加した後、優先順位を設定するために以下のコマンドを使用します。

# nmcli connection modify "SSID_B" connection.autoconnect-priority 100

これにより、新しい接続先の優先順位が設定され、NetworkManager がその接続を高い優先度で選択するようになります。

D-Bus モードの理解

wpa_supplicant が D-Bus モード で動作している場合、通常の設定ファイル(wpa_supplicant.conf)は直接反映されません。NetworkManager が背後で D-Bus を介してネットワーク設定を管理しているため、手動での設定変更はあまり効果的ではないのです。

この問題を解決するためには、NetworkManager を介して設定を変更することが重要で、nmcli コマンドや GUI(nmtui や nm-connection-editor)を使って設定することが推奨されます。 まとめ

  • wpa_supplicant が D-Bus モード で動作している場合、NetworkManager がネットワーク管理を担当しており、直接 wpa_supplicant.conf を編集しても反映されない。
  • 優先順位の設定 には、nmcli や NetworkManager のツールを使って設定するのが正解。
  • D-Bus モードの特性を理解し、適切なツールを使うことが重要です。

これで、Wi-Fi 接続の優先順位問題が解決しました。今後は NetworkManager を使って接続先の管理を行っていきます。