一、准备工作

硬件:Jetson Xavier NX开发板(笔者购入为带128g内存条的EMMC版)、跳线帽(杜邦线)、microUSB转USB数据线、电源线

软件:Ubuntu host主机(可运行Ubuntu的虚拟机/双系统)、NVIDIA SDK MANAGER(下载地址:NVIDIA SDK Manager | NVIDIA Developer)。

在Ubuntu主机里安装sdkmanager,命令如下,版本不同则tab补齐安装。

sudo apt install ./sdkmanager_1.6.0-8170_amd64.deb

硬件准备

用杜邦线或者跳线帽将Xavier NX第三个引脚FC_REC与第二/四引脚GND短接(上电后会进入recovery模式),并插上电源给板子供电。然后通过NX的microusb接口连接host主机的USB接口(没有的可以通过扩展坞转接),主机识别到串口后连接到虚拟机内(若是双系统无需此步骤),不要勾选记住此选择,以防之后无法连接到主机。

软件准备

TIPS:在进行安装下载前建议换国内源(常用的比如阿里,清华,中科大源)以加快jetpack及CUDA组件下载速度

打开一个终端,输入sdkmanager,启动sdkmanager(或直接点击sdkmanager图标启动)

sdkmanager

登录 NVIDIA 账号(没有的话自己申请一个),选择登录方式为Developer账户(跳转到NVIDIA网页登录确认,stay logged in之后不需要再登录)。如果sdkmanager提示更新点击yes更新即可,对于如下系统不符合要求的警告不需要管yes继续即可。

二、开始刷机

STEP 01

弹窗选择板子的型号:Jetson Xavier NX(如果没有弹出就是usb没插好,使用lsusb命令查看是否有名称带nvidia的设备),也可以在下图中Target Hardware里刷新后自动读取。

安装时注意选择JetPack5.0.2版本(对应安装ubuntu20.04版本)其他的JetPack版本和ubuntu,CUDA,cudda的对应关系可在英伟达官网查看https://developer.nvidia.com/embedded/jetpack-archive,如多数教程选择的Ubuntu18.04就对应jetpack4.5.1版本。

安装成功后通过以下命令查看本机jetpack版本ubuntu版本则可通过设置-详细信息查看。

sudo apt-cache show nvidia-jetpack

取消勾选第四行里的DeepStream(用于构建智能视频分析(IVA)管道的加速人工智能框架,笔者用不到所以不装)、取消勾选Host Machine(这个是为主机下载安装文件的,若是想在主机上安装 nivida 软件,勾选这个,实际上不必),而后点击 continue,进入下一步。

STEP 02

注意!这里我们先只安装Jetpack系统,等将系统迁移到SSD上面后,再进行其他SDK组件的安装(jetson Xavier NX系统自带内存16g不足以安装其他SDK组件)

勾选左下角接收协议后才能点击continue进入下一步下载安装!系统剩余空间如果大于17GB即可继续下载安装jepack系统。如果提醒disk内存不够或还需要xxMB,无需担心(文件下载到主机的路径无需更改,为保证后续组件安装,建议在开始使用SDKmanager前,主机留足40G以上的内存

键入HOST主机的ubuntu系统密码后点击ok即可下载

STEP03

下载过程中如果出现检测网络,apt仓库未成功的问题无需担心,skip通过即可(通常是网络问题,只要保证download下载的进度条在前进就说明下得动,下的速度快慢就是另一回事了)整个下载过程视网络状况而定,而烧录系统过程则需要30-60分钟。点击DETAILS旁边的TERMINAL即可查看NX内具体安装命令和报错提示。

当下载完成要刷新目标设备时,SDK Manager 会打开一个对话框。提示会提供有关设备以使其准备就绪以进行闪烁的说明:其中,将启动方式更改为手动输入并创建 Jetson 的用户名和密码。(后续安装SDK组件过程中选择自动)

点击箭头展开可以看到安装的软件包细节,当出现OS image ready时可以拔掉跳线帽,但电脑与NX连接的USB不要拔!(整个烧录过程必须保证电脑与NX保持连接以防烧录失败)

等待系统烧写完成,时间稍久,Jetson NX会重启,如果接上显示屏就会看到ubuntu登录界面,无外接显示屏看进度条和听风扇转速就知道了。(此过程中可能会提醒烧写超时无需紧张继续即可,如果报错可以关掉SDKmanager重新烧录,一般电脑和NX的USB连线全程保持不断开就没问题)开机后连上键鼠,启动ubuntu系统后连接wifi、添加中文输入法、设置快捷键等基本操作。

三、插入内存条并设置SSD为首启动方式(扩容)

1、格式化SSD:

由于官方自带内存仅为16G,厂家一般提供SSD内存条用以扩容。插上内存条SSD后,在NX启动的Ubuntu系统中,打开disks软件,点击右上角菜单,将固态硬盘格式化。无需更改选项,直接格式化。然后点击左下角+号继续分区。

点击加号开始分区,增加16GB的空间作为SWAP交换空间(也可用gparted实现)重命名后创建。

效果如图所示:

2、将root等信息从SD卡复制到SSD:

首先,从git上复制最新rootOnNVMe项目到home目录下(通过U盘拷贝也可以)。

git clone https://github.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe

然后执行下面的脚本,将根源文件复制到SSD

./copy-rootfs-ssd.sh

启动从SSD启动的脚本

./setup-service.sh

然后重启开机后就会发现内存变为了110G

四、安装CUDA,cuDNN等组件

接下来开始安装CUDA等其他组件,拔掉跳线帽,USB别拔!HOST主机继续打开sdk manager。确定jetpack版本号,点击continue进入下一步。

必须保证jetpack版本与刷机的版本一致,否则安装会失败,如果忘记了可通过以下命令查看本机jetpack版本。

sudo apt-cache show nvidia-jetpack`

取消勾选系统,只勾选组件,左下角同意协议后点击continue进入下一步(不要勾选稍后安装)

这里我们通过SDKmanager自动安装与jetpack版本对应的CUDA、cuDNN、OpenCV(不支持CUDA加速的版本)、VPI等必须的组件。

如果出现问题无法安装我们可以在下载路径找到下载的安装包,通过u盘拷贝到NX上安装,手动安装的系列问题读者可自行搜索。

输入主机ubuntu密码后开始下载,弹出以下页面,IP 地址默认是 192.168.55.1,选择USB选项(如果后续刷机失败可以尝试更改 IP 为局域网地址),键入设置的用户名和密码。

如果NX板没有完成初始化系统并自动重启,这里可能会有红字报错:显示没有连接上。所以请等待NX板完成初始化并重启后再进行SDK Manager 这边的安装。

进入安装、时间可能会比较久。

安装pip3

sudo apt install python3-pip

安装jtop工具(英伟达官方查看jetson系列环境的软件)

sudo -H pip3 install jetson-stats==4.0.0rc2

安装后需要重启,然后启动jtop,通过左右键移动到info页面查看系统安装的组件信息

sudo jtop

初始环境搭建完成,接下来卸载原来的OpenCV并重装OpenCV4.5.4

五、重装支持CUDA加速的OpenCV

1、卸载默认OpenCV

由上图可知默认的 OpenCV 版本是不带 CUDA 加速的,无法充分利用 NX 的 GPU 性能,所以需要卸载重装支持CUDA加速的版本,卸载命令如下:

sudo apt purge libOpenCV*
sudo apt autoremove
sudo apt update

2、安装依赖库

在安装依赖之前建议换源,打开source.list文件,编辑前可以先把原来的内容复制后备份文档。

   sudo gedit /etc/apt/sources.list

更换成清华源,也可以更换成阿里源/中科大等常用源,注意jepack5.02对于的是ubuntu20.04版本所以是focal而不是bionic(对应ubuntu18.04)。其中为了安装旧的libpng12需要加入xenial (ubuntu16.04)的源

   deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiversedeb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiversedeb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiversedeb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-security main restricted universe multiversedeb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiversedeb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiversedeb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main universe restricteddeb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ focal main universe restricteddeb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe

然后安装依赖。

sudo apt install -y build-essential checkinstall cmake pkg-config yasm git gfortran
sudo apt update
sudo apt install -y libjpeg8-dev libjasper-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 libjasper-dev libdc1394-22-dev

可能会出现问题的是libjasper-dev依赖,通过以下命令解决。

sudo apt install libjasper1 libjasper-dev

3、下载 OpenCV 和 opencv_contrib 源码

前往官方仓库https://github.com/opencv下载合适版本的OpenCV和opencv_contrib源码,笔者在装机时选择的是4.5.3版本,而安装的jepack系统自带OpenCV版本是4.5.4,不建议使用与jepack自带OpenCV差距过大的版本。

下载解压后可以将两者放在主目录下,将opencv_contrib-4.5.3移动到 OpenCV-4.5.3目录下,打开OpenCV-4.5.3目录新建build文件夹用以编译。

cd opencv-4.5.3
mkdir build
cd build

4、编译和安装 OpenCV

在cmake编译之前,手动下载cmake过程中缺失的依赖https://files.cnblogs.com/files/arxive/boostdesc_bgm.i%2Cvgg_generated_48.i%E7%AD%89.rar(建议Windows下载解压成zip格式通过u盘拷入,ubuntu系统默认不支持rar格式)

解压后直接拷贝以下文件名的源码,放在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.4' \
-D cuDNN_INCLUDE_DIR='/usr/include/' \
-D CUDA_ARCH_PTX="" \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.3/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 CUDA_TOOLKIT_ROOT_DIR的目录CUDA版本要和本机对应,-D CUDA_ARCH_BIN和-D CUDA_ARCH_PTX可以通过jtop命令查看,-D OPENCV_EXTRA_MODULES_PATH建议填写opencv_contrib里modules的绝对路径,-D CMAKE_INSTALL_PREFIX为安装路径。

然后进行编译安装,全开NX的12线程仍然需要编译较长时间。

sudo make -j12
sudo make install

安装成功后可以通过jtop指令查看,如图所示已安装好支持CUDA加速的OpenCV4.5.3版本

六、Pytorch的安装

下载jetpack专用的Pytorch源码,资源由NVIDIA提供在官方论坛上,含最新完整安装、验证教程。

https://forums.developer.nvidia.com/t/pytorch-for-jetson-version-1-11-now-available/72048

注意Pytorch与jetpack、torchversion的版本对应关系, PyTorch v1.11.0及以上版本只支持jetpack5.x的版本。

然后前往GitHub仓库下载对应版本的torchversion,接着按照上图的教程安装。

https://github.com/pytorch/vision

这里列举出官方教程所示的命令,可提供以下的wegt命令下载Pytorch,然后安装依赖并安装。

wget https://nvidia.box.com/shared/static/p57jwntv436lfrd78inwl7iml6p13fzh.whl -O torch-1.12.0-cp36-cp36m-linux_aarch64.whl
sudo apt-get install python3-pip libopenblas-base libopenmpi-dev libomp-dev
pip3 install Cython
pip3 install numpy torch-1.12.0-cp36-cp36m-linux_aarch64.whl

基于Python3安装torchvision的官方命令如下,需要自行根据Pytorch版本填写torchvision版本。

$ sudo apt-get install libjpeg-dev zlib1g-dev libpython3-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

七、小结

最终在Jetson Xavier NX(emmc版)上安装了Ubuntu20.04系统,利用内存条扩容并设置SSD首启动,成功配置了CUDA 11.4,cuDNN8.4.1,PyTorch v1.12.0,支持CUDA加速的OpenCV4.5.3等环境。大部分流程采用官方源和官方教程,如果将来英伟达官方更新仍然可以适用,希望这个教程可以帮到大家。

Jetson Xavier NX刷机安装Ubuntu20.04,配置CUDA,cuDNN,Pytorch等环境教程(英伟达官方源安装,理论适用其它Jetson设备)相关推荐

  1. NVIDIA Jetson Xavier NX刷机教程

    目录 Jetson Xavier NX刷机 Jetson Xavier NX安装SDK Jetson Xavier NX刷机 打开虚拟机,配置ubuntu18.04,虚拟机配置使用详见:Ubuntu1 ...

  2. NVIDIA Jetson Xavier NX刷机+ROS安装+深度学习配置

    .NVIDIA Jetson Xavier NX 完整说明流程 V1.0.0 – by Holden Date : 2021-03-19 文章目录 .NVIDIA Jetson Xavier NX 完 ...

  3. NVIDIA Jetson Xavier NX 刷机方法(sdk manager)

    1.记录一下Jetson Xavier NX刷机过程方便后面自己做重复性工作,同时也希望能帮助到大家.我尽量的回忆每一小步希望你不会觉得有点啰嗦.我的设备为ubuntu20.04+Jetson Xav ...

  4. NVIDIA Jetson Xavier NX 刷机记录(使用SDK Manager方法)

    本文章仅适用于使用 SDK Manager 对 NVIDIA Jetson 系列产品进行刷机. 文章目录 准备工作 开始刷机 第一步:配置开发环境 第二步:检查组件并接受许可 第三步:安装 第四步:完 ...

  5. AI嵌入式开发:NVIDIA Jetson Xavier NX刷机(2)

    NVIDIA Jetson Xavier NX开发: 刷机 step1:下载文件 step2:安装格式化工厂: step3 安装Etcher 远程连接 刷机 https://developer.nvi ...

  6. 【NVIDIA JETSON】Xavier NX刷机

    [NVIDIA JETSON]Xavier NX刷机 Xavier NX刷机 结语 Xavier NX刷机 按[NVIDIA JETSON]在Xavier NX上源码编译安装ROS Melodic中所 ...

  7. 完整的Ubuntu18.04深度学习GPU环境配置,英伟达显卡驱动安装、cuda9.0安装、cudnn的安装、anaconda安装

    文章目录 1.英伟达显卡驱动安装 2.cuda9.0安装 3.cudnn的安装 4.anaconda安装 5.安装TensorFlow和Keras 安装 参考:https://blog.csdn.ne ...

  8. 英伟达NVIDIA驱动安装失败

    英伟达NVIDIA驱动安装失败,英伟达NVIDIA图形驱动安装失败. 之前我在官网下载安装和驱动精灵安装都失败了,也把驱动卸载干净后重装过(不过驱动卸载干净重启后,系统扫描都找不到显卡硬件了,差点就要 ...

  9. nvidia卸载程序失败_英伟达显卡驱动安装失败怎么办?

    一般用户重新安装系统或者更新显卡驱动后,安装光盘中的英伟达显卡驱动,安装后却提示"NVIDIA安装程序失败",遇到这样的问题,很多用户会选择重启后重新安装一次,不过都不能解决安装电 ...

最新文章

  1. python中x,y=y,x的交换原理
  2. timus 1260. Nudnik Photographer 动态规划
  3. selenium java1.7_selenium-java(第一篇)
  4. 升级mac Mojave系统,git无法使用
  5. shell脚本:一次读取文件的一行,并输出
  6. python输入逗号_python中 逗号的 用法
  7. 亚马逊aws服务取消_Amazon S3 – AWS简单存储服务
  8. 苏东坡有一句“八风吹不动,独坐紫金台“ 人生智慧
  9. 网易5天python编程课_网易云课堂上自学编程?
  10. JAVA javaweb JSP水果管理系统源码(水果进销存管理系统水果管理系统(水果进销存)
  11. 中国国际“互联网+”大学生创新创业大赛 武汉理工大学总决赛斩获双金
  12. IMAGEJ缩放图片
  13. 基于Python+SQLSERVER的快递业务管理系统的设计与实现
  14. Python代码解析数据
  15. Amazon EKS基于GitLab的CICD实践一 GitLab的部署和配置篇
  16. 数据通信与网络:CH10 Error Detection and Correction
  17. 爬虫day6常见的反爬总结
  18. code函数oracle列子,Oracle内置函数SQLCODE和SQLERRM的使用
  19. was cached in the local repository, resolution will not be reattempted until the update interval
  20. 莱姆智慧城市新愿景 用匠人精神助飞智能电网

热门文章

  1. 2021年选择老域名的2点好处和购买老域名的4点技巧
  2. 氰化物工作室的游戏Cthulhu,或最终获得VR支持
  3. python用循环结构求平均值_有python的输出问题;循环总数和平均值
  4. 83岁老人拾荒种菜替去世3个儿子还债
  5. 航天联志Aisino系列服务器,高性价比 航天联志5241NR服务器评测
  6. python中 1%2等于什么_穷人和富人就差1%的努力——python模拟社会财富分配游戏
  7. UESTC-1546___Bracket Sequence —— 线段树 + 括号序列
  8. 图像质量评价概述(评估指标、传统检测方法)
  9. caffe源码 layer分析
  10. 2009年始,准备网上开博啦!