首先确定联网的网卡设备,以下都是查看有线网卡硬件
- 输入 ifconfig 查看有线网卡的 ip、名称和 mac,我的有线网卡 ip 是 192.168.31.117,名称是 enp2s0f0,mac 是 3C-07-54-77-24-73
- 输入 sudo ethtool enp2s0f0 打印出网卡的信息,将输出结果复制到记事本中
- 在记事本中搜索关键字找到以下配置:
Supports Wake-on: g Wake-on: d
Supports Wake-on
值为 g
,表示网卡支持远程开机;若为 d
,则不支持。
Wake-on 值为 g,表示网卡已开启远程唤醒功能,若为 d
,则输入命令 sudo ethtool --change enp2s0f0 wol g
开启(该命令只是暂时的,在重启后失效,后续有解决办法),enp2s0f0 是我有线网卡的名称。
4. 再次输入 sudo ethtool enp2s0f0
打印出网卡的信息,查看 Wake-on 值是否为 g
5. 输入 sudo systemctl suspend
使得系统进入睡眠状态,睡眠后的电脑无法 ping 通
6. 在 windows 的浏览器中打开 https://www.nirsoft.net/utils/wake_on_lan.html#DownloadLinks,点击 Download WakeMeOnLan (64-bit) 下载适用于 windows 的远程唤醒软件
7. 下载后解压,进入解压目录,双击打开 WakeMeOnLan.exe,点击 File > Add New Computer,添加 ubuntu 系统的 ip 和 mac,另外两项填写显示名称,点击 OK
8. 在 WakeMeOnLan 软件中,右键刚刚添加的电脑,点击第一个 Wake Up Selected Computers,出现弹出层,点击 是 按钮,过一小会,可以发现,刚刚睡眠的电脑现在可以 ping 通了
9. 接下来的步骤使得远程唤醒功能持久化,都是在刚刚被睡眠的 ubuntu 系统上操作,原理就是创建并启用一个网络唤醒的服务
10. 输入 which ethtool
得到 ethtool 软件的磁盘路径,我这里是 /usr/sbin/ethtool
11. 创建路径如此的一个文件 sudo nano /etc/systemd/system/wol.service
,然后将以下内容粘贴进去:
[Unit]
Description=Enable Wake On Lan
[Service]
Type=oneshot
ExecStart = /sbin/ethtool --change enp4s0 wol g
[Install]
WantedBy=basic.target
注意,将 ExecStart = /sbin/ethtool --change enp4s0 wol g 中 ethtool 软件的路径和 enp4s0 网卡的名称替换掉
我这里替换后为 ExecStart = /usr/sbin/ethtool --change enp2s0f0 wol g
然后保存并退出
12. 启用和查看服务:
# enable
sudo systemctl daemon-reload
sudo systemctl enable wol.service
# check
sudo systemctl status wol
重复 5-8 步骤,查看效果。
参考:
- https://necromuralist.github.io/posts/enabling-wake-on-lan/#orga86fca7
- https://www.windowscentral.com/how-enable-and-use-wake-lan-wol-windows-10
- https://sunlogin.oray.com/news/6362.html
- https://post.smzdm.com/p/amx025p4/
- https://askubuntu.com/questions/1053302/wake-on-lan-not-working-if-i-turn-off-with-ubuntu
来自:https://www.yuque.com/r/note/c6493c03-3a1d-47ab-a935-5fbc3ccd913c