我有两台机器,都运行 Ubuntu 18.04。我的目标是让 WOL 在两台机器上都能正常工作。
在一台机器(PC1)上,WOL 运行正常,但在另一台机器(PC2)上,WOL 却无法运行。
我的设置(在两台电脑上)是:
我已禁用网络管理器,如下所示:
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
sudo systemctl mask NetworkManager
我已启用网络,如下所示:
sudo systemctl unmask systemd-networkd.service
sudo systemctl enable systemd-networkd.service
sudo systemctl start systemd-networkd.service
我修改了目录中的唯一文件/etc/netplan,即/etc/netplan/01-网络管理器-all.yaml因此它看起来像这样(PC1):
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses:
- 192.168.1.113/24
gateway4: 192.168.1.1
wakeonlan: true
nameservers:
addresses: [103.86.96.100, 103.86.99.100]
PC2 完全相同,只是eno1是enp1s0并且IP地址也不同(当然)。
两台机器均启动正常,以太网连接正常,我可以从两台机器正常访问互联网。
如果我输入
sudo ethtool enp1s0
在 PC2 上我得到了这个(摘录):
Supports Wake-on: pumbg
Wake-on: d
在 PC1(eno1)上我得到(提取)
Supports Wake-on: pumbg
Wake-on: g
如果我输入(在 PC2 上):
sudo ethtool -s enp1s0 wol g
进而
sudo ethtool enp1s0
我明白了
Supports Wake-on: pumbg
Wake-on: g
如果我关闭 PC2,WOL 将按预期工作(但这当然只是“一次性”)。
如果我把sudo ethtool -s enp1s0 wol g在一个启动脚本或关闭我在 PC2 上安装的脚本(均以 sudo 权限运行)导致 WOL 不起作用。
我认为 PC1 和 PC2 之间的唯一区别是主板;PC2 有 Gigabyte GA-H110M-S2H;PC1 有 ASUS SABERTOOTH X79)
如果任何人提出任何建议或见解,我将不胜感激。
提前致谢。
答案1
固定的。
事实证明这是驱动程序问题。 Gigabyte GA-H110M-S2H 上的 NIC 是 Realtek 8168 设备;Ubuntu 使用的是 8169 驱动程序。为了解决这个问题,我做了以下操作:
sudo apt-get install r8168-dkms
该过程需要一点时间,因为新驱动程序已构建并安装到我的内核中。(dkms 确保如果发生任何内核更新,则会自动重新构建新内核)。
我必须重新启动才能使 WOL 正常工作。