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