来自SSD的读取速度是SD卡的7倍。因此,从SSD启动肯定会提高jetson NX的性能。







git clone https://github.com/jetsonhacks/rootOnNVMe.git
cd rootOnNVMe
然后将根源文件复制到您的SSD
./copy-rootfs-ssd.sh
./setup-service.sh
sudo reboot
由于国产套件的核心模组是自带16G emmc闪存,刷机时只能刷入最基础系统,
需要扩展固态硬盘设置SSD启动后再执行命令安装CUDA等环境的包。
请参考第5个视频(观看到第5分钟后开始执行的是CUDA组件安装指导)操作指令如下:
sudo apt-get updatesudo chmod -R 777 bootFromExternalStoragecd bootFromExternalStorage./install_jetson_default_packages.sh apt-get update
apt-get upgrade
sudo apt-get install ufwsudo ufw enablesudo ufw disablesudo ufw statussudo ufw allow 3306sudo ufw delete allow 8010sudo ufw allow from 192.168.1.1sudo ufw deny smtp
所谓的 VNC(Virtual Network Computing )是一种图形化的桌面共享系统,它使用远程帧缓冲协议 (RFB) 来远程控制另一台计算机。它将键盘和鼠标事件从一台计算机传输到另一台计算机,通过网络向另一个方向转发图形屏幕更新。
VNC 的优点很多,很多场景下都能看到VNC。例如,访问树莓派的桌面,对 headless 服务器的管理等等。但是,对于云上实例的远程图形化的访问VNC却不是好的选择。考虑到我们的使用场景是通过互联网来访问云上的主机,这就引出了否定 VNC 最主要的原因– 安全性。
默认情况下,RFB并不是一个安全的协议。虽然这个协议下密码不以明文方式发送,但如果能从网络中嗅出加密密钥和已编码的密码,还是有可能破解成功的。因此,建议密码至少有8个字符。另一方面,VNC的一些版本也有8个字符的限制; 如果发送的密码超过8个字符,则删除多余的字符,并将截断的字符串与密码进行比较。
在VNC生态系统中,”Big Four” 指的是LibVNC、UltraVNC、Tight VNC和TurboVNC 这四家提供VNC 产品的厂商。2019年,Kaspersky Lab 的研究人员对这四家公司进行了审计,以了解它们的安全性。他们的发现是令人失望的。总的来说,研究人员发现这四个程序的客户端和服务器部分共有37个严重缺陷。其中22个在 UltraVNC,另外10个在 LibVNC, 4个在 TightVNC,还有一个在 TurboVNC,但这是一个严重的漏洞,它会让攻击者在服务器端远程执行代码。

有过 Windows 使用经验的人对于远程桌面(Remote Desktop Protocol ,RDP)一定不会陌生。RDP 是由微软公司开发的一种专有协议,它为用户提供了通过网络连接到另一台计算机的图形界面。在使用上,用户需要使用 RDP 客户端软件,而在远程另一台计算机则需要运行 RDP 服务器软件。
微软的Windows、Linux、macOS、iOS、Android等操作系统都有客户端。Windows操作系统内置RDP服务器;Linux与 macOS 可以安装一个 RDP 服务器。缺省配置下,服务器监听 TCP 端口 3389 和 UDP 端口 3389。
微软目前把他们的官方RDP客户端软件称为Remote Desktop Connection,以前叫做 “Terminal Services client”
与VNC 相比,RDP的安全性有很大的提升。主要的安全特性包括了:
此外,正如前面提到的VNC协议是基于像素的。尽管这带来了极大的灵活性,可以显示任何类型的桌面,但它的效率往往不如那些更好地理解底层图形布局(例 如: X11)或桌面(例如:RDP )的解决方案。这些协议以更简单的形式(例如:打开窗口)发送图形原语或高级命令,而 VNC 的 RFB 协议尽管支持压缩但只能是发送原始像素数据。
如何使用RDP?
在 Windows 环境下使用RDP是再简单不过的事情。虽然微软公司没有为 Linux 提供 RDP 的软件,但是我们可以使用开源的xRDP,这是RDP协议在Linux平台 的实现。
xRDP是一个开源的远程桌面协议服务器,它用来实现Linux接受来自 Windows、Mac 或者 Linux 远程桌面客户端或的连接。这意味着你不需要在我们所使用的 Windows 或 macOS 机器上安装额外的第三方应用程序。
Linux 安装 xRDP的方法如下。这里我以 Ubuntu 20.04 为例 –
$ sudo apt update
$ sudo apt install ubuntu-desktop
除了Gnome 以外,我们还可以选择 LXDE、Xface 等等。相比之下,LXDE 是轻量级的窗口管理器,Xface 则具备类似 Windows 界面的风格。如果不在乎额外增加的大约 5GB 的磁盘存储的开销,我还是推荐使用Gnome。原因在于这与我们本地使用的 Ubuntu 具有一致性的体验。
$ sudo apt install -y xrdp
安装完成后,xRDP服务将自动启动。可以通过这个命令来检查其状态:
$ sudo systemctl status xrdp
输出结果如下:
$ sudo passwd ubuntu
$ sudo adduser ubuntu ssl-cert
出于安全的理由务必使其符合密码安全的策略。第二条命令是将 用户ubuntu 加入到 ssl-cert 用户组中。这是因为默认情况下,xRDP 使用的是自签发的证书,这个证书保存在 /etc/ssl/private/ssl-cert-snakeoil目录下。证书的密钥文件只能由 “ssl-cert” 用户组的成员读取。



NoMachine是一款不错的远程桌面控制软件,该工具简单,易用,尤其是在低带宽、慢速率的网络环境下工作性能良好,允许用户从另一台计算机访问和控制远程的Windows,Linux PC或Mac电脑,实现工作或娱乐等操作。
软件下载地址:下载官网
进入之后,会自动检测当前主机的版本,选择download下载最新版。注意NX开发板要选择对应的NoMachine for ARM版
由于某些原因,可能会下载很慢,还会出现中断,特贴出我辛苦下载下来版本
win10版链接
NX开发板对应的版本

相关组件安装
nvidia-smi
pip3 install jetson-stats
#第一种报错,就第二种安装方式
sudo -H pip3 install jetson-stats
安装好后输入
jtop
查看NX开发套件的各项资源使用情况,按 q 结束退出
在Ubuntu18.04下,谷歌拼音输入法是基于Fcitx输入法的。因此,我们需要首先安装Fcitx。一般来说,Ubuntu最新版中都默认安装了Fcitx,但是为了确保一下,我们可以在系统终端中运行如下命令:
sudo apt install fcitx
系统终端中输入命令:
im-config
注:im-config是Input Method Configuration的缩写。
运行如下命令之后,就会开启 Input Method Configuration 窗口。
在出现的窗口中,选择Yes,如下图所示:
在出来的这个窗口中,必须选中Fcitx,然后选择Yes,如下图所示:
选中Fcitx后出来这个窗口就选择OK,如下图所示:
点击OK后就关闭窗口,重新启动电脑让所做的配置生效,当然你也可以在系统终端中运行:sudo reboot 命令重启电脑。
在Ubuntu18.04系统中安装谷歌拼音输入法(Google Pinyin)非常简单,只需要下面这个命令:
sudo apt install fcitx-googlepinyin
reboot
在出来的选项中输入y即可安装。
安装后运行如下命令配置谷歌拼音输入法:
fcitx-config-gtk3
然后依次进行如下操作: 
配置fcitx
如果又拼音直接保存就行,如果没有,则选择左下角的+号搜索添加。
如果想重新设置切换快捷键,直接点击“全局配置” 
如果出现输入法没有候选框,则输入以下两个命令
killall fcitx-qimpanel
sudo apt-get remove fcitx-ui-qimpanel
到这里,在Ubuntu18.04系统中安装谷歌拼音输入法(Google Pinyin)全部完成了。
为什么还需要 Anaconda ?有以下3个原因:
还有很多项目使用的包版本不同,比如不同的pandas版本,不可能同时安装两个 Numpy 版本,你要做的应该是,为每个 Numpy 版本创建一个环境,然后项目的对应环境中工作。这时候conda就可以帮你做到。
但是Anacona目前不支持aarch64架构,因而无法直接安装。好在github上有Archiconda这个项目,可以看作是arm版的Anaconda
下载地址
链接
启动脚本
(xxx为版本号)
chmod a+x Archiconda-xxx.sh
./Archiconda-xxx.sh
然后一路回车
安装成功
reboot

conda添加清华源
将以上配置文件写在~/.condarc中
vim ~/.condarc
channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
ssl_verify: true
进入进入官网点击直接下载
下载成功后,双击.deb文件
官方地址
点击下载.deb文件包,双击安装
设置md文件默认打开方式为typora

双击打开,成功






通常在以下路径(刚刚安装的ReID环境),找到python后,双击确定
切换成功

在终端输入
conda activate ReID
pip install -r requirements.txt#这里torch和torchvision可以先不装

python包安装中

安装成功,关闭重启
特别注意torch的版本一定要和cuda版本对应,如果出错,建议直接去官网下载,找到适合自己的版本(找到适合自己的版本(英伟达torch官网))
先安装依赖:
sudo apt-get install libopenblas-base libopenmpi-dev
安装Pythorch (需要在安装文件当前目录运行命令)
pip install torch-1.7.0-cp36-cp36m-linux_aarch64.whl
安装完成导包测试
python
import torch
#如果上面的依赖没有安装这里会报错
#OSError: libmpi_cxx.so.20: cannot open shared object file: No such file or directory
可以在包目录这个网站右上角搜索libmpi_cxx.so.20手动下载需要的依赖包
需要的依赖包有:
libhwloc5_1.11.9-1_arm64.deb (先安装)
libopenmpi2_2.1.1-8_arm64.deb
libopenblas-base_0.2.20+ds-4_arm64.deb
安装依赖参考链接
依赖安装完成后有可能还会遇到一个错误
import torch
#Illegal instruction (core dumped)(非法指令(核心转移))
在环境变量最后面加入
sudo vim ~./bashrc
export OPENBLAS_CORETYPE=ARMV8
source ~/.bashrc
最后测试一下
python
import torch
print(torch.cuda.is_available()) #测试cuda是否能用
True #返回Ture说明cuda能用
torchvision库简介(翻译)
torchvision是独立于pytorch的关于图像操作的一些方便工具库。
torchvision的详细介绍在:https://pypi.org/project/torchvision/
torchvision主要包括一下几个包:
本人在torch官网上找不到arms适配的vision包,直接进行pip安装的话直接报错,所以选择whl安装torchvision
sudo apt-get install libjpeg-dev zlib1g-dev libpython3-dev libavcodec-dev libavformat-dev libswscale-dev
pip3 install torchvision==0.8.1 #我用这条没有安装成功
手动去这个地址下载代码包:https://github.com/pytorch/vision/archive/v0.8.1.zip(也可以直接进入https://github.com/pytorch/vision中找到其他的版本)

找到合适的版本下载
下载解压后,进入文件夹
export BUILD_VERSION=0.8.1 #这里可以将地址写入~/.bashrc中
sudo python3 setup.py install #这里如果是conda的下的虚拟环境,sudo可能会提示错误,所以可以去掉sudo
#测试是否安装成功
import torchvision
print(torchvision.__version__)
原因是虽然已经安装了cuda但是没有将cuda添加到Linux环境下。
首先声明:通过修改.bashrc文件的方法来修改环境是永久有效但是仅针对当前用户,对于没有root权限的用户,这种方式是很有好的,
sudo vim ~/.bashrc
echo 'export PATH=/usr/local/cuda-10.0/bin/:$PATH'>>~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64:$LD_LIBRARY_PATH'>>/.bashrc
source ~/.bashrc
注意以上的第一行和第二行命令中的 cuda-10.0 这里根据安装的cuda版本不同所对应的文件夹名称也不同。如果安装是cuda9.0请到usr文件下找到local文件夹看看你所安装cuda文件夹名是什么,那么上面的 cuda-10.0 内容就相应改成什么。
需要注意的是:上述的方式只针对当前用户,因此最后一个命令是用于跳转到当前用户的命令窗口执行。在对应的用户终端命令栏中输入vncc -V则可以看到 NVIDIA 版本信息。
Jetson nano 官方系统是ubuntu,是在ubuntu上修改的NVIDIA系统 ubuntu18.04 LTS,好像是是aarch架构,系统界面如下
和直接在ubuntu上安装没有什么区别,直接使用apt-get install mysql-server 得到的是5.x版本,不是最新的8.x版本 使用 apt-get 安装完后 会生成一些默认的账户在 /etc/mysql/debian.cnf中 可以通过sudo cat /etc/mysql/debian.cnf查看
登录应该是需要安装mysqsl-client,也是使用apt-get install mysql-client安装
mysql -u username -p
然后输入密码
新建用户,赋予权限
create user 'username'@'localhost' identified by 'password';
#username是你想创建的用户名
#localhost是表示它可以通过那个ip来访问,localhost表示本地 其余ip表示其他地址 %表示所有
#password是密码
grant all privileges on 数据库.* to username@ip地址 ;
#好像mysql的用户是通过 username+ip来区别,可以有连个username相同的用户,只要ip不一样。
cd /etc/mysql
//然后ls一下 我的有下面这些东西,配置文件在mysql.conf.d中
//conf.d debian-start my.cnf.fallback mysql.conf.d
//debian.cnf my.cnf mysql.cnf
cd mysql.conf.d
vim mysqld.cnf
//将地址127.0.0.1 改成0.0.0.0
service mysql restart
sudo service mysql restart
sudo netstat -tap | grep mysql #查看是否允许
我选择使用花生壳进行内网穿透,花生壳还是比较方便的。
应该是可以直接参考树莓派的官方教程https://service.oray.com/question/11639.html
dpkg -i phtunnel_5_0_rapi_aarch64.deb #安装
可以通过以下命令来操作:
phddns #查看命令
phddns start #打开
phddns status #可以查看SN码
打开http://b.oray.com ,在登录页面中输入SN码与默认密码(admin)登录。
剩下的就看官方教程就好了https://service.oray.com/question/11639.html
建立的映射应该是tcp类型,绑定到3306端口
注意,需要先给你的Nano 配置IP与MAC绑定,因为你的路由器应该是使用动态分配IP,打开192.168.1.1即可进行绑定,不然每次都要重新 在管理界面绑定一次。
可以先在内网测试一下能否脸上nano的mysql,使用ifconfig获得内网地址类似与192.168.1.101,然后在自己电脑上用workbench测试一下。
测试成功后绑定外网然后在外网试一下。
这里之后,基本的盒子部署已经完成了,后面就是一些项目的具体实施,比如我目前在学习的ReID模块,我也会将其写成博客进行学习。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删