Jetson nano(eMMC) USB 부팅 및 OpenCV, PyTorch, Torchvision 설치

eMMC가 16GB라서 Jetpack 설치가 안되는 상황이 생겼다.

이것 저것 여러 방법들을 해보던 중 성공한 방법인 usb로 부팅하는 방법을 기록한다.

참고로 host pc의 os가 리눅스이어야 한다.

참고

기본 os 설치 : http://www.yahboom.net/study/jetson-nano

usb 설정 : https://github.com/jetsonhacks/bootFromUSB, https://jetsonhacks.com/2021/03/10/jetson-nano-boot-from-usb/

1. Jetson nano에 기본 OS 설치

1.1. SDK Manager 설치 및 실행

https://developer.nvidia.com/drive/sdk-manager에 접속하여 SDK Manager를 다운로드

설치

# 다운로드 된 파일 경로에서
# sudo apt install <다운로드한 sdkmanager 파일>
$ sudo apt install ./sdkmanager_1.9.0-10816_amd64.deb

# 만약 오류가 발생한다면 아래 명령어 실행 후 다시 설치
$ sudo apt --fix-broken install

실행

$ sdkmanager

로그인 후 화면

1.2. Jetson 보드 설정 및 연결

아래 사진처럼 Jetson 보드를 리커버리 모드로 부팅하기 위해 REC GND 부분을 점퍼선으로 연결한다.

그 후, host PC와 Jetson 보드를 5핀 USB 케이블로 연결한다

연결 후 SDK manager에서 세가지 선택창이 나오는데 Jetson Nano를 선택한다.

선택 후 SDK manager 화면

Continue를 눌러 아래 화면으로 넘어간 후, Jetson SDK Components를 체크 해제 한 후, Continue를 눌러 다음 화면으로 넘어가 설치를 시작한다.

이 후, 몇가지 추가 설정 창이 나오는데,

auto setup이 아닌 manual setup을 선택하고 flash, Jetson SDK Components를 설치하라는 화면에선 skip을 누르면 기본 OS 설치가 완료된다.

2. USB 부트

기본 OS 설치가 완료된 Jetson을 리커버리 모드가 아닌 정상 모드로 부팅한다.

이후 USB를 연결한다.

2.1. USB 포맷

왼쪽 위에 검색 창 클릭

Disks 선택

부팅용 USB 선택, 오른쪽 위 줄 세개 버튼 클릭하여 Format 진행

이후 포맷이 완료 되면 Volumes 아래 부분에 생긴 +버튼 클릭

Partitioning GPT 선택

ext4로 파티션 생성

2.2. rootfs를 USB에 복사

jetsonhacksnano에서 bootFromUSB 레포지토리를 클론해온다.

$ git clone https://github.com/jetsonhacksnano/bootFromUSB
$ cd bootFromUSB

생성했던 USB 파티션 경로로 copyRootToUSB.sh 실행

# ./copyRootToUSB.sh -p { USB 파티션 경로 }
$ ./copyRootToUSB.sh -p /dev/sda1

만약 실행이 안된다면 해당 경로 폴더를 한번 열었다가 다시 시도

2.3. extlinux.conf 설정파일 수정

USB의 exlinux.conf를 수정한다

$ cd /media/{사용자id}/{usb이름}/boot/extlinux

# 수정 전 백업
$ sudo cp extlinux.conf extlinux.conf.original

빨간 박스 부분을 변경할 것이다.

USB의 UUID를 가져온다

$ ./partUUID.sh
>
PARTUUID of Partition: /dev/sda1
e2b4fcff-228f-4c36-84af-9b33aac832fd -> 이게 UUID

위처럼 USB의 UUID를 primary로, eMMC를 sdcard로 설정한다.

이후 eMMC에서 USB로 부팅하게 만들어줘야하기 때문에 eMMC의 extlinux.conf도 똑같이 변경해준다.

$ sudo cp extlinux.conf /boot/extlinux/extlinux.conf

재부팅 후 제대로 되었는지 확인한다.

$ sudo reboot
$ df -h

/dev/sda1(USB)의 Mounted on이 / 이면 성공

3. OpenCV 설치

https://github.com/jetsonhacks/nano_build_opencv에서 레포지토리를 클론하고 명령어만 치면 된다.

$ git clone https://github.com/jetsonhacks/nano_build_opencv
$ cd nano_build_opencv
$ ./build_opencv.sh

4. PyTorch, Torchvision 설치

https://github.com/Qengineering/PyTorch-Jetson-Nano에서 파이토치 1.10.0 이하 버전의 wheel과 vision을 다운받고 아래 명령어를 통해 설치하면 된다.

# 숫자 뒤에 붙는 버전은 조금씩 다를 수 있다
$ sudo -H pip3 install torch-1.10.0a0+git36449ea-cp36-cp36m-linux_aarch64.whl
$ sudo -H pip3 install torchvision-0.11.0a0+fa347eb-cp36-cp36m-linux_aarch64.whl