Как включить Wake On Lan (WOL) в Ubuntu 16.04

Ответы:

21

Я нашел лучший способ, который работал для меня. По крайней мере, чище. Очевидно, Ubuntu изменил upstart для 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
    

Источники:

  • SystemdForUpstartUsers - Ubuntu Wiki
  • Wake-on-LAN - ArchWiki
  • systemd - ArchWiki
  • выскочка:

    Upstart - это основанная на событиях замена для демона / sbin / init, который обрабатывает запуск задач и служб во время загрузки, останавливает их во время завершения работы и контролирует их во время работы системы.
    - upstart - основанный на событиях демон init

  • Systemd:

    systemd - это набор основных строительных блоков для системы Linux. Он предоставляет диспетчер системы и услуг, который запускается как PID 1 и запускает остальную часть системы. (...)
    - systemd

loco.loop
источник
2
+1 это намного лучше. должен быть принятым.
Стефанос Каланцис
19

В Ubuntu 16.04 набор WOL_DISABLE=Nв , /etc/default/tlpчтобы избежать WOL отключена по управлению питанием TLP.

http://linrunner.de/en/tlp/docs/tlp-configuration.html

Добавить NETDOWN=noв /etc/default/haltдля предотвращения отключения питания сетевой карты во время остановки

Включить Wake on LAN, /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

Включите wake on lan в BIOS, войдите в настройки BIOS и найдите что-нибудь под названием «Wake up on PCI event», «Wake up on LAN» или подобное. Измените это так, чтобы это было включено. Сохраните настройки и перезагрузите компьютер.

https://help.ubuntu.com/community/WakeOnLan

Предупреждение. Некоторые материнские платы / сетевые контроллеры не поддерживают WOL при «холодной» загрузке (состояние S5, когда питание системы физически отключается и снова включается). В этом случае должен быть выполнен как минимум один цикл питания (включение, выключение). Чтобы решить эту проблему, BIOS можно настроить на включение при восстановлении переменного тока и запланировать выключение в Ubuntu после этого. Обратитесь к руководству по материнской плате для получения дополнительной информации.

nkef
источник
Это сработало для меня 14.04 LTS. Спасибо!
TenLeftFingers
эти два замечания по поводу WOL_DISABLE=Nи NETDOWN=noдолжны быть частью help.ubuntu.com/community/WakeOnLan
Alecz
3

Запустите следующее в терминале:

sudo ethtool -s {your network interface} wol g 
sudo ethtool {your network interface}

Вы должны увидеть g рядом с пробуждением по локальной сети после написания второй команды

источник

Марван Набиль
источник
3

Для того, чтобы WOL работал, убедитесь, что ваш интерфейс Ethernet правильно отключен вашей системой при отключении питания.

Попробуйте следующее:

  1. Создайте скрипт bash с именем wol_poweroff.sh в каталоге /etc/rc6.d/ :

    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 nowили sudo poweroffи используя инструмент WOL для отправки на него волшебного пакета.


Это было единственное, что сработало для меня. Я нашел эти шаги в отчете об ошибке на launchpad.net.

По словам автора, Робби Уильямсона, это работает из-за следующего:

Чтобы заставить WOL работать, интерфейс Ethernet должен быть надлежащим образом отключен как часть выключения системы. Это должно быть выполнено как часть уровней запуска 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, то вы можете включить WOL через nmcli:

nmcli connection show

Запомните НАИМЕНОВАНИЕ подключения ТИПА "802-3-ehternet" для УСТРОЙСТВА, представляющего интерес. Скажите, что это имя «Проводное соединение 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команде, где 1a:2b:3c:4d:5e:6fнаходится MAC-адрес сетевой карты предыдущего шага.

восток
источник
1

Помимо параметров, предложенных @nkef, вы можете установить следующие параметры в / etc / network / interfaces, если вы используете DHCP вместо статических настроек IP для сетевого адаптера (здесь он называется eth0):

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
        ethernet-wol g

(проверено на Ubuntu 16.04 LTS).

RPR
источник
1

Это меня немного поразило в Ubuntu 18.04 (безголовая / минимальная установка), к сожалению, уже перечисленные здесь ответы, хотя иногда они могут показаться работающими, не дают надежного решения, поскольку они создают условия гонки или сражаются с подобными systemd, Нетплан и Удев.

Я тоже сначала попробовал этот подход, и он, похоже, сработал, я планирую загрузку системы каждый вечер через WakeOnLan для запуска резервного копирования, поскольку системный BIOS не обеспечивает опцию запланированного включения переменного тока.

Он работал бы в течение нескольких дней, а затем отказывался просыпаться, включение его вручную и запуск 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. удалить нетплан,
  2. настроить сеть через конфигурацию netplan,
  3. или установите файл systemd .link для более высокого приоритета.

Поскольку у меня уже был файл systemd .link, я просто переименовал его в 00-wired.link, перезагрузился, и теперь отчеты ethtool eno1:

    Wake-on: g

Без каких-либо дополнительных услуг исключительно для того, чтобы попытаться включить WoL.

Дэниэл Сквайрс
источник