Jetson & 머신러닝

집 밖에서 Xavier AGX를 원격으로 전원 켜기(WOL; wake on lan)

아크리엑터 2021. 3. 23. 00:49
반응형

내 경우, 집의 네트워크 구성은 공유기에 raspberry pi3, jetson nano, Xavier AGX 가 연결되어있다.

raspberry pi와 jetson nano는 언제나 켜져 있는 홈서버 역할을 하는데, Xavier는 전기를 많이 쓸 것 같아서, 자주 꺼두게 된다.

그런데, 사용하고 싶을 때 전원을 넣고 사용하려니 귀찮고 해서 필요할 때 사용하고, 사용하지 않을 때는 정지 상태로 놔둘 수 있도록 해봤다.

 

Xavier를 정지상태로 만들기 위해서는 아래의 패키지를 설치한 후에  아래에 적힌 일련의 명령어로 정지 상태로 만들수 있다. 정지된 Xavier를 깨우려고 하면 다른 서버에서 명령어를 입력하면 깨우도록 할 수 있는데, 이때 사용한 서버는 공유기에 연결된 jetson nano를 사용토록 했다. 

 

우선  Xavier에 설치할 패키지는 다음과 같다.

sudo apt-get install net-tools ethtool wakeonlan

 

패키지를 설치했으면, 아래와 같이 설정을 하자. 내가 쓰고 있는 Xavier AGX 서버는 유선랜과 무선랜 둘다 연결하도록 해두었다.

이 중에서, 유선랜의 IP로 접속하여 Xavier를 켜보려한다.

 

ifconfig를 입력하여, network 디바이스 이름을 먼저 확인하자. 기본적으로 유선랜은 eth0로 되어있다. 아래의 빨간색 부분을 돋보이게 하려고 한 것이 아니다. html 형식으로 표시를 하니, tag내의 문자열이 빨간색으로 바뀌었을 뿐이다.

ifconfig을 입력하면, 아래와 같이 나온다. 여기서,  유선랜카드의 디바이스 이름은 eth0, 무선랜카드의 디바이스 이름은 wlan0로 표시되는 것을 확인하였다. (아래 예의 MAC주소 등은 임의로 수정한 것임)

@xavier:~/work$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.2  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe10::d729:a380:ea98:5734  prefixlen 64  scopeid 0x20<link>
        ether 48:b0:11:2b:29:a9  txqueuelen 1000  (Ethernet)
        RX packets 21141  bytes 12328180 (12.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5228  bytes 603056 (603.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 41  

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 284  bytes 22849 (22.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 284  bytes 22849 (22.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

rndis0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether e2:6b:0a:10:97:7d  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

usb0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether e2:6b:0a:10:97:7f  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.48  netmask 255.255.255.0  broadcast 192.168.0.255
        inet6 fe10::5012:6587:306e:a130  prefixlen 64  scopeid 0x20<link>
        ether a4:b1:c5:f0:a9:65  txqueuelen 1000  (Ethernet)
        RX packets 15833  bytes 1180221 (1.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 152  bytes 17807 (17.8 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

 

깨우기 위해 사용될 eth0의 MAC주소를 꼭 적어두어야 한다. 이 맥주소는 맨 아래에서 사용될 것이다.

 

정지 상태로 쉽게 만들게 하기 위해 아래의 스크립트를 만들자. 스크립트 안에 적힌 네트워크 디바이스 이름은 eth0로 넣었다. 

@xavier:~/$ vi suspend.sh

#!/bin/sh

sudo ethtool -s eth0 wol g
sudo systemctl suspend

 

suspend.sh를 실행 가능하게 모드 설정을 바꾼다.

sudo chmod +x ~/suspend.sh

 

Xavier에서 ~/suspend.sh 를 실행하고, 비번을 입력하면 Xavier는 정지상태가 된다.

$ ~/suspend.sh

 

이젠, Xavier를 깨워보자.  jetson nano에 로그인을 하여, wakeonlan패키지를 설치한다.

$ sudo apt-get install wakeonlan

 

Jetson nano에는 깨우기 위한 스크립트를 하나 만들자. 

$ vi ~/wakeup.sh

#!/bin/sh

wakeonlan 48:b0:11:2b:29:a9

 

이 파일도 실행이 되도록 실행모드로 설정을 한다.

sudo chmod +x ~/wakeup.sh

 

이젠 서버를 깨워보자.

$ ~/wakeup.sh

Sending magic packet to 255.255.255.255:9 with 48:b0:11:2b:29:a9

 

이젠 서버가 정지상태에서 Active상태로 바뀔 것이다.  ^^  맥주소를 잘 못 적으면 깨어나지 않는다. 

반응형