如何在Ubuntu 16.04中启用Wake On Lan(WOL)


Answers:


21

我找到了一种对我有用的更好的方法。至少是一种更清洁的方式。显然,Ubuntu改变了systemd的新贵,在Ubuntu 15.04,Ubuntu 16.04和大概的下一版本中也是如此。我对这两个系统都是新手,但这对我有用。

我发布此信息是因为在对Ubuntu 16 wol和其他类似搜索进行谷歌 搜索时,我多次遇到此信息。这可以帮助其他人。

为了使WOL正常工作,每次启动系统时都必须重新启用它。为了避免手动执行此操作,我为此使用了systemd。这是我所做的:

  1. 首先,创建文件/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
    
  2. 在启动时为接口启用此功能,运行以下命令(将eth3更改为您的接口):

    systemctl enable wol@eth3
    

    您应该会看到以下内容:

    Created symlink from /etc/systemd/system/multi-user.target.wants/wol@eth3.service to /etc/systemd/system/wol@.service.
    
  3. 要检查它是否已启用,请运行以下命令(用您的界面更改eth3),它应返回enabled

    systemctl is-enabled wol@eth3
    
  4. 要对此进行测试,请重新启动并运行(使用界面更改eth3):

    ethtool eth3
    

    您应该看到以下一行:

    Wake-on: g
    

资料来源:


2
+1更好。应该是被接受的。
Stefanos Kalantzis

19

在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内安排关机。有关更多详细信息,请参阅主板的手册。


这对我来说适用于14.04 LTS。谢谢!
TenLeftFingers '16

关于这两个评论,WOL_DISABLE=N并且NETDOWN=no应该成为help.ubuntu.com/community/WakeOnLan
Alecz'Apr

3

为了使WOL正常工作,请在关闭电源时确保系统正确关闭了以太网接口。

请尝试以下操作:

  1. /etc/rc6.d/目录中创建一个名为wol_poweroff.sh的bash脚本:

    sudo nano /etc/rc6.d/wol_poweroff.sh
    
  2. 将以下代码放入其中:

    #!/bin/bash
    ifconfig eth0 down
    poweroff
    
  3. 将其复制到/etc/rc0.d目录(因此它也可以与halt一起使用):

    sudo cp /etc/rc6.d/wol_poweroff.sh /etc/rc0.d/wol_poweroff.sh
    
  4. 使它们都可执行:

    sudo chmod 755 /etc/rc6.d/wol_poweroff.sh
    sudo chmod 755 /etc/rc0.d/wol_poweroff.sh
    

现在通过使用sudo shutdown nowsudo 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



2

如果使用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地址。


1

除了@nkef建议的参数之外,如果对局域网适配器使用DHCP而不是静态IP设置(在这里称为eth0),则可以在/ etc / network / interfaces中进行以下设置:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
        ethernet-wol g

(已在Ubuntu 16.04 LTS上测试)。


1

在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

解决方案

  1. 删除netplan,
  2. 通过netplan配置建立网络,
  3. 或将systemd .link文件设置为具有更高的优先级。

因为已经有了systemd .link文件,所以我将其重命名为00-wired.link,重新启动,现在ethtool eno1报告:

    Wake-on: g

没有任何额外的服务,仅是为了尝试启用WoL。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.