内容简介:题图:摄于武大凌波门作为一名每天对着各种裸板的系统工程师,对Jetson Nano会踩到各种坑是做好了充分准备的,本着踩坑填坑的精神,在这里记录一下踩坑经历,供大家一乐。如何避开这些坑?想多了,因为以后你们即使绕开了这些坑,也会有其它的坑等着你:) 重要的是要做到人挡杀人、佛挡杀佛,遇到坑直接趟过去。使用apt-get install命令安装软件包,遇到如下提示:
题图:摄于武大凌波门
作为一名每天对着各种裸板的系统工程师,对Jetson Nano会踩到各种坑是做好了充分准备的,本着踩坑填坑的精神,在这里记录一下踩坑经历,供大家一乐。如何避开这些坑?想多了,因为以后你们即使绕开了这些坑,也会有其它的坑等着你:) 重要的是要做到人挡杀人、佛挡杀佛,遇到坑直接趟过去。
安装软件遇到锁
使用apt-get install命令安装软件包,遇到如下提示:
alex@alex-jetson-nano:~$ sudo apt-get install xrdp [sudo] password for alex: E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it? 复制代码
重启后什么操作也不做,安装软件包,提示依旧。
填坑指南:
首先查看一下是否有apt进程在工作:
alex@alex-jetson-nano:~$ ps aux | grep -i apt root 6569 0.0 0.0 1912 496 ? Ss 10:37 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily update root 6582 0.0 0.0 1912 1272 ? S 10:37 0:00 /bin/sh /usr/lib/apt/apt.systemd.daily lock_is_held update _apt 7736 5.4 0.1 19552 8036 ? S 10:41 0:20 /usr/lib/apt/methods/http alex 7883 0.0 0.0 7416 640 pts/0 R+ 10:47 0:00 grep --color=auto -i apt 复制代码
可以看到系统在做每日检查更新,解决的方法很简单,关闭每日更新检查:
System Settings | Software & Updates,在Updates页,Automatically check for updates,选择Never
远程连接
没有为Jetson Nano单独配显示器,和开发机共用,但两者都是用的HDMI接口,这样每次切换显示都必须插拔HDMI线,很是麻烦,这个时候就需要远程连接。
有两种使用远程登录Jetson Nano的方法,一种是通过SSH协议登录,这种方法时延小,占用资源少,但只支持命令行。另一种就是通过RDP(Remote Desktop Protocol)协议,支持GUI,熟悉Windows的朋友可能知道Windows支持远程登录,在Ubuntu系统上,也能达到同样的效果。
Jetson Nano采用的是Ubuntu桌面系统,要支持远程桌面协议很简单:
sudo apt-get update sudo apt-get install xrdp 复制代码
然而在我的开发机上使用 Remmina Remote Desktop Client 软件,配置好各种参数进行连接,总是一闪而过,退出应用。开始怀疑是 Remmina Remote Desktop Client 兼容性存在问题,后来换Windows下的远程登录,依然如此。查看$HOME/.xorgxrdp.10.log日志,可以看到Server端主动退出。
填坑指南:
和普通Ubuntu桌面系统不同的是,Jetson Nano并不支持两个客户端同时登录。安装时为了省事,选择了自动登录系统,这样每次Jetson Nano每次启动,就会有一个用户登录进去,这个时候我再远程登录就会被拒绝。解决方法是,编辑 /etc/gdm3/custom.conf 文件,找到 AutomaticLoginEnable 和 Automatic Login 行,注释掉:
sudo vi /etc/gdm3/custom.conf # AutomaticLoginEnable=true # Automatic Login=[user1] 复制代码
无法导入cv2模块
Jetson Nano系统默认 python 为2.7版本,然而安装tensorflow-gpu却需要Python3,在Python3下导入opencv模块,出现如下错误:
(tensorflow-gpu) alex@alex-jetson-nano:~$ python3 Python 3.6.7 (default, Oct 22 2018, 11:32:17) [GCC 8.2.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> import cv2 Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'cv2' >>> 复制代码
使用默认的2.7版本python,则无此问题。
填坑指南:
系统默认为python 2.7安装了opencv模块,但python3没有,需要自己安装:
sudo apt-get install python3-opencv 复制代码
这样安装到系统python3的环境中,如果你使用了python虚拟环境,而创建虚拟环境时没有添加 --system-site-package 参数,在虚拟环境中依然会有问题,解决方法,删除掉虚拟环境中的no-global-site-packages.txt文件。假如虚拟环境名为tensorflow-gpu,命令如下:
rm ~/.virtualenvs/tensorflow-gpu/lib/python3.6/no-global-site-packages.txt 复制代码
python虚拟环境
要说到python的版本问题,python程序员绝对一把鼻涕一把泪。python 2和python 3之间不兼容的问题由来已久,到目前,python 3也没有把python 2干掉,两者尴尬的共存着。除了python本身,python第三方软件包的版本问题也是让人头大。好在我们可以借助python虚拟环境来解决这一问题。python虚拟环境和虚拟机不同,仅仅是做一个环境隔离,完全不存在性能损失,非常适用于python 程序。在开发机上,我使用的是anaconda包,然而,anaconda的 linux 版本只出了x86 32位和64位架构的包,并没有arm64的包。无奈之下,我只能选择python的virtualenv工具。
填坑指南:
virtualenv本身就已经够用,不过为了方便管理,我还是使用了一个wrapper,这实际上就是用脚本在virtualenv上封装了一层,方便使用:
sudo apt-get install virtualenvwrapper 复制代码
为了方便使用这些脚本,我在 $HOME/.profile 文件中添加了一行:
source /usr/share/virtualenvwrapper/virtualenvwrapper.sh 复制代码
创建虚拟名为tensorflow-gpu的虚拟环境:
mkvirtualenv -p /usr/bin/python3 --system-site-package tensorflow-gpu 复制代码
激活虚拟环境
workon tensorflow-gpu 复制代码
退出虚拟环境
deactivate 复制代码
安装tensorflow
Jetson Nano出厂系统并没有自带TensorFlow环境,早先甚至连官方支持都没有,所以网上有很多安装Tensorflow的指南,及其复杂,好在Nvidia意识到了这个问题,给出了官方支持。
填坑指南:
安装依赖包:
sudo apt-get install libhdf5-serial-dev hdf5-tools sudo apt-get install python3-pip pip3 install -U pip sudo apt-get install zlib1g-dev zip libjpeg8-dev libhdf5-dev sudo pip3 install -U numpy grpcio absl-py py-cpuinfo psutil portpicker grpcio six mock requests gast h5py astor termcolor 复制代码
注意有些步骤特别慢,以至于我以为安装包被墙了,重试了几次仍然这样,后来才弄清楚有些包是需要即时编译的,所以会比较慢,需要耐心等待。
然后安装最新的tensorflow-gpu:
pip3 install --pre --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu 复制代码
如果要安装指定版本:
pip3 install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==$TF_VERSION+nv$NV_VERSION 复制代码
其中,TF_VERSION是TensorFlow的发布版本,比如1.12.0。NV_VERSION为Tensorflow的NVIDIA容器版本,比如19.01。
小结
在使用Jetson Nano中,还碰到很多稀奇古怪的问题,这里没法一一写出,解决问题主要靠Google,当然Nvidia开发者论坛的Nano版块也值得去看一看,其地址为: devtalk.nvidia.com/default/boa… 在上面我试着用蹩脚的英文向其他开发者提问,收到了不少回应。
生命不息,折腾不止,其实Jetson nano最大的乐趣就是折腾,可以预料以后还会踩各种坑,不过相比软件的坑,硬件的坑更大,毕竟那还要投入真金白银,下一篇我将写写硬件上的坑,敬请关注。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Designing for Emotion
Aarron Walter / Happy Cog / 2011-10-18 / USD 18.00
Make your users fall in love with your site via the precepts packed into this brief, charming book by MailChimp user experience design lead Aarron Walter. From classic psychology to case studies, high......一起来看看 《Designing for Emotion》 这本书的介绍吧!