如何在 Ubuntu 16.04 LTS 中启用网络唤醒 (WOL)?
答案1
我找到了一种对我有用的更好的方法。至少是一种更干净的方法。显然 Ubuntu 改变了暴发户为了systemd,在 Ubuntu 15.04、Ubuntu 16.04 以及可能还有下一个版本中。我对这两个系统都不熟悉,但这对我来说很管用。
我发布这篇文章是因为谷歌搜索 Ubuntu 16 操作系统以及我多次遇到的类似搜索。这可能会对其他人有所帮助。
为了保持 WOL 正常工作,每次系统启动时我都必须重新启用它。为了避免手动执行此操作,我为此使用了 systemd。这是我所做的:
首先,创建文件(保留@符号)。将其放入其中:
/etc/systemd/system/[email protected]
[Unit] Description=Wake-on-LAN for %i Requires=network.target After=network.target [Service] ExecStart=/sbin/ethtool -s %i wol g Type=oneshot [Install] WantedBy=multi-user.target
在启动时为接口启用此功能,运行以下命令(将 eth3 更改为您的接口):
systemctl enable wol@eth3
你应该看到类似这样的内容:
Created symlink from /etc/systemd/system/multi-user.target.wants/[email protected] to /etc/systemd/system/[email protected].
要检查它是否已启用,请运行以下命令(使用您的接口更改 eth3)并且它应该返回
enabled
:systemctl is-enabled wol@eth3
为了测试这一点,请重新启动并运行(用您的接口更改 eth3):
ethtool eth3
您应该看到以下内容:
Wake-on: g
资料来源:
- SystemdForUpstartUsers - Ubuntu 维基百科
- 局域网唤醒 - ArchWiki
- systemd - ArchWiki
暴发户:
Upstart 是一个基于事件的 /sbin/init 守护进程的替代品,它负责在启动期间启动任务和服务,在关机期间停止它们,并在系统运行时监督它们
。-upstart - 基于事件的 init 守护进程系统:
systemd 是 Linux 系统的一套基本构建块。它提供了一个作为 PID 1 运行的系统和服务管理器,并启动系统的其余部分。(...)
-systemd
答案2
在 Ubuntu 16.04 中设置WOL_DISABLE=N
以/etc/default/tlp
避免被 TLP 电源管理禁用 WOL。
http://linrunner.de/en/tlp/docs/tlp-configuration.html
添加NETDOWN=no
关机/etc/default/halt
时防止关闭网卡
/etc/network/interfaces
当使用静态网络配置时启用局域网唤醒。
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1
up ethtool -s eth0 wol g
在 BIOS 中启用局域网唤醒,进入 BIOS 设置并查找“PCI 事件唤醒”、“局域网唤醒”或类似内容。将其更改为启用。保存设置并重新启动。
https://help.ubuntu.com/community/WakeOnLan
警告某些主板/网络控制器不支持冷启动(S5 状态,系统电源物理关闭并重新打开)时的 WOL。在这种情况下,必须执行至少一次电源循环(开机、关机)。为了缓解此问题,可以将 BIOS 配置为在交流电恢复时开机,然后在 Ubuntu 内安排关机。有关更多详细信息,请参阅主板手册。
答案3
在终端中运行以下命令:
sudo ethtool -s {your network interface} wol g
sudo ethtool {your network interface}
你应该看到G旁边网络唤醒写入第二条命令后
答案4
为了使 WOL 正常工作,请确保关闭电源时系统正确关闭了以太网接口。
请尝试以下操作:
创建一个名为wol_关机命令在/etc/rc6.d/目录:
sudo nano /etc/rc6.d/wol_poweroff.sh
把这段代码放进去:
#!/bin/bash ifconfig eth0 down poweroff
将其复制到/etc/rc0.d目录(因此它也适用于停):
sudo cp /etc/rc6.d/wol_poweroff.sh /etc/rc0.d/wol_poweroff.sh
使它们都可执行:
sudo chmod 755 /etc/rc6.d/wol_poweroff.sh sudo chmod 755 /etc/rc0.d/wol_poweroff.sh
sudo shutdown now
现在通过使用或关闭您的机器sudo poweroff
并使用 WOL 工具向其发送魔术包来测试它是否有效。
这是唯一对我有用的方法。我在 launchpad.net 上的错误报告中找到了这些步骤。
根据作者 Robbie Williamson 的说法,这种方法之所以有效,是因为:
要使 WOL 正常工作,必须在系统关闭过程中正确关闭以太网接口。这应作为运行级别 rc0 和 rc6 的一部分执行,请注意 Linux 通常有 7 种不同的运行级别(或操作模式):
rc0.d——系统停止
rc1.d——单用户模式
rc2.d - 带网络的单用户模式
rc3.d——多用户模式——以文本模式启动
rc4.d——尚未定义
rc5.d——多用户模式——在 X Windows 中启动
rc6.d——关机和重启
来源:https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/981461