archlinux网络唤醒
前言
由于需要时常在远程启动电脑,
而提前开启电脑这件事总是忘记.
因此研究一下如何远程开启电脑.
术语
Wake-on-LAN
简称WoL,是一种网络唤醒设备的手段.
在进行设置后,
硬件在关机时仍然保持网卡或网口供电,
监听从UDP端口7或端口9发来的Magic Packet广播帧.
然后使用某种方式唤醒电脑.
但似乎是为了安全问题,无线网卡一般不让使用WoL.
Wake-on-Wireless LAN
简称WoWLAN或WoW.
硬件条件
10年前的电脑上的网卡已经基本支持
bios配置
需要打开bios上的 Wake-On LAN
开关
在asrock z390 phantom gaming-itx/ac的bios上,配置选项在boot选项卡附近?
选项I219 wake的上方
系统设置
windows
在网卡属性的电源计划中设置允许唤醒
Arch
-
TODO 以太网卡
使用
ethtool
配置 -
无线网卡
使用
iw
配置-
查看可用的网口
1
iw list
输出的第一行就是,通常是phy0
-
查看wowlan的状态
1
iw phy0 wowlan show
通常是disable
-
开启wowlan
1
sudo iw phy0 wowlan enable magic-packet
还可以同时选取
diconnect
等其他方法 -
测试
电脑挂起后,
有几种办法测试- 在网络服务器上使用
wakeonlan <mac-address>
或etherwake <mac-address>
唤醒 - 下载各种GUI包装的以上命令的软件
- 在有潘多拉系统的路由器上使用网络唤醒
- 在网络服务器上使用
-
关闭wowlan
1
sudo phy0 wowlan disable
测试发现关机重开也会重置该状态?
也就是只能实现从挂起到重新运行?
顺便说一下,远程挂起的命令是1
systemctl suspend
然后确认两次即可
-
持久化
可能出于安全的考虑,wowlan只允许计算机从standby状态恢复到正常使用,
并且在关机后配置会失效,需要重新设置.
因此需要将开启的脚本放在开机自启动的脚本中.
详见永久配置wowlan
-
永久配置wowlan
systemd是一个系统功能的管理模块,
负责系统服务的管理等.
可以自行编写一个service然后使用
1 | systemdctl enable xxx.service |
添加到开机自启.
关于service的写法不清楚时,
通常完全自行写出有难度.
因此可以使用最近才出现在aur上的 wowlan-systemd
包
安装该包后使用
1 | systemctl enable wowlan@phy0 |
开启服务,可以见到该方法使用了 /usr/lib/systemd/system/[email protected]
文件
目前需要改动两点
- iw命令强制要求脚本中不能直接使用
iw phy0 wowlan enable xxx
等形式
需要使用iw phy phy0 wowlan enable xxx
,其中的phy不能省略 - 该命令在系统启动后由于未知原因可能会启动失败,
因此启动方式需要是simple,而不是原先的值(只能启动一次),
并且设置在失败后就启动,
重试的时间可以根据需求来设置.
1 | [Unit] |
更新
由于 iw
导致系统无法从suspend状态(S3)恢复,暂时关闭该服务