Today
-
Yesterday
-
Total
-
  • Jetson Nano Developer Kit OS 설치 및 원격 제어
    Soliloquy 2019. 9. 12. 21:37



    음성 인식을 공부해보려는 생각만 하다가 Jetson Nano Developer Kit을 어쩌다 구하게 되어서 이걸 사용해보기로 했다.


    키트의 특징


    키트의 특징은 다음과 같았다.


    • CPU: Quad-core ARM A57 @ 1.43 GHz
    • GPU: 128-core Maxwell[각주:1]
    • RAM: 4 GB 64-bit LPDDR4 25.6 GB/s
    • Storage: microSD (미포함)
    • Display: HDMI 2.0, eDP 1.4
    • 그 외: GPIO 및 기가비트 이더넷 지원 (무선랜은 미지원[각주:2])


    이 외에 GPU를 이용한 CUDA, cuDNN와 같은 AI 개발을 위한 기능들도 제공이 되며, 이러한 기능들을 사용하기 쉽게 NVIDIA에서는 JetPack SDK 라는 명칭으로 OS이미지 파일이나 SDK 매니저를 이용해서 배포하고 있다.[각주:3] 


    우분투를 포팅해서 드라이버를 하나씩 잡고 SDK를 설치하는 사람들도 있겠지만, 그러기 보다는 NVIDIA에서 배포하는 SD Card 이미지를 사용하면 OS설치도 따로 할 필요가 없고, 관련 SDK도 별도로 설치할 필요가 없어서 훨씬 간편했다.


    그래서 NVIDIA에서 제공하는 SD Card 이미지를 사용하기로 했다. 설치 방법은 NVIDIA에서 제공하는 가이드에서 확인할 수 있었다.


    https://developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write

    NVIDIA에서 제공하는 설명문


    OS설치


    OS설치는 다음과 같은 순서로 진행됐다.


    1. SD카드 이미지를(5GB) 다운로드 한다.

      ※ 설명문에 있는 버전이 최신버전보다 한 달 전에 올라온 버전이었다. 가장 최신 버전은 키트 설명 페이지에 있는 Documentation 항목에서 받을 수 있었다.

      다운로드가 되지 않으면 wget이나 aria2c와 같은 속도 제한을 걸 수 있는 다운로드 도구로 다운로드를 진행한다.

    2. SD카드를 컴퓨터에 꽂아서 빠른 포맷을 진행한다.


    3. Etcher라는 툴로 SD카드 플래싱을 진행한다. (약 10분이 소요된다.)

    이 과정에서 주의해야 할 점이 하나 있다. 플래싱한 SD카드 이미지는 EXT4, TMPFS와 같은 윈도우에서 사용하지 않는 리눅스 파일 시스템을 사용하는데, 윈도우에서는 이러한 파일 시스템을 읽을 수 없다. 그래서 윈도우에서는 해당 파티션들을 다른 형식으로 포맷을 할거냐는 대화상자가 표시가 되는데 모두 포맷 취소를 하여야 한다.

    혹시라도 포맷을 했다면, 윈도우 디스크 관리에서 관련 파티션들을 제거한 후 다시 플래싱한다.

    플래싱을 하고난 후 디스크 관리에서 본 파티션들

    처음에는 파티션이 너무 많아서 잘못 만들어진줄 알고 착각했다.


    포맷을 할려는지 물어보는 윈도우 대화상자

    출처: NVIDIA


    제공되는 이미지는 우분투 18.04를 변형한 버전이어서 사용에 큰 문제가 없을 것 같았다.


    부팅에 성공한 후 업데이트 하는 모습


    특이한 점으로 SSH이 기본 설치 되어 있어서 접속을 하니 아래와 같은 화면이 나왔다. 기기 동작을 조금이라도 빠르게 하기 위해서 필요없는 패키지를 모두제거 했다고 한다. 이런 임베디드 시스템에서는 필요한 것 만 설치하면 되니까 상관은 없다.


    Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.9.140-tegra aarch64)

     * Documentation:  https://help.ubuntu.com
     * Management:     https://landscape.canonical.com
     * Support:        https://ubuntu.com/advantage

    This system has been minimized by removing packages and content that are
    not required on a system that users do not log into.

    To restore this content, you can run the 'unminimize' command.S

    SSH 접속 화면


    SSH가 기본적으로 사용 가능해서 이제 필요한 작업은 다 끝났구나 싶었지만, 한 모니터로 윈도우, 키트를 왔다갔다 하기에는 불편한 점이 많았다. 한 가지 대책으로 VNC를 사용하여 윈도우 상에서 원격 제어를 해보기로 했다.


    데스크톱 공유 사용


    VNC 사용


    우분투에 기본적으로 제공되는 데스크톱 공유 기능을 사용하면 다른 컴퓨터에서 VNC를 설치하여 원격으로 제어할 수 있었다. 하지만 이상하게도 현재 설치된 OS에서는 기본 탑제된 데스크톱 공유 프로그램 실행 시 아무런 에러메세지를 띄우지 않고 튕기는 문제가 발생한다.


    혹시나 업데이트를 하면서 뭔가 잘못된게 있나 해서 sudo apt remove vino를 이용해서 제거를 한 다음 sudo apt install vino로 다시 설치를 해보았지만, 달라진 것이 없었다.


    그리하여 인터넷에서 해결 방법을 찾고 또 찾다가, 어느 한 사이트에서 문제 해결법을 찾았다.


    https://blog.hackster.io/getting-started-with-the-nvidia-jetson-nano-developer-kit-43aa7c298797

    Jetson Nano Developer kit 설명 페이지


    해당 사이트에는 실행이 되지 않은 이유가 배포되는 OS의 Gnome Desktop 버전이 오래되어서 데스크톱 공유 프로그램과 문제가 많다는 말이 있었다. 하지만 다행히도 이를 수정할 수 있는 방법이 있었다.


    1. 터미널 창에 sudo vi /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml 를 입력해서 xml 파일을 연다.
    2. 파일의 맨 끝에서 아래와 같이 </schema>위에 enable키 타입 b를 추가한 후 저장한다.
    3. 터미널 창에 sudo glib-compile-schemas /usr/share/glib-2.0/schemas 를 실행한다.
    4. 데스크톱 공유 메뉴를 연 다음 다른 컴퓨터가 조작이 가능하도록 연결 옵션을 조정한다.
    5. 시작 프로그램 설정에서 /usr/lib/vino/vino-server 를 추가시켜준다.
    6. VNC뷰어 프로그램에서 암호화 문제가 생기지 않도록 터미널에서 아래와 같이 VNC 암호화 설정을 변경한다.

      gsettings set org.gnome.Vino require-encryption false
      gsettings set org.gnome.Vino prompt-enabled false

    7. 재부팅 한다.

            <summary>Notify on connect</summary>
            <description>
              If true, show a notification when a user connects to the system.
            </description>
            <default>true</default>
          </key>


         <key name='enabled' type='b'>
         <summary>Enable remote access to the desktop</summary>
         <description>
         If true, allows remote access to the desktop via the RFB
         protocol. Users on remote machines may then connect to the
         desktop using a VNC viewer.
         </description>
         <default>false</default>
      </key>


       </schema>
      </schemalist>

    enable키 타입b 내용을 추가 한 후의 내용

    굵은 글씨로 된 부분을 추가하고 저장하면 된다.


    VNC를 이용할 수 있게된 것은 좋긴 한데, VNC를 이용한 방법은 로그인이 되어 있어야 한다는 문제점이 있었다. 즉 로그인 계정 선택화면에서는 사용이 불가능하다는 말이다. 물론 부팅시 자동 로그인을 하면 문제가 되는 것은 아닌데, 뭔가 좀 찜찜했다. 그리고 VNC 뷰어를 별도로 사용해야 한다는 점도 좀 불편했다.


    MSTSC 사용


    윈도우에는 MSTSC(윈도우 원격 데스크톱 연결)이라는 원격제어 툴이 있다. 나름 준수한 성능으로 예전에 윈도우 테블릿으로 집 컴퓨터를 원격제어 할 때 많이 사용했는데, 윈도우 뿐만 아니라 리눅스에서도 MSTSC 서버를 열 수 있다는 말이 생각났다.


    그리고 위에 접속한 사이트에도 MSTSC를 사용하는 방법이 나와져 있었고, 이 방법을 사용하면 로그인이 되어 있지 않아도 접속이 가능하다는 말이 있었기에 바로 MSTSC 설정을 실행으로 옮겼다.


    설정 방법은 생각외로 간단했다. 터미널 창에 sudo apt-get install xrdp를 입력하여 xrdp라는 프로그램만 설치해주면 됐다.


    그런데 이상하게도 접속이 안되는 문제가 발생했다. 해당 문제의 해결방법은 다음과 같다.


    1. MSTSC로 접속 시 Xorg로그인 창이 나오지만 에러 없이 그냥 튕기는 문제가 발생한다.
      만약에 사용하려는 계정이 이미 로그인이 된 상태라면 MSTSC를 사용할 수 없다. 부팅시 자동 로그인 기능을 해제시켜 중복 로그인을 피한다.

      부팅시 자동 로그인 기능은 우분투의 설정의 사용자 계정 항목에서 변경할 수 있다.


      사용자 계정 설정 화면
      출처: askubuntu.com - Tejas Thakar


    2. 부팅 후 WIFI가 잡히지 않아 원격으로 접속을 할 수가 없다.
      무선랜만을 사용하는 경우에는 사용하는 와이파이를 모든 사용자가 사용할 수 있게 설정해놓아야 로그인 화면에서 접속이 가능하다.


    와이파이 설정 화면

    출처: askubuntu.com - Kaz Wolfe


    위와 같이 설정을 하고 난 뒤에, 시작에서 원격 데스크톱 연결 또는 mstsc를 검색해서 원격 접속 프로그램을 실행한 다음 키트의 아이피 주소를 입력하고 연결을 하면 된다. 직접 출력으로 보는 것 과는 다른 데스크톱 환경이 나오고, 속도도 엄청 느리긴 하지만, 모니터 한 대로 이것 저것 바꾸는 것 보다는 훨씬 편했다.


    MSTSC로 접속한 화면

    VNC로 접속한 화면과 다른 데스크톱 환경을 보여준다


    드디어 기본적인 환경 설정을 모두 마쳤다.


    여담


    인터넷 작성 글의 날짜로 생각하면 데스크톱 공유 앱이 실행되지 않는 날은 적어도 2019년 4월 부터가 되는데, 아직까지 이런 문제가 수정이 안된 이유는 왜일까 모르겠다. 데스크톱 공유 기능은 나름 많이 쓰이는 기능을 것 같은데...



    [본문 SVG 파일]

    Nvidia_image_logo.svg



    1. elinux.org/Jetson_Nano 에 따르면 FP16 에서 472GFLOPS의 성능을 가진다고 한다. [본문으로]
    2. USB 무선랜 사용 가능 [본문으로]
    3. https://docs.nvidia.com/jetson/archives/jetpack-archived/jetpack-422/install-jetpack/index.html) [본문으로]

    댓글

어제는 이곳에 명이 다녀갔습니다.

Powered & Designed by Tistory