WOL介绍
WOL是Wake On Lan就是通过网卡启动电脑操作。具体就是客户端发送一个命令,电脑由于没有彻底断电会响应这条命令,用于启动电脑。如果有公网IP就可以实现随时启动电脑。这需要硬件和软件同时协作,不过大部分网卡都支持,Windows和Ubuntu也都可以设置。下面就说说设置步骤,和遇到的坑。
Bios开启主板功能
- 开机按'F2'或'F12'或DEL进BIOS
- 进高级模式
- 点高级选项
- 找到高级电源管理(APM)
- 开启由PCI-E设备唤醒
- F10保存退出
Windows设置和测试
- 打开Windows系统
- 鼠标右键点击我的电脑,进管理
- 选设备管理->网络适配器
- 找到网卡->鼠标右键->属性
- 高级选项->找到Wake On...相关的选项,都设置为Enable
- 电源管理->全部勾上确定
完成以上设置其实都已经可以了。如果有其他电脑,或手机就可以尝试唤醒电脑了。我用的手机上的termux安装了一个软件wol。
忘了这里还需要几个参数: - 网卡Mac,通过CMD命令行查询。Win+R 输入cmd打开命令行
- 输入ipconfig /all。找到物理地址(XX-XX-XX-XX-XX-XX)记录下来
- IPv4地址也记录下来
还可以网上下载一个WakeOnLan monitor的软件。打开后点开始。
在另外一台电脑或手机发送唤醒命令。我用的wol如下:
wol -h 刚查的电脑地址 -p 4343 刚查的物理地址
如果正常软件中就会显示收到一个唤醒数据包,包含了那个发送的,包长度等信息。快关机尝试一下吧。
ubuntu设置
bash
sudo apt install ethtool
# enpxs0是你的网卡号,需要根据实际情况更改
sudo ethtool enpxs0
# 查看网卡信息,有一行Wake-On d。只需要把后面的d改成g就好了
sudo ethtool -s enpxs0 wlo g
# 设置了就可以了,但重启还是需要重新设置,所以需要把这条命令加入到开机自动启动
# 网络上的教程都是在/etc/systemd/system/目录下加一个service。尝试了发现命令运行了Wake-On选项还是没有打开。
# 实际测试发现这条命令需要在系统启动之后延时一段时间执行才行,因此我将它加入到crontab。具体做法如下
# 切换到root用户
su
crontab -e
# 加入一行启动运行命令
@reboot sleep 15 && /usr/sbin/ethtool -s enpxs0 wlo g