Risposte:
Ho trovato un modo migliore che ha funzionato per me. Almeno un modo più pulito. A quanto pare ha cambiato Ubuntu upstart per systemd , in Ubuntu 15.04, Ubuntu 16.04 e presumibilmente prossime versioni troppo. Sono nuovo per entrambi i sistemi ma questo ha funzionato per me.
Sto pubblicando questo perché mentre cercavo su Google Ubuntu 16 wol e altre ricerche simili mi sono imbattuto in questo post diverse volte. Questo potrebbe aiutare qualcun altro.
Per far funzionare WOL, ho dovuto riattivarlo ogni volta che il sistema si avviava. Per evitare di farlo manualmente ho usato systemd per questo scopo. Questo è quello che ho fatto:
Innanzitutto, crea il file /etc/systemd/system/wol@.service
(mantieni il simbolo @). Mettici questo:
[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
Abilitare questo per l'interfaccia all'avvio, eseguire il comando seguente (cambiare eth3 con l'interfaccia):
systemctl enable wol@eth3
Dovresti vedere qualcosa del genere:
Created symlink from /etc/systemd/system/multi-user.target.wants/wol@eth3.service to /etc/systemd/system/wol@.service.
Per verificare se è abilitato, esegui il seguente comando (cambia eth3 con la tua interfaccia) e dovrebbe restituire enabled
:
systemctl is-enabled wol@eth3
Per testarlo, riavvia ed esegui (cambia eth3 con la tua interfaccia):
ethtool eth3
Dovresti vedere una riga con il seguente:
Wake-on: g
fonti:
upstart:
Upstart è un sostituto basato sugli eventi per il demone / sbin / init che gestisce l'avvio di attività e servizi durante l'avvio, interrompendoli durante l'arresto e supervisionandoli mentre il sistema è in esecuzione.
- upstart - demone init basato sugli eventi
systemd:
systemd è una suite di blocchi di base per un sistema Linux. Fornisce un gestore di sistema e servizi che funziona come PID 1 e avvia il resto del sistema. (...)
- systemd
In Ubuntu 16.04 set WOL_DISABLE=N
in /etc/default/tlp
per evitare di ottenere WOL disattivata per la gestione dell'alimentazione TLP.
http://linrunner.de/en/tlp/docs/tlp-configuration.html
Aggiungere NETDOWN=no
in /etc/default/halt
per evitare di spegnere la scheda di rete durante l'arresto
Abilita Wake on LAN in /etc/network/interfaces
quando viene utilizzata la configurazione di rete statica.
# 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
Abilita wake on lan nel BIOS, accedi alla configurazione del BIOS e cerca qualcosa chiamato "Wake up on PCI event", "Wake up on LAN" o simile. Modificalo in modo che sia abilitato. Salva le tue impostazioni e riavvia.
https://help.ubuntu.com/community/WakeOnLan
Avvertenza: alcune schede madri / controller di rete non supportano WOL dall'avvio a freddo (stato S5, in cui l'alimentazione del sistema viene fisicamente spenta e riaccesa). In tal caso, deve essere eseguito almeno un ciclo di accensione (accensione, spegnimento). Per mitigare il problema, il BIOS può essere configurato per accendersi quando viene ripristinato CA e pianificare successivamente uno spegnimento all'interno di Ubuntu. Fare riferimento al manuale della scheda madre per ulteriori dettagli.
WOL_DISABLE=N
e NETDOWN=no
dovrebbero far parte di help.ubuntu.com/community/WakeOnLan
Eseguire quanto segue nel terminale:
sudo ethtool -s {your network interface} wol g
sudo ethtool {your network interface}
dovresti vedere una g accanto a wake on lan dopo aver scritto il secondo comando
Affinché WOL funzioni, assicurarsi che l'interfaccia Ethernet sia correttamente arrestata dal sistema quando si spegne.
Prova quanto segue:
Crea uno script bash chiamato wol_poweroff.sh nella directory /etc/rc6.d/ :
sudo nano /etc/rc6.d/wol_poweroff.sh
Inserisci questo codice:
#!/bin/bash
ifconfig eth0 down
poweroff
Copiarlo nella /etc/rc0.d directory (quindi funziona anche con halt ):
sudo cp /etc/rc6.d/wol_poweroff.sh /etc/rc0.d/wol_poweroff.sh
Renderli entrambi eseguibili:
sudo chmod 755 /etc/rc6.d/wol_poweroff.sh
sudo chmod 755 /etc/rc0.d/wol_poweroff.sh
Ora prova per vedere se funziona spegnendo la tua macchina con sudo shutdown now
o sudo poweroff
e usando uno strumento WOL per inviargli un pacchetto magico.
Questa è stata l'unica cosa che ha funzionato per me. Ho trovato questi passaggi in una segnalazione di bug su launchpad.net.
Secondo l'autore, Robbie Williamson, questo funziona a causa di quanto segue:
Per far funzionare WOL, l'interfaccia Ethernet deve essere correttamente disattivata come parte dell'arresto del sistema. Questo dovrebbe essere eseguito come parte dei livelli di esecuzione rc0 e rc6, osservando che Linux ha in genere 7 diversi livelli di esecuzione (o modalità operative):
rc0.d - Sistema arrestato
rc1.d - Modalità utente singolo
rc2.d - Modalità utente singolo con rete
rc3.d - Modalità multiutente - avvio in modalità testo
rc4.d - Non ancora definito
rc5.d - Modalità multiutente - avvia in X Windows
rc6.d - Arresto e riavvio
Fonte: https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/981461
Se si utilizza NetworkManager, è possibile abilitare WOL tramite nmcli
:
nmcli connection show
Ricorda NAME della connessione del TIPO "802-3-ehternet" per DISPOSITIVO di interesse. Dì che il nome è "Connessione cablata 1". Quindi modificalo correttamente:
nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic
Per ottenere il suo indirizzo MAC:
nmcli connection show "Wired connection 1" | grep 802-3-ethernet.mac-address
Da adesso puoi spegnerlo e accenderlo da un'altra macchina sulla stessa LAN tramite wakeonlan 1a:2b:3c:4d:5e:6f
comando, dove si 1a:2b:3c:4d:5e:6f
trova l'indirizzo MAC della scheda LAN del passaggio precedente.
Oltre ai parametri suggeriti da @nkef puoi impostare le seguenti in / etc / network / interfaces se usi DHCP invece delle impostazioni IP statiche per l'adattatore LAN (qui chiamato eth0):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
ethernet-wol g
(testato su Ubuntu 16.04 LTS).
Questo mi ha morso troppo anche sotto Ubuntu 18.04 (installazione senza testa / minima), sfortunatamente le risposte già elencate qui, anche se a volte sembrano funzionare, non forniranno una soluzione affidabile in quanto creano condizioni di gara o combattono con artisti del calibro di systemd, netplan e udev.
All'inizio avevo provato anche questo approccio e sembrava funzionare, sto programmando un sistema per l'avvio ogni sera tramite WakeOnLan per eseguire i backup poiché il BIOS di sistema non fornisce un AC programmato all'opzione.
Avrebbe funzionato per alcuni giorni e poi avrebbe rifiutato di svegliarsi, accendendolo manualmente ed eseguendo ethtool ha rivelato che WoL era stato disabilitato:
Wake-on: d
Quindi ho pensato che qualcos'altro avrebbe dovuto spegnerlo e aver avuto molti problemi di questo tipo negli ultimi anni con systemd che ha rilevato parti del sistema che ho deciso di iniziare qui, ecco:
WakeOnLan = .. .. Il valore predefinito è off.
https://www.freedesktop.org/software/systemd/man/systemd.link.html
Gli esempi online mostrano qualcosa sulla falsariga di:
/etc/systemd/network/50-wired.link
[Match]
MACAddress=<MAC ADDRESS>
[Link]
WakeOnLan=magic
Tuttavia, ciò non funzionava ancora. Poi mi sono imbattuto in questo:
udevadm test-builtin net_setup_link /etc/systemd/network/50-wired.link
che ha portato a:
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
E cosa trovo in /run/systemd/network/10-netplan-eno1.link?
[Match]
MACAddress=<MAC ADDRESS>
[Link]
Name=eno1
WakeOnLan=off
Soluzione O:
Dato che avevo già il file systemd .link, l'ho semplicemente rinominato in 00-wired.link, riavviato e ora ettool eno1 riporta:
Wake-on: g
Senza servizi extra al solo scopo di provare ad abilitare WoL.