Respuestas:
He encontrado una mejor manera que funcionó para mí. Al menos una forma más limpia. Aparentemente, Ubuntu cambió el sistema de arranque para systemd , en Ubuntu 15.04, Ubuntu 16.04 y presumiblemente las próximas versiones también. Soy nuevo en ambos sistemas, pero esto funcionó para mí.
Estoy publicando esto porque mientras busqué en google Ubuntu 16 wol y otras búsquedas similares me encontré con esta publicación varias veces. Esto podría ayudar a alguien más.
Para mantener el funcionamiento de WOL, tuve que volver a habilitarlo cada vez que el sistema se iniciaba. Para evitar hacer esto manualmente, usé systemd para este propósito. Esto es lo que hice:
Primero, cree el archivo /etc/systemd/system/wol@.service
(mantenga el símbolo @). Pon esto en esto:
[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 esto para la interfaz en el arranque, ejecute el siguiente comando (cambie eth3 con su interfaz):
systemctl enable wol@eth3
Debería ver algo como esto:
Created symlink from /etc/systemd/system/multi-user.target.wants/wol@eth3.service to /etc/systemd/system/wol@.service.
Para verificar si está habilitado, ejecute el siguiente comando (cambie eth3 con su interfaz) y debería regresar enabled
:
systemctl is-enabled wol@eth3
Para probar esto, reinicie y ejecute (cambie eth3 con su interfaz):
ethtool eth3
Debería ver una línea con lo siguiente:
Wake-on: g
Fuentes:
advenedizo:
Upstart es un reemplazo basado en eventos para el demonio / sbin / init que maneja el inicio de tareas y servicios durante el arranque, deteniéndolos durante el apagado y supervisándolos mientras el sistema se está ejecutando.
- advenedizo - demonio init basado en eventos
systemd:
systemd es un conjunto de bloques de construcción básicos para un sistema Linux. Proporciona un administrador de sistemas y servicios que se ejecuta como PID 1 e inicia el resto del sistema. (...)
- systemd
En Ubuntu 16.04 conjunto WOL_DISABLE=N
de /etc/default/tlp
evitar de conseguir WOL desactivado por la administración de energía TLP.
http://linrunner.de/en/tlp/docs/tlp-configuration.html
Añadir NETDOWN=no
en /etc/default/halt
para evitar apagar la tarjeta de red durante el apagado
Active Wake on LAN /etc/network/interfaces
cuando se use la configuración de red estática.
# 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
Active Wake on LAN en BIOS, ingrese a la configuración de BIOS y busque algo llamado "Wake up on PCI event", "Wake up on LAN" o similar. Cámbielo para que esté habilitado. Guarde su configuración y reinicie.
https://help.ubuntu.com/community/WakeOnLan
Advertencia: algunas placas base / controladores de red no admiten WOL desde el arranque en frío (estado S5, donde la alimentación del sistema se apaga físicamente y se vuelve a encender). En ese caso, se debe realizar al menos un ciclo de encendido (encendido, apagado). Para mitigar el problema, el BIOS se puede configurar para que se encienda cuando se restablezca la CA y luego se programe un apagado dentro de Ubuntu. Consulte el manual de la placa base para obtener más detalles.
WOL_DISABLE=N
y NETDOWN=no
deberían ser parte de help.ubuntu.com/community/WakeOnLan
Ejecute lo siguiente en la terminal:
sudo ethtool -s {your network interface} wol g
sudo ethtool {your network interface}
deberías ver una g junto a Wake on LAN después de escribir el segundo comando
Para que WOL funcione, asegúrese de que su sistema apaga correctamente la interfaz de Ethernet cuando la apaga.
Intenta lo siguiente:
Cree un script bash llamado wol_poweroff.sh en el directorio /etc/rc6.d/ :
sudo nano /etc/rc6.d/wol_poweroff.sh
Pon este código en él:
#!/bin/bash
ifconfig eth0 down
poweroff
Copiarlo en el /etc/rc0.d directorio (por lo que también trabaja con alto ):
sudo cp /etc/rc6.d/wol_poweroff.sh /etc/rc0.d/wol_poweroff.sh
Haz que ambos sean ejecutables:
sudo chmod 755 /etc/rc6.d/wol_poweroff.sh
sudo chmod 755 /etc/rc0.d/wol_poweroff.sh
Ahora pruebe para ver si funciona apagando su máquina con sudo shutdown now
o sudo poweroff
y usando una herramienta WOL para enviarle un paquete mágico.
Eso fue lo único que funcionó para mí. Encontré esos pasos en un informe de error en launchpad.net.
Según el autor, Robbie Williamson, esto funciona debido a lo siguiente:
Para que WOL funcione, la interfaz de Ethernet debe desactivarse correctamente como parte del apagado del sistema. Esto debe realizarse como parte de los niveles de ejecución rc0 y rc6, teniendo en cuenta que Linux generalmente tiene 7 niveles de ejecución diferentes (o modos operativos):
rc0.d - Sistema detenido
rc1.d - Modo de usuario único
rc2.d - Modo de usuario único con funciones de red
rc3.d - Modo multiusuario: arranque en modo texto
rc4.d - Aún no definido
rc5.d - Modo multiusuario: arranque en X Windows
rc6.d - Apagado y reinicio
Fuente: https://bugs.launchpad.net/ubuntu/+source/ifupdown/+bug/981461
Si usa NetworkManager, puede habilitar WOL a través de nmcli
:
nmcli connection show
Recuerde NOMBRE de la conexión del TIPO "802-3-ehternet" para el DISPOSITIVO de interés. Digamos que su nombre es "Conexión por cable 1". Luego modifíquelo correctamente:
nmcli connection modify "Wired connection 1" 802-3-ethernet.wake-on-lan magic
Para obtener su dirección MAC:
nmcli connection show "Wired connection 1" | grep 802-3-ethernet.mac-address
A partir de ahora puede apagarlo y encenderlo desde otra máquina en la misma LAN mediante wakeonlan 1a:2b:3c:4d:5e:6f
comando, donde se 1a:2b:3c:4d:5e:6f
encuentra la dirección MAC de la tarjeta LAN del paso anterior.
Además de los parámetros sugeridos por @nkef, puede establecer lo siguiente en / etc / network / interfaces si utiliza DHCP en lugar de la configuración de IP estática para el adaptador LAN (aquí denominado eth0):
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
ethernet-wol g
(probado en Ubuntu 16.04 LTS).
Esto también me mordió en Ubuntu 18.04 (instalación sin cabeza / mínima), desafortunadamente las respuestas que se enumeran aquí, aunque a veces parecen funcionar, no proporcionarán una solución confiable ya que crean condiciones de carrera o luchan con los gustos de systemd, netplan y udev.
Al principio también probé este enfoque y parecía funcionar, estoy programando un sistema para que arranque cada noche a través de WakeOnLan para ejecutar copias de seguridad ya que el BIOS del sistema no proporciona una opción de CA programada.
Funcionaría durante unos días y luego se negaría a despertarse, al encenderlo manualmente y ejecutar ethtool reveló que WoL había sido desactivado:
Wake-on: d
Así que pensé que algo más tenía que estar apagándolo y habiendo tenido muchos de estos problemas en los últimos años con el sistema tomando el control de partes del sistema, decidí comenzar aquí, he aquí:
WakeOnLan = .. .. Por defecto está desactivado.
https://www.freedesktop.org/software/systemd/man/systemd.link.html
Los ejemplos en línea muestran algo como:
/etc/systemd/network/50-wired.link
[Match]
MACAddress=<MAC ADDRESS>
[Link]
WakeOnLan=magic
Cómo alguna vez esto todavía no funcionaba. Entonces me encontré con esto:
udevadm test-builtin net_setup_link /etc/systemd/network/50-wired.link
que resultó en:
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
¿Y qué encuentro en /run/systemd/network/10-netplan-eno1.link?
[Match]
MACAddress=<MAC ADDRESS>
[Link]
Name=eno1
WakeOnLan=off
Solución Cualquiera:
Como ya tenía el archivo systemd .link, simplemente lo renombré a 00-wired.link, reinicié y ahora ethtool eno1 informa:
Wake-on: g
Sin ningún servicio adicional con el único fin de intentar habilitar WoL.