NVIDIA Jetson TX2/Xavier Image Cloning

NVIDIA Jetson *

NVIDIA Jetson 시리즈 제품들은 GPU를 사용하는 어플리케이션(주로 AI Edge computing)을 개발하고 이를 임베디드 시스템에 적용할 때 필수적으로 사용하게 되는 제품들이다. 전에는 Jetson TX2 제품이 가성비로 많이 사용되었고, 최근에는 Jetson AGX Xavier 가 높은 GPU/CPU 성능으로 고사양이 필요한 어플리케이션에 사용되고 있다. Jetson Xavier Nano 는 낮은 가격으로 가벼운 어플리케이션에 많이 이용되고 있다.

이러한 임베디드 플랫폼을 사용할 때 개발한 제품을 대량으로(2개 이상…?) 제작/생산해야 하는 경우, 제품을 하나하나를 연결하여 필요한 소프트웨어를 설치하고 개발한 어플리케이션을 설치하고 테스트하는 일들은 여간 번거로울 수 없다.

그래서 이 글에서 NVIDIA Jetson 시리즈 제품들을 사용할 때 이미지를 clone 하고 flash 하는 방법들을 정리해본다.

환경 및 준비물

clone 및 flash 를 위해서는 기본적인 Ubuntu Terminal CLI 와 SSH 사용에 대한 지식이 있어야 한다.

  • 환경
    • Host PC: Ubuntu 18.04
    • SSH 연결: Host PC — NVIDIA Jetson *
  • 준비물

Image Cloning

  1. Image 를 cloning 하기 전에 모든 file system 을 read-only 모드로 변경한다. @Jetson

    sudo su
    echo u > /proc/sysrq-trigger
    
  2. dd 명령어를 통해 image 를 복사해준다. @Jetson

    1. Jetson 플랫폼에서 Host PC로 image 를 복사하는 경우

      dd if=/dev/mmcblk0p1 | ssh user@hostpc dd of=/data/system.raw
      
    2. Jetson 플랫폼에서 특정 저장장치로 image 를 복사하는 경우

      dd if=/dev/mmcblk0p1 of=/path/system.raw
      
  3. sparse image 만들기 @HostPC

    2번 과정을 통해 만든 이미지는 image 의 불필요한(비어있는) 영역까지 포함하고 있어 용량이 매우 크다. 그래서 아래와 같이 이미지를 줄여준다. 이때 사용하고자 하는 Jetson 플랫폼의 sdk 가 있어야 한다. NVIDIA sdk manager 를 통해 받을 수 있으며 JetPack_4.5.1_Linux_JETSON_AGX_XAVIER 등과 같은 폴더이름을 같게 된다.

    sdk 가 준비가 되면 아래 명령어를 통해 mksparse 을 실행한다.

    mksparse.tar

    # 기존에 있던 system.img 백업
    mv system.img system.img.backup
    
    # [XXX] -> 버전 정보
    cd ~/nvidia/nvidia_sdk/JetPack_[XXX]_Linux_JETSON_[XXX]/Linux_for_Tegra/bootloader
    ./mksparse -v --fillpattern=0 /data/system.raw system.img
    

Image flash

  1. NVIDIA Jetson 제품을 Recovery mode 로 진입시키고 Host PC 와 연결한다.

    1. Recovery mode 진입 방법

      • TX2

        NVIDIA%20Jetson%20TX2%20Xavier%20Image%20Cloning%20709c45c1f161496db7c09de255d50fca/Untitled%201.png

        1. 전원 어댑터를 분리한다.
        2. 전원 어댑터를 다시 연결한다.
        3. 전원 버튼 클릭(1 초 이상 누른다.)한다.
        4. 강제 복구 버튼을 누른 상태에서 리셋 버튼을 동시에 누른 상태로
        5. 2초 후 리셋 버튼을 놓은 후 강제 복구 버튼을 순서대로 놓는다.
      • Xavier

        Untitled

        recovery 버튼을 누르고 전원을 키고 2~3초 뒤에 recovery 버튼에서 손을 뗀다.

    2. 연결 확인 방법

      lsusb | grep NVidia
      >> Bus 001 Device 009: ID 0955:XXXX NVidia Corp.
      
  2. flash 방법

    # [XXX] -> 버전 정보
    
    # image 를 복사해와야 하는 경우
    cd ~/nvidia/nvidia_sdk/JetPack_[XXX]_Linux_JETSON_[XXX]/Linux_for_Tegra
    sudo cp backup.img bootloader/system.img
    
    # flash
    ****cd ~/nvidia/nvidia_sdk/JetPack_[XXX]_Linux_JETSON_[XXX]/Linux_for_Tegra
    sudo ./flash.sh -r jetson-[XXX] mmcblk0p1
    

Tips!

image 파일을 통해 원하는 파일을 복사하거나 image 파일을 수정, 편집할 수 있다.

sudo mount -o loop /where/ever/it/is/system.img /mnt
cd /mnt
ls
# explore, edit, so on
cd
sudo umount /mnt
sudo cp /where/ever/it/is/system.img /some/where/else/Linux_for_Tegra/bootloader/system.img
# ...then do the flash of rootfs as mentioned above.

Reference

댓글