0%

Jetson nano平台深度学习环境配置

  最近从老师那里搞到了一个Jason nano开发板,本来里面有一个系统,然而断电导致系统文件损坏,使得系统无法正常启动,无限重启,我从各个网站看到的教程都不太行,只能把sd卡拔下来,重刷一遍系统,把里面的深度学习环境配置一下,中间遇到了很多坑,写个blog记录一下~

烧写镜像系统

参考网站:玩转Jetson Nano(一)烧写系统
  Jetson nano开发板是基于arm64架构,其源文件,镜像等文件与其他略有所不同,请大家注意!首先,需要烧写系统,需要的材料:

  1. 电源线
  2. SD卡,最低需要32G,但是越大越好,谁不喜欢大的呢?
  3. Jetson nano开发板
  4. 无线网卡或者网线,个人推荐使用无线网卡,方便使用,但是无线网卡一般开发板不带,需要自己安装。
  5. 鼠标、键盘
  6. HDMI线,显示器

安装系统大致需要上面那些东西,材料准备好就可以烧录系统了。

下载镜像文件

英伟达官方地址:https://developer.nvidia.com/embedded/dlc/jetson-nano-dev-kit-sd-card-image
这个包大小大概在6G大小,下载时需要耐心等待~

格式化SD卡

  使用SD Card Formatter格式化SD卡,这个工具哪都有,百度一下下载一个,为方便使用,我把我下载的压缩包链接放上来吧
链接:https://pan.baidu.com/s/1SJWX9rpTmrZ4vrpDURtH0A 提取码:x9dk

傻瓜式操作,选择快速格式化,点击格式化即可

烧写镜像

  Jetson nano推荐使用Etcher写入镜像,大概40分钟,但是具体时间还要看各自的CPU,静静等待镜像写入完毕即可,该软件的官方下载地址:https://www.balena.io/etcher/
  我的云盘链接:https://pan.baidu.com/s/10pZZxllhLqPACCUErsl6ag 提取码:h4h2

选择镜像,烧写系统,等待~

启动Jetson nano开发板

将SD卡插入Jetson Nano,开机,完成一些设置,时区,语言,输入法什么的,就不截图了,看见下图,大功告成

这样开发板的基本环境就配置的差不多了,下面来介绍一下如何对系统进行配置

安装无线网卡

  我推荐我购买的这款无线网卡,下面是我购买时的链接,封面有如何安装无线网卡的教程,安装好之后,开机有提示,无线网卡已安装,点击设置即可
查看无线网IP地址

1
ifconfig

点击链接

设置中文页面

  Jetson nano开发板自带中文环境(英文大佬可以忽略这一条),需要简单配置一下,这边有一个小坑,需要注意。打开设置,如图所示的按钮

点击语言支持,会出现如下界面,不用检查更新语言支持,取消就行了

在菜单和窗口的语言选项栏中,将汉语(中国)鼠标左键选中往上面拖,拖到第一个

reboot一下,即可完成中文界面的设置,比较简单

设置中文输入法

  Jetson nano开发板并不带有中文输入法,需要自己安装。值得注意的一点是,Jetson Nano 是arm64结构,不是amd64结构,所以安装的软件需要适配arm64。我们比较常见的输入法有搜狗输入法、谷歌输入法,其中搜狗输入法不支持arm64架构,所以这里推荐使用谷歌输入法。
我们使用fcitx插件来支持中文输入法

1
sudo apt-get install fcitx-googlepinyin fcitx-module-cloudpinyin fcitx-sunpinyin-y

上述代码会将fcitx插件以及相关的中文输入法的包一并下载下来,安装完成后,点击在设置里面点击语言支持,选择fcitx选项,如图所示

这里面需要注意一点,由于fcitx的兼容性问题,可能会导致输入中文时不显示候选框,这时需要删除掉多余的插件!

1
sudo apt remove fcitx-module-kimpanel

这一点非常重要,最后在终端输入reboot,重启一下。重启之后,桌面右上角会出现一个小键盘,点击这个小键盘就可以设置输入法了

默认设置为英文输入,按’ctrl’+空格即可切换输入法

更换镜像源

  NVIDIA官方提供的Linux镜像版本为Ubuntu 18.04 LTS,镜像默认的是Ubuntu官方源,在国内使用该源下载程序速度较慢,所以需要更换。
首先,备份原来的源文件,这一点非常重要,备份之后不要随意更改备份项

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak  

然后,打开源的配置文件
1
gedit /etc/apt/sources.list

删除原来的文件,添加一下以下内容(我使用的是ubuntu18.04,如果不是这个版本,可以在下面官网中选择合适的镜像源)
1
2
3
4
5
6
7
8
9
10
11
12
13
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse

清华大学镜像源官网:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/

更新完毕后,更新镜像源

1
sudo apt-get update

如果需要的话,可以更新软件

1
sudo apt-get upgrade

这里注意一点,我在实际进行操作时,更新镜像源时,报了几个错误,但是目前来说没有太大的影响,所以暂时忽略这一点。

安装python3.6

  安装官方的镜像系统时,内部自带了python2.7的环境,我们需要对其进行升级,升级到3.6版本,注意Jetson nano开发版最多支持python3.6
输入命令

1
2
3
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

此时还不能使用python3.6版本,因为默认使用的是python2.7,需要调整优先级
1
2
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

如图所示:

pip换源

换源的目的是为了下载python包时,速度有极大提升
修改/创建文件~/.pip/pip.conf,内容如下:

1
2
3
[global]

index-url = https://pypi.tuna.tsinghua.edu.cn/simple

配置tensorflow环境

在安装系统镜像的时候,默认安装了cuda,可以使用

1
nvcc -V

查看CUDA的版本号(如果失败,尝试使用root权限登录试试)

如图所示,我所用的就是cuda10.2版本
接下来就是需要安装对应的依赖关系
1
sudo apt-get install python3-pip libhdf5-serial-dev hdf5-tools

接下来就是安装TensorFlow GPU版本
1
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3 --user

这个安装比较慢,中间我大概花了有一个小时的时间,所以慢慢等待就行了

设置远程连接

这里推荐使用XShell实现SHH远程连接

  • 可以记录账号密码,连接后自动登录
  • 可以为不同的主机设置个性化描述
  • 可以同时打开一个主机的多个终端
  • 可以同时打开不同主机的多个终端

功能基本都简单易懂,就不再啰嗦了,直接百度找一个安装包就行了,其大致界面如下:

设置远程文件传输

远程文件传输推荐使用WinSCP图形化SHH工具,可以用于后续将模型文件从自己的电脑传输到Nano,非常方便。
WinSCP下载地址:https://www.onlinedown.net/soft/20088.htm
安装完成后,直接输入上一步得到的Nano的IP、主机用户名、密码即可访问Nano的文件系统。

其使用界面如下:

设置远程桌面控制

远程桌面控制推荐使用VNC远程控制,VNC的条件为:远程的ubuntu机器已经登录进入桌面,且已经开启vino-server,则在远程使用vnc-viewer可直接连接。因此,要做两件事:

  • 在Nano上安装vino-server
  • 在Nano上启动vino-server

    打开Nano终端,依次执行

    1
    2
    sudo apt update
    sudo apt install vino

    设置VINO登录选项

    1
    2
    gsettings set org.gnome.Vino prompt-enabled false
    gsettings set org.gnome.Vino require-encryption false

    将网卡加入VINO服务

    执行,查看网卡UUID
    1
    nmcli connection show

    将UUID拷贝粘贴到如下命令的单引号[‘your UUID’]之间,并执行
    1
    2
    dconf write /org/gnome/settings-daemon/plugins/sharing/vino-server/enabled-connections "['your UUID']"
    export DISPLAY=:0

    在windows上安装VNC软件

    在自己电脑的windows系统中安装VNC viewer
    下载地址:https://www.realvnc.com/en/connect/download/viewer/
    当然,其他地方应该也可以下到绿色版。

    在Nano上启动vino-server

    Nano上执行
    1
    /usr/lib/vino/vino-server

    本指令执行后,终端不关闭,在windows系统打开VNC viewer软件执行如下操作登录Nano:

    第一次连接会弹出警告信息,点击[continue],如果出现你的nano说明连接成功了

    添加开机启动vino-server

    我们希望每次Nano上电开机后,自动启动vino-server,只需要将上述命令加入开启启动选项,这样就彻底接键盘显示器的麻烦了。下面快来设置吧!
    在终端输入命令:
    1
    sudo gnome-session-properties
    打开Startup Applications应用,添加如下开机启动内容
  • 名称:StartVinoServer
  • 指令:/usr/lib/vino/vino-server

    重启Nano,无需再次设置,直接就可以连接远程桌面控制
    实际测试,该种方法延迟较高,不是非常好用

安装vscode

安装命令如下:

1
2
wget --content-disposition https://packagecloud.io/headmelted/codebuilds/packages/debian/stretch/code-oss_1.45.0-1586135971_arm64.deb/download.deb
sudo dpkg -i code-oss_1.45.0-1586135971_arm64.deb

但是实际测试过程中,该种方法下载速度特别慢,因此我把我下载的包放在我的云盘上,需要自取
链接:https://pan.baidu.com/s/16-qsyBzOw2kvcgY3FTNkKQ 提取码:xwgo
利用文件传输winscp将该包传输到nano上,打开对应文件目录,执行
1
sudo dpkg -i code-oss_1.45.0-1586135971_arm64.deb

或者,可以利用Ubuntu上面自带的文件浏览器,打开到文件所在的位置,点击鼠标右键安装
但是,安装完毕后,还是不能直接使用,因为我们需要指定vscode的工作目录,因此我在我的家目录创建了一个vscode文件夹
1
mkdir /home/bobo/vscode

打开vscode,在终端输入

1
2
# open vscode
alias vscode='code-oss . --user-data-dir=/home/bobo/vscode'

此时,这么长的语句不好记住,因此我们可以创建一个别名,这里我用的是root权限创建的别名
在终端输入
1
2
# open vscode
gedit ~/.bashrc

alias vscode='code-oss . --user-data-dir=/home/bobo/vscode'添加到该文件的末尾,并保存退出。

重启,再次打开终端,注意的一点,因为我用的是root权限,所以需要用root权限使用该命令
1
vscode

显示如下界面:

说明别名设置成功,大致环境配置的就差不多了,以后还有什么缺的再补充!

如果对您有用的话,这里可以打赏哦~