Odpowiedzi:
Znalazłem lepszy sposób, który działał dla mnie. Przynajmniej czystszy sposób. Najwyraźniej Ubuntu zmieniło upstart na systemd , w Ubuntu 15.04, Ubuntu 16.04 i prawdopodobnie także w kolejnych wersjach. Jestem nowy w obu systemach, ale to zadziałało dla mnie.
Ja opublikowania tego powodu podczas googlowania Ubuntu 16 WOL i innych podobnych wyszukiwań natknąłem z tym ogłoszeniem kilka razy. To może pomóc komuś innemu.
Aby WOL działał, musiałem włączać go ponownie przy każdym uruchomieniu systemu. Aby tego uniknąć ręcznie, w tym celu użyłem systemd. Oto co zrobiłem:
Najpierw utwórz plik /etc/systemd/system/wol@.service
(zachowaj symbol @). Umieść to w tym:
[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
Włącz to dla interfejsu podczas uruchamiania, uruchom następującą komendę (zmień eth3 w swoim interfejsie):
systemctl enable wol@eth3
Powinieneś zobaczyć coś takiego:
Created symlink from /etc/systemd/system/multi-user.target.wants/wol@eth3.service to /etc/systemd/system/wol@.service.
Aby sprawdzić, czy jest włączony, uruchom następującą komendę (zmień interfejs eth3 w interfejsie) i powinien on zwrócić enabled
:
systemctl is-enabled wol@eth3
Aby to przetestować, uruchom ponownie i uruchom (zmień eth3 za pomocą interfejsu):
ethtool eth3
Powinieneś zobaczyć linię z następującymi informacjami:
Wake-on: g
Źródła:
dorobkiewicz:
Upstart to oparty na zdarzeniach zamiennik demona / sbin / init, który obsługuje uruchamianie zadań i usług podczas rozruchu, zatrzymywanie ich podczas zamykania i nadzorowanie ich podczas działania systemu.
- upstart - demon inicjujący oparty na zdarzeniach
systemd:
systemd to pakiet podstawowych elementów składowych systemu Linux. Zapewnia menedżera systemu i usług, który działa jako PID 1 i uruchamia resztę systemu. (...)
- systemd
W Ubuntu 16.04 zestawu WOL_DISABLE=N
w /etc/default/tlp
celu uniknięcia coraz WOL wyłączony przez zarządzanie energią TLP.
http://linrunner.de/en/tlp/docs/tlp-configuration.html
Dodaj NETDOWN=no
w /etc/default/halt
celu zapobieżenia wyłączeniu karty sieciowej podczas zamykania
Włącz Wake on LAN w, /etc/network/interfaces
gdy używana jest statyczna konfiguracja sieci.
# 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
Włącz budzenie w sieci LAN w BIOS, wejdź do konfiguracji BIOS i poszukaj czegoś o nazwie „Wake up on PCI event”, „Wake up on LAN” lub podobne. Zmień go, aby był włączony. Zapisz ustawienia i uruchom ponownie.
https://help.ubuntu.com/community/WakeOnLan
Ostrzeżenie: niektóre płyty główne / kontrolery sieciowe nie obsługują WOL od zimnego rozruchu (stan S5, w którym zasilanie systemu jest fizycznie wyłączane i ponownie włączane). W takim przypadku należy wykonać co najmniej jeden cykl zasilania (włączenie, wyłączenie). Aby złagodzić ten problem, BIOS można skonfigurować tak, aby włączał się po przywróceniu zasilania prądem przemiennym, a następnie zaplanował wyłączenie w Ubuntu. Więcej informacji można znaleźć w instrukcji płyty głównej.
WOL_DISABLE=N
i NETDOWN=no
powinny być częścią help.ubuntu.com/community/WakeOnLan
Aby WOL działał, upewnij się, że Twój interfejs Ethernet jest poprawnie zamykany przez system po wyłączeniu zasilania.
Spróbuj wykonać następujące czynności:
Utwórz skrypt bash o nazwie wol_poweroff.sh w katalogu /etc/rc6.d/ :
sudo nano /etc/rc6.d/wol_poweroff.sh
Umieść w nim ten kod:
#!/bin/bash
ifconfig eth0 down
poweroff
Skopiuj go do katalogu /etc/rc0.d (więc działa również z zatrzymaniem ):
sudo cp /etc/rc6.d/wol_poweroff.sh /etc/rc0.d/wol_poweroff.sh
Niech oba będą wykonywalne:
sudo chmod 755 /etc/rc6.d/wol_poweroff.sh
sudo chmod 755 /etc/rc0.d/wol_poweroff.sh
Teraz sprawdź, czy działa, wyłączając komputer za pomocą narzędzia WOL i wysyłając do niego magiczny pakiet sudo shutdown now
lub sudo poweroff
używając narzędzia WOL.
To była jedyna rzecz, która działała dla mnie. Znalazłem te kroki w zgłoszeniu błędu na launchpad.net.
Według autora, Robbie Williamson, działa to z powodu:
Aby WOL działał, interfejs Ethernet musi zostać poprawnie wyłączony w ramach zamykania systemu. Należy to wykonać jako część poziomów uruchamiania rc0 i rc6, zwracając uwagę, że Linux zwykle ma 7 różnych poziomów uruchamiania (lub trybów działania):
rc0.d - System zatrzymany
rc1.d - Tryb jednego użytkownika
rc2.d - Tryb jednego użytkownika z obsługą sieci
rc3.d - Tryb wielu użytkowników - uruchamia się w trybie tekstowym
rc4.d - Jeszcze nie zdefiniowane
rc5.d - Tryb wielu użytkowników - uruchamianie w X Windows
rc6.d - Wyłącz i uruchom ponownie
Źródło: https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/981461
Uruchom następujące polecenie w terminalu:
sudo ethtool -s {your network interface} wol g
sudo ethtool {your network interface}
powinieneś zobaczyć g obok budzenia się po lan po napisaniu drugiego polecenia
Jeśli używasz NetworkManager, możesz włączyć WOL poprzez nmcli
:
nmcli connection show
Zapamiętaj NAZWĘ połączenia TYPU „802-3-ehternet” dla interesującego urządzenia. Powiedzmy, że nazwa to „Połączenie przewodowe 1”. Następnie zmodyfikuj go poprawnie:
nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic
Aby uzyskać adres MAC:
nmcli connection show "Wired connection 1" | grep 802-3-ethernet.mac-address
Od teraz możesz go wyłączyć i włączyć z innego komputera w tej samej sieci LAN za pomocą wakeonlan 1a:2b:3c:4d:5e:6f
polecenia, gdzie 1a:2b:3c:4d:5e:6f
jest adres MAC karty LAN z poprzedniego kroku.
Oprócz parametrów sugerowanych przez @nkef możesz ustawić następujące ustawienia w / etc / network / interfaces, jeśli używasz DHCP zamiast statycznych ustawień IP dla karty LAN (tutaj o nazwie eth0):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
ethernet-wol g
(testowany na Ubuntu 16.04 LTS).
To właśnie mnie ugryzło pod Ubuntu 18.04 (instalacja bezgłowa / minimalna), niestety odpowiedzi już tutaj wymienione, chociaż mogą się wydawać, że czasami działają, nie zapewnią niezawodnego rozwiązania, ponieważ tworzą warunki wyścigowe lub walczą z takimi jak systemd, netplan i udev.
Próbowałem też tego podejścia na początku i wydawało się, że działa, planuję system uruchamiać każdego wieczora za pomocą WakeOnLan, aby uruchamiał kopie zapasowe, ponieważ system BIOS nie zapewnia zaplanowanej opcji włączenia.
Będzie działał przez kilka dni, a następnie odmówi przebudzenia, ręcznego włączenia go i uruchomienia ettoola ujawniło, że WoL został wyłączony:
Wake-on: d
Uznałem więc, że coś innego musiało zostać wyłączone i miałem wiele takich problemów w ciągu ostatnich kilku lat, kiedy systematycznie przejmowałem części systemu, postanowiłem tu zacząć, oto:
WakeOnLan = .. .. Domyślnie wyłączone.
https://www.freedesktop.org/software/systemd/man/systemd.link.html
Przykłady online pokazują coś w stylu:
/etc/systemd/network/50-wired.link
[Match]
MACAddress=<MAC ADDRESS>
[Link]
WakeOnLan=magic
Jakkolwiek to wciąż nie działało. Potem natrafiłem na to:
udevadm test-builtin net_setup_link /etc/systemd/network/50-wired.link
co spowodowało:
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
A co mogę znaleźć w /run/systemd/network/10-netplan-eno1.link?
[Match]
MACAddress=<MAC ADDRESS>
[Link]
Name=eno1
WakeOnLan=off
Rozwiązanie Albo:
Ponieważ miałem już systemowy plik .link, po prostu zmieniłem jego nazwę na 00-wired.link, ponownie uruchomiłem i teraz raporty ento1 ethtool:
Wake-on: g
Bez żadnych dodatkowych usług wyłącznie w celu próby włączenia WoL.