NvidiaTK1刷机教程与错误汇总

最近在调Nvidia Jetson-TK1的板子,因为是初学,出了许多问题,总结一下。
下面先简单介绍一下我手里的板子的情况:
我手里的TK1板子把EEPROM去掉了,所以刷机的时候出了一些问题,需要解除jetson-tk1.conf文件里的BroadID注释(这部分仅供给同样的人一些参考)

最初是因为安装CUDA的时候添加路径,修改了/etc/bash.bashrc,导致了所有的命令都识别不了
例如:
sudo command not found (这个问题现在还不知道真正原因出在哪里,以后解决了会来结贴)

因此便开始了刷机之路。
TK1刷机有两种:
第一种按照官网给的链接,下一个.run文件,然后按照教程一步一步来;
第二种是按照吉潽讯的教程刷机。

第一种:
1 先上Nvidia官网注册一个账号,然后从首页进入开发者模式。
开发者————开发者专区
NvidiaTK1刷机教程与错误汇总_第1张图片
2 然后点击“立即加入”——“现在加入”
NvidiaTK1刷机教程与错误汇总_第2张图片
3 点击:“join”
NvidiaTK1刷机教程与错误汇总_第3张图片
4 如果此时,出现网页跳转不过去或是直接无法访问,则有可能是宽带服务商关闭了某些网站的访问权限。(我的是因为这个原因,因为之后运行.run文件后会导致刷新不出硬件平台。)
NvidiaTK1刷机教程与错误汇总_第4张图片
如果出现以上情况,那么,
选择1:换一个地方下载,去网吧,去朋友家(不一样的网络服务商)
选择2:自己手机开个热点访问英伟达官网,但需要差一个无线网卡用来接收手机的热点信号(亲测可用)
选择3:为360浏览器或Chorme浏览器添加一个插件,谷歌访问助手(亲测可用)

5 登录账号之后就会提示以下界面,点击“Member area”
NvidiaTK1刷机教程与错误汇总_第5张图片
6 点击右上角的放大镜,搜索:Jetpack
在这里插入图片描述
7 点击搜索结果第一个,jetson download center
NvidiaTK1刷机教程与错误汇总_第6张图片
8 在左侧搜索栏里键入“jetpack”,然后找到符合自己硬件平台的版本号。(点开里面会有说明,支持TK1\TX1\TX2)
NvidiaTK1刷机教程与错误汇总_第7张图片
9 因为TK1现在最高支持3.0的版本,所以我下载的是3.0的.run文件。点击Ubuntu(64-bit)
NvidiaTK1刷机教程与错误汇总_第8张图片
10 下载完后,需要一台Ubuntu14.04的主机,我这里用的是虚拟机。
打开控制台,输入jetpack的路径,跳转到文件夹下
cd /jetpack
然后把下载好的JetPack-L4T-2.3.1-linux-x64.run文件放入到jetpack文件夹下,然后执行
chmod +x JetPack-L4T-2.3.1-linux-x64.run
sudo ./JetPack-L4T-2.3.1-linux-x64.run
NvidiaTK1刷机教程与错误汇总_第9张图片
11 下一步——下一步——选择TK1(自己的硬件平台)——下一步
NvidiaTK1刷机教程与错误汇总_第10张图片
12 接着会刷新出以下硬件平台的资源包(如果没有出现或者说是空白的,不要着急,按照上面的3个选择,你可以后台开着谷歌访问助手,不要关闭,这样你的访问IP是经过香港的DNS服务器中转的,可以直接访问英伟达官网;或者就自己手机开个热点连接,可以直接插上无线网卡,从虚拟机的右上角找到wifi信号,连接就可以。 以上主要目的都是为了刷新出下面的资源去下载,成功执行完之后就需要换回你之前的网络了,因为下面要和板卡组成局域网,连接到同一个路由器下。
NvidiaTK1刷机教程与错误汇总_第11张图片
13 (我这里因为已经下载好了)如果没有下载,则需要点击NEXT——Accept(ALL所有选项都要勾上)——Accept——OK,然后它会自己开始下载。
NvidiaTK1刷机教程与错误汇总_第12张图片
NvidiaTK1刷机教程与错误汇总_第13张图片
14 完成之后,点击Next,然后就需要组建一个能上网的局域网了。
NvidiaTK1刷机教程与错误汇总_第14张图片
15 这里我选择的第一种,点击Next——Next——NextNvidiaTK1刷机教程与错误汇总_第15张图片
NvidiaTK1刷机教程与错误汇总_第16张图片
16 当出现以下界面的时候,就需要进入Recovery模式刷机了。
进入Recovery模式:先摁下Recovery键,不松手,再摁下RESET键
2秒后先松开RESET键,再等2秒松开Recovery键。
NvidiaTK1刷机教程与错误汇总_第17张图片
摁完之后你可以clt+alt+T重新调出一个窗口,执行:
lsusb
查看当前挂载的USB设备,当看到有Nvidia Crop的时候就说明成功了。
NvidiaTK1刷机教程与错误汇总_第18张图片
17 然后摁ENTER(回车键)
接下来会出现两个问题:
1)由于下载下来的包是默认有EEPROM的,所以它会自动加载EEPROM里的BoardID;然而jetson-tk1.conf文件里的BoradID是默认注释状态,需要你执行(第一种方法的安装之前或第二种方法的./apply_binaries.sh之前,如果在第二种方法的./apply_binaries.sh之后再修改jetson-tk1.conf,那么所生成的system.image就是错的而且不能被覆盖)之前,先把#号删去,否则就会出现错误(如果你是原装的板子,就不用在这一步多做停留。)
NvidiaTK1刷机教程与错误汇总_第19张图片
2 )如果之前一次刷机不成功,你刷第二次的时候可能会有以下错误:
USB device not found
NvidiaTK1刷机教程与错误汇总_第20张图片
这时就需要你重启虚拟机,然后重新进入Recovery模式,再次刷机。
3)这种情况是在刷系统完成后,安装cuda的过程中出现的远程访问关闭,这种情况绝大多数是因为网络的原因,可以检查更换一下路由器或者换一种方法(第二连接方法,就是一开始选择组建局域网的两种方法)。但这个现象我现在不敢十分确定是因为路由器的原因,还是【有待解决】。
NvidiaTK1刷机教程与错误汇总_第21张图片
18 如果以上几种问题都没有遇到,那么恭喜你,一路刷到底就成功了。

第二种方法(吉浦迅推荐):
这种方法适合没有以太网接口的板子,也就是我们自制的,但用了nvidia的tk1的核心。

第一步,当然是先下载刷机包。
有两个,Tegra124_Linux_R21.5.0_armhf.tbz2
和 Tegra_Linux_Sample-Root-Filesystem_R21.5.0_armhf.tbz2
当然版本号不一定非要是21.5.0,也可以通过查询TK1支持的Jetpack版本号来获取向下兼容的包。

第二步,解压。
先解压Tegra124_Linux_R21.5.0_armhf.tbz2
sudo tar --numeric-owner -jxpf Tegra124_Linux_R21.5.0_armhf.tbz2

然后进入linux_for_tegra下的rootfs文件夹
cd linux_for_tegra/rootfs
把另一个包解压到rootfs文件夹下
sudo tar --numeric-owner -jxpf …/…/Tegra_Linux_Sample-Root-Filesystem_R21.5.0_armhf.tbz2

第三步,最重要的一步
如果你的板子没有EEPROM,需要一个BoardID的话,那么一定要在下一步运行./apply_binaries.sh之前,修改jetson-tk1.conf文件里的BoardID,把#号删掉,保存。
NvidiaTK1刷机教程与错误汇总_第22张图片
如果你没有按照以上的步骤做,刷机也能完成,且也不会报错,但最终刷完机后你打开终端,输入
sudo su
它就会提示:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
然后你任何root的指令都用不了,当然也不能切换到root超级用户。

第四步:执行sudo ./apply_binaries.sh
这一步其实是为了生成系统镜像文件system.image

第五步:执行sudo ./flash.sh -S 14GiB jetson-tk1 mmcblk0p1
这一步就是将系统文件烧写进入板子,剩下的时间就可以去喝咖啡了。烧写完了,会提示successful。

(题外话,解决sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set的办法:
因为TK1的板子比较特殊,无法像主机那样开机摁ESC键或shift键进入root后台模式执行
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
这两条指令,所以也无法通过clt+alt+F1进入控制台模式执行sudo -s,去修改root的权限。
产生这个问题的原因是:
在虚拟机或主机上执行ls -l /(安装路径下)/rootfs/usr/bin/sudo
不应该出现-rwxr应该是-rwsr,x应该为s。
所以导致这种情况的原因就是因为在主机上编译系统文件的时候系统文件的权限错了。
根本原因就在于:
在运行./apply_binaries.sh后才去修改BOARDID的注释符号,导致没有正确加载上对应的ID,所生成的 system.image文件也是错误的,且之后再./apply_binaries.sh无法覆盖之前生成的系统镜像文件。
所以要在下一步之前先修改ID。
NvidiaTK1刷机教程与错误汇总_第23张图片
正确的应该为:
NvidiaTK1刷机教程与错误汇总_第24张图片

你可能感兴趣的:(TK1刷机)