NVIDIA JETSON AGX Xavier- WSL2에서 설치하기
NVIDIA JETSON SDK는 현재 Ubuntu 20.04를 지원하지만 펌웨어 설치 한번을 위해서 Ubuntu를 설치하는 것 역시 상당히 번거로운 일이다. 그러기에 AGX Xavier의 Jetpack을 WSL2에서 설치하는 방법을 기록해둔다.
WSL2 설치하기
![](https://learn.microsoft.com/en-us/media/logos/logo-ms-social.png)
Windows 11(22H2) 기준으로, Windows Terminal에서 설치가 가능하다.
wsl --install
해당 명령줄을 입력하면, WSL2 관련 기능이 자동으로 켜지며 우분투가 설치된다.
WSL USB 패스스루 설치
![](https://learn.microsoft.com/en-us/media/logos/logo-ms-social.png)
WSL2는 기본적으로 윈도우상에 연결된 USB 디바이스를 인식하지 못한다. 그러기에 추가적으로 프로그램을 설치하여 WSL로 연결할 수 있도록 해야한다.
usbipd-win 릴리즈 페이지에서 .msi 파일을 다운로드 받아 설치한다.
WSL와 Windows 사이에서 USBIP통신을 하기 위해서는 WSL에도 설치해야하는 패키지가 있다.
sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20
sudo apt install linux-tools-5.15.0-25-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.15.0-25-generic/usbip 20
이후 연결을 위해 AGX Xavier의 리커버리 모드에 진입한다. 강제 리커버리(2번째 버튼)을 누른 상태로 전원(1번째 버튼)을 누르고 동시에 떼서 진입한다.
AGX Xavier의 BUSID를 확인하고 설치하기 위해 AGX Xavier의 USB-C를 컴퓨터와 연결하고, 터미널에 해당 명령을 입력한다.
![](https://privs.dev/content/images/2022/11/image.png)
실패할 경우, 일반 직렬 장치로 표시된다. 이럴 경우, 전원 버튼을 길게 눌러서 AGX Xavier를 종료하면 된다.
![](https://privs.dev/content/images/2022/11/image-1.png)
성공할 경우, APX로 표시된다. 필자의 AGX XAVIER의 BUSID는 2-3이다.
usbipd wsl attach --busid <BUSID>
해당 명령어를 입력해 WSL에 USB 장치를 연결한다.
NVIDIA SDK MANAGER 설치
![](https://developer.nvidia.com/sites/default/files/Jan2021-developer-sdkm-landing-page-web-diagram.jpg)
해당 링크에서 Ubuntu용 deb파일을 다운받는다.
SFTP를 이용해 옮기고, 설치한다.
sudo apt install sdkmanager_*
SDK Manager(GUI 기반 프로그램)를 실행하기 위해서는 X-Server가 필요한데, 필자는 MobaXterm을 사용하였다. SFTP, SSH, X-11이 전부 지원되는 강력한 프로그램이다.
![](https://mobaxterm.mobatek.net/screenshot.png)
MobaXterm으로 WSL에 접속한 후, sdkmanager를 실행하려고 하면 에러가 발생한다(The futex facility returned an unexpected error code.)
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
X11 DISPLAY의 주소를 DISPLAY 환경 변수로 적용하면 된다.
이후 sdkmanager를 사용하기 위한 필수 패키지를 설치한다.
sudo apt install libxml2-utils libgtk-3-0
sudo apt install qemu-user-static binfmt-support
sudo dpkg-reconfigure qemu-user-static
자신의 우분투 버전이 22.04라면 /etc/os-release의 VERSION_ID를 변경한다.
#VERSION_ID="22.04"
VERSION_ID="20.04"
NVIDIA SDK MANAGER 실행
SDK Manager를 실행한다.
sdkmanager
![](https://privs.dev/content/images/2022/11/image-3.png)
SDK Manager에 로그인 한 후AGX Xavier가 연결되어 있다면 해당 창이 뜬다. AGX Xavier DevKit의 경우, 3번째를 선택해준다.
이후 CONTINUE를 누른다.
![](https://privs.dev/content/images/2022/11/image-4.png)
Target HW image folder에 필요한 파일들이 들어간다. 폴더를 지정하고 CONTINUE를 눌러 다운로드를 진행한다.
이후 USB가 끊기며 설치에 실패한다.
![](https://privs.dev/content/images/2022/11/image-6.png)
Target HW image folder로 지정해둔 폴더에 들어간후, JetPack_5.0.2_Linux_JETSON_AGX_XAVIER_TARGETS/Linux_for_Tegra에 들어간다.
sudo ./apply_binaries.sh
해당 명령을 입력해 설치준비를 한다.
![](https://privs.dev/content/images/2022/11/image-8.png)
flash.sh에서 get_fuse_level() 함수를 찾아, 맨 앞에 sleep 5;를 추가해준다. 이 함수에 들어가기 직전에 USB 연결이 끊기는데, 이로 인해 설치가 실패한다. sleep 함수를 이용해 잠깐 동안 USB를 연결할 시간을 벌 수 있다.
sudo ./nvsdkmanager_flash.sh
설치를 시작한다.
usbipd wsl attach --busid <BUSID>
해당 명령어를 실행해 설치를 시작하던 도중, USB가 끊기면 usbipd 명령어를 이용해 다시 연결해준다.
약 20분정도 있으면 eMMC에 Jetson Linux가 설치된다.
참조
![](https://qiita-user-contents.imgix.net/https%3A%2F%2Fcdn.qiita.com%2Fassets%2Fpublic%2Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png?ixlib=rb-4.0.0&w=1200&mark64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZ0eHQ9V1NMMiVFMyU4MSU4QiVFMyU4MiU4OUpldFBhY2s1LjAuMURQJUUzJTgyJTkyJUUzJTgyJUJCJUUzJTgzJTgzJUUzJTgzJTg4JUUzJTgyJUEyJUUzJTgzJTgzJUUzJTgzJTk3JnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01ZWQwZDJlN2E5M2ZiZmUwOTVjZDYyYWNhMmI0NTc1OQ&mark-x=142&mark-y=112&blend64=aHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwTWFueWFuMyZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9OTAyZTBlZWNhYTlhNDhhODg0OGQ5ZWFiNTUwNThhYmE&blend-x=142&blend-y=491&blend-mode=normal&s=efe19083a84e408d87d844556e6a4f9c)