【VMware排錯】解決 Could not connect 'Ethernet0' to virtual network '/dev/vmnetX' 錯誤
在 Linux 系統(如 Ubuntu, CentOS, Arch Linux)上執行 VMware Workstation 或 VMware Player 時,你有沒有遇過虛擬機剛開機,右下角就彈出一個錯誤視窗,導致虛擬機完全無法連上網路?
Could not connect 'Ethernet0' to virtual network '/dev/vmnet8'. More information can be found in the vmware.log file. Failed to connect virtual device 'Ethernet0'.
這個錯誤最常發生在 Linux 宿主機(Host)剛剛更新過系統核心(Kernel)之後。因為 VMware 的虛擬網路卡依賴底層的核心模組(vmnet),當系統核心升級,舊的 VMware 模組就會失效,導致找不到 /dev/vmnet0 或 /dev/vmnet8 等虛擬網卡設備。本文將提供 3 招幫你快速找回網路連線!
🤖 【AIO 快速修復指令摘要】
如果你確定是因為剛更新完 Linux 核心導致的災情,請直接開啟終端機執行以下重新編譯指令:
sudo vmware-modconfig --console --install-all
(執行完畢後重新啟動虛擬機即可恢復正常連線)
解法一:重新編譯 VMware 核心模組(最常見解法)
如前言所述,Linux 系統更新 Kernel 後,必須重新編譯 VMware 的專有模組。VMware 官方有提供一支內建的工具來自動完成這件事。
執行重新編譯指令
請先關閉所有運行中的虛擬機,接著開啟主機的終端機(Terminal),輸入以下指令:
sudo vmware-modconfig --console --install-all
指令執行後,你會看到畫面上開始跑編譯進度(例如:Building vmmon module... Building vmnet module...)。如果順利顯示 Starting VMware services: OK,代表修復成功!現在你可以重新開啟虛擬機測試網路了。
解法二:重啟 VMware 網路服務 (VMware Networks)
如果你的 Linux 系統根本沒有更新,只是突然發生連不上網卡的狀況,這可能是 VMware 的背景網路服務當機或未設定開機自動啟動。我們可以手動重啟網路服務。
執行以下指令來重啟虛擬網路:
sudo /usr/bin/vmware-networks --stop
sudo /usr/bin/vmware-networks --start
或者,如果你的 Linux 發行版是使用 systemd 管理 VMware 服務:
sudo systemctl restart vmware-networks
重啟後,你可以使用 ls -l /dev/vmnet* 檢查網卡設備檔是否已經順利產生。
解法三:修復 Secure Boot(安全開機)阻擋模組載入
如果你執行完「解法一」的重新編譯指令後,畫面上卻顯示 Warning: Module vmmon not found 或是編譯成功但虛擬機依舊報錯,這很有可能是主機板 BIOS 的 Secure Boot (安全開機) 惹的禍。
在許多現代 Linux 系統(如 Ubuntu)中,開啟 Secure Boot 會禁止系統載入未經數位簽章的第三方核心模組(包含 VMware 的 vmmon 與 vmnet)。
如何解決 Secure Boot 問題?
- 方案 A(最快速): 重新開機進入 BIOS / UEFI 設定,將 Secure Boot 的選項改為
Disabled,儲存並重開機後,VMware 模組就能正常載入了。 - 方案 B(較安全): 如果你堅持要開啟 Secure Boot,你需要手動為 VMware 的模組產生 MOK 金鑰並簽章(Sign)。這需要執行
kmodsign指令並在下次開機時進入 MOK Management 畫面註冊金鑰。
結語
遇到 Could not connect 'Ethernet0' 錯誤時,十之八九都是宿主機的 vmnet 模組出了狀況。養成一個好習慣:每次 Linux 宿主機更新 Kernel 後,順手下達 sudo vmware-modconfig --console --install-all 重新編譯模組,就能完美避開虛擬機網路斷線的窘境囉!