Respostas:
Eu encontrei uma maneira melhor que funcionou para mim. Pelo menos de uma maneira mais limpa. Aparentemente, o Ubuntu mudou o inicio do systemd , no Ubuntu 15.04, Ubuntu 16.04 e presumivelmente nas próximas versões também. Eu sou novo nos dois sistemas, mas isso funcionou para mim.
Estou postando isso porque, enquanto pesquisava no Ubuntu 16 wol e outras pesquisas semelhantes, me deparei com esse post várias vezes. Isso poderia ajudar outra pessoa.
Para manter o WOL funcionando, tive que reativá-lo sempre que o sistema inicializou. Para evitar fazer isso manualmente, usei o systemd para essa finalidade. Isto é o que eu fiz:
Primeiro, crie o arquivo /etc/systemd/system/wol@.service
(mantenha o símbolo @). Coloque isso nele:
[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
Habilite isso para a interface na inicialização, execute o seguinte comando (altere eth3 com sua interface):
systemctl enable wol@eth3
Você deve ver algo assim:
Created symlink from /etc/systemd/system/multi-user.target.wants/wol@eth3.service to /etc/systemd/system/wol@.service.
Para verificar se está ativado, execute o seguinte comando (altere eth3 com sua interface) e ele deverá retornar enabled
:
systemctl is-enabled wol@eth3
Para testar isso, reinicie e execute (altere eth3 com sua interface):
ethtool eth3
Você deve ver uma linha com o seguinte:
Wake-on: g
Fontes:
iniciante:
Upstart é uma substituição baseada em eventos para o daemon / sbin / init que lida com o início de tarefas e serviços durante a inicialização, interrompendo-os durante o desligamento e supervisionando-os enquanto o sistema está em execução.
- upstart - daemon init baseado em evento
systemd:
systemd é um conjunto de blocos de construção básicos para um sistema Linux. Ele fornece um gerenciador de sistema e serviço que é executado como PID 1 e inicia o restante do sistema. (...)
- systemd
No Ubuntu 16.04, configure WOL_DISABLE=N
-o /etc/default/tlp
para evitar a desabilitação do WOL pelo gerenciamento de energia TLP.
http://linrunner.de/en/tlp/docs/tlp-configuration.html
Adicionar NETDOWN=no
em /etc/default/halt
para evitar desligar a placa de rede durante o desligamento
Ativar Wake on LAN em /etc/network/interfaces
quando a configuração de rede estática for usada.
# 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
Ative o wake on lan no BIOS, entre na configuração do BIOS e procure por algo chamado "Evento Wake up on PCI", "Wake up on LAN" ou similar. Altere-o para que ele esteja ativado. Salve suas configurações e reinicie.
https://help.ubuntu.com/community/WakeOnLan
Aviso: algumas placas-mãe / controladoras de rede não suportam WOL desde a inicialização a frio (estado S5, onde a energia do sistema é fisicamente desligada e ligada novamente). Nesse caso, pelo menos um ciclo de energia (inicialização, desligamento) deve ser realizado. Para atenuar o problema, o BIOS pode ser configurado para ligar quando o AC for restaurado e agendar um desligamento no Ubuntu posteriormente. Consulte o manual da placa-mãe para obter mais detalhes.
WOL_DISABLE=N
e NETDOWN=no
devem fazer parte de help.ubuntu.com/community/WakeOnLan
Para que o WOL funcione, verifique se a interface Ethernet está sendo desligada corretamente pelo sistema quando você desligar.
Tente o seguinte:
Crie um script bash chamado wol_poweroff.sh no diretório /etc/rc6.d/ :
sudo nano /etc/rc6.d/wol_poweroff.sh
Coloque este código nele:
#!/bin/bash
ifconfig eth0 down
poweroff
Copie-o para o diretório /etc/rc0.d (para que também funcione com parada ):
sudo cp /etc/rc6.d/wol_poweroff.sh /etc/rc0.d/wol_poweroff.sh
Torne os dois executáveis:
sudo chmod 755 /etc/rc6.d/wol_poweroff.sh
sudo chmod 755 /etc/rc0.d/wol_poweroff.sh
Agora teste para ver se funciona desligando sua máquina com sudo shutdown now
ou sudo poweroff
usando uma ferramenta WOL para enviar um pacote mágico a ela.
Essa foi a única coisa que funcionou para mim. Encontrei essas etapas em um relatório de bug no launchpad.net.
Segundo o autor, Robbie Williamson, isso funciona devido ao seguinte:
Para que o WOL funcione, a interface Ethernet deve ser desativada corretamente como parte do desligamento do sistema. Isso deve ser executado como parte dos níveis de execução rc0 e rc6, observando que o Linux normalmente possui 7 níveis de execução diferentes (ou modos de operação):
rc0.d - Sistema parado
rc1.d - Modo de usuário único
rc2.d - Modo de usuário único com rede
rc3.d - Modo multiusuário - inicialize no modo de texto
rc4.d - ainda não definido
rc5.d - Modo multiusuário - inicialize no X Windows
rc6.d - Desligamento e reinicialização
Fonte: https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/981461
Execute o seguinte no terminal:
sudo ethtool -s {your network interface} wol g
sudo ethtool {your network interface}
você deve ver um g ao lado para acordar na lan após escrever o segundo comando
Se você usa o NetworkManager, pode ativar o WOL via nmcli
:
nmcli connection show
Lembre-se de NAME da conexão do "802-3-ehternet" TYPE para DEVICE de interesse. Digamos que o nome seja "Conexão com fio 1". Em seguida, modifique-o corretamente:
nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic
Para obter seu endereço MAC:
nmcli connection show "Wired connection 1" | grep 802-3-ethernet.mac-address
A partir de agora você pode desligá-lo e ligá-lo de outra máquina na mesma LAN por wakeonlan 1a:2b:3c:4d:5e:6f
comando, onde 1a:2b:3c:4d:5e:6f
está o endereço MAC da placa de LAN da etapa anterior.
Além dos parâmetros sugeridos pelo @nkef, você pode definir o seguinte em / etc / network / interfaces se usar o DHCP em vez de configurações IP estáticas para o adaptador LAN (aqui chamado eth0):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
ethernet-wol g
(testado no Ubuntu 16.04 LTS).
Isso também me incomodou no Ubuntu 18.04 (instalação sem cabeçalho / instalação mínima), infelizmente as respostas já listadas aqui, embora pareçam funcionar às vezes, não fornecerão uma solução confiável, pois criam condições de corrida ou lutam com o systemd, netplan e udev.
Eu tentei essa abordagem também no começo e parecia funcionar. Estou programando um sistema para inicializar todas as noites via WakeOnLan para executar backups, pois o BIOS do sistema não fornece uma opção AC ativada.
Funcionaria por alguns dias e depois se recusava a acordar, ligando-o manualmente e executando o ethtool revelou que a WoL havia sido desativada:
Wake-on: d
Então, imaginei que outra coisa precisava ser desativada e que tive muitos desses problemas nos últimos anos com o systemd assumindo partes do sistema que decidi começar por aqui, e eis que:
WakeOnLan = .. .. O padrão é desativado.
https://www.freedesktop.org/software/systemd/man/systemd.link.html
Os exemplos on-line mostram algo como:
/etc/systemd/network/50-wired.link
[Match]
MACAddress=<MAC ADDRESS>
[Link]
WakeOnLan=magic
Como sempre isso ainda não estava funcionando. Então me deparei com isso:
udevadm test-builtin net_setup_link /etc/systemd/network/50-wired.link
que resultou em:
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 o que encontro em /run/systemd/network/10-netplan-eno1.link?
[Match]
MACAddress=<MAC ADDRESS>
[Link]
Name=eno1
WakeOnLan=off
Solução :
Como eu já tinha o arquivo systemd .link, simplesmente o renomeei para 00-wired.link, reiniciei e agora o ethtool eno1 reporta:
Wake-on: g
Sem serviços extras exclusivamente com o objetivo de tentar habilitar a WoL.