Esta es mi caja:
Linux mediacenter 5.15.122-1-MANJARO #1 SMP PREEMPT Tue Jul 25 07:09:46 UTC 2023 x86_64 GNU/Linux
estoy tratando de seguir https://wiki.archlinux.org/title/Wake-on-LAN
Pero no logro que los cambios sean persistentes.
Probé la solución de enlace, systemd y udev rule. Cada vez que reinicio las cosas se ven así:
sudo ethtool enp1s0 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: d
Lo que parece significar que está deshabilitado.
Especialmente lo del systemd me desconcierta. Parece que el script systemd se ejecuta antes de que se cambie el nombre de la interfaz de red de eth0
a enp1s0
.
ago 31 00:27:33 mediacenter systemd[1]: Starting Wake-on-LAN for enp1s0...
ago 31 00:27:33 mediacenter ethtool[373]: netlink error: no device matches name (offset 24)
No he podido lograr que aplique el comando ethtool al reiniciar. Si lo configuro manualmente después de reiniciar, funciona:
$ sudo systemctl start wol@enp1s0
$ sudo ethtool enp1s0 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: umbg
¿Ideas?
Respuesta1
Parece que el script systemd se ejecuta antes de que se cambie el nombre de la interfaz de red de eth0 a enp1s0.
En ese caso, haga que la unidad systemddependeren una interfaz de red llamada enp1s0
. Esto se hace agregando Wants=
y After=
para la ruta del dispositivo /sys correspondiente; aunque de manera algo confusa, systemd usa la ruta inventada /sys/subsystem para esto (que se planeó que existiera pero nunca llegó a existir).
[Unidad] Quiere=sys-subsystem-net-devices-%i.dispositivo Después=sys-subsystem-net-devices-%i.device
Además, si bien tener la unidad en multi-user.target generalmente está bien,podríahaga que el dispositivo lo tire hacia adentro:
# Opcional [Instalar] WantedBy=sys-subsystem-net-devices-%i.dispositivo
Un método aún mejor sería invocar ethtoolde una regla udev,ya que las reglas de udev se procesan cuando aparece el dispositivo y no antes (obviamente). En otras situaciones (aunque no en la suya) también tienen la ventaja de que otros programas (incluido systemd) solo reciben notificaciones cuando el dispositivo está "listo".despuésel procesamiento de reglas ha finalizado.
# /etc/udev/rules.d/20-wol.rules
ACCIÓN=="agregar", SUBSYSTEM=="net", KERNEL=="eth*", RUN+="/sbin/ethtool -s %k wol g"
Creo que lo que funcionará es configurar la unidad systemd para que se ejecute al final.
No hay "al final" en systemd, de forma muy deliberada. Hay cosas que se aproximan, pero esas no son las que quieres.