先看效果
本文借鉴
NVIDIA NX刷机,配置深度学习环境_road_of_god的博客-CSDN博客_nx刷机
Jetson Xavier NX 镜像制作、烧录及克隆_顽强的磊头的博客-CSDN博客_jetson nx镜像制作
更换jetson设备的开机logo_i walk的博客-CSDN博客
NVIDIA Jetson TX2 刷机指南_Rinvay_Y的博客-CSDN博客_jetson tx2刷机NVIDIA英伟达jetson xavier nx怎么进入Recovery模式_vivi_yu~的博客-CSDN博客_xavier 恢复模式
Nvidia Jetson刷开机Logo_liufsh004的博客-CSDN博客
目录
1. 需要的东西
- ubuntu16.04 (用别的版本应该也行,但我没试过)
- nx的emmc版 (用SD卡在后面有一个命令略有不同,但我没试过,我觉得把那里换了就行。emmc版与sd卡的区别就emmc版的下面会有一个固态硬盘)
- 一个路由器 (作用是将nx与ubuntu连接到一起)
- 还有一些网线,杜邦线这种零散的物品后面会在文章中提到
- 本文使用过的所有文件可以在下面这个链接进行下载
链接:https://pan.baidu.com/s/1eXG_mKz3A80skc6lgTUTsA
提取码:kt66
- 后面提到的Linux_for_Tegra我没有放到里面,因为文件太大了,用zip打包也会提示文件缺失,可以在sdk manager进行下载
2. 连接Ubuntu与nx
1. micro线(安卓数据线)USB端插ubuntu,安卓端插nx
2. 将nx置于recover模式,方法是将板子上的FC REC引脚与GND引脚短接,你可以用跳线帽短接,也可以用杜邦线短接
- 在后续过程中这个短接线在我测试的过程中可以一直不用拔掉
3. 将外部网络插入路由器wan口,剩余lan口其中一个连接ubuntu,其中一个连接nx,目的是将nx与ubuntu置于同一网段
- nvidia-B460MD2V是我ubuntu的名称,下面那个是nx的名称
这一步可有可无,如果你通过安卓数据线发现两者可以ping通,那么就不需要进行这步,比如我当前的ubuntu就有两个IP
如果你有上面的55网段,那么你看一下ping 192.168.55.1 能不能ping通,如果能通且ubuntu可以使用当前IP上网,就可以尝试不用路由器
3. 给Ubuntu换源
目的是后面下载快一些,不换应该也没事
具体操作可以看一下这篇文章
Ubuntu系统基本操作_Suyuoa的博客-CSDN博客_ubuntu使用教程
4. 给NX搞一个系统(给nx刷机)
如果你用的SD卡直接用镜像就能搞一个系统,我下面说一下emmc版怎么搞
首先你要下载一个名为sdkmanager的deb,下载地址在这里Jetson Download Center | NVIDIA Developer
对页面搜索sdk就能找到
我使用的sdkmanager版本为1.8.0
把这个文件放在ubuntu中,双击后可以安装,安装后会得到这样一个应用
点进去会让你登陆,登陆后下面的进度条会走到头
登陆后会进入这个页面,如果你的安卓数据线连接情况没有问题就会问你型号,我的型号的第二个,选中后点击OK
- 如果不确定是哪个就问一下卖方,如果他也不确定,那你就两个都试试,应该也没什么影响
点击确定后,我们可以在TARGET OPERATING SYSTEM中选择系统,我用的是JetPack 4.6.2,也可以选用别的,只是每一个版本的Linux_for_Tegra会有不同,Linux_for_Tegra我们后面会提到,选好系统后点击CONTINUE
这里点击同意,然后点击CONTINUE,如果你想烧录的快一点,可以选择不烧录 Jetson SDK Compoents部分
点击CONTIUNE后输入Ubuntu当前用户密码,输入后提示等待
几分钟等待后会自动开始下载,下载到一定程度后,看到了这个页面
这里不要使用自动安装,我建议使用手动安装
手动安装目前避免了IP问题,如果当前NX没有系统的话,你是拿不到你路由器的IP的,只能选择使用192.168.55.1那个IP,如果你当时点击Flash没有问题的话,你也可以选择自动安装。选择手动安装的另一个好处是,等后面需要问到你IP的时候,这个时候NX已经有系统了,只是没有一些依赖,这个时候你就可以使用你路由器的IP了。点击手动安装后,输入你nx系统的用户名与密码,后续你需要用这一组用户名与密码进入nx系统(用户名与密码你自定就好,没有要求),输入之后点击Flash
期间会跳几次这种东西,不用担心,正常现象
- 如果太频繁的话,你看一下你的安卓数据线是不是松了
等待过一阵后提示你要输入IP了(这个时候nx已经有系统了),这个时候你直接看一下路由器分给nx的IP,
然后选择Ethernet(有线连接),然后输入IP,我当前是192.168.1.4,之后点击Install
- 正常来讲connect的时间不会过长,如果你使用192.168.55.1的连接时间过长,那么请使用有线连接
如果出现这种问题,那么点一下retry
等待大概半个小时左右会出现这个界面
- 如果你没有出现这个界面,而是FINISH的按钮是红色的,那么也不耽误换开机界面,因为你当前的nx已经有系统了
- 最好还是找一找原因让他变为绿色界面(或者多刷几次,我之前久有出现过红色按钮的情况,然后又刷了一次就好了) ,如果你那里是红色的可能会影响后面CUDA等这些依赖的使用
5. 制作开机图像
我们可以制作三张开机图像,分别对应1080p(1920*1080),720P(1280*720),480P(640*480)的显示器,对图像没有大小的要求(图像占用空间最好不要太大,后面会提到),图像格式bmp文件,bmp文件参数任意(比如说深度等)
我是拿格式工厂直接转的,我用格式工厂减小了图像的尺寸
转完之后复制三份,分别命名为nvidia480.bmp,nvidia720.bmp,nvidia1080.bmp
这三个对应不同显示器的显示状态,你可以搞三张不同的,也可以搞三张一样的,属性没有要求,我们简单看一下
6. 制作开机图像文件 bmp.blob
刷机完成后你会在这个地方
找到名为JetPack_4.6.2_Linux_JETSON_XAVIER_NX_TARGETS的文件夹
点进去会有一个文件Linux_for_Tegra(这个文件夹是我们一开始提到的,每一个系统版本的Linux_for_Tegra略有不同)
然后在文件管理器中进入tools
进入bmp-splash
将我们上面准备好的三张图像搞到bmp-splash中
- 如果有时间的话建议看一些bmp-splash中的bmp-blob-README.txt,这里写了制作开机文件的全过程
之后复制一份config_file.example并将其命名为config_file
把config_file打开后的内容是这样的,意思是个文件名对应不同的屏幕
这里为了把bmp.blob搞小一点,我们只适配1080P的屏幕,所以把config_file的内容搞成这样
之后在bmp-splash中打开终端,输入sudo apt-get install liblz4-tool,我这里之前下载完了,如果第一次下载结果会与我这个不一样
之后输入
OUT=$PWD ./genbmpblob_L4T.sh t210 ./config_file ./BMP_generator_L4T.py /usr/bin/lz4c bmp.blob
现在我们在bmp-splash中,得到了一个bmp.blob文件
7. 替换开机图像
找到Linux_for_Tegra/bootloader中之前的bmp.blob文件,看一下属性
发现它的大小为149.6kB,你生成的bmp.blob文件不要超过这个文件的大小(超一点儿也没事儿,不要超的太多),如果超的太多在后面的烧录中会报这个错
- 有两种方式可以让bmp.blob文件变小。第一种方式是不要让他适配三种分辨率的显示器,只让他适配其中一种。第二种方式是减小图片大小
将刚刚生成的bmp.blob文件,替换掉
- bmp1.blob与bmp2.blob是我之前搞的文件,我不想删,就给他们重命名了,经测试不影响后续操作
之后在Linux_for_Tegra打开终端,输入
sudo ./flash.sh -k BMP --image bootloader/bmp.blob jetson-xavier-nx-devkit-emmc mmcblk0p1
- 这里如果你不是emmc版的,那么你就不要输入emmc
之后把nx电源拔掉,然后再插上,如果不进行这步操作你就会看到这个
如果一切正常的话,那么你会看到这个结果,打印的东西很多,我就只截取一头一尾了
烧入的时间一共17s(设备不同可能导致烧录时间不同),如果时间很长且卡在同一个地方建议不要再等了,检查一下是哪一步出了问题,最后注意这种方法改的是板子的配置,而不是系统的配置,当你使用同一个板子的时候,换一个系统不影响开机logo