Linux/임베디드 보드

[Jetson Xavier NX] 1. en715 보드에서 Jetpack setup하기

윤창이 2021. 1. 19. 21:35
728x90

[주의] 개인 공부를 위해 쓴 글이기 때문에 주관적인 내용은 물론, 쓰여진 정보가 틀린 것일 수도 있습니다!

피드백 부탁드립니다. (- -)(_ _) 꾸벅

 

Jetson Xavier NX module

 

en715 carrier board


 

 NX Module이란? Jetson xavier의 성능에, 크기는 Jetson nano 수준인 저전력 소형 폼 팩터 SOM(System-on-Module)이다. 손안에 쏙 들어가는데 성능은 21 TOPS이며, 이전 세대인 TX2보드보다 10배 이상의 성능을 제공한다! 이 Jetson Xavier NX의 셋업하는 방법이 언젠간 다시 재사용될 일이 있게 될 것 같으니.. 잊지 않게 적어두고자 한다. 나는 en715라는 커스텀 보드를 사용하기로 한다. 커스텀 보드의 장점을 찾아보니 소형화, 커스텀화 할 수 있다는 장점이 있는 것 같다. 셋업하는데 헬이라는 것은 몰랐다.

 

 

결론은 방법4로 설치하면 된다. 방법 1부터 따라하지 마세요!

 


[방법1. SD card Image]

nvidia 공식 홈페이지 Jetson Download Center

 

 

 이 보드를 받자마자 그냥 아무 생각 없이 구글에 Jetson Xavier NX 치고, 공식 홈페이지에서 SD card image를 다운받아서 rufus를 통해 SD카드에 플래시하고, carrier board에 삽입하고 부팅.. 아무 일도 일어나지 않았다..! 찾아보니 NX module은 Xavier나 Nano와 다르게 설치하는 방법이 다르다고 한다. 그래서 이번에는 Jetpack 4.4를 SDK manager를 통해 설치하려고 했다.

 


[방법2. SDK Manager]

 

[Recovery Mode 부팅 방법]

1. Power 버튼을 꾹 눌러 Power off 상태로 둔다

2. Recovery 버튼을 꾹 누른 상태로 Power 버튼을 누른다

3. 그 상태로 2초 기다린 후 손을 뗀다.

(power버튼과 recovery버튼은 보드 중앙쯤에 있다)

 

 

리커버리 모드로 켜 둔 상태에서 SDK manager를 통해 설치하면 된다. SDK 설치방법은 쉽기도 하고 널렸으니 생략~

 

 

 

 근데 다 설치하고 보니깐 전체 용량이 32GB 정도? 인 것 같다.. 내가 삽입한 건 64GB SD카드인데? 알고 보니 NX module에 기본은 32GB storage가 내장되어 있는 것 같다. SD 카드엔 그냥 결국 아무것도 안 깔렸고, SDK는 내부 스토리지에 OS를 깐 거였다.. ln 명령어로 최대한 외부 SD card에 링크하여 용량을 아끼는 식으로 쓰려고 SD카드를 ext4로 포맷을 하여 삽입했는데 인식을 하지 않는다;

 


[방법3. install.sh파일 이용]

SDK manager를 통해 설치하는 것에 문제가 있다고 판단, 좀 더 찾아본 결과 en715 보드에서는 Carrier Board에서 제공하는 방법으로 깔아야 함을 알아내었다.

 

www.avermedia.com/professional/download/en715#parentHorizontalTab2

 

위 링크에서 Jetson Xavier NX 설치 파일을 다운로드한다. 그리고 설치방법도 아래 ftp 주소에 올라와 있는 대로 설치하면 된다.

ftp2.avermedia.com/EN715-AA00-1AC0/EN715-NX-R1.0.5.4.4_ReleaseNote.txt

 

 

1. 압축 풀고 (두 번 압축되어 있을 수도 있으니 확인)

2. 압축 푼 곳으로 폴더 이동

3. sudo ./setup.sh를 통해 카메라 CSI로 무엇을 사용할지 선택

4. 이제 Jetson Xavier NX Carrier보드와 Host PC를 케이블로 연결한다.

5. ./install.sh 명령으로 설치~ 

 

 

 

 이제 스스로 재부팅되었고 SD card도 외부 media 폴더에 잘 마운트 되었다. 근데 CUDA, pytorch 등등 다양한 걸 설치하다 보니깐 root 디렉터리인 /dev/mmcblk0p1의 용량이 터무니없이 부족하다.. 여기까지 오기에도 각고의 삽질과 시간을 들였는데.. 하는 수 없이 SD card를 디폴트로 부팅하는 법을 찾아야만 했다.ㅜㅜ

 

 

/boot/extlinux 에 있는 extlinux.conf 파일에 mmcblk0p1를 mmcblk1p1로 바꾸어 부팅하는 방법이 있었는데, 그러기엔 내부 스토리지를 거쳐 외부 스토리지로 부팅이 되는 것이라 부적절하다고 판단.. 다른 방법을 구글링으로 찾기로 한다.

여기까지 오는데도 넘 힘들었다; 연구실 네트워크가 너무 느려서 다운받고 설치하는데 너무 오랜 시간이 걸린다ㅠㅠ 

 


[방법4. Boot from External Device]

 

그래서 찾은 방법.. 이걸 제일 처음에 봤으면 하루는 아낄 수 있었을 텐데

하기 전에 방법3의 설치 폴더에서 작업해야 하므로 준비한다.

 

elinux.org/Jetson/L4T/Boot_From_External_Device

 

Jetson/L4T/Boot From External Device - eLinux.org

Introduction Flash device with rootfs on external devices. With new releases >= rel-32, external (USB, SATA, MMC) is being used as identification is solely on UUID based and not type of media. Steps 1. Connect the external device to host Linux PC 2. Create

elinux.org

 

 

방법은 일단 GPT 방식으로 파티션 초기화해야 한다. 다른 리눅스 PC에서 SD 카드를 리더기에 꼽고 진행한다.

 

그러고 나서 gdisk 명령어를 실행하는데, sdx에 x는 a, b, c... 등등이므로 확인하여 알맞은 알파뱃을 넣는다.

 

 

$ sudo gdisk /dev/sdx
  "o" -> 파티션 초기화
  "n" -> 새로운 파티션 생성
  "1" -> 파티션 번호 매기기 /dev/sdx1
  "40M" first sectors -> Press enter
  "Linux filsystem" -> 디폴트로 자동으로 됨
  "c" -> 파티션 이름 지정 "PARTLABEL"
  "w" -> 디스크 쓰기 완료 및 exit.

 

순서대로 잘 써서 진행하면 GPT로 포맷된다. 

 

 

$ sudo mkfs.ext4 /dev/sdx1			# ext4로 포맷
$ sudo blkid /dev/sdx1				# partition UUID를 기억해둔다
$ sudo mount /dev/sdx1 /mnt			# mnt로 마운트
$ cd rootfs/					# 설치폴더 안에 rootfs폴더로 이동
$ sudo tar -cpf - * | ( cd /mnt/ ; sudo tar -xpf - )	# mnt에 붙혀넣기
$ sudo umount /mnt					# unmount

 

아까 기억해둔 partition UUID를 설치 폴더 안에 있는 bootloader/l4t-rootfs-uuid.txt 에다가 써준다.

l4t-rootfs-uuid.txt는 없으므로 생성한다.

 

 

$ sudo ./flash.sh jetson-xavier-nx-en715 external

 

마지막으로 설치 폴더에 flash를 실행시키면 자동으로 플래시 된다.

이제 외부 SD 카드로 부팅이 되며, 안에 내부 스토리지를 media로 저장 공간으로 쓸 수 있게 되었다..!

 

다른 사람들은 부디 en715보드 + nx모듈 조합에서 삽질을 하지 않았으면 해서 이렇게 글을 남긴다.

 

 

이제 CUDA, pytorch, 등등을 설치해야 하는데, 산 넘어 산이다..

 


 

728x90

'Linux > 임베디드 보드' 카테고리의 다른 글

[Jetson Xavier NX] 2. Jetpack 및 Pytorch 설치  (2) 2021.01.20