linux启用wol需bios开启、内核支持、ethtool设wol g、networkmanager锁定magic、systemd/netplan固化配置,缺一不可。

Linux 系统中启用并管理开机网卡唤醒(Wake-on-LAN,WOL)功能,不能只靠网络配置文件“一设了之”。它是一个跨层协同过程:BIOS/UEFI 需开启底层电源支持、内核驱动需识别硬件能力、ethtool 需设置网卡寄存器、NetworkManager 或其他网络服务需避免覆盖设置,最后还需确保重启后持久生效。下面分关键环节说明操作要点。
确认硬件与 BIOS 层已就绪
这是前提,缺一不可:
- 进入 BIOS/UEFI,找到类似 Power On By PCI-E、Wake on LAN、Onboard LAN Boot ROM 或 Resume by LAN 的选项,设为 Enabled
- 部分主板需同时开启 ErP Ready 或关闭 Fast Boot,否则 WOL 在软关机(S5)下可能失效
- 关机后观察主板网口指示灯:若仍微亮或缓慢闪烁(非完全熄灭),通常表示硬件级 WOL 已激活
检查并启用网卡的 WOL 能力
使用 ethtool 查看和设置,注意替换为你实际的网卡名(如 enp0s31f6、eno1):
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 运行
sudo ethtool <iface> | grep -i "wake\|supports"</iface>,确认输出中 Supports Wake-on 包含g(magic packet),且 Wake-on 当前值不是d - 临时启用:
sudo ethtool -s <iface> wol g</iface>(g最安全,仅响应 Magic Packet,避免误唤醒) - 验证:
sudo ethtool <iface> | grep "Wake-on:"</iface>应显示Wake-on: g
防止 NetworkManager 覆盖 WOL 设置
NetworkManager 默认会在连接启停时重置网卡参数。需显式锁定 WOL 行为:
- 查看当前连接名:
nmcli connection show - 修改连接配置(以连接名为
System eno1为例):sudo nmcli connection modify "System eno1" ethernet.wake-on-lan magic - 该设置等效于让 NM 不干预 WOL 寄存器,而是交由底层保持
g模式 - 重启连接使配置生效:
sudo nmcli connection down "System eno1" && sudo nmcli connection up "System eno1"
实现重启后自动启用 WOL
ethtool 设置是临时的,必须固化。推荐以下任一方式:
-
用 systemd 服务(通用性强):创建
/etc/systemd/system/wol-enable.service:[Unit]<br>After=network.target<br><br>[Service]<br>Type=oneshot<br>ExecStart=/sbin/ethtool -s <iface> wol g<br>RemainAfterExit=yes<br><br>[Install]<br>WantedBy=multi-user.target</iface>
然后执行:sudo systemctl daemon-reload && sudo systemctl enable --now wol-enable.service -
Netplan 用户(Ubuntu 18.04+ / Rocky 9+):在网卡配置段添加:
wakeonlan: true(YAML 缩进需严格) -
传统 ifcfg 用户(RHEL/CentOS 7):在
/etc/sysconfig/network-scripts/ifcfg-<iface></iface>中添加:ETHTOOL_OPTS="wol g"
完成上述步骤后,重启系统,再次运行 ethtool <iface></iface> 确认 Wake-on: g 仍生效,再用 wakeonlan <mac></mac> 测试远程唤醒即可。整个过程不复杂,但容易在 BIOS 或 NM 配置环节被忽略。










