기존에 사용하던 JetPack3.3 에서 JetPack 4.2으로 변경을 하기위해서 아래와 같이 Download한 후 설치를 진행한다.
JetPack 4.2 Download
https://developer.nvidia.com/embedded/jetpack
JetPack 설치방법
https://docs.nvidia.com/sdk-manager/download-run-sdkm/index.html
https://docs.nvidia.com/jetson/jetpack/install-jetpack/index.html#how-to-install-jetpack
설치방법은 이전보다 더 간단하며, 설치하기도 너무 쉽다.
우선 Host PC에서 SDKManager 를 설치하고 실행하자
- SDKManager 설치
$ cd ~/Downloads // 설치장소는 맘대로 $ sudo dpck -i sdkmanager_0.9.11-3405_amd64.deb or $ sudo apt install ./sdkmanager-[version].[build#].deb $ sudo dpkg -l | grep sdkmanager // 설치확인 ii sdkmanager 0.9.12-4180 amd64 NVIDIA SDK Manager
1.1 SDK Manager 실행
처음 한번 실행된 장소 기준으로 Pakcage를 Download를 하며, 이 정보를 매번 기억을 하고 있다.
그러므로, 설치 중에 Package 설치 장소 및 NVIDIA SDK 장소는 확인하자.
SDKManager도 JetPack 3.3 처럼 Jetson TX2의 microUSB 와 HostPC와 연결된 상태에서 진행해야한다.
- SDKManager 실행
$ sdkmanager // GUI 설치 진행
- Developer Zone — developer.nvidia.com (site에서 가입)
- NVOnline — partners.nvidia.com (3rt Party를 위함)
- Offline — to install SDKs that were previously downloaded, .. see Offline Install
- Offiline 진행시 Manual
Developer Zone 설치를 진행하면, 아래와 같이 시작을 하며, 데이타 정보를 Google Analictics 로 수집을 하고 이를 다 동의하고 설치를 진행한다.
상위사이트에서 먼저 가입을 하고 진행을 해야한다.
본인의 Target Hardware 에 맞게 설정하고 설치 진행
- P2888 ( Jetson AGX Xavier)
- P3310 ( Jetson TX2)
- P3489 ( Jetson TX2i)
- P3448 ( Jetson Nano)
JETPACK 4.2의 Host에 설치되는 항목들을 살펴보면,
- NVIDIA Nsight Graphics: 아직 사용을 못해봄
- NVIDIA Nsight Systems: 이전에는 C++만 지원을해서 빌드만 하고 Target 후 Debug까지 했으나, 현재 거의 사용 안함.
- SDK Manager 설치환경
Download & INSTALL OPTIONS 부분으로 설치위치 변경가능
Target 인 Jetson에 설치될 항목들을 살펴보자.
Jetson OS 와 각 Jetson SDK 항목들이 존재한다.
Target은 우선 CuDA Upgrade 되었으며, TensorRT는 5.0 부터 Python이 지원가능하다고 한다.
나머지는 눈으로 직접 다 확인을 자세히 하자.
- STEP 3
Jetson TX2 선택 후 Flash할 방법 선택
- AutoSetup : USB CDC 통신기반으로 Upgrade진행 ( 처음실패함)
- ManualSetup: Force Recovery Mode 로 진입하여 진행
- Force Revoery Mode 진입방법
- Disconnect/Connect AC Power
- Press Power Button
- Press Revoery Button and Reset Button
- Release Reset Button after 2 secs
- Release Recovery Button
RECOVERY과 REST BUTTON을 2초 간 누르고, RESET을 먼저 버튼에서 손을 놓는다.
- AutoSetup
나의 경우는 처음에 실패를 해서, Manual Setup으로 진행
- Manual Setup
둘다 진행을 하면 아래와 같이 진행됨
OS가 Flash가 되고, USB Mass Storage가 자동 Mount되고 나서 OS는 완전히 Flash 되고 Reboot
상위를 진행을 했다면, Jetson OS 부분은 진행이 되고, Ubuntu는 동작이 된다.
하지만, Jetson SDK Component를 추가로 더 설치를 진행해야한다.
1.2 Jetson SDK Component 설치
Jetson에서 Ubuntu가 동작이 되면서 초기화를 진행을 해야 아래의 메세지를 진행이 가능하다.
- Jetson SDK Component 를 설치 Message ( USB 문제사항)
아래의 메세지가 나오면 USB의 SSH가 동작되지 않으며, USB CDC가 잡히질 않고 진행이 되지 않는다. 이유는 Ubuntu의 기본 시스템을 설정하지 않아, 이를 설정해야 한다.
- Jetson TX2의 Ubuntu 설정
- Jetson TX2를 HDMI로 연결 (만약 화면이 잡힐지 않는다면, 재연결 및 마우스움직임)
- 라이센스를 동의
- 언어/키보드/지역설정
- System Configuration 설정 ( Username 과 Password 설정 및 Jetson Name )
- USB 동작가능 ( Host에서 Mass Stroage 잡히는 것을 확인 )
- HOST에서 USB CDC 확인 (옵션)
$ lsusb -t // 상위 설정 후 확인 ....... |__ Port 6: Dev 40, If 4, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 6: Dev 40, If 2, Class=Communications, Driver=cdc_acm, 480M |__ Port 6: Dev 40, If 0, Class=Communications, Driver=rndis_host, 480M |__ Port 6: Dev 40, If 5, Class=Communications, Driver=cdc_ether, 480M |__ Port 6: Dev 40, If 3, Class=CDC Data, Driver=cdc_acm, 480M |__ Port 6: Dev 40, If 1, Class=CDC Data, Driver=rndis_host, 480M |__ Port 6: Dev 40, If 6, Class=CDC Data, Driver=cdc_ether, 480M |__ Port 9: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 2: Dev 26, If 0, Class=Vendor Specific Class, Driver=usbfs, 12M |__ Port 3: Dev 32, If 0, Class=Mass Storage, Driver=usb-storage, 480M ..... $ ifconfig enp0s20f0u6 Link encap:Ethernet HWaddr ce:a6:cc:57:fb:cf inet addr:192.168.55.100 Bcast:192.168.55.255 Mask:255.255.255.0 inet6 addr: fe80::2082:92ec:3a25:daf2/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:294 errors:0 dropped:0 overruns:0 frame:0 TX packets:233 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:48429 (48.4 KB) TX bytes:54113 (54.1 KB) ..............
- Target에 Jetson SDK Components 설치진행
상위에서 Jetson의 설정이 끝났다면, 상위에서 SSH ID/PW로 입력후 설치진행
나의 경우는 ID/PW (jetsontx2/nvidia) 설정했지만, 다시 설치해서 nvidia/nvidia로 다 변경을 했다. (다른 소스와 호환성을 위해서 )
- Jetson SDK Components 설치사항들
- CUDA (CUDA Toolkit 10.0)
- AI (cuDNN, TensorRT)
- Computer Vision (OpenCV , VisionWorks)
- Multimedia (Multimedia API)
이 부분이 설치가 되어야 실제 Jetson SDK Components가 설치가 되며, 추후 Jetson에서 Sample 예제도 확인가능하다.
상당한 시간이 걸리며, 설치후 아래의 Completed Successfully 확인
2. SDK Manager 로 설치후 확인
상위 SDK Manager 설치환경을 확인하고, 각각의 디렉토리를 확인하자.
- NVIDIA SDK 설치된 위치
$ tree -L 2 ~/nvidia/nvidia_sdk/ /home/jhlee/nvidia/nvidia_sdk/ //Jetson TX2 OS 관련 BSP ├── JetPack_4.2_Linux │ └── documentations // Jetpack 4.2 문서 확인하자 └── JetPack_4.2_Linux_P3310 └── Linux_for_Tegra // flash command
- SDKManger가 Download 한 Package들
$ tree -L 2 ~/Downloads/ /home/jhlee/Downloads/ // sdkmanager 설치 진행 한 곳 ├── nvidia │ └── sdkm_downloads └── sdkmanager_0.9.11-3405_amd64.deb $ ls ~/Downloads/nvidia/sdkm_downloads/ // 설치된 Package 사항확인, Jetson SDK component Jetson_Linux_R32.1.0_aarch64.tbz2 NVIDIA_Nsight_Graphics_2018.7.L4T.25921359.deb NsightSystems-linux-public-2019.3.2.12-510a942.deb Tegra_Linux_Sample-Root-Filesystem_R32.1.0_aarch64.tbz2 Tegra_Multimedia_API_R32.1.0_aarch64.tbz2 cuda-repo-cross-aarch64-10-0-local-10.0.166_1.0-1_all.deb cuda-repo-l4t-10-0-local-10.0.166_1.0-1_arm64.deb cuda-repo-ubuntu1604-10-0-local-10.0.166-410.62_1.0-1_amd64.deb devtools_docs.zip graphsurgeon-tf_5.0.6-1+cuda10.0_arm64.deb libcudnn7-dev_7.3.1.28-1+cuda10.0_arm64.deb libcudnn7-doc_7.3.1.28-1+cuda10.0_arm64.deb libcudnn7_7.3.1.28-1+cuda10.0_arm64.deb libnvinfer-dev_5.0.6-1+cuda10.0_arm64.deb libnvinfer-samples_5.0.6-1+cuda10.0_all.deb libnvinfer5_5.0.6-1+cuda10.0_arm64.deb libopencv-dev_3.3.1-2-g31ccdfe11_arm64.deb libopencv-python_3.3.1-2-g31ccdfe11_arm64.deb libopencv-samples_3.3.1-2-g31ccdfe11_arm64.deb libopencv_3.3.1-2-g31ccdfe11_arm64.deb libvisionworks-repo_1.6.0.500n_arm64.deb libvisionworks-sfm-repo_0.90.4_arm64.deb libvisionworks-tracking-repo_0.88.2_arm64.deb python-libnvinfer-dev_5.0.6-1+cuda10.0_arm64.deb python-libnvinfer_5.0.6-1+cuda10.0_arm64.deb python3-libnvinfer-dev_5.0.6-1+cuda10.0_arm64.deb python3-libnvinfer_5.0.6-1+cuda10.0_arm64.deb sdkmanager_0.9.12-4180_amd64.deb sdkml3_jetpack_l4t_42.json tensorrt_5.0.6.3-1+cuda10.0_arm64.deb uff-converter-tf_5.0.6-1+cuda10.0_arm64.deb
상위에서 arm64기반의 package를 중심으로 확인
https://developer.nvidia.com/embedded/downloads
2.1 Host 와 Jetson TX2 의 설정 및 설치
- Host에서 Jetson TX2로 SSH 연결
$ ssh -X jetsontx2@192.168.55.1 // SSH로 편하게 접속 아래 에러 발생시, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ $ ssh-keygen -R 192.168.55.1 // Key 재발행 후 재접속
Ubuntu Package 설치전에, LAN을 연결한 후 Internet 연결 확인
- Ubuntu 기본 Package Update & Upgrade
jetsontx2@jetsontx2-desktop:~$ sudo apt update jetsontx2@jetsontx2-desktop:~$ sudo apt upgrade
시간이 무지 많이 오래 걸리므로, 다음에는 반드시 Backup Image을 만들고 작업을 해야겠다.
3. 다른 방법으로 Jetson TX2 Flash 방법
Jetpack3.3 처럼 flash.sh command가 존재하며, 사실 sdkmanager도 내부적으로 동일하게 사용을 한다.
3.1 SDKManager Command 사용
sdkmanager 사용법
https://docs.nvidia.com/sdk-manager/sdkm-command-line-install/index.html
Jetson TX2
$ ./sdkmanager --cli install --user john.doe@example.com --logintype devzone --product Jetson --version 4.2 --targetos Linux --host --target P2888 --flash all
상위방법은 별도로 시도를 해보지를 않았고, 무슨 장점이 있는 지 모르겠다.
일단 만약 시도를 한다면, 상위 target은 p3310으로 변경하고, 본인의 email을 넣어야 할 것 같다.
세부내용은 sdkmanager --help를 보자.
3.2 Flash Command 사용
이전 Jetpack 3.3 과 동일하게 지원이 가능하며, 현재 OS와 기본 Package 설치되는 것으로 알고 있다. (Jetson SDK Components는 별도로 설치해야함)
- Force Recovery Mode
- Host PC에서 USB 연결확인
$ lsusb // Host 에서 USB 로 Jetson TX2 연결 후 Connection 확인 ..... Bus 001 Device 036: ID 0955:7020 NVidia Corp.
만약 상위와 같이 잡히지 않는다면, Force Recovery Mode로 진입 후 다시 확인
- Flash 방법 ( Host 와 Jetson 과 USB 연결)
$ cd ~/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3310/Linux_for_Tegra // for Jetson TX2 $ sudo ./flash.sh jetson-tx2 mmcblk0p1 // For Jetson TX2
상위대로 한다면, 기본설치만되고, NVIDIA에서 제공해주는 Jetson SDK components는 설치가 되지 않으므로 주의하자.
Jetson SDK components는 상위 nvidia/sdkm_downloads/ 에 별도로 package로 존재
- 기타 다른 보드
- sudo ./flash.sh jetson-tx2i mmcblk0p1 // For Jetson TX2i - sudo ./flash.sh jetson-xavier mmcblk0p1 // For Jetson Xavier - sudo ./flash.sh jetson-nano-qspi-sd mmcblk0p1 // For Jetson Nano
상위로 진행 한 후 Jetson과 HDMI로 모니터로 연결하고, 관련 기본 설정을 해주자.
- APP Partition Backup 후 이를 적용
$ ls bootloader/system.img* // 존재하는 system.img 확인 bootloader/system.img bootloader/system.img.raw // ( system.img 4G, system.img.raw 28G) $ lsusb // 반드시 Jetson 연결 확인 후, Recovery Mode 변경 Bus 001 Device 040: ID 0955:7020 NVidia Corp. $ sudo ./flash.sh -r -k APP -G clone.img jetson-tx2 mmcblk0p1 // Jetson TX2의 APP Partition Image를 Backup (clone.img) ( Filesystem) //다음 에러가 발생하면, Recovery Mode 변경 [sudo] password for jhlee: ############################################################################### # L4T BSP Information: # R32 (release), REVISION: 1.0, GCID: 14531094, BOARD: t186ref, EABI: aarch64, # DATE: Wed Mar 13 07:41:08 UTC 2019 ############################################################################### Error: probing the target board failed. Make sure the target board is connected through USB port and is in recovery mode. //제대로 실행된 경우 시간이 많이 걸림 ############################################################################### # L4T BSP Information: # R32 (release), REVISION: 1.0, GCID: 14531094, BOARD: t186ref, EABI: aarch64, # DATE: Wed Mar 13 07:41:08 UTC 2019 ############################################################################### # Target Board Information: # Name: jetson-tx2, Board Family: t186ref, SoC: Tegra 186, # OpMode: production, Boot Authentication: NS, ############################################################################### ./tegraflash.py --chip 0x18 --applet "/home/jhlee/nvidia/nvidia_sdk/JetPack_4.2_Linux_P3310/Linux_for_Tegra/bootloader/mb1_recovery_prod.bin" --skipuid --cmd "dump eeprom boardinfo cvm.bin" Welcome to Tegra Flash version 1.0.0 Type ? or help for help and q or quit to exit Use ! to execute system commands ............. $ ls // 새로 생성된 clone.img 확인 clone.img clone.img.raw $ mkdir jhleeback $ cp bootloader/system.img* jhleeback/ // 반드시 bootloader/system.img bakcup $ sudo cp clone.img.raw bootloader/system.img // bootloader/system.img 교체 $ sudo ./flash.sh -r -k APP jetson-tx2 mmcblk0p1 // 적용된 이미지로 Flash
- Target Filesystem 정보 확인
$ cd jhleeback $ mkdir test //mount 디렉토리 $ ls system.img system.img.raw test $ sudo mount -t ext4 -o loop ./system.img.raw ./test $ ls test/ // Target Filesystem 확인 README.txt bin boot dev etc home lib lost+found media mnt opt proc root run sbin snap srv sys tmp usr var $ ls ./test/usr/local/ // CUDA 설치확인, 미설치 bin etc games include lib man sbin share src $ ls ./test/usr/src/ // tensorrt 설치확인 , 미설치 (/usr/src/tensorrt/bin/ , /usr/src/tensorrt/samples/) linux-headers-4.9.140-tegra-linux_x86_64 linux-headers-4.9.140-tegra-ubuntu18.04_aarch64 nvidia $ sudo umount test // 정보확인 후 반드시 unmount
- Jetson TX2에서 Partition 확인
$ sudo gdisk -l /dev/mmcblk0 [sudo] password for nvidia: GPT fdisk (gdisk) version 1.0.3 Partition table scan: MBR: protective BSD: not present APM: not present GPT: present Found valid GPT with protective MBR; using GPT. Disk /dev/mmcblk0: 61071360 sectors, 29.1 GiB Sector size (logical/physical): 512/512 bytes Disk identifier (GUID): 00000000-0000-0000-0000-000000000000 Partition table holds up to 31 entries Main partition table begins at sector 2 and ends at sector 9 First usable sector is 4104, last usable sector is 61071327 Partitions will be aligned on 8-sector boundaries Total free space is 1 sectors (512 bytes) Number Start (sector) End (sector) Size Code Name 1 4104 58724359 28.0 GiB 0700 APP // UBUNTU FileSYSTEM 2 58724360 58732551 4.0 MiB 0700 mts-bootpack 3 58732552 58740743 4.0 MiB 0700 mts-bootpack_b 4 58740744 58741767 512.0 KiB 0700 cpu-bootloader 5 58741768 58742791 512.0 KiB 0700 cpu-bootloader_b 6 58742792 58743815 512.0 KiB 0700 bootloader-dtb 7 58743816 58744839 512.0 KiB 0700 bootloader-dtb_b 8 58744840 58750983 3.0 MiB 0700 secure-os 9 58750984 58757127 3.0 MiB 0700 secure-os_b 10 58757128 58761223 2.0 MiB 0700 eks 11 58761224 58769415 4.0 MiB 0700 adsp-fw 12 58769416 58777607 4.0 MiB 0700 adsp-fw_b 13 58777608 58778815 604.0 KiB 0700 bpmp-fw 14 58778816 58780023 604.0 KiB 0700 bpmp-fw_b 15 58780024 58781023 500.0 KiB 0700 bpmp-fw-dtb 16 58781024 58782023 500.0 KiB 0700 bpmp-fw-dtb_b 17 58782024 58786119 2.0 MiB 0700 sce-fw 18 58786120 58790215 2.0 MiB 0700 sce-fw_b 19 58790216 58802503 6.0 MiB 0700 sc7 20 58802504 58814791 6.0 MiB 0700 sc7_b 21 58814792 58818887 2.0 MiB 0700 FBNAME 22 58818888 59081031 128.0 MiB 0700 BMP 23 59081032 59343175 128.0 MiB 0700 BMP_b 24 59343176 59408711 32.0 MiB 0700 SOS 25 59408712 59474247 32.0 MiB 0700 SOS_b 26 59474248 59605319 64.0 MiB 0700 kernel 27 59605320 59736391 64.0 MiB 0700 kernel_b 28 59736392 59737415 512.0 KiB 0700 kernel-dtb 29 59737416 59738439 512.0 KiB 0700 kernel-dtb_b 30 59738440 60262727 256.0 MiB 0700 CAC 31 60262728 61071326 394.8 MiB 0700 UDA
최근에 위키에 생김
https://elinux.org/Jetson/TX2_Cloning
- 세부사항 아래참고 및 Jetpack 3.3 부분참고
https://ahyuo79.blogspot.com/2019/01/jetson-tx2.html