Duke Yin's Technology database

Debian/PVE 开启WOL局域网唤醒

要让 Debian 13 在关机后的任何时间都能够被 Wake-on-LAN(WOL)远程唤醒,你需要同时满足 BIOS 设置网卡驱动/系统设置关机方式 三个部分的要求。下面是完整可行的、在 Debian 13 上验证过的 WOL 保活方案。

BIOS 设置(最关键)

这部分你已经做得差不多,但务必再确认:

必须启用的项目:

  1. Wake on LAN(Resume on LAN) → Enabled
  2. Deep Sleep / ErP / S5(S4/S5) → Disabled
    • 如果 ErP Enabled,主板会切断 +5VSB,WOL 永远无法成功。
  3. PCI-E Wake → Enabled(如果存在)
  4. Boot on LAN / PXE → Disabled(可选,跟 WOL 无关)

很多国产/小厂主板都会在关机几分钟后切断网卡供电,导致 “放一段时间不能 WOL” 问题。

安装工具确认 WOL 支持

sudo apt update
sudo apt install ethtool

查看网卡是否支持 WOL:

sudo ethtool eth0

重点看:

Supports Wake-on: g
Wake-on: g
  • Supports Wake-on: g → 必须有
  • Wake-on: g → 表示已启用
    如果显示:
Wake-on: d

表示禁用,需要开启:

sudo ethtool -s eth0 wol g

创建关机钩子

创建一个 shutdown 脚本:

sudo nano /usr/lib/systemd/system-shutdown/wol.sh

写入:

#!/bin/sh
/sbin/ethtool -s eno1 wol g

保存并赋权:

sudo chmod +x /usr/lib/systemd/system-shutdown/wol.sh

👉 这个脚本将在系统关机前最后执行,此时设置的 WOL 不会被驱动覆盖。

让 WOL 在重启后自动保持开启

编辑 systemd network script(最稳的方法):

sudo nano /etc/systemd/system/wol.service

写入:

[Unit]
Description=Enable Wake-on-LAN on eno1
After=network-online.target

[Service]
Type=oneshot
ExecStart=/bin/sleep 3
ExecStart=/sbin/ethtool -s eno1 wol g

[Install]
WantedBy=multi-user.target

保存并启动:

sudo systemctl daemon-reload
sudo systemctl enable wol
sudo systemctl start wol

禁止网卡驱动关闭网卡电源

编辑:

sudo nano /etc/default/grub

找到这一行:

GRUB_CMDLINE_LINUX_DEFAULT="quiet"

改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet pcie_port_pm=off pci=noaer"

保存后:

sudo update-grub

重启:

sudo reboot

Debian 13 必须禁止“断电式关机”

Debian 12/13 默认支持一种更激进的节能模式,会在关机后关闭网卡电源。

需要关闭 systemd 的省电选项:

sudo nano /etc/systemd/logind.conf

找到并修改:

HandlePowerKey=ignore
HandleSuspendKey=ignore
HandleHibernateKey=ignore
HandleLidSwitch=ignore

保存,并重启 logind:

sudo systemctl restart systemd-logind

确保使用正确的关机方式:

必须使用:

sudo poweroff

或:

sudo shutdown -h now

不要使用:

  • suspend(S3)
  • hibernate(S4)
  • deep suspend / freeze(系统可能切断网卡)

检查关机后网口灯是否常亮:

关机后:

  • 网口灯亮 / 闪烁 → 可以 WOL
  • 网口灯熄灭 → 一定不能 WOL(主板断电)

# #

发布评论

评论

标注 * 的为必填项。