프로젝트

[프로젝트] eMMC Jetson Nano에서 USB로 부팅하기(젯슨나노 용량 문제 해결)

sungw00 2022. 6. 7. 23:34
728x90

최근 젯슨나노가 물량 부족으로 인해 SD카드를 삽입하는 버전은 구할 수가 없고, 알리에 있는 제품들은 전부 젯슨나노 B01 SUB 버전으로 된 저속의 16G 저장장치가 속에 내장된 온보드 형태의 eMMC 모델뿐이다.

원래 빨간색 네모 부분에 SD카드가 들어가는 공간이 있는데 이 모델은 그게 없어서 기본 OS인 Jetpack만 설치해도 이미 40%나 사용중이고, 거기에 Yolov5나 OpenCV는 설치하다가 디스크가 전부 꽉차버렸다. 그러던 중 구글링과 유튜브에 검색을 해본 결과 아래 방법을 찾게 되었다.

해당 방법을 순서대로 따라하게 되면 eMMC가 내장된 젯슨나노의 USB 부팅에 성공할 수 있게된다. 조금만 실수해도 다시 OS를 설치해야 하기 때문에 신중하게 진행해야 한다.(이 모델은 OS 설치도 우분투 리눅스에서 SDK manager를 통해야만 설치할 수 있다.)

준비물
1) 32G 이상의 여유공간이 있는 USB(부팅&파일 저장용이기 때문에 다른 용도로는 사용할 수 없다.)

진행 순서
1. USB를 젯슨나노에 꽂고 프로그램 검색창에 'disks'를 검색해서 나오는 유틸리티를 클릭한다.
2. 우측 상단의 직선 3개짜리 버튼을 클릭하고 'Format Disk' 버튼을 클릭한다.
3. Partitioning 탭에서 'Compatible with modern systems and hard disks > 2TB(GTP)'를 선택 후 'Format...'를 클릭한다.
4. 끝나면 깨끗하게 포맷된 USB가 뜰텐데 이제 USB의 여유 공간을 만들어줄 차례이다. 아래 사진과 같이 + 버튼을 클릭한다.

5. 'Free Space Following' 부분에 '3.0GB'를 설정해주고 'Next' 버튼 클릭, Volume Name은 자신이 원하는 USB의 이름을 입력한다.
Type을 'Internal disk for use with Linux systems only (Ext4)'로 선택 후 'Create' 버튼 클릭
6. 위 과정을 마치고 나면 3GB의 공간만큼의 나머지 파티션이 할당되고 잠시동안 모래시계가 돌아가다가 Partition1의 파일시스템을 확인하면 Ext4로 설정된 것을 확인할 수 있다.
7. Volumes에서 해당 USB가 마운트가 되었는지 확인한다.
(마운트가 되었는지는 아래 사진에서와 같이 삼각형으로 된 부분을 한번 클릭해주면 네모모양으로 바뀌며 마운트가 된다.)

8. 터미널을 하나 열어서 git clone https://github.com/JetsonHacksNano/bootFromUSB.git 입력 후 엔터
9. cd bootFromUSB 를 입력하여 해당 위치로 이동한다.
10. ./copyRootToUSB.sh -p /dev/sda1을 입력해서 부팅시킬 USB로 내부 저장공간에 저장된 모든 파일을 이동한다.(약 10분 소요)
여기서 /dev/sda1은 삽입한 USB 슬롯의 위치마다 다를 수 있기 때문에 이전에 disks에서 저장공간의 디렉터리명을 확인해야 한다.

/dev/sda1으로 설정되어있다.

11. gedit /boot/extlinux/extlinux.conf 명령을 입력하여 extlinux.conf 파일을 연다.
12. 아래 사진에서 주황색 부분처럼 LABEL로 시작하여 맨 마지막 부분까지 복사한다.

13. 복사한 부분의 바로 아래줄에 붙여넣기 해서 LABEL 이후 부분에 emmc를 적어준다.


14. bootFromUSB 디렉토리에서 ./partUUID.sh를 입력하여 USB의 UUID를 확인하여 아래 사진처럼 빨간 박스로 표시한 부분을 복사해둔다.

복사된 부분은 'PARTUUID=620ea24c-0c42-4b2d-af83-9b59670b0458' 까지이다.

15. 복사한 부분을 아래 사진에 표시해둔 부분과 대치한다. (기본 코드에서 사진에서는 없는 부분이 추가되어있어도 상관없다. 그대로 계속 진행하면 된다.)

16. 대치를 완료한 모습

17. 위와 같이 되었다면 저장 후 젯슨나노를 재부팅한다.
이 과정에서 재부팅이 되지 않고 무한 리부팅이 반복된다면 SDK manager를 통해서 젯팩을 다시 설치해주어야 한다.
재부팅이 정상적으로 되었다면 'disks'에서 아래 사진과 같이 정상적으로 부팅 위치가 변경되었는지 확인할 수 있다.


SDK manager를 통해 JetPack을 설치하는 부분은 추후에 다뤄보도록 하겠습니다.

728x90