当前位置 博文首页 > 学习、记录、分享:Jetson (Nano) 烧写系统及配置cuda、cudnn环
英伟达Jetson Nano是一款形状、外接口类似于树莓派的嵌入式主板,搭载了四核Cortex-A57处理器,GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡,内存为4GB的LPDDR4,存储则为16GB eMMC 5.1,支持4K 60Hz视频解码。
一、准备安装
? ? 1. 电源线(必备)
???????? Jetson Nano中电源线,具体的参数是5V?2A的MicroUSB电源线和5v-4A的大功率输入电源线(需要跳线短接)。我自己的树莓派搭载了5V?4A的电源线。
???? 2. SD卡 (必备)
??????? Jetson Nano要求最低配置16G的SD卡,但是整个系统刷完SD卡就被用了大概13G,后期还要安装TensorFlow等一些机器学习框架,还有可能要安装样本数据,所以16G的卡是不够用的,我觉得最低32G,而我自己用的是128G卡。
?? 3.无线网卡 (选配)
?????? Jetson Nano搭载了千兆以太网卡,当然也支持有线网络,我这里连的wifi,所以插了个无线网卡。
二、刷系统
Jetson Nano直接把镜像写入SD文件即可。
??? 下载镜像
英伟达jetpack镜像下载官方地址
https://developer.nvidia.com/zh-cn/embedded/jetpack
NVIDIA JetPack SDK 是构建 AI 应用的全面解决方案。JetPack SDK 支持所有 Jetson 模块和开发者套件。
JetPack SDK 包含适用于 Linux 操作系统的最新 Linux 驱动包 (L4T) 以及用于深度学习、计算机视觉、加速计算和多媒体的 CUDA-X 加速库与 API。
它还包含用于主机和开发者套件的示例、文档和开发者工具,并支持更高级别的 SDK,例如用于直播视频分析的 DeepStream 以及用于机器人的 Isaac。
JetPack 4.4 是最新的正式版,支持所有 Jetson 模块。
主要特性包括对 Jetson Xavier NX 以及 CUDA、TensorRT 和 cuDNN 的新正式版本的支持。
2 . 格式化SD卡?? ?
使用SD Card Formatter格式化SD卡,这个工具哪都有,百度一下下载一个吧
3. 使用Etcher写入镜像,大概30分钟,镜像写入完毕。
根据我玩树莓派的经验,一开始用Win32 Diskimg写入镜像,结果开不了机。后来用Etcher则一切正常,给出Etcher的下载地址
https://www.balena.io/etcher/
4. 烧写完成后,将SD卡插入Jetson Nano,开机
三、配置环境
1.时间设置
# 换成你当前的时间即可
sudo date -s "2020/01/01 8:00:59"
2.中文输入法
# 安装ibus-pinyin
sudo apt-get install ibus-pinyin
系统设置
在系统设置下,双击"language support";
点击“install / remove language…”,选择简体中文,输入密码,此时系统会进行更新,大约几分钟,安装过程如下;
重启电脑
在系统设置下 Text Entry? 里添加拼音,再重新启动即可
3.修改环境变量
Jetson Nano利用官方镜像进行安装后,系统已经安装好了JetPack,cuda,cudaa,OpenCV等组件,需要修改下环境变量才可以使用。
利用gedit打开 ~ 路径下.bashrc文件:
sudo gedit ~./bashrc
文件的最后添加以下三行:
export PATH=/usr/local/cuda-10.2/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-10.2
重新执行.bashrc文件,直接生效;
source ~./bashrc
输入nvcc -V命令进行测试,如果显示如下信息,证明修改正确。
nvcc -V
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
4.更改国内镜像源(可选)
在路径/etc/apt/下有source.list文件,
(1)对该文件进行复制备份;
sudo cp sources.list sources.list.bak
(2)使用vim或者gedit等工具对source.list文件进行编辑;
直接清空source.list文件内容,根据个人喜好选择下述中科大或者清华的arm64源,粘进文件,保存。(Note:ARM源和一般源不同,需要将地址中的ubuntu改为ubuntu-ports)
中科大
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-proposed main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.ustc.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
清华
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-backports main multiverse restricted universe
(3)更新
sudo apt-get update
'''如有需要,执行下述命令对文件进行升级'''
sudo apt-get upgrade
至此,完成系统更改源的操作,接下来就是配置整个系统的过程了。
5.?安装python依赖
因为Jetson?Nano中已经安装了Python3.6版本,安装pip时会提示缺少setuptools工具,建议下载setuptools和pip的安装包直接安装
sudo apt-get install python3-pip python3-dev
安装后pip是9.01版本,需要把它升级到最新版,升级后pip版本为最新版本。
python3 -m pip install --upgrade pip ?#升级pip
pip3 -V
5.1.?安装那些机器学习包
sudo apt-get install python3-scipy
sudo apt-get install python3-pandas
sudo apt-get install python3-sklearn
?这里面没有numpy和matplotlib,安装其它包时,这两个也会被自动安装。
出现numpy错误
>>> import tensorflow as tf
RuntimeError: module compiled against API version 0xc but this version of numpy is 0xb
ImportError: numpy.core.multiarray failed to import
ImportError: numpy.core.umath failed to import
ImportError: numpy.core.umath failed to import
2019-05-02 10:29:02.103748: F tensorflow/python/lib/core/bfloat16.cc:675] Check failed: PyBfloat16_Type.tp_base != nullptr
Aborted (core dumped)
解决方法如下,numpy版本不匹配;(python3.6.8版本对应numpy1.16.1)
pip3 install -U numpy==1.16.1 --user
5.2.?安装TensorFlow?GPU版
?(1)确认CUDA已经被正常安装
nvcc -V
如果能看到CUDA版本号,即为正确安装
(2)安装所需要的包
sudo apt-get install python3-pip libhdf5-serial-dev hdf5-tools
(3)安装TensorFlow?GPU版本?
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3 --user
百度网盘链接:https://pan.baidu.com/s/17Iq4XXfSR4CDDiQS6NAlOA? 提取码:2fy3?
5.3.?安装Keras
既然有了TensorFlow,那就把Keras也安装上
sudo pip3 install keras
安装完成后,进入python3,检查一下安装成果,import keras时,下方提示using TensorFlow backend,就证明Keras安装成功并使用TensorFlow作为backend。
6.?SSH远程连接nano
目前网上看到的资料都是将nano作为单独的电脑,进行远程连接来使用,在Ubuntu Host电脑上安装NVIDIA SDK Manager可以用来进行刷系统、安装相关软件的操作,下载地址:
https://developer.nvidia.com/embedded/jetpack
连接前提:
另外可通过SSH远程连接(如何与SOON平台连接还需补充)
jetson nano已经默认开启了openssh-server服务。可以通过xshell直接连
7. jetson inference介绍
NVIDIA提供了套教程,教程里包含了开发指南、TensorRT示例代码,甚至包括ImageNet和DetectNet示例在内的预先训练的网络模型,这个可以自行探索
https://github.com/dusty-nv/jetson-inference
使用TensorRT和Jetson相关的深度学习库;
https://developer.nvidia.com/embedded/twodaystoademo
【JETSON-NANO】SD卡系统备份克隆:
1、连接SD卡到主机
将装好系统的SD卡通过读卡器连接主机。通过命令要看SD卡:
sudo fdisk -l
会有很多内容,可以在插入SD卡前后分别执行该命令,这样通过对比不同之处就可以找到/dev/sdc是这个SD卡,看到的有数字的是这个卡的各个分区。
2、对SD卡模型进行备份
我们使用的是dd命令,关于dd命令的详细说明参看另外一份博客,使用过程中要小心,避免原文件损坏。要说明的是,系统备份直接使用dd命令原SD卡存储多大,备份的文件就会有多大,所以要进行压缩备份;另外,对备份文件的恢复等其它操作要在同一台Host上进行操作。
备份命令为:
sudo dd if=/dev/sdc conv=sync,noerror bs=16M | gzip -c > ~/nano.img.gz
bs
:bs是写入和读取速度,在我电脑上16M最大可以达到60MB/s左右的速度,可以根据自己的情况扩大,减小没必要。
3、等待30分钟
4、插入一张新的格式化好的sd 卡,复制系统
sudo gzip -dc /home/username/nano.img.gz | sudo dd of=/dev/sdc