在安裝完Ubuntu並重新開機後,可能會在開機畫面中看到「A start job is running for wait for Network to be configured」這樣的訊息,然後會有一個計時器開始計時,一直到兩分鐘後才可繼續進行之後的開機流程。這個問題的原因是出在哪呢?要如何解決?



ubuntu-start-job-wait-network

在登入Ubuntu作業系統後,可以使用以下指令來查看「systemd-networkd-wait-online.service」這個Systemd Unit的狀態。

sudo systemctl status systemd-networkd-wait-online.service

ubuntu-start-job-wait-network

我們可以根據狀態訊息來確認,問題點確實是發生在開機配置網路的時候,因為配置一直無法完成,所以逾時了。

那個究竟是哪個網路介面無法正常被配置呢?可以使用以下指令來查看:

networkctl

ubuntu-start-job-wait-network

從上面這張圖的結果可以看出,筆者電腦的「enp0s8」這個網路介面似乎有問題,配置了好幾分鐘都還沒結束。這個「enp0s8」事實上是虛擬機器提供的僅限主機網路介面。

Ubuntu所使用的網路管理工具為「netplan」,設定檔都放置於「/etc/netplan」這個目錄下。因此我們可以利用「grep」指令來查找「enp0s8」這個網路介面的設定檔是在哪個檔案內進行設定的。指令如下:

cd /etc/netplan; grep -r enp0s8

ubuntu-start-job-wait-network

從上圖的「grep」指令搜尋結果中,可以知道我們要找的設定檔為「50-cloud-init.yaml」。於是使用文字編輯器來開啟它。指令如下:

sudo vim /etc/netplan/50-cloud-init.yaml

ubuntu-start-job-wait-network

ubuntu-start-job-wait-network

通常這個問題是DHCP無法正常取得網路資訊的緣故所致,因此我們要停用「enp0s8」這個網路介面的DHCP,手動指定IP等網段資訊給它。設定方式如下圖:

ubuntu-start-job-wait-network

儲存設定檔的更變後,使用以下指令來立即套用:

sudo netplan generate && sudo netplan apply

「netplan」指令的「generate」子命令可以去讀取「/etc/netplan」這個目錄下的「.yaml」檔案,並將它們轉成systemd網路的設定檔。「apply」子命令則可以套用目前systemd網路的設定檔。

ubuntu-start-job-wait-network

再使用以下指令來查看:

ubuntu-start-job-wait-network

如上圖,網路介面看起來都已經完全沒問題了!開機也不需要再等待啦!