Linux,Unix,BSD/Jetson

[Jetson] AGX Orin eMMC에 새로운 L4T 플래싱하기

채윤아빠 2024. 1. 30. 14:31
728x90
반응형

개요

얼마전에 새로 발표된 "NVIDIA® Jetson™ Linux version 36.2" 버전을 Jetson AGX Orin에 플래싱(Flashing)하는 과정을 정리하여 보았습니다.

호스트 PC의 환경은 다음과 같습니다.

  • CPU: Intel i5-7500
  • RAM: 16GB
  • OS: Ubuntu 22.04

사전 준비 (Host PC)

L4T BSP 준비하기

L4T r36.2 BSP 파일들을 다음과 같이 다운로드 받습니다.

$ mdir -p /data/l4t/r36.2 && cd /data/l4t/r36.2
$ wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v2.0/release/jetson_linux_r36.2.0_aarch64.tbz2 -o jetson_linux_r36.2.0_aarch64.tbz2 ; \
 wget https://developer.nvidia.com/downloads/embedded/l4t/r36_release_v2.0/release/tegra_linux_sample-root-filesystem_r36.2.0_aarch64.tbz2 -o tegra_linux_sample-root-filesystem_r36.2.0_aarch64.tbz2

다음과 같이 적당한 폴더에 압축을 해제합니다.

$ cd /data/l4t/L4T_r36.2 && mkdir -p ~/l4t/r36.2 && tar xf jetson_linux_r36.2.0_aarch64.tbz2 -C ~/l4t/r36.2 && \
 sudo tar xf tegra_linux_sample-root-filesystem_r36.2.0_aarch64.tbz2 -C ~/l4t/r36.2/Linux_for_Tegra/rootfs

~/l4t/r36.2$ sudo du -h -d 1
6.1G    ./Linux_for_Tegra
6.1G    .

필수 패키지 설치하기

플래싱을 위하여 사전에 필요한 필수 패키지를 다음과 같이 설치합니다.

$ cd ~/l4t/r36.2/Linux_for_Tegra
$ sudo ./apply_binaries.sh
$ sudo tools/l4t_flash_prerequisites.sh

플래싱 (Flashing)

Jetson AGX Orin 복구(Recovery) 모드 부팅

플래싱을 위하여 Jetson AGX Orin를 복구(Recovery) 모드로 부팅해야만 합니다.

(4) Type-C에 전원을 연결하고, (10) Type-C를 Host PC와 연결합니다.
Jetson AGX Orin에 전원을 넣기 전에 (2) "Recovery mode" 버튼을 누르고 있는 상태에서 (1) 전원 버튼을 눌러 켭니다.

Jetson AGX Orin의 전원을 켠 후에 Host PC에서 "lsusb" 명령으로 Jetson AGX Orin이 복구(Recovery) 모드로 부팅되어 있는지 확인합니다.

$ lsusb

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 05ac:024f Apple, Inc. Aluminium Keyboard (ANSI)
Bus 001 Device 002: ID 05ac:1006 Apple, Inc. Hub in Aluminum Keyboard
Bus 001 Device 036: ID 0955:7023 NVIDIA Corp. APX
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Jetson AGX Orin이 복구(Recovery) 모드로 부팅되어 Host PC와 연결되어 있다면 위와 같이 "NVIDIA Corp. APX" 장치가 표시됩니다.

Host PC에서 플래싱하기

Host PC에서 다음 명령으로 eMMC에 플래싱을 수행합니다.

$ cd ~/l4t/r36.2/Linux_for_Tegra
$ sudo ./flash.sh jetson-agx-orin-devkit internal
.
.
.
[ 747.9699 ] Coldbooting the device
[ 747.9762 ] tegrarcm_v2 --chip 0x23 0 --ismb2
[ 747.9773 ] MB2 version 01.00.0000
[ 748.0086 ] Coldbooting the device
[ 748.0090 ] tegrarcm_v2 --chip 0x23 0 --reboot coldboot
[ 748.0094 ] MB2 version 01.00.0000
*** The target generic has been flashed successfully. ***
Reset the board to boot from internal eMMC.

위와 같이 "* The target generic has been flashed successfully. *" 문구가 표시되면, 플래싱이 성공되었고 AGX Orin을 확인해 보면, Linux 초기화면이 표시되어 있습니다.

이후 계정 설정 등으로 마무리 하고 필요한 패키지들을 설치하여 이용하면 됩니다.


기타 패키지 설치

NVIDIA JetPack

Jetpack이 필요하다면 다음과 같이 설치합니다.

$ sudo apt update -qq
$ sudo apt install nvidia-jetpack

Docker

docker는 다음과 같이 설치합니다.

$ sudo apt update -qq
$ sudo apt install docker.io

docker 서비스가 실행되지 않고, iptables 관련하여 "RULE_APPEND failed" 오류가 발생한다면 다음 명령을 수행한 이후에 docker 서비스를 재시작해주면 됩니다.

$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
$ sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
update-alternatives: using /usr/sbin/ip6tables-legacy to provide /usr/sbin/ip6tables (ip6tables) in manual mode

$ sudo systemctl start docker.service

NVIDIA Container Toolkit

다음과 같이 NVIDIA 패키지 저장소를 등록합니다.

$ curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkeysudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list\
    sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g'\
    sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

NVIDIA Container Toolkit 패키지를 설치합니다.

$ sudo apt-get update -qq
$ sudo apt-get install nvidia-container-toolkit

"nvidia-ctk" 명령을 이용하여 NVIDIA Container Toolkit을 설정하고, docker 서비스를 재시작합니다.

$ sudo nvidia-ctk runtime configure --runtime=docker
$ sudo systemctl restart docker

참고자료