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
-
Image 를 cloning 하기 전에 모든 file system 을 read-only 모드로 변경한다. @Jetson
sudo su echo u > /proc/sysrq-trigger
-
dd 명령어를 통해 image 를 복사해준다. @Jetson
-
Jetson 플랫폼에서 Host PC로 image 를 복사하는 경우
dd if=/dev/mmcblk0p1 | ssh user@hostpc dd of=/data/system.raw
-
Jetson 플랫폼에서 특정 저장장치로 image 를 복사하는 경우
dd if=/dev/mmcblk0p1 of=/path/system.raw
-
-
sparse image 만들기 @HostPC
2번 과정을 통해 만든 이미지는 image 의 불필요한(비어있는) 영역까지 포함하고 있어 용량이 매우 크다. 그래서 아래와 같이 이미지를 줄여준다. 이때 사용하고자 하는 Jetson 플랫폼의 sdk 가 있어야 한다. NVIDIA sdk manager 를 통해 받을 수 있으며
JetPack_4.5.1_Linux_JETSON_AGX_XAVIER
등과 같은 폴더이름을 같게 된다.sdk 가 준비가 되면 아래 명령어를 통해
mksparse
을 실행한다.# 기존에 있던 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
-
NVIDIA Jetson 제품을 Recovery mode 로 진입시키고 Host PC 와 연결한다.
-
Recovery mode 진입 방법
-
TX2
- 전원 어댑터를 분리한다.
- 전원 어댑터를 다시 연결한다.
- 전원 버튼 클릭(1 초 이상 누른다.)한다.
- 강제 복구 버튼을 누른 상태에서 리셋 버튼을 동시에 누른 상태로
- 2초 후 리셋 버튼을 놓은 후 강제 복구 버튼을 순서대로 놓는다.
-
Xavier
recovery 버튼을 누르고 전원을 키고 2~3초 뒤에 recovery 버튼에서 손을 뗀다.
-
-
연결 확인 방법
lsusb | grep NVidia >> Bus 001 Device 009: ID 0955:XXXX NVidia Corp.
-
-
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.