0. 摘要
这篇文章讲了如何在TX2上安装Ubuntu16.04系统
;
1. 目标
1.1. 在使用TX2过程中,刷机是一件不可避免的事,很可能因为某项操作就让系统崩掉, 而不得已重新安装系统, 而且刷机基本不会一帆风顺,比较心累, 所以下面将遇到的问题记录下来供大家参考和避坑。
1.2. 所以我们这篇文章讲了如何在TX2安装Ubuntu 16.04 LTS系统;
2. 刷机所需要做的准备
2.1.硬件
2.1.1.一根Micro USB
线(记住USB线一定得可以传输数据才行,因为有那种只有充电功能的USB线);
2.1.2.可以连外网的路由器
(注意:一定可以连外网才行);
2.1.3.两根网线
(一根连接TX2和路由器,一根连接主机(你自己的电脑)和路由器);
2.1.4.给TX2准备的集线器、鼠标、键盘
(在刷机过程中集线器还使用不了,只能用鼠标连接鼠标,用键盘连接键盘,另外可以在TX2上使用onboard这个工具来充当键盘);
2.1.5.一台主机
(通过Micro USB和网线(ssh)来和TX2通信,实现将JatPack下载到主机的数据传输到TX2上);
2.2.软件
2.2.1.在官网上下载相关的JetPackxxx.run文件; 在下面刷机过程中,我下载的是3.3版本:JetPack-L4T-3.3-linux-x64_b39.run; (需要在官网进行注册才能进行下载,文件大小为36.7 MB);
3. 开始刷机
软硬件准备好以后就可以进行刷机操作了. 我们把运行.run的电脑称为主机, TX2称为从机; 实际的系统是需要借助我们自己的电脑(主机)将系统烧到TX2上, 不像平时我们自己电脑安装系统只需要做个启动盘就可以, 所以显得麻烦了些.
3.1. 换源
主机: 为了防止下载速度慢的问题,我们可以更换一下软件源,这里提供了中科大的软件源(选哪个源无所谓,只要速度快就可以,如果速度不快,可以再换一个;更换完源以后记得update一下)
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
$ sudo apt-get update
3.2. 执行.run文件
主机:需要运行下载好的JetPack-L4T-3.3-linux-x64_b39.run文件(我放在了home目录的~/software/JatPack目录),运行前需要添加权限(可以通过ll命令看到权限的确修改了),打开一个终端运行下列命令:
$ cd ~/software/JetPack
$ chmod +x JetPack-L4T-3.3-linux-x64_b39.run
$ ./JetPack-L4T-3.3-linux-x64_b39.run
3.3. JetPack 3.3 Components Manager
运行run以后,会显示出下面的Components Manager界面,表示主机和TX2建议安装的组件
,这里选择了默认的full;
注意:里面的组件不会一下显示出来,需要等30 s左右,如果一直没有显示出来,建议换个其他
能上网的网络
)
另: 如果不想安装OpenCV3.3.1, 则可以选择no action选项;
3.4. 然后点击next左侧栏展示出来的是要求阅读的license文件,全选以后accept,下来就可以看到各个组件下载的过程了, 下载过程如下:
3.5. 等待3.4下载完成,如果速度快的话,需要20分钟左右的时间;
3.6. 在等待的过程中,会跳出下面这些错误:
3.6.1. 不需要理会,点击ok即可 [Depending on the component selection, please pay attention to the prompt in embedded terminal]
3.6.2. 下来是安装JatPack下载的OpenCV 3.3.1,由于我自己的主机上安装了ROS,ROS自带的OpenCV版本也是3.3.1, 点击OK直接下一步就可以; 安装和不安装都可以, 如果安装了两套OpenCV, 带来的不便就是需要在CMakeLists.txt中告诉OpenCV的位置, 倒也不麻烦.
3.7. 然后会显示下载和安装完成的提示界面,下来就需要TX2登场了;
3.8. 点击Next,会出现让你选择网络布局选项的界面:
3.8.1. 现在我们选择第一种,下面介绍的是网线连接情况和遇到的问题:
3.8.2. 网线连接情况:
1号线连接的是TX2和路由器;
2号线连接的是主机和路由器;
3号线提供连接Internet的功能;
这样就可以将TX2以及主机连接在一个可以上网的局域网内了;
3.8.3. 我这边主机遇到的问题:将网线插入电脑以后,主机却依然连接的是WiFi,所以就在网上找了解决办法:
【后记:当时主机连接路由器WiFi,TX2通过网线连接路由器失败原因分析:
由于主机使用的是WiFi,但是3.9这一步依然在下拉列表中选择了网线连接(出问题的地方),导致安装到IP搜索这一步卡住不动,应该在下拉列表中选择wlan这种方式】
另:(在成功之前做的尝试:主机通过WiFi连到局域网,TX2通过网线连到局域网,虽然他们的IP的确是一个局域网下的(ping的时候没有问题),但是在安装的过程中是需要网线实现TX2和主机的通信,如果主机的网线没有和路由器连接成功(显示:未托管),那么安装到查找target IP这一步的时候会一直卡住)
3.8.3.1. 然后就会发现主机右上角是这个图标(点击图标可以发现网线已经连接,并且可以上网),而不是wifi的标志:
3.8.3.2. 主机上可以通过$ ifconfig
查看网卡连接情况:
可以发现enp0s31f6这个网卡连接到了路由器,IP地址为:192.168.31.204;
3.9. 然后我们回到3.8这一步,点击next,提示你选择主机的哪一个网口,在3.8.3.2中显示是enp0s31f6,所以我们在这一步选择enp0s31f6即可:
3.10. 点击next后显示下面的界面:
3.11. 点击next后,会出现黑色终端窗口,等待一会儿后,提示让TX2处于recovery模式:
3.12. 让TX2处于recovery模式: TX2断电 -> Micro USB连接主机和TX2 -> TX2上电 -> 按下power键 -> 按住recovery键不放 -> 按一下reset键 -> 等待2 s以上 -> 放开recovery键;(可以连接好准备的显示器)
3.13. 这个时候可以在主机终端上运行命令lsusb, 可以发现存在NVidia Corp,表明USB连接成功,TX2进入recovery模式:
3.14. 这一步回到3.11这个界面就可以按下enter键了,下来就是刷机的过程了,然后等待…;
3.15. 在刷机等待的过程中黑色终端会遇到下面的问题(Please select which action do you want: 1. Retry 2. Manually enter IP address),表示在搜索TX2的IP地址,但是未果,这个时候如果输入的是2,那么终端就会消失,以上的所有步骤就得重新来一遍;这个时候我们可以点击一下这个黑色终端,会发现TX2的显示器进入了刚刚刷好的系统,下来需要借助鼠标和onboard(Ubuntu里的虚拟键盘)来操作TX2 home目录下的report_ip_ to_host.sh文件以解决这个问题;
3.16.打开report_ip_ to_host.sh这个文件,可以发现IP地址为:192.168.31.204(正好也就是主机的IP,如果主机的IP和这个不相符,那肯定是某一步错误了,即使改成主机IP后面也是会卡住),然后运行这个.sh文件:
$ sudo ./report_ip_ to_host.sh
3.17. 然后我们回到3.15的终端输入1,下面是Retry以后终端的结果,然后他就会继续往下执行了(如果两边都执行成功后,这个report_ip_ to_host.sh文件就消失了):
另外我们可以从终端输出的nvidia@tegra-ubuntu:~$
发现:主机的确跟TX2建立了ssh连接;
3.18. 可能出现下面这一步的坑(前几次不太正确的步骤刷机遇到了),提示cuda安装不了: After these package are installed on device, press Enter key to continue(如果跟这个文档上面的步骤做的一样,那这个问题应该不会产生)
3.18.1.这个时候需要去TX2上安装好这些packages包才能再点击enter键执行下面的操作。(为了速度,TX2可以换成国内的一些源,注意:TX2是ARM架构 ,需要找ARM架构的源才行,我们主机的源是不可以使用的);
3.19. 如果操作顺利,IP地址retry以后,剩下的工作就是等待了(大约30多分钟);如果安装成功,终端则会输出:
Installation of target components finished, close this window to continue.
3.20. 收尾工作,为了保证下次刷机依然可以使用,我们不删除已经下载好的文件,下次刷机就可以比较快了:
4. 安装成功
4.1. 最后,TX2成功安装Ubuntu 16.04 LTS系统:
4.2. 如果发现TX2插上集线器不能使用,那么可以插上集线器以后进行重启,这样就可以使用了。
5. 参考文章
5.1. 主参考
https://blog.csdn.net/DeepWolf/article/details/88640937
https://www.jianshu.com/p/97711207437b
5.2. 次参考
https://blog.csdn.net/hongliang2009/article/details/75205491
https://blog.csdn.net/qq_41883764/article/details/89164860
https://blog.csdn.net/qq_41883764/article/details/89164860
https://blog.csdn.net/q_quanting/article/details/81017717
https://www.jianshu.com/p/bb4587014349