Answers:
我找到了一种对我有用的更好的方法。至少是一种更清洁的方式。显然,Ubuntu改变了systemd的新贵,在Ubuntu 15.04,Ubuntu 16.04和大概的下一版本中也是如此。我对这两个系统都是新手,但这对我有用。
我发布此信息是因为在对Ubuntu 16 wol和其他类似搜索进行谷歌 搜索时,我多次遇到此信息。这可以帮助其他人。
为了使WOL正常工作,每次启动系统时都必须重新启用它。为了避免手动执行此操作,我为此使用了systemd。这是我所做的:
首先,创建文件/etc/systemd/system/wol@.service
(保留@符号)。把它放进去:
[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/wol@eth3.service to /etc/systemd/system/wol@.service.
要检查它是否已启用,请运行以下命令(用您的界面更改eth3),它应返回enabled
:
systemctl is-enabled wol@eth3
要对此进行测试,请重新启动并运行(使用界面更改eth3):
ethtool eth3
您应该看到以下一行:
Wake-on: g
资料来源:
暴发户:
Upstart是/ sbin / init守护程序的基于事件的替换,该守护程序在引导过程中处理任务和服务的启动,在关闭过程中停止任务和服务,并在系统运行时对其进行监督。
- 新贵-基于事件的init守护进程
systemd:
systemd是Linux系统的一组基本构建块。它提供了一个系统和服务管理器,它作为PID 1运行并启动系统的其余部分。(...)
- systemd
在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
使用静态网络配置时,启用Wake on LAN 。
# 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中启用LAN唤醒,进入BIOS设置程序,然后查找“ PCI事件唤醒”,“ LAN唤醒”或类似内容。对其进行更改以使其启用。保存设置并重新启动。
https://help.ubuntu.com/community/WakeOnLan
警告某些主板/网络控制器从冷启动不支持WOL(S5状态,物理上关闭了系统电源,然后重新打开)。在这种情况下,必须执行至少一个电源循环(加电,关机)。为了缓解该问题,可以将BIOS配置为在AC恢复后启动,然后在Ubuntu内安排关机。有关更多详细信息,请参阅主板的手册。
为了使WOL正常工作,请在关闭电源时确保系统正确关闭了以太网接口。
请尝试以下操作:
在/etc/rc6.d/目录中创建一个名为wol_poweroff.sh的bash脚本:
sudo nano /etc/rc6.d/wol_poweroff.sh
将以下代码放入其中:
#!/bin/bash
ifconfig eth0 down
poweroff
将其复制到/etc/rc0.d目录(因此它也可以与halt一起使用):
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
在终端中运行以下命令:
sudo ethtool -s {your network interface} wol g
sudo ethtool {your network interface}
编写第二条命令后,您应该在局域网旁边看到一个g
如果使用NetworkManager,则可以通过nmcli
以下方式启用WOL :
nmcli connection show
记住感兴趣的设备的“ 802-3-ehternet” TYPE连接的名称。说它的名字是“有线连接1”。然后正确修改它:
nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic
要获取其MAC地址:
nmcli connection show "Wired connection 1" | grep 802-3-ethernet.mac-address
从现在开始,您可以通过wakeonlan 1a:2b:3c:4d:5e:6f
命令将其关闭并从同一LAN上的另一台计算机上将其打开,这1a:2b:3c:4d:5e:6f
是上一步中LAN卡的MAC地址。
在Ubuntu 18.04(无头/最小安装)下,这也让我有些苦恼。不幸的是,这里列出的答案有时似乎行得通,尽管它们有时会无法提供可靠的解决方案,因为它们会创建竞争条件或与systemd之类的系统进行斗争, netplan和udev。
我起初也尝试过这种方法,而且似乎可行,我正在计划一个系统,该系统每天晚上都通过WakeOnLan引导以运行备份,因为系统BIOS没有提供预定的AC on选项。
它会工作几天,然后拒绝唤醒,手动打开电源并运行ethtool显示WoL已被禁用:
Wake-on: d
因此,我认为必须重新关闭它,并且在过去几年中出现了许多此类问题,因为systemd接管了我决定从此处开始的部分系统,瞧瞧:
WakeOnLan = .. ..默认为关闭。
https://www.freedesktop.org/software/systemd/man/systemd.link.html
在线示例显示了以下内容:
/etc/systemd/network/50-wired.link
[Match]
MACAddress=<MAC ADDRESS>
[Link]
WakeOnLan=magic
怎么仍然不起作用。然后我遇到了这个:
udevadm test-builtin net_setup_link /etc/systemd/network/50-wired.link
结果是:
Load module index
Parsed configuration file /lib/systemd/network/99-default.link
Parsed configuration file /etc/systemd/network/50-wired.link
Parsed configuration file /run/systemd/network/10-netplan-eno1.link
在/run/systemd/network/10-netplan-eno1.link中可以找到什么?
[Match]
MACAddress=<MAC ADDRESS>
[Link]
Name=eno1
WakeOnLan=off
解决方案:
因为已经有了systemd .link文件,所以我将其重命名为00-wired.link,重新启动,现在ethtool eno1报告:
Wake-on: g
没有任何额外的服务,仅是为了尝试启用WoL。