テキストモードWi-Fi接続の安定化(2)
Back
HOME
Raspberry Pi OS も世代が進み WiFi 接続も工夫を凝らして簡単に接続出来る(ただしGUI)ものが増えてきた。ただ GUI が使えないほど古い機種も現役で活躍している。そこでこれからも利用しやすいように10年前のブログを検証し直した。
これらを統合して、起動制御を施した。
使用するネットワークプロトコルは
systemd-networkd によるもので
NetworkManagerは停止 している。
更に、NetworkManager では使うことが無い
systemd-resolved はバンドルされていない事が有るのでインストールしている。
然し Bookworm 以後のプロトコルとして益々重要なものと言える。
=MEMO= リモート・アクセスしている場合、全ての設定を完了するまでは再起動しないこと。
又、hostname.local でアクセスすること。
ネットワークの詳細を設定する
ケーブルによるネットワーク
$ sudo nano /etc/systemd/network/wired.network
GNU nano 7.2 /etc/systemd/network/wired.network
[Match]
Name=eth0
[Network]
DHCP=yes
#DHCP=no
#Address=192.168.0.10/24
#Gateway=192.168.0.1
無線 LAN によるネットワーク
$ sudo nano /etc/systemd/network/wireless.network
GNU nano 7.2 /etc/systemd/network/wireless.network
[Match]
Name=wlan0
#[Link] # 他のサービスが network-online.target に依存している場合有効にする
#RequiredForOnline=yes # ( systemd-networkd-wait-online.service を使う場合 )
[Network]
DHCP=yes
#ConfigureWithoutCarrier=yes # systemd-networkd が wlan0 を no-carrier と判断しても DHCP 処理させる
rfkill による WiFi ブロックを解除
$ sudo nano /etc/systemd/system/wifi-unblock.service
GNU nano 7.2 /etc/systemd/system/wifi-unblock.service
Description=Unblock WiFi Modem
DefaultDependencies=no
Before=sys-subsystem-net-devices-wlan0.device
Before=wpa_supplicant@wlan0.service
Before=systemd-networkd.service
[Service]
Type=oneshot
ExecStart=/usr/sbin/rfkill unblock wifi
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable wifi-unblock.service
WiFi モデムの省エネ設定を解除
$ sudo nano /etc/systemd/system/wifi-powersave-off@.service
GNU nano 7.2 /etc/systemd/system/wifi-powersave-off@.service
[Unit]
Description=Disable WiFi power save on
After=sys-subsystem-net-devices-%i.device
Requires=sys-subsystem-net-devices-%i.device
Before=wpa_supplicant@%i.service
[Service]
Type=oneshot
ExecStart=/usr/sbin/iw dev %i set power_save off
[Install]
WantedBy=multi-user.target
$ sudo systemctl enable wifi-powersave-off@wlan0.service
WiFi モデムの起動サービス
$ sudo nano /etc/systemd/system/wpa_supplicant@.service
GNU nano 7.2 /etc/systemd/system/wpa_supplicant@.service
[Unit]
Description=WPA supplicant daemon (interface-specific version)
Requires=sys-subsystem-net-devices-%i.device
After=sys-subsystem-net-devices-%i.device
Wants=wifi-unblock.service wifi-powersave-off@%i.service
After=wifi-unblock.service wifi-powersave-off@%i.service
[Service]
Type=simple
ExecStart=/sbin/wpa_supplicant \
-i%i \
-c/etc/wpa_supplicant/wpa_supplicant-%i.conf
# -Dnl80211,wext \
# -C/run/wpa_supplicant
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
ユニットファイル名の「@」の後ろに、
wireless.network で指定した
Name=wlan0 を追記して有効にする。
$ sudo systemctl enable wpa_supplicant@wlan0.service
既存のネットワークサービスを無効にする
$ sudo systemctl disable wpa_supplicant.service
$ sudo systemctl disable NetworkManager.service
次に、WiFi の接続情報ファイル wpa_supplicant-wlan0.conf を作成する
wpa_passphraseを使用して出力をそのまま目標のファイルにリダイレクトしてファイルを作成する。
> は新規に記入、
>> はその後ろに加えて記入となる。
例のように、WARPSTAR-8FE884 は対象ルータの
SSID、またその後ろの13桁は
WPA暗号化キーである。
=MEMO= 直接 /etc/wpa_supplicantフォルダを指定しても書き込めないので、一旦homeにファイルを作って後で mv する。
$ sudo wpa_passphrase WARPSTAR-8FE884 0046D824FE72C > wpa_supplicant-wlan0.conf
$ sudo wpa_passphrase AndroidHotspot9999 256tugh6755ef >> wpa_supplicant-wlan0.conf
$ sudo mv wpa_supplicant-wlan0.conf /etc/wpa_supplicant/
$ sudo nano /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
GNU nano 2.2.6 File: /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
network={
ssid=”WARPSTAR-8FE884″
#psk=”0046D824FE72C”
psk=19f5f008061fd70d815cfa74377a73222e0e42df442f76225f73b30d9bd3fb18
}
network={
ssid=”AndroidHotspot9999″
#psk=”256tugh6755ef”
psk=5162a3ce57038a908e5eda9e238f87f419e38f288ed327d77ea60dfa0f97019f
}
ファイルを確認したら、#psk=”—-” の部分はパスワード同然なので [
Ctrl]+[
k]で行削除する。
[
Ctrl]+[
o]で保存、[
Ctrl]+[
x]で終了したら、ファイルへのアクセス権限を制限する。
$ sudo chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
デフォルトゲートウェイを自動で設定させる
$ sudo apt -y install systemd-resolved
$ sudo systemctl enable systemd-resolved.service
$ sudo systemctl start systemd-resolved.service
$ sudo rm /etc/resolv.conf
$ sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
Back
HOME

この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by