You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下持久化配置Wake-on-LAN失败求助

Linux下持久化配置Wake-on-LAN失败求助

我来帮你梳理下这个问题,核心矛盾其实是systemd服务启动得太早,网卡还没完成从eth0到enp1s0的重命名,导致命令找不到设备;另外几种持久化方法没生效也可能和时机或者配置细节有关,咱们一步步来解决:

先明确你的环境和遇到的问题:

系统信息:

Linux mediacenter 5.15.122-1-MANJARO #1 SMP PREEMPT Tue Jul 25 07:09:46 UTC 2023 x86_64 GNU/Linux

尝试过的操作:按照官方文档的三种方案(链接配置、systemd服务、udev规则)配置WOL持久化,但重启后执行sudo ethtool enp1s0 | grep Wake-on始终显示:

Supports Wake-on: pumbg
Wake-on: d

其中systemd服务的报错最明确,就是时机问题:

ago 31 00:27:33 mediacenter systemd[1]: Starting Wake-on-LAN for enp1s0...
ago 31 00:27:33 mediacenter ethtool[373]: netlink error: no device matches name (offset 24)

手动启动服务sudo systemctl start wol@enp1s0后,WOL能正常启用,显示Wake-on: umbg。

方案1:调整systemd服务的启动时机

默认的wol@.service启动优先级太高,咱们给它加些依赖,确保网卡完全就绪后再执行:

  1. 编辑服务的自定义配置:
sudo systemctl edit wol@.service
  1. 在弹出的编辑器中添加以下内容,让服务等待网络完全在线,再加个短延迟保险:
[Service]
After=network.target network-online.target
Wants=network-online.target
ExecStartPre=/bin/sleep 2
  1. 保存退出后,重新加载systemd配置并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable wol@enp1s0

方案2:用udev规则实现持久化(更可靠)

udev规则会在网卡设备被识别、重命名完成后立即触发,完美避开时机问题,推荐用这个:

  1. 创建udev规则文件:
sudo nano /etc/udev/rules.d/70-wol.rules
  1. 添加以下规则(可以选网卡名匹配,或者MAC地址匹配更稳定,避免网卡名变化):
# 方式1:通过网卡名enp1s0匹配
SUBSYSTEM=="net", ACTION=="add", KERNEL=="enp1s0", RUN+="/usr/sbin/ethtool -s $name wol umbg"

# 方式2:通过MAC地址匹配(替换成你的网卡MAC)
# SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="aa:bb:cc:dd:ee:ff", RUN+="/usr/sbin/ethtool -s $name wol umbg"
  1. 重新加载udev规则并触发生效:
sudo udevadm control --reload-rules
sudo udevadm trigger --subsystem-match=net --action=add

必做的硬件检查

别忘了确认你的BIOS/UEFI里已经开启了WOL相关选项,比如“Wake on LAN”、“Power On by PCIE/PCI”这类选项,硬件层面没开的话,系统配置再正确也没用。

现在重启系统,再执行sudo ethtool enp1s0 | grep Wake-on,应该就能看到Wake-on: umbg了。

备注:内容来源于stack exchange,提问作者phetherer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:59:30