Linux에서 지속적으로 wake-on-lan을 설정하려고 하면 실패합니다.

Linux에서 지속적으로 wake-on-lan을 설정하려고 하면 실패합니다.

이것은 내 상자입니다: 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에는 "끝"이 없습니다. 대략적인 것들이 있지만 그것은 당신이 원하는 것이 아닙니다.

관련 정보