Ubuntu serverを起動するときに、2分ほど待たされる。
画面を見ると、A start job running for Wait for Network to be Conigured ( 48s / no limit ) と書かれている。
この48sという表示がカウントアップしていって、2分が経過すると先に進む。
検索して最初に見つけたのがこの投稿で、再起動してみるとすぐに効果が現れた。
Ask Ubuntu / A start job is running for wait for network to be configured. Ubuntu server 17.10
どうやら、systemd-networkd-wait-onlineというサービスがあって、ネットワークがオンラインになるのを待っているようだ。
原因の確認
結論からすると、ルーティング設定の誤りが原因だった。
調査方法についてメモしておく。
設定を戻して再起動し、ネットワークインターフェースの状態を確認する。
Github / systemd / systemd / systemd-networkd-wait-online seems to fail for no reason #6441
$ networkctl status -a
...
● 2: ens160
Link File: /usr/lib/systemd/network/99-default.link
Network File: /run/systemd/network/10-netplan-ens160.network
Type: ether
State: routable (configuring)
Online state: online
...
そうすると、ens160がroutableだけれども、configuringとなっていて、構成中のままであることが分かった。
2分間というのは、systemd-networkd-wait-onlineのタイムアウト時間だそうだ。
そこで、デバッグログを出力させて原因を探る。
Github / systemd / systemd / systemd-networkd-wait-online seems to fail for no reason #6441
$ sudo systemctl edit systemd-networkd.service
[Service] Environment=SYSTEMD_LOG_LEVEL=debug
これで再起動したところ、以下のログが出力されていた。
/var/log/syslog
systemd-networkd[895]: ens160: link_check_ready(): static routes are not configured.
テスト用に作成したルーティングの設定が機能しなくなっており、それが原因でリンクチェックがいつまで経っても終わらなくなっていたのだった。
このルーティング設定は不要になっていたので、netplanでその設定を削除して問題は収束した。
調査が終わったので、デバッグログの出力を止めるために、先程入れた上書き設定を削除する。
(他にも何か設定を入れている場合には、もう一度editしてその行を削除すればOK)
$ sudo systemctl revert systemd-networkd.service $ sudo systemctl restart systemd-networkd
これでスムーズに起動するようになった。
1つでもネットワークが有効になれば良い場合
有線LANと無線LANを持っているデバイスの場合、どちらかが有効になればOK。
ウチにそんな状態のUbuntuがないので試せていないけれども、見たところではこの設定が使えそう。
Github / systemd / systemd / systemd-networkd-wait-online timeout again (#6441) #15173
sudo systemctl edit systemd-networkd-wait-online.service
[Service] ExecStart= ExecStart=/lib/systemd/systemd-networkd-wait-online --any
このanyを確認してみたところ、どれか一つがオンラインになれば先に進むということのようだった。
なお、最初の空設定は必要で重要とされていた。
これを見ながら思ったのだけれど、サーバーとして動作させる場合には、ネットワークが起動していることは重要。
冒頭のリンク先で教えてくれているように、
ExecStart=/lib/systemd/systemd-networkd-wait-online --ignore=enp9s0 --ignore=wlp12s0 --quiet
といった設定で、無視しして良いインターフェースを定義しておくべきなのだろう。
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他