Как включить Wake On Lan (WOL) в Ubuntu 16.04
Как включить Wake On Lan (WOL) в Ubuntu 16.04 LTS?
8 ответов
Я нашел лучший способ, который работал для меня. По крайней мере, чище. Я пишу об этом, потому что, гугляя Ubuntu 16 wol и другие подобные поиски, я сталкивался с этим постом несколько раз. Это может помочь кому-то еще.
Очевидно, Ubuntu изменил upstart для systemd, это в Ubuntu 15, Ubuntu 16 и, вероятно, в следующих версиях. Я новичок в обеих системах, но это сработало для меня.
Чтобы 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
Источники:
- SystemdForUpstartUsers - Ubuntu Wiki
- Wake-on-LAN - ArchWiki
- systemd - ArchWiki
выскочка:
Upstart - это основанная на событиях замена для демона /sbin/init, который обрабатывает запуск задач и служб во время загрузки, останавливает их при завершении работы и контролирует их во время работы системы.
- upstart - основанный на событиях демон initststemd:
systemd - это набор основных строительных блоков для системы Linux. Он предоставляет диспетчер системы и услуг, который запускается как PID 1 и запускает остальную часть системы. (...)
- systemd
В 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 после этого. Обратитесь к руководству по материнской плате для получения дополнительной информации.
Запустите следующее в терминале:
sudo ethtool -s {your network interface} wol g
sudo ethtool {your network interface}
Вы должны увидеть g рядом с пробуждением по локальной сети после написания второй команды
Если вы используете 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-адрес сетевой карты предыдущего шага
Для того, чтобы WOL работал, убедитесь, что ваш интерфейс Ethernet правильно отключен вашей системой при отключении питания.
Попробуйте следующее:
Создайте скрипт bash с именем wol_poweroff.sh в каталоге /etc/rc6.d/:
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.
По словам автора, Робби Уильямсона, это работает из-за следующего:
Чтобы заставить 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
Помимо параметров, предложенных @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).
Это меня немного поразило в 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
Решение Либо:
- удалить нетплан,
- настроить сеть через конфигурацию netplan,
- или установите файл systemd.link для более высокого приоритета.
Поскольку у меня уже был файл systemd.link, я просто переименовал его в 00-wired.link, перезагрузился, и теперь отчеты ethtool eno1:
Wake-on: g
Без каких-либо дополнительных услуг исключительно для того, чтобы попытаться включить WoL.
Вы должны установить
ethtool
постоянно на Ubuntu 16.04, используя терминал:
cat /etc/network/interfaces
Отредактируйте файл и после строки gateway добавьте следующую строку:
up ethtool -s eth0 wol g
Если вы не можете найти '
interfaces
' вы должны скачать пакет отсюда: rb.gy/imfoq7
Когда загрузка завершится, вы можете вставить txt «интерфейс» в
etc/network
.