Як увімкнути Wake On Lan (WOL) в Ubuntu 16.04


Відповіді:


21

Я знайшов кращий спосіб, який працював на мене. Принаймні більш чистий спосіб. Мабуть, Ubuntu змінив старт для systemd , в Ubuntu 15.04, Ubuntu 16.04 і, мабуть, також наступних версіях. Я новачок в обох системах, але це працювало для мене.

Я публікую це, оскільки під час googling 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 і запускає решту системи. (...)
    - системний


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

Увімкніть пробудження в мережі в BIOS, увійдіть у налаштування BIOS і шукайте щось, що називається "Побуди в PCI події", "Прокидайся через LAN" або подібне. Змініть її так, щоб вона була включена. Збережіть налаштування та перезавантажте.

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

Попередження, що деякі материнські плати / мережеві контролери не підтримують WOL від холодного завантаження (стан S5, коли живлення системи фізично вимкнено і знову включено). У цьому випадку повинен бути виконаний принаймні один цикл живлення (вимкнення, вимкнення). Щоб усунути проблему, BIOS може бути налаштований на живлення після відновлення змінного струму та планування відключення всередині Ubuntu після цього. Детальнішу інформацію див. У посібнику з материнської плати.


Це працювало для мене 14.04 LTS. Дякую!
TenLeftFingers

ці два коментарі про WOL_DISABLE=Nта NETDOWN=noповинні бути частиною help.ubuntu.com/community/WakeOnLan
Alecz,

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 (щоб він також працював із зупинкою ):

    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

Виконайте наступне в терміналі:

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

ви повинні побачити g поруч, щоб прокинутися на lan після написання другої команди

джерело


2

Якщо ви використовуєте NetworkManager, ви можете ввімкнути WOL за допомогою nmcli:

nmcli connection show

Запам’ятайте NAME про підключення ТИПУ "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:6fMAC-адреса локальної картки з попереднього кроку.


1

Крім параметрів, запропонованих @nkef, ви можете встановити наступні в / etc / network / інтерфейси, якщо ви використовуєте DHCP замість статичних IP-налаштувань для адаптера локальної мережі (тут названо eth0):

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
        ethernet-wol g

(тестовано на Ubuntu 16.04 LTS).


1

Це також мене трохи покусало під Ubuntu 18.04 (без головної / мінімальної установки), на жаль, відповіді, які вже перераховані тут, хоча вони, здається, спрацьовують часом, не збираються забезпечити надійне рішення, оскільки вони створюють умови для перегонів або борються з подібними системами, netplan та udev.

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

Він буде працювати кілька днів, а потім відмовитись від пробудження, включивши його вручну та запустивши ethtool виявив, що WoL було відключено:

    Wake-on: d

Тож я зрозумів, що щось інше повинно бути відключенням і, маючи багато таких проблем, за останні кілька років із систематичним захопленням частини системи, я вирішив почати тут, ось і ось:

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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.