前言
最近有新的需求安裝 Ubuntu 伺服器(24.04.2 LTS),插入網路線,結果主機後方的網路孔沒有亮。
Ubuntu 伺服器的設計中,預設使用 systemd-networkd
,所以 systemd-networkd-wait-online.service
這個對應的「等待服務」也會被啟用。當網路設定有問題或網卡未連接時,這個服務就會導致開機流程停滯,直到超時(120 秒)。
在 Ubuntu 安裝過程中要先設定好,否則,開機時可能會長時間卡住,延誤進入登入畫面的時間或是無法成功進入系統。
進入系統進行修復
如果可以進入系統,相對單純很多。可以參照《Ubuntu Server 24.04:安裝、磁碟分割與網路設定》的 配置網路設定 章節,設定好介面名稱與如何取得 IP,重新啟動系統後,網路會自動連線成功。
使用復原模式
如果沒辦法進入系統進行設定,我們可以在重開機時,不斷按下 Esc 進入到 GNU GRUB 介面。在 grub shell 輸入狀態下輸入 exit
後 Enter 回到 GNU boot menu。
選擇 Advanced options for Ubuntu
→ Ubuntu .... (recovery mode)
最後會要求按 Enter 進入一個 root 權限的終端機環境(root shell prompt),讓我們可以直接對系統進行操作。
設定網路
參照《Ubuntu Server 24.04:安裝、磁碟分割與網路設定》的配置網路設定 章節進行設定。
我在復原模式下建立好網路配置後,進行 sudo netplan apply
時,出現:
|
|
可執行以下指令修正權限:
|
|
重開機後,網路設定正常的話就不會在開機階段時停滯。
停用網路等待服務(選用)
當初我是先關閉網路等待服務,成功進入到系統在配置網路。如果在復原模式下就設定好網路,網路等待服務應該會直接秒進也不會卡住。
所以這部分停用網路等待服務並不是必需的,想要停用此服務可以透過以下指令:
|
|
最後重開機便可以避免長時間的等待,快速到達登入提示畫面。
結論
Ubuntu 伺服器由於其伺服器定位,首要任務就是確保網路連線暢通,以便進行遠端管理和提供服務。因此,在安裝過程中就正確設定網路至關重要。
此次遇到「插上網路線,主機網路孔燈不亮而無法進入系統」的問題,其根本原因在於 Ubuntu 24.04 預設啟用的 systemd-networkd-wait-online.service。此服務會在開機時等待網路連線就緒,若網路設定有誤或無法連線,便會導致開機程序卡住,直到超時。
照理來說,即使卡住一段時間,系統最終還是會顯示登入提示畫面。不過我這次修復方式是透過 GRUB 開機選單進入「復原模式(Recovery Mode)」。
在復原模式下取得 root 權限的終端機後,我們就能不受開機服務的影響,修改 Netplan 的網路設定檔(/etc/netplan/50-cloud-init.yaml),修正設定並套用配置。重新開機後,系統便能正常偵測到網路,順利進入登入畫面,徹底解決了開機卡關的問題。
可以的話,更建議在安裝過程中就先插好網路線,並在安裝階段就設定好網路相關配置,避免後續更多不必要的操作。