這是一張有關標題為 解決 Ubuntu 24.04 網路線插入,但網路指示燈不亮且無網路的問題 的圖片

解決 Ubuntu 24.04 網路線插入,但網路指示燈不亮且無網路的問題

如何修復 Ubuntu Server 24.04 開機因網路埠燈不亮與 systemd-networkd-wait-online 停滯,於 GRUB 恢復模式編輯 Netplan、修正 50-cloud-init.yaml 權限後重啟,提供停用 network-wait 服務,解決開機停滯問題並恢復網路連線。

前言

最近有新的需求安裝 Ubuntu 伺服器(24.04.2 LTS),插入網路線,結果主機後方的網路孔沒有亮。

Ubuntu 伺服器的設計中,預設使用 systemd-networkd,所以 systemd-networkd-wait-online.service 這個對應的「等待服務」也會被啟用。當網路設定有問題或網卡未連接時,這個服務就會導致開機流程停滯,直到超時(120 秒)。

在 Ubuntu 安裝過程中要先設定好,否則,開機時可能會長時間卡住,延誤進入登入畫面的時間或是無法成功進入系統。

安裝時建議插入網路線,並設定好網路相關資訊 開機沒偵測到網路,無法進入 bash

進入系統進行修復

如果可以進入系統,相對單純很多。可以參照《Ubuntu Server 24.04:安裝、磁碟分割與網路設定》的 配置網路設定 章節,設定好介面名稱與如何取得 IP,重新啟動系統後,網路會自動連線成功。

使用復原模式

如果沒辦法進入系統進行設定,我們可以在重開機時,不斷按下 Esc 進入到 GNU GRUB 介面。在 grub shell 輸入狀態下輸入 exit 後 Enter 回到 GNU boot menu。

grub shell grub boot menu

選擇 Advanced options for UbuntuUbuntu .... (recovery mode)

選擇「root - Drop to root shell prompt」以進入 root 權限的 bash 終端機

最後會要求按 Enter 進入一個 root 權限的終端機環境(root shell prompt),讓我們可以直接對系統進行操作。

設定網路

參照《Ubuntu Server 24.04:安裝、磁碟分割與網路設定》的配置網路設定 章節進行設定。

我在復原模式下建立好網路配置後,進行 sudo netplan apply 時,出現:

1
'50-cloud-init.yaml' are too open. Netplan configuration should NOT be accessible by others.

可執行以下指令修正權限:

1
2
3
4
5
6
7
8
# 將 50-cloud-init.yaml 權限設為 600(僅 root 可讀寫)
sudo chmod 600 /etc/netplan/50-cloud-init.yaml

# 再次套用 Netplan 設定
sudo netplan apply

# 若前述步驟都成功,可立即重開機以驗證開機過程是否正常:
sudo reboot

重開機後,網路設定正常的話就不會在開機階段時停滯。

停用網路等待服務(選用)

當初我是先關閉網路等待服務,成功進入到系統在配置網路。如果在復原模式下就設定好網路,網路等待服務應該會直接秒進也不會卡住。

所以這部分停用網路等待服務並不是必需的,想要停用此服務可以透過以下指令:

1
2
3
4
sudo systemctl disable systemd-networkd-wait-online.service
sudo systemctl mask systemd-networkd-wait-online.service
sudo systemctl daemon-reload
sudo reboot

最後重開機便可以避免長時間的等待,快速到達登入提示畫面。

結論

Ubuntu 伺服器由於其伺服器定位,首要任務就是確保網路連線暢通,以便進行遠端管理和提供服務。因此,在安裝過程中就正確設定網路至關重要。

此次遇到「插上網路線,主機網路孔燈不亮而無法進入系統」的問題,其根本原因在於 Ubuntu 24.04 預設啟用的 systemd-networkd-wait-online.service。此服務會在開機時等待網路連線就緒,若網路設定有誤或無法連線,便會導致開機程序卡住,直到超時。

照理來說,即使卡住一段時間,系統最終還是會顯示登入提示畫面。不過我這次修復方式是透過 GRUB 開機選單進入「復原模式(Recovery Mode)」。

在復原模式下取得 root 權限的終端機後,我們就能不受開機服務的影響,修改 Netplan 的網路設定檔(/etc/netplan/50-cloud-init.yaml),修正設定並套用配置。重新開機後,系統便能正常偵測到網路,順利進入登入畫面,徹底解決了開機卡關的問題。

可以的話,更建議在安裝過程中就先插好網路線,並在安裝階段就設定好網路相關配置,避免後續更多不必要的操作。

主題 Stack 由 Jimmy 設計