当前位置 博文首页 > 学习、记录、分享:Jetson (Nano) 烧写系统及配置cuda、cudnn环

    学习、记录、分享:Jetson (Nano) 烧写系统及配置cuda、cudnn环

    作者:[db:作者] 时间:2021-09-19 22:32

    英伟达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

    连接前提

    1. Nano必须先通过MicroSD卡成功启动进入Ubuntu界面
    2. 采用Micro USB链接Nano到Ubuntu Host
    3. Nano连接网线到外网,且与Ubuntu Host机器在同一局域网内

    另外可通过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

    cs
    下一篇:没有了