必须打通BIOS、内核驱动与系统服务三层:BIOS启用Wake-on-LAN并禁用ErP/EuP节能;用ethtool临时启用wol g并以udev或systemd持久化;禁用systemd休眠目标;最后用etherwake发魔术包验证。

要在银河麒麟V10系统中实现关机后通过局域网信号远程开机,必须确保主板BIOS持续为网卡提供+3.3V AUX待机电压、Linux内核正确授权Magic Packet监听能力、系统服务不覆盖该设置,且无休眠机制抢占控制权——任意一环断裂,唤醒即失效。
BIOS中启用Wake-on-LAN并禁用节能限制
这一步是物理前提,跳过则后续所有操作均无效。主板若切断网卡待机电压,WOL彻底不可用。
1、关机后按下电源键,在自检画面刚出现时连续敲击Delete或F2键(部分品牌为F12),进入BIOS设置界面。
2、切换至Advanced(高级)或Power Management(电源管理)选项卡。
3、查找并启用以下任一选项:Wake on LAN、PME Event Wake Up、Resume by LAN、Power On By Onboard LAN。
4、【必须执行】将ErP Ready、EuP 2013、Deep Sleep Control全部设为Disabled——这些节能模式会直接切断PCIe设备的+3.3Vaux供电,导致网卡在S5状态下完全失活,WOL必然失败。
5、按F10保存退出,系统自动重启,BIOS层配置即固化生效。
确认网卡支持并临时启用WOL
不是所有有线网卡都默认报告WOL能力,尤其部分国产芯片或Realtek RTL8168系列需驱动配合。先验证再操作,避免误判。
打开终端,执行:ip -br a | grep UP,记下处于UP状态的有线接口名(如enp3s0、ens160、eth0);无线网卡不支持WOL,切勿选错。
运行:sudo ethtool 接口名(例如sudo ethtool enp3s0),重点查看两行输出:
→ Supports Wake-on: 后是否含字母g(表示硬件支持Magic Packet);
→ Wake-on: 当前值是否为d(d=禁用,g=已启用)。
若显示Wake-on: d,立即执行:sudo ethtool -s 接口名 wol g。
再次运行sudo ethtool 接口名,确认输出变为Wake-on: g——这一步仅当前会话有效,重启即丢失,但可验证通路是否畅通。
让WOL配置开机自动生效
NetworkManager会在每次网卡up时重置ethtool参数,导致WOL在重启或热插拔后失效。必须绕过其管理链路。以下三种方案任选其一:
方法一(udev规则,轻量推荐):
执行:echo 'SUBSYSTEM=="net", ACTION=="add", KERNEL=="接口名", RUN+="/sbin/ethtool -s %k wol g"' | sudo tee /etc/udev/rules.d/99-wol.rules,注意将“接口名”替换为你实际的网卡名(如enp3s0)。
重载规则:sudo udevadm control --reload-rules && sudo udevadm trigger --subsystem-match=net,无需重启即生效。
方法二(systemd服务,生产环境更可靠):
① 创建服务文件:sudo nano /etc/systemd/system/wol@.service;
② 写入内容(注意替换ens160为你的接口名):
[Unit]
Description=Enable Wake-on-LAN for %i
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/sbin/ethtool -s %i wol g
[Install]
WantedBy=multi-user.target
③ 启用服务:sudo systemctl daemon-reload && sudo systemctl enable wol@接口名.service && sudo systemctl start wol@接口名.service。
方法三(NetworkManager非托管配置):
编辑对应连接配置:sudo nano /etc/NetworkManager/system-connections/有线连接\ 1.nmconnection(文件名依实际而定);
在[ethernet]节区添加:wake-on-lan=ignore;
在[ipv4]节区添加:may-fail=true;
重启NetworkManager:sudo systemctl restart NetworkManager。
排除休眠与双系统干扰
若主机曾安装Windows,其“快速启动”功能会使关机实为混合休眠,内核未释放网卡控制权,WOL无法响应。
执行:sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target,彻底禁用systemd休眠目标。
验证当前电源状态是否为纯关机:cat /sys/power/state,输出应包含mem和disk,但不含freeze;若含freeze,说明存在残留休眠策略需清理。

















