Jetson Xavier NX 下 刷机升级JetPack5.1.2,本文记录了刷机流程以及踩坑记录。
必备:Jetson Xavier NX开发板(带128G内存)、官方标配 19V 电源适配器+线、Micro USB 数据线、跳线帽/跳线、Ubuntu host 主机(可装载虚拟机)、SDK Manager
可选:USB 键盘和鼠标、电脑显示器(HDMI 或 DP)(后续安装重启之后需连接开发板上使用)
1.在主机上安装VMware虚拟机软件,建议安装15.5及以上版本,之后点击下一步,完成安装,最后可以选择试用软件。(这里我提供了使用到的VMware15.5版本安装包及Ubuntu-18.04.5-desktop-amd64.iso镜像文件)链接:Here 提取码:t2bn
2.单机创建新的虚拟机,导入Ubuntu-18.04.5-desktop-amd64.iso镜像文件安装并打开。(磁盘大小最好设置高一些,建议条件允许的话设置40G及以上,JetPack 5.1.2版本的 Jetson OS 主机组件有18G左右的空间需求)
安装好的ubuntu 系统后,继续安装 sdkmanager 工具,在 ubuntu 系统的浏览器中访问官方网址下载最新版本SDK Manager ,下载地址:https://developer.nvidia.com/nvidia-sdk-manager ,注册NVIDIA 开发者账号后就可以下载。
下载完成后在Downloads文件夹下打开终端,执行以下命令安装sdkmanager
$ sudo apt install ./sdkmanager_2.0.0-11402_amd64.deb //可以按tab键补齐
安装结束之后在命令行输入 sdkmanager,打开安装好的sdk manager
$ sdkmanager
会出现以下提示框,勾选不再提示信息并点击Yes
进入到NVIDIA SDK MANAGER登入界面,勾选Stay logged in 并点击LOGIN,之后弹出浏览器的NVIDIA账号登入提示,输入刚才注册的NVIDIA 开发者账号后登入成功
出现以下界面,NVIDIA SDK MANAGER安装完成
刷机之前,先使用跳线帽/跳线的两端分别连接Jetson Xavier NX开发板的第三个引脚FC_REC与第四个引脚GND(开发板进行短接后,通电会进入recovery模式),之后电源端口接入 19V 电源, Micro-usb 端口接入配套的 Micro USB 线连到上一步骤配置好ubuntu 系统的主机上。
连接 Jetson 设备后,虚拟机会弹出一个连接 USB 设备的窗口 ,选择连接到虚拟机,并点击选中下面的虚拟机名称,但不要勾选记住此选择,点击确定。
弹窗选择板子的型号:Jetson Xavier NX(可以在终端中使用lsusb命令确认有没有Nvidia的ID信息)
在 Step 01 Development Environment 窗口中,选择以下内容:
从 Product Category 面板中,选择 Jetson;
在 Hardware Configuration 中,选择主机和目标硬件(不用勾选 Host Machine);
在 Target Operating System 中,选择操作系统和 JetPack 版本,我的设备是 Jetson Xavier NX ,选择的是 Jetpack5.1.2 版本。
只选择这三项,选择完毕后,单机继续以进行下一步。
在 Step 02 Details and License 窗口中,可以展开主机组件和目标组件面板以查看将安装在系统上的组件,这里因为核心模组 eMMC 只有 16G,我们只选择 Jetson OS 主机组件。等将系统迁移到SSD上面后,再进行其他SDK组件的安装。
选择我接受,以接受许可协议的条款和条件;选择继续下一步,开始安装,注意,这个时候不可以拔掉跳线帽和USB接口!
在安装开始之前,SDK Manager 会提示输入 ubuntu 主机密码。
然后会显示软件下载和安装的进度。注意,这个时候不可以拔掉跳线帽和USB接口!
当下载完成要刷新目标设备时,SDK Manager 会弹出创建 Jetson 的用户名和密码的对话框。
最后等待系统下载且烧写完成,进度条结束后,Jetson Xavier NX会重启,这个时候可以拔掉跳线帽和USB接口。
连接上显示屏,开机后连上键鼠,输入之前预设的账号和密码启动ubuntu系统,在设置中分别连接wifi、添加中文输入法、设置快捷键等基本操作。
先设置已安装的SSD,在菜单中搜索Disks并点击启动磁盘应用程序
之后将看到安装好的 128G 固态硬盘,单击右上角三条横项选项,选择格式化(Format Disk),选择预设的 GPT,再次确认要格式化(Format),接着输入系统密码,授权进行格式化。
单击+号进行分区,选择主分区的大小,本文建议主分区容量为 112GB,也可以根据自身需求做调整,单击 NEXT进行下一步。
给分区起个名称,类型要选择 Ext4,然后单击 Create,提示输入系统密码,设置完成。
现在,已成功创建分区,但它还没有挂载。接下来使用命令安装它,使系统启动从 SSD 启动。
首先,复制该项目,打开一个终端,输入以下命令
$ git clone https://github.com/jetsonhacks/rootOnNVMe.git
进入目录
$ cd rootOnNVMe
根源文件复制到您的 SSD
$ ./copy-rootfs-ssd.sh
运行./setup-service.sh 后重新启动系统以使服务生效。
$ ./setup-service.sh
打开终端执行以下命令:
$ sudo apt update
$ sudo apt install nvidia- jetpack
通过上述官方安装命令,Jetson Xavier NX 中已经安装了 CUDA 版本,但是此时你如果运行 nvcc -V 查看版本是不会显示的,需要你把 CUDA 的路径写入环境变量中。
$ sudo vim ~/.bashrc #使用 Vim 编辑环境变量
在最后添加下面两行
$ export PATH=/usr/local/cuda/bin:$PATH
$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
保存退出,执行以下语句生效,再运行 nvcc -V 就能看到 CUDA 版本
$ source ~/.bashrc
安装 pip3
$ sudo apt install python3-pip python3-dev
$ python3 -m pip install --upgrade pip #升级 pip
安装 Jetson-stats 管理工具可用来控制风扇、性能模式,查看系统相关信息,查看 CPU、GPU、温度等情况
$ sudo -H pip3 install jetson-stats
安装后需要重启,运行 jtop,输入命令运行查看系统信息
$ sudo jtop
至此环境搭建完成。但由于官方下载的OpenCV4.5.4不能使用Cuda加速,所以需要卸载原来的OpenCV并重装OpenCV4.5.4。(上图是已重装好的)
首先卸载自带的OpenCV库,卸载命令如下:
$ sudo apt-get purge libopencv*
$ sudo apt autoremove
$ sudo apt-get update
安装依赖,修改sources.list 文件,替换为国内清华源,为保险起见,可以先把原来的内容复制后备份文档
$ sudo vim /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main universe restricted
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main universe restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
之后执行下面的命令,安装依赖,其中libjasper1是libjasper-dev的依赖包
$ sudo apt update
$ sudo apt-get install libjasper1 libjasper-dev
$ sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
$ sudo apt install -y libjpeg8-dev libpng-dev libtiff5-dev libavcodec-dev libavformat-dev libswscale-dev libdc1394-22-dev libxine2-dev libv4l-dev
$ sudo apt install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgtk2.0-dev libtbb-dev libatlas-base-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev libopencore-amrnb-dev libopencore-amrwb-dev x264 v4l-utils
$ sudo apt install python2-dev python3-dev python-numpy python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
在官方仓库https://github.com/opencv分别下载所需的 opencv 与opencv_contrib 源码,注意两者版本要一致,这里我下载的版本是4.5.4
opencv 4.5.4 官方链接 :https://github.com/opencv/opencv/releases/tag/4.5.4
opencv_contrib 4.5.4官方链接 :https://github.com/opencv/opencv_contrib/releases/tag/4.5.4
下载后将opencv-4.5.4.tar.gz压缩包放在主目录下,在主目录中打开终端,使用以下命令进行解压
$ tar -xzvf opencv-4.5.4.tar.gz
再将opencv_contrib-4.5.4.tar.gz移动到 opencv-4.5.4目录下,进入到opencv-4.5.4目录中,再次使用解压命令进行解压
$ tar -xzvf opencv_contrib-4.5.4.tar.gz
解压完成后,在opencv-4.5.4目录下创建build 文件,执行 cmake
$ cd opencv-4.5.4
$ mkdir build
$ cd build
在cmake编译之前,手动下载cmake过程中缺失的依赖https://files.cnblogs.com/files/arxive/boostdesc_bgm.i%2Cvgg_generated_48.i%E7%AD%89.rar(建议Windows下载解压成zip格式通过u盘拷入)
解压后直接拷贝以下文件名的源码,放在opencv_contrib/modules/xfeatures2d/src/ 路径下即可
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i
然后打开build文件夹,执行的 cmake命令如下:
cmake \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN="7.2" \
-D WITH_cuDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D cuDNN_VERSION='8.6' \
-D cuDNN_INCLUDE_DIR='/usr/include/' \
-D CUDA_ARCH_PTX="" \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.4/modules \
-D WITH_GSTREAMER=ON \
-D WITH_LIBV4L=ON \
-D BUILD_opencv_python3=ON \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_EXAMPLES=OFF \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
..
其中-D cuDNN_VERSION版本要和开发板对应,-D OPENCV_EXTRA_MODULES_PATH建议填写opencv_contrib里modules的绝对路径,-D CMAKE_INSTALL_PREFIX为安装路径。
然后执行make进行编译安装,编译过程有点漫长请耐心等待。
$ sudo make -j10
之后执行以下命令安装
$ sudo make install
最后配置环境
$ sudo gedit /etc/ld.so.conf.d/opencv.conf
在打开的文本里面输入:
/usr/local/lib
保存退出,然后在终端输入以下命令即可安装成功
$ sudo ldconfig
通过jtop指令进行查看,即可看到已安装好支持CUDA加速的OpenCV4.5.4版本
官方网站上有不同Jetpack版本对应的pytorch和torchvison版本,根据需要选择进行安装就可,我安装的是pytorch v1.12.0与torchvision 0.13.0
pytorch v1.12.0 链接:https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
在终端中执行以下命令安装Pytorch:
$ wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
$ sudo apt-get install python3-pip libopenblas-base libopenmpi-dev
$ pip3 install Cython
$ pip3 install numpy torch-1.12.0a0+2c916ef.nv22.3-cp38-cp38-linux_aarch64.whl
然后前往官方仓库下载对应版本的torchversion
torchvision 0.13.0 链接:https://github.com/pytorch/vision/releases/tag/v0.13.0
使用官方命令在终端中执行,安装torchvision:
$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libopenblas-dev libavcodec-dev libavformat-dev libswscale-dev
$ git clone --branch <version> https://github.com/pytorch/vision torchvision # see below for version of torchvision to download
$ cd torchvision
$ export BUILD_VERSION=0.x.0 # where 0.x.0 is the torchvision version
$ python3 setup.py install --user
$ cd ../ # attempting to load torchvision from build dir will result in import error
验证是否安装成功:
$ python3
...
>>> import torch
>>> torch.__version__
'1.12.0'
>>> import torchvision
>>> torchvision.__version__
'0.13.0'
>>>
正常显示torch和torchvision版本,说明安装成功,输入 exit() 退出。
$ sudo apt-get install libgeos-dev
$ pip3 install shapely
$ sudo apt-get install libblas-dev checkinstall
$ sudo apt-get install liblapack-dev checkinstall
$ sudo apt-get install gfortran
$ pip3 install scipy
首先安装onnx
$ sudo apt-get install protobuf-compiler libprotoc-dev
$ pip3 install onnx
然后安装ONNX Runtime,对应版本可以参考Here
之后执行以下命令进行安装
$ wget https://nvidia.box.com/shared/static/jy7nqva7l88mq9i8bw3g3sklzf4kccn2.whl -O onnxruntime_gpu-1.10.0-cp36-cp36m-linux_aarch64.whl
$ pip3 install onnxruntime_gpu-1.10.0-cp36-cp36m-linux_aarch64.whl
编译安装完成之后,分别执行import onnx以及import onnxruntime,未出现报错说明安装成功。
本篇博客介绍了关于自己在Jetson Xavier NX 上刷机安装了JetPack 5.1.2,配置了CUDA 11.4,Tensorrt8.5.2,支持CUDA加速的OpenCV4.5.4等环境的流程。其中大部分流程参考了官方源和官方教程以及一些其他博主的教程,这个流程仍然可以适用其他版本环境,希望这个教程可以帮到大家,感谢各位看到最后。
SDK Manager
OpenCV
Jetson Download Center
PyTorch
PyTorch for Jetson
ONNX_Runtime
英伟达官方源Jetson Xavier NX安装Ubuntu20.04,配置CUDA,cuDNN,Pytorch等环境教程(基于NVIDIA官方教程,理论适用其它Jetson设备)