이것은 내 상자입니다:
Linux mediacenter 5.15.122-1-MANJARO #1 SMP PREEMPT Tue Jul 25 07:09:46 UTC 2023 x86_64 GNU/Linux
따라해보려고 해요 https://wiki.archlinux.org/title/Wake-on-LAN
그러나 나는 변화를 지속시키지 못하고 있습니다.
나는 링크 솔루션, systemd 및 udev 규칙 1을 시도했습니다. 재부팅할 때마다 상황은 다음과 같습니다.
sudo ethtool enp1s0 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: d
이는 비활성화되었음을 의미하는 것 같습니다.
특히 시스템적인 것이 나를 혼란스럽게 만듭니다. 네트워크 인터페이스의 이름이 에서 로 바뀌기 전에 systemd 스크립트가 실행되는 것 eth0
같습니다 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)
재부팅 시 ethtool 명령을 적용하지 못했습니다. 재부팅 후 수동으로 설정하면 작동합니다.
$ sudo systemctl start wol@enp1s0
$ sudo ethtool enp1s0 | grep Wake-on
Supports Wake-on: pumbg
Wake-on: umbg
아이디어?
답변1
네트워크 인터페이스 이름이 eth0에서 enp1s0으로 변경되기 전에 systemd 스크립트가 실행되는 것으로 보입니다.
이 경우 systemd 장치를 만드십시오.의존하다이름이 지정된 네트워크 인터페이스에 있습니다 enp1s0
. 이는 해당 /sys 장치 경로를 추가하여 수행됩니다 Wants=
. After=
다소 혼란스럽기는 하지만 systemd는 이를 위해 구성된 /sys/subsystem 경로를 사용합니다(이는 존재하도록 계획되었지만 결코 수행되지 않았습니다).
[단위] 원하는=sys-subsystem-net-devices-%i.device 이후=sys-subsystem-net-devices-%i.device
또한 multi-user.target에 유닛을 두는 것은 일반적으로 문제가 없지만~할 수 있었다장치 자체가 끌어당기도록 합니다.
# 선택사항 [설치하다] WantedBy=sys-subsystem-net-devices-%i.device
더 나은 방법은 ethtool을 호출하는 것입니다.udev 규칙에서udev 규칙은 장치가 나타날 때 처리되고 이전에는 처리되지 않습니다(분명히). 다른 상황에서는(귀하의 상황은 아니지만) 다양한 다른 소프트웨어(systemd 포함)에 장치가 "준비"되었다는 알림만 알릴 수 있다는 이점도 있습니다.~ 후에규칙 처리가 완료되었습니다.
# /etc/udev/rules.d/20-wol.rules
ACTION=="추가", SUBSYSTEM=="net", KERNEL=="eth*", RUN+="/sbin/ethtool -s %k wol g"
내 생각에 작동하는 것은 systemd 장치가 마지막에 실행되도록 설정하는 것입니다.
매우 의도적으로 systemd에는 "끝"이 없습니다. 대략적인 것들이 있지만 그것은 당신이 원하는 것이 아닙니다.