![当操作系统在线时,如何让 WoL 保持清醒](https://linux22.com/image/188373/%E5%BD%93%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E5%9C%A8%E7%BA%BF%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E8%AE%A9%20WoL%20%E4%BF%9D%E6%8C%81%E6%B8%85%E9%86%92.png)
我有一些独特的硬件,其中板载 NIC 的 WoL 输出被连接以导致系统重置(我相信是通过 NMI),而不是导致开机。
我认为这样做是为了方便远程重新启动,而不会产生交换 PDU 或 IPMI 的成本。
但一旦操作系统加载,WoL 功能似乎就会被抑制。我注意到 memtest 86 不会抑制它,但 linux 会抑制它。我试过ethtool -s wol a/u/m/b/a/g/s
我走在正确的轨道上吗?如何让 WoL 在操作系统运行时保持清醒?
/ # lspci -nn | grep -i net
01:00.0 Ethernet controller [0200]: Intel Corporation 82574L Gigabit Network Connection [8086:10d3]
/ # ethtool -i
ethtool -i eth0
driver: e1000e
version: 2.3.2-k
firmware-version: 2.1-0
bus-info: 0000:01:00.0
/ # uname -a
Linux (none) 3.19.0 #1 SMP Mon Oct 19 15:48:25 CDT 2015 x86_64 GNU/Linux
/ #
目标内核是最新的 CentOS、Ubuntu、Debian、Windows、Proxmox(Debian) 和 VMware。
我希望 WoL 能够在操作系统“外部”运行。我同意操作系统可以根据需要禁用它,但默认情况下它不会,并且如果只是在 BIOS 中启用 WoL 并由硬件支持,那么无论操作系统是什么,它都会一致地工作正在做。
答案1
Intel 目前似乎希望您注册才能查看 NIC 芯片数据表,但 Google 在这里找到了 82574 系列数据表:https://docs.rs-online.com/96e8/0900766b81384733.pdf
据我所知,数据表实际上并没有说明网卡在等待局域网唤醒数据包时是否可以正常传输和接收。但数据表讨论了对传入数据包应用过滤器 - 也许这些过滤器会干扰正常接收的流量?
我的第一个猜测是,WoL 功能中断的确切时间是在 PCI(e) 总线重置时,或者在加载 NIC 驱动程序时。事实上,memtest86
WoL 并没有停止,这表明它可能是后者。如果是这样,那么你有一个(可能没有帮助)答案 - 简单地说阻止加载 NIC 驱动程序并且您将拥有 WoL-as-reset 功能...但是如果系统还需要网络连接,您将需要另一个 NIC :-(
Linuxe1000e
驱动程序似乎也仅实际启用 WoL 功能当驱动程序关闭时。对我来说,这也表明启用 WoL 可能会以某种方式干扰 NIC 的正常功能。