Ubuntuで systemd-networkd-wait-online のタイムアウト発生で起動に時間がかかる

ALL
スポンサーリンク
スポンサーリンク

現象の確認

/var/log/syslog に次のようなエラーがあれば、本記事の対象です。
systemd-networkd-wait-online は起動時に、各ネットワークインタフェース(eth0やwlan0等)のネットワーク接続確立を待ちます。接続確立しないインタフェースがあると、タイムアウト待ちによって Ubuntuの起動が遅延します。
たとえば、無線LANのSSIDに接続しない、無線LANインタフェースがある場合です。

ubuntu systemd-networkd-wait-online[685]: Timeout occurred while waiting for network connectivity.

次のようにして手動で systemd-networkd-wait-online を実行してみます。

SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/systemd-networkd-wait-online

2分後くらいに次のように「Timeout occurred while waiting for network connectivity.」の表示が出ます。

Found link 3
Found link 2
Found link 1
wlan0: link is not managed by networkd (yet?).
lo: link is ignored
eth0: link is ignored
Timeout occurred while waiting for network connectivity.

対処

タイムアウトしているネットワークインターフェイスの確認

次のように networkctl コマンドを実行すると、ネットワークインターフェイスの状態が一覧で表示されます。

# networkctl
IDX LINK  TYPE     OPERATIONAL SETUP
  1 lo    loopback carrier     unmanaged
  2 eth0  ether    routable    configured
  3 wlan0 wlan     off         unmanaged

表示された結果で、SETUP列が unmanaged で、LINK列が lo 以外のもの(この例では wlan0)を、次のように --ignore= で指定してsystemd-networkd-wait-online を実行します。

SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/systemd-networkd-wait-online --ignore=wlan0

次のような表示がすぐ出たらOKです。

Found link 3
Found link 2
Found link 1
eth0: link is ignored
wlan0: link is ignored
lo: link is ignored

systemd-networkd-wait-online の起動設定へ反映

/usr/lib/systemd/system/systemd-networkd-wait-online.service を修正します。

次のように ExecStart 行で、先ほど確認したタイムアウトしているネットワークインターフェイスを、--ignore= で指定します。

変更前)
    ExecStart=/lib/systemd/systemd-networkd-wait-online
変更後)
    ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=wlan0

反映させます。

systemctl daemon-reload
systemctl restart systemd-networkd-wait-online

これで起動時に systemd-networkd-wait-online で止まることが無くなります。

参考

Linuxサーバ起動時のsystemd-networkd-wait-onlineの待機を解除する #ubuntu20.04 – Qiita
Ubuntu jammy -> mantic で systemd-networkd-wait-online がタイムアウト #Ubuntu – Qiita

コメント