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