目录

  • 起因
  • WOL[^1]
  • 准备阶段
  • BIOS设置
  • DSM设置
  • 引导文件修改为真实的MAC地址
  • 总结


起因

买了蜗牛星际半年有余,一直没折腾出A单的WOL功能怎么开启,机器一直是手动开关机,现在放到了机房,机房又干又冷,遂想琢磨出到底是什么原因无法WOL。

WOL1

网络唤醒(Wake-on-LAN,WOL)是一种计算机局域网唤醒技术,使局域网内处于关机或休眠状态的计算机,将状态转换成引导(Boot Loader)或运行状态。无线唤醒(Wake-on-Wireless-LAN,WoWLAN)作为 WOL 的补充技术,使用无线网卡去唤醒计算机。网络唤醒在一般的局域网环境里使用有限广播地址(255.255.255.255)即可,由于路由器都不转发目的地址为有限广播地址的数据报,因此在复杂网络情况下通常使用子网定向广播地址。在局域网外唤醒局域网内特定计算机,可以使用路由器的 DDNS 与端口转发。

在1996年10月,英特尔和 IBM 成立了 Advanced Manageability Alliance。1997年4月,联盟提出了 WOL 技术。这是 WOL 技术的起源,随后各大厂商纷纷推出了自己的 WOL 技术标准。本文所讨论的 WOL 技术是由 AMD 公司提出的 Magic Packet(幻数据包,魔术包)唤醒方式,这里给出 AMD 关于此技术的白皮书。

准备阶段

路由器:

  1. ARP 保护 / IP MAC 绑定(固定了nas的内网IP)
  2. UPNP开启
  3. DHCP开启,固不固定IP没所谓

NAS:

  1. BIOS设置Advanced–ACPI Settings–Resume By Onboard LAN–Enabled
  2. BIOS设置Advanced–ACPI Settings–ACPI Sleep State–Disabled(不大于4G内存的用户特别注意这个,原因等会再说)
  3. DSM控制面板设置“启动局域网1的局域网唤醒”
  4. 引导文件里的mac地址改为了网卡的真实mac

BIOS设置

内存小的用户记得关闭ACPI Sleep State,这个功能需要大量内存。我这边发现,如果开启这个功能,Docker开启一个需要占用2G内存的镜像时,就卡死,然后整个无响应,过一阵子会报“经历了非正常关机”的错误,但是日志中又找不到相关的错误信息。

BIOS设置 电源 网络唤醒失败 bios设置wol唤醒_星际蜗牛

提示一下:如果想机器一通电就开机,可以设置PWRON After Power Loss。
第一项是恢复断电前的状态,第二个是恢复通电后开机,第三个是通电不开机。

BIOS设置 电源 网络唤醒失败 bios设置wol唤醒_NAS_02

DSM设置

BIOS设置 电源 网络唤醒失败 bios设置wol唤醒_BIOS设置 电源 网络唤醒失败_03

引导文件修改为真实的MAC地址

黑裙的MAC和真实的MAC不对应,需要修改引导文件。如果不清楚自己真实的MAC,有个简单的方法。

SSH连接星际蜗牛后,使用命令:

dmesg | grep eth

箭头位置就是你的MAC地址:

BIOS设置 电源 网络唤醒失败 bios设置wol唤醒_DOCKER_04


用DiskGenius导出grub.cfg文件,修改MAC再导入进去。

BIOS设置 电源 网络唤醒失败 bios设置wol唤醒_星际蜗牛_05

总结

操作步骤还是挺简单的,但是碰到了突然不能打开docker里面的镜像得情况,排查了好久。终于定位到问题所在,幸而解决了。