最近我学习了如何启用和使用 WoL,但有关其底层机制的一些细节对我来说仍然是个谜。
在serverfault 上的这个答案据说,WoL 是独立于操作系统的技术,无论启动机器的过程如何,它似乎都是正确的,但据我所知,您无法在没有任何操作系统的情况下设置 WoL。启用 PCI 唤醒(或 BIOS 中的任何选项名称)对我来说还不够。在我的例子中,我还使用 Windows 的设备管理器来启用仅使用魔术包的 NIC 唤醒。
“高级”选项卡上有更多选项,允许我更改接口的 MAC 地址。我更改了 MAC 地址,并检查了 WoL 是否会由旧 MAC 或新 MAC 触发。它与我使用设备管理器设置的 MAC 配合使用。
所以问题是:NIC 的这些设置保存在哪里?NIC 内部是否有任何 nvram?我想如果我要在计算机上启动其他操作系统,我应该会看到我的自定义 MAC。
另外,我不明白 NIC 如何在所谓的“魔术包”中找到重复 6 次的 MAC 地址子序列。主 CPU 似乎没有工作,因此应该有其他处理单元将帧的有效负载与当前设置的 MAC 进行比较。也许我的假设是错误的,但我想澄清这一点。
PS 有趣的事实:如果在 Windows 中设置了 WoL,但在 BIOS 中禁用了,则在启用 BIOS 中的“PCI 唤醒”选项后,它会立即开始工作。但如果在 Windows 和 BIOS 中都设置了 WoL,则在我禁用“PCI 唤醒”时它不会停止工作,直到我启动到 Windows。检查了两次。