Linux

Ubuntu 22.04 Wake on lan 설정 서비스로 등록하기

[혜안] 2023. 7. 4. 23:27
728x90

오래된 노트북에 Ubuntu 22.04를 설치하고 필요할때에만 부팅을 시키려고 wol 설정을 구글링하여 셋팅을 하였다.

sudo apt install ethtool
sudo ethtool -s enp2s0 wol g
sudo ethtool enp2s0
 ...
 Supports Wake-on: pumbg
 Wake-on: g
 Link detected: yes
 ...

그런데 이게 재부팅하면 설정이 사라지므로,

서비스로 등록해서 부팅할때마다 1회 설정하는 구성을 해주어야 한단다.

 

아래와 같이 1회 실행되는 원샷 서비스 설정하면 된다는데,

vi /etc/systemd/system/wol-enable.service

[Unit]
Description=Enable Wake-up on LAN

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s enp2s0 wol g

[Install]
WantedBy=basic.target

sudo systemctl daemon-reload
sudo systemctl enable wol-enable.service
sudo systemctl start wol-enable.service

 

재부팅 했는데 안되어 있다.

에러로그를 보니,

netlink error: no device matches name (offset 24)
netlink error: No such device

 

그런데, 원인을 아무리 찾아도 앵무새같은 똑같은 글들만 있고, 해결한 사람이 없음.

부팅할때는 에러가나서 실행이 안되어 있고, 그냥 커맨드로 서비스 살리면 또 정상적으로 설정이 먹는다.

 

아무래도 네트워크 인터페이스가 올라오기 전에 설정을 시도해서 그런듯 하여 아래와 같이 조건도 바꾸어봤다.

[Unit]
Description=Enable Wake-up on LAN
After=network-online.target

[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s enp2s0 wol g

[Install]
WantedBy=multi-user.target

After=network-online.target 를 추가하여,

network가 온라인이 된 후에 서비스를 실행하라는건데,

.......

안된다.

 

엄청 삽질하다가 

결국 쉘스크립트로 변경하고 스크립트 내에서 반복검사하는걸로 수정 !

vi /etc/systemd/system/wol-enable.service

[Unit]
Description=Enable Wake-up on LAN
After=network-online.target

[Service]
Type=oneshot
ExecStart=/etc/wol/wol-enable.sh

[Install]
WantedBy=multi-user.target
vi /etc/wol/wol-enable.sh

#!/bin/bash

STAT=0
while [ $STAT -lt 1 ]
do
    `/sbin/ethtool -s enp2s0 wol g`
    STAT=`ethtool enp6s0 |grep 'Wake-on: g' -c`
    echo $STAT
    sleep 1
done

 

재부팅 해보니 이제야 설정이 먹는다.

그리고 로그를 보니,

Jul  4 22:35:27 cmlee-Z450-GE30K systemd[1]: Started Network Manager.
.............................................
Jul  4 22:35:30 cmlee-Z450-GE30K NetworkManager[576]: <info>  [1688477729.2259] dhcp-init: Using DHCP client 'internal'
Jul  4 22:35:30 cmlee-Z450-GE30K NetworkManager[576]: <info>  [1688477729.2261] device (lo): carrier: link connected
Jul  4 22:35:30 cmlee-Z450-GE30K wol-enable.sh[730]: netlink error: no device matches name (offset 24)
Jul  4 22:35:30 cmlee-Z450-GE30K wol-enable.sh[730]: netlink error: No such device
.............................................
Jul  4 22:35:31 cmlee-Z450-GE30K kernel: [   14.905607] Console: switching to colour frame buffer device 170x48
Jul  4 22:35:31 cmlee-Z450-GE30K kernel: [   14.925691] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
Jul  4 22:35:31 cmlee-Z450-GE30K kernel: [   14.983085] mc: Linux media interface: v0.10
Jul  4 22:35:31 cmlee-Z450-GE30K wol-enable.sh[767]: netlink error: no device matches name (offset 24)
Jul  4 22:35:31 cmlee-Z450-GE30K wol-enable.sh[767]: netlink error: No such device
.............................................
Jul  4 22:35:32 cmlee-Z450-GE30K kernel: [   15.913413] pci 0000:00:1b.0: [8086:1e20] type 00 class 0x040300
Jul  4 22:35:32 cmlee-Z450-GE30K kernel: [   15.913490] pci 0000:00:1b.0: reg 0x10: [mem 0xf1710000-0xf1713fff 64bit]
Jul  4 22:35:32 cmlee-Z450-GE30K kernel: [   15.913763] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
Jul  4 22:35:32 cmlee-Z450-GE30K kernel: [   15.914344] pci 0000:00:1b.0: BAR 0: assigned [mem 0xdfe00000-0xdfe03fff 64bit]
Jul  4 22:35:32 cmlee-Z450-GE30K wol-enable.sh[841]: netlink error: no device matches name (offset 24)
Jul  4 22:35:32 cmlee-Z450-GE30K wol-enable.sh[841]: netlink error: No such device
Jul  4 22:35:32 cmlee-Z450-GE30K wol-enable.sh[729]: 0
............................................
Jul  4 22:35:33 cmlee-Z450-GE30K systemd[1]: Started Session c1 of User gdm.
Jul  4 22:35:33 cmlee-Z450-GE30K systemd[826]: Started PipeWire Multimedia Service.
Jul  4 22:35:33 cmlee-Z450-GE30K systemd[826]: Started PipeWire Media Session Manager.
Jul  4 22:35:33 cmlee-Z450-GE30K systemd[826]: Starting Sound Service...
Jul  4 22:35:33 cmlee-Z450-GE30K systemd[826]: Started Service for snap application snapd-desktop-integration.snapd-desktop-integration.
Jul  4 22:35:33 cmlee-Z450-GE30K systemd[826]: Starting Tracker metadata extractor...
Jul  4 22:35:33 cmlee-Z450-GE30K wol-enable.sh[729]: 1

27초에 Network Manager가 started 되었고,

30초에 Network Manager가 link connected 된 시점부터 내 쉘스크립트가 돌기 시작했고,

31초, 32초까지 3번 실패 후,

33초에 드디어 성공했다.

 

뭐 딱히 어떤 서비스 뒤에 실행하면 된다고 규정하기 어렵고,

그냥 충분히 시간이 지난 뒤에야 네트워크 인터페이스 장치를 찾는다는 얘기다.

결국 이 스크립트 그대로 두고 사용을 해야겠다.

728x90