Esta é minha caixa:
Linux mediacenter 5.15.122-1-MANJARO #1 SMP PREEMPT Tue Jul 25 07:09:46 UTC 2023 x86_64 GNU/Linux
estou tentando seguir https://wiki.archlinux.org/title/Wake-on-LAN
Mas não estou conseguindo tornar as mudanças persistentes.
Eu tentei a solução de link, o systemd e a regra do udev. Cada vez que reinicio as coisas ficam assim:
sudo ethtool enp1s0 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: d
O que parece significar que está desativado.
Especialmente a coisa do systemd me intriga. Parece que o script systemd é executado antes da interface de rede ser renomeada de eth0
para 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)
Não consegui aplicar o comando ethtool na reinicialização. Se eu configurá-lo manualmente após a reinicialização, funcionará:
$ sudo systemctl start wol@enp1s0
$ sudo ethtool enp1s0 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: umbg
Ideias?
Responder1
Parece que o script systemd é executado antes da interface de rede ser renomeada de eth0 para enp1s0.
Nesse caso, faça a unidade systemddependerem uma interface de rede chamada enp1s0
. Isso é feito adicionando Wants=
e After=
para o caminho do dispositivo /sys correspondente - embora um tanto confuso, o systemd usa o caminho /sys/subsystem inventado para isso (que foi planejado para existir, mas nunca existiu).
[Unidade] Quer=sys-subsystem-net-devices-%i.device Depois=sys-subsystem-net-devices-%i.device
Além disso, embora geralmente seja bom ter a unidade em multi-user.target, vocêpoderiafaça o próprio dispositivo puxá-lo:
# Opcional [Instalar] WantedBy=sys-subsystem-net-devices-%i.device
Um método ainda melhor seria invocar ethtoolde uma regra do udev,já que as regras do udev são processadas quando o dispositivo aparece e não antes (obviamente). Em outras situações (embora não na sua), eles também têm a vantagem de que vários outros softwares (incluindo o systemd) só são notificados quando o dispositivo está "pronto"depoiso processamento da regra foi concluído.
# /etc/udev/rules.d/20-wol.rules
ACTION=="adicionar", SUBSYSTEM=="net", KERNEL=="eth*", RUN+="/sbin/ethtool -s %k wol g"
Acho que o que funcionará é configurar a unidade systemd para rodar no final.
Não existe "no final" no systemd, deliberadamente. Há coisas que se aproximam disso, mas não é isso que você deseja.