参考博文Jetson Xavier NX 烧写系统镜像
下载最新版本的镜像。[英伟达密码需要大写小写数字都有]
(参考的博文https://blog.csdn.net/qq_41990294/article/details/108967558;
其中提供的一个百度网盘下载,是7.11的,官方最新的是10.21的,一般不是最新的镜像不可用,所以我下载的官方的)
将SD卡插入开发板
按照提示一步一步来就很容易能装好
sudo sh -c 'echo 140 > /sys/devices/pwm-fan/target_pwm'
上面这条是打开风扇。
也可以在sudo jtop里面调(jtop是一个图形化界面,5.2有装的教程)
风扇自启动设置
(http://www.bubuko.com/infodetail-3616326.html参考连接如上,实测对于我的开发板只有这一个有效)
英伟达的jetson xavier 或者NX打开风扇都是通过修改下面的文件实现的。
vim /sys/devices/pwm-fan/target_pwm
或者直接
sudo sh -c "echo 150 > /sys/devices/pwm-fan/target_pwm"
但是修改上述文件的时候,重启之后失效,因此可以通过设置开启自启动的方式使风扇的设置重启继续生效,下面简单说一下步骤
1.修改 /sys/devices/pwm-fan/target_pwm文件权限
sudo chmod 777 /sys/devices/pwm-fan/target_pwm
2.将 /lib/systemd/system/rc-local.service 链接到 /etc/systemd/system/ 目录下面来
sudo ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
3.查看文件内容
cd /lib/systemd/system
ls -lh
sudo vim rc.local.service在末尾添加[install字段],如下:
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.local is executable.
[Unit]
Description=/etc/rc.local Compatibility
ConditionFileIsExecutable=/etc/rc.local
After=network.target
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
4.创建/etc/rc.local文件,并添加权限
sudo touch /etc/rc.local
sudo chmod 777 /etc/rc.local
5.编辑rc.local
vim /etc/rc.local
然后在rc.local中添加如下内容
#!/bin/bash
echo "150" > /sys/devices/pwm-fan/target_pwm
这个值在0-255之间,表示风扇转速大小的设置,150噪音比较小也比较好。
以后重启之后就不用手动开启风扇了。
之后就是连网做下面的工作。
指令通过Alt+Ctrl+T呼叫命令台,然后在命令行输入以下代码并且运行:
sudo gedit ~/.bashrc
打开环境变量文件,在文件最后插入以下环境变量代码:
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda
ctrl+s保存,接着在命令行内刷新环境变量:
source ~/.bashrc
刷新环境变量以后可以通过查看nvcc版本的指令来查看是否配置好cuda相关的环境变量。新开命令行输入以下代码:
nvcc -V
如果输出如下所示(出了就对了,版本什么的一般都看你镜像版本,我的镜像是jetpack4.4,cuda-10.2):
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_21:14:42_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89
到此cuda的环境路径已经配置完毕。
接下来先跳到配置清华镜像那一部分
然后再把系统更新一下,打开software,会自动提示更新
Jtop是老外的一个Jetson开发者为Jetson系列开发的一个小App,可以通过pip安装,用来监视系统资源使用,温度等等一些关键参数。
可以为你代码运行调试阶段提供一些支持,也可以查看整体的资源占用率,查看当前温度和内存使用是否处于危险的状态。
指令通过Alt+Ctrl+T呼叫命令台,然后在命令行输入以下代码并且运行:
sudo -H pip3 install jetson-stats
## 上面这句话也会出错,反复试一试不带-H或者sudo
sudo jtop
如果提示:
sudo: pip:command not found
说明没有安装pip,可通过一下命令进行安装:(默认的是)
sudo apt-get install python3-pip
sudo apt-get install python-pip
安装完pip之后
sudo apt update 执行一下
即可安装Jtop了。
交换空间大小暂时没有管,该开发板应该性能足够。
Jetson Xavier NX是arm架构,而sougoupinyin只支持amd架构,不支持arm架构,因此可以使用采用googlepinyin
在这一步之前先打开系统设置,语言支持,会提示安装更新包,让他更新一下。
1、安装googlepinyin
sudo apt-get install fcitx-googlepinyin -y
注意:
如果安装失败提示 E: Unable to locate package fcitx-googlepinyin
时,先执行: sudo apt install fcitx
,然后再执行安装googlepinyin
的命令
2、安装完googlepinyin
后,在右上角打开system setting
找到Language Support
3、然后把Keyboard input method system
设置为fcitx
4、重启Jetson NX设备
sudo reboot
5、然后就可以在右上角看到googlepinyin的g
标志了
6、切换中英文输入法快捷键
Ctrl + Space
此处也可以设置切换输入法的快捷键。我切换成了shift
7 一般会出现输入候选框无法显示的问题
Fcitx输入中文时不显示候选词框的解决办法
如上所述,在非KDE桌面环境下,如果安装了fcitx-module-kimpanel
,可能会导致Fcitx输入中文时不显示候选词框,移除该组件,然后重启Fcixt。我直接重启计算机就可以。
$ sudo apt remove fcitx-module-kimpanel
参考:https://blog.csdn.net/weixin_41275422/article/details/104500683
参考:https://blog.csdn.net/Snow_cat123456/article/details/109450592
参考:https://blog.csdn.net/Chamico/article/details/89788324
由于jetson xavier nx的相关资料匮乏,我参考的jetson nano安装方式,同样是ubuntu18.04,arm架构,道理应该是一样的,目前还未发现有什么差错
参考博文
sudo apt-get purge libreoffice*
sudo apt-get clean
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vim /etc/apt/sources.list
将以下内容替换原内容(用的清华的源)
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main multiverse restricted universe
sudo apt-get update
可能会有如下问题:
E: The repository ‘https://repo.download.nvidia.com/jetson/common r32 Release’ does not have a Release file
原因多半是因为设置代理或网络不好,建意更换网络,并执行如下代码:
sudo add-apt-repository universe
再进行更新。
不安全的处理方式:
sudo mv /etc/apt/sources.list.d/nvidia-l4t-apt-source.list ~
这个源与nvidia官方更新有关,如果报错多半与网络有关,换成网速好可上外网的基本就可以解决
\4. 如果有软件需要更新:
sudo apt-get upgrade
Ubuntu软件操作的相关命令
sudo apt-get update 更新源
sudo apt-get install package 安装包
sudo apt-get remove package 删除包
sudo apt-cache search package 搜索软件包
sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等
sudo apt-get install package --reinstall 重新安装包
sudo apt-get -f install 修复安装
sudo apt-get remove package --purge 删除包,包括配置文件等
sudo apt-get build-dep package 安装相关的编译环境
sudo apt-get upgrade 更新已安装的包
sudo apt-get dist-upgrade 升级系统
sudo apt-cache depends package 了解使用该包依赖那些包
sudo apt-cache rdepends package 查看该包被哪些包依赖
sudo apt-get source package 下载该包的源代码
sudo apt-get clean && sudo apt-get autoclean 清理无用的包
sudo apt-get check 检查是否有损坏的依赖
下面这几步还不知道和什么有关,先跟着教程做了。应该是基础的东西。
sudo apt-get install build-essential make cmake cmake-curses-gui
sudo apt-get install git g++ pkg-config curl
sudo apt-get install libatlas-base-dev gfortran libcanberra-gtk-module libcanberra-gtk3-module
sudo apt-get install libhdf5-serial-dev hdf5-tools libhdf5-dev
联网成功,网速顺利的话,将花费几分钟(可以改安装源,请自行百度)。
接着安装scipy的依赖和系统级别的cython:
Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。
说白了就是数学工具包,做深度学习,计算啥的要用到
Cython是一个编程语言,它通过类似Python的语法来编写C扩展并可以被Python调用.既具备了Python快速开发的特点,又可以让代码运行起来像C一样快,同时还可以方便地调用C library。
说白了就是用python时要用到这个
sudo apt-get install libfreetype6-dev
sudo apt-get install protobuf-compiler libprotobuf-dev openssl
sudo apt-get install libssl-dev libcurl4-openssl-dev
sudo apt-get install cython3
如果要装TensorFlow Object Detection (TFOD) API ,还要装xml的工具:
sudo apt-get install libxml2-dev libxslt1-dev
接着安装opencv的系统级依赖,一些编解码的库:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install libxvidcore-dev libavresample-dev
sudo apt-get install libtiff-dev libjpeg-dev libpng-dev
Cmake是一个编译工具,目前我用到的代码相关的东西都要用到它,它可以跨平台,所以比较普遍
本步骤为可选步骤,可以不做。更新cmake,能帮助正确从源码来编译安装opencv(尽管nano装完后自带opencv):
这一步我也跟着做的,版本号没换,jetson nano上经过实验没有问题。
wget http://www.cmake.org/files/v3.13/cmake-3.13.0.tar.gz #下载,版本号可到官网上查
tar xpvf cmake-3.13.0.tar.gz cmake-3.13.0/ #解压
cd cmake-3.13.0/
./bootstrap --system-curl
make -j4 #编译
echo 'export PATH=~/cmake-3.13.0/bin/:$PATH' >> ~/.bashrc
source ~/.bashrc #更新.bashrc
这样就更新完cmake
先安装pip,python的包管理工具:
sudo apt-get install -y python3-dev python3-testresources python3-setuptools
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
rm get-pip.py
下文中将使用pip来安装python的一些包,对于一些网络不好的情况,建议先改变pip的安装源到国内:
#如清华的源
https://pypi.tuna.tsinghua.edu.cn/simple
#豆瓣源
https://pypi.doubanio.com/simple
#临时改源
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
#持久的设为默认源
pip -U install pip
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
#如果您到 pip 默认源的网络连接较差,临时使用镜像站来升级 pip
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
1234567891011
我们将使用python的虚拟环境,来保证你使用的环境互相独立,使用体验与全局python环境 一样。
使用virtualenv和virtualenvwrapper安装命令:
sudo pip install virtualenv virtualenvwrapper
安装完之后,需要更新.bashrc
vim ~/.bashrc
在文件底部输入
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs #指定所有的需拟环境的安装位置
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 #指定解释器
source /usr/local/bin/virtualenvwrapper.sh #进行激活生效
保存并退出,使用source 重新载入
source ~/.bashrc
更多virtualenv使用的基本命令可以阅读本文
接着创建python的虚拟环境,
mkvirtualenv nano #创建一个名字叫nano的虚拟环境
创建后直接进入了。
一些virtualenvwrapper的常用命令:
#创建一个环境
mkvirtualenv name #在~/.virtualenvs下安装name的需拟环境
#激活工作环境
workon name
#workon后不加任何东西可以列出所有虚拟环境
#退出当前虚拟环境
deactivate
#删除虚拟环境,需先退出
rmvirtualenv name
#列出所有虚拟环境
lsvirtualenv
#复制虚拟环境
cpvirtualenv sourece_name dest_name
参考博客
在虚拟环境中安装numpy和cython:
pip install cython
pip install numpy==1.16.1
一定要是numpy1.16.1,后面重装cv2的时候他自动换成了1.19.1,会直接导致报错:非法指令(核心已转储)
这也是一直困扰着我一开始import torch报错的原因,目前还没有博客提到过
因为需要编译,用时大约20分钟。
同时安装numpy时可能会报错:
numpy/core/src/multiarray/numpyos.c:18:10: fatal error: xlocale.h: No such file or directory
博客中这块还有一部分内容,但是我用了之后反而不行了
安装其他常用库这里也可以先不用,到时候缺什么装什么
系统自带4.1.1的opencv,正是因为这个原因,上一步才只能安装numpy1.16.1
系统中已将tensorrt和opencv的相关组件安装完成,如下图:
可以看到有uff,tensorrt,graphsurgeon,cv2模块,只需要将这些包的路径填加到虚拟环境的环境变量中即可。
workon nano
add2virtualenv /usr/lib/python3.6/dist-packages
lssitepackages #列出所有的包
要使用tensorrt对各种主流框架(tensorflow,pytorch,caffe)的模型时行转换和加速,还要安装pycuda和onnx
pip install pycuda
pip install onnx==1.4.1
关于onnx的版本也选择了较低的,也可以安装最新的,可能会报错,这时也可以再降级。
这两个可能是非必要的,因为当时torchvision提示找不
这里有几个大坑,不同的开发板情况不一样,仅为我装的这个xavier nx的经验。
这里有不同情况,我装的时候有一次按照官方流程(博文的流程)装只出现了一个错误,就是安装torchvision时提醒找不到cuda.h文件,此时只需要参考末尾,在环境变量里添加两条命令(需要改成10.2)就可以继续安装
第二个不同情况,提示不能执行:/usr/local/cuda:/usr/local/cuda:usr/local:cuda/usr/local/cuda/bin/nvcc,这是因为环境变量里有点毛病,gedit ~/.bashrc看一下环境变量有没有歧义,这里我参照网上的方法,export CUDA_HOME=/usr/local/cuda-10.0
首先贴出我安装的过程:
还是先参考博文的部分内容,本节末尾有总结。
执行jtop
命令,按6
,查看当前jetpack版本,选择合适的pytorch版本进行安装。
可以看来系统版本是jetpack4.4.1,是当前(2020年11月13日)最新的。
下面列举几个版本的要求:
选择安装最新版本pytorch1.7
wget https://nvidia.box.com/shared/static/wa34qwrwtk9njtyarwt5nvo6imenfy26.whl -O torch-1.7.0-cp36-cp36m-linux_aarch64.whl #需要科学上网
workon nano_ptch (
pip install torch-1.7.0-cp36-cp36m-linux_aarch64.whl
鉴于网络原因,我把pytorch1.7上传到CSDN中,免费下载。
接着安装torchvision,由于torchvision的版本要与pytorch的版本对应,所以要选择合适版本,版本对应关系如下:
PyTorch v1.0 - torchvision v0.2.2
PyTorch v1.1 - torchvision v0.3.0
PyTorch v1.2 - torchvision v0.4.0
PyTorch v1.3 - torchvision v0.4.2
PyTorch v1.4 - torchvision v0.5.0
PyTorch v1.5 - torchvision v0.6.0
PyTorch v1.6 - torchvision v0.7.0
PyTorch v1.7 - torchvision v0.8.1
安装命令为:
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
sudo python setup.py install # use python3 if installing for Python 3.6
cd ../ # attempting to load torchvision from build dir will result in import error
具体对应pytorch1.7时:
git clone --branch v0.8.1 https://github.com/pytorch/vision torchvision # see below for version of torchvision to download
cd torchvision
export BUILD_VERSION=0.8.1 # where 0.x.0 is the torchvision version
sudo python setup.py install # use python3 if installing for Python 3.6
cd ../ # attempting to load torchvision from build dir will result in import error
如果提示没有setuptools就执行这条命令重新装一下:
sudo apt-get install -y python3-dev python3-testresources python3-setuptools
要验证一下pytorch和torchvision是否安装成功,如下:
使用命令为如图4条:
import torch
print(torch.__version__)
print('cuda available:'+str(torch.cuda.is_available()))
print('cuDNN version:'+str(torch.backends.cudnn.version()))
到此,完成主流深度学习框架tensorflow和pytorch在jetson nano上的安装。
总结
目前我的几套算法要在torch1.5和torch1.7上跑
所以在开发板上装的是pytorch1.7
版本对应信息上说是要装torchvision0.8.1
但是我装的这个一直装不上0.8.1版本的,而且我记得装上了也因为有些组件(好像是Ops)用不了,被迫重装低版本的。
(1)首先下载pytorch1.7(上述博文里有链接下载,官网上比较慢)
(2)进入到下载下来.whl文件的目录,执行下面的这条命令。
pip install torch-1.7.0-cp36-cp36m-linux_aarch64.whl
即可看到torch装好了。
但是目前只有执行python3的程序中才可以正常import torch,对于sudo python, sudo python, python里面都不行
报的错误有:
①段错误,核心已转储
②非法指令,核心已转储
③找不到torch
上面两个是因为numpy的原因,下面这个是因为在sudo python下执行的原因,网上有的是环境变量的问题,但是我这个应该不是,具体深入原因我也没弄清
(3)安装torchvision。(我目前jetson xavier nx上装的是0.2.2 jetson nano上装的是0.3.0)(之前装过低版本的发现遇到了功能不全的问题,后面能用的还是0.8.1,注意问题跳转至踩坑经验1)
用的命令是:
pip install --no-deps torchvision==0.2.2
–no-deps就是不会自动让他更新版本(可能不用加这个也行)
至此已装好torch和torchvision。
踩坑经验
1. 遇到一个坑,安装torchvision0.8.1的时候,一个cpp文件找不到
export C_INCLUDE_PATH=/usr/local/cuda-10.2/include/{C_INCLUDE_PATH}
export CPLUS_INCLUDE_PATH=/usr/local/cuda-10.2/include/{CPLUS_INCLUDE_PATH}
在继续执行就可以了。这个再装torchvision0.8.1的时候可能会用到。
2. 找不到torchvision.model模块,这个是因为我一开始装的torchvision0.8.1,装了找不到,不知道是什么原因。
opencv等之前装过的这时候会提示再装一遍。
这部分都很顺利,缺什么就安装什么。
有时候下载会莫名其妙中断,比如下matplotlib的时候,是因为国外服务器下载的问题,这时候多下几次就行,也可以换个网或者换个镜像源。