如有错漏请指正,如转载请注明出处,谢谢!
进入刷机模式:
NVIDIA Jetson是通过Micro-USB/USB TYPE-C接口升级系统(具体参考不同载板说明),更新前需让Jetson进入Recovery 模式。Recovery 模式下可以进行文件系统更新包含: 内核Kernel,启动Bootloader,文件系统Filesystem等。
进入 Recovery 模式的步骤:
1)关闭系统电源,请确保使电源关闭而不是进入待机状态;
2)使用 Micro-USB(或USB TYPE-C)的链接线,一端链接Jetson一端连接Ubuntu Host主机;
3)一般使用12/15V电源为系统进行上电开机;(看说明手册)
4)同时按下RESET复位键和RECOVERY 按键后,若非自动启动的机器还需要按一下Power按键让系统上电;
5)保持按下 RECOVERY 按键的同时释放RESET复位按键,等待 2 秒释放RECOVERY 按键,此时Jetson进入Recovery刷机模式 (可通过在Ubuntu Host主机上运行命令:lsusb 查看是否有Nvidia Corporation 设备(不同Jetson模块USB VID/PID 不同)来确认是否进入正常)
注意:在进入 USB Recovery 模式下,系统不会启动,串口不会有调试信息输出
Xavier 刷机命令:
系统镜像生成并升级(把机器中的所有内容擦除并刷机,重新制作system.img)
$sudo ./flash.sh jetson-xavier mmcblk0p1
系统完整升级但不生成system.img镜像(把机器中的所有内容擦除并刷机)
$sudo ./flash.sh -r jetson-xavier mmcblk0p1
更新DTB 设备树(涉及外设驱动)
将新的DTB文件"tegra194-p2888-0001-p2822-0000.dtb"复制到目录Linux_for_Tegra/kernel/dtb
$sudo ./flash.sh -r -k kernel-dtb jetson-xavier mmcblk0p1
更新内核镜像(kernel/Image 涉及外设驱动)
Xavier检索内核先判断根目录下/boot/Image 文件,此时只需要把新的内核Image文件复制到 Xavier开机后的/boot/ 目录后再重启即可,通过uname -a 查看内核信息如日期时间是否为更新的内核
$sudo ./flash.sh -r -k kernel jetson-xavier mmcblk0p1
系统备份(备份Xavier机器中的系统及全部文件至当前目录的backup.img)
$sudo ./flash.sh -r -k APP -G backup.img jetson-xavier mmcblk0p1
如何恢复使用备份的镜像:
1、上面步骤备份会生出两个文件,把其中的backup.img.raw 重新命名到bootloader/system.img(软件镜像包含用户空间的所有文件信息),backup.img 文件不被使用可以删除掉
2、运行命令重新升级机器:
$sudo ./flash.sh -r jetson-xavier mmcblk0p1
Xavier NX:
系统镜像生成并升级(把机器中的所有内容擦除并刷机,重新制作system.img)
$sudo ./flash.sh jetson-xavier-nx-devkit-emmc mmcblk0p1
系统完整升级但不生成system.img镜像(把机器中的所有内容擦除并刷机)
$sudo ./flash.sh -r jetson-xavier-nx-devkit-emmc mmcblk0p1
更新DTB 设备树(涉及外设驱动)
将新的DTB文件"tegra194-p3668-all-p3509-0000.dtb"复制到目录Linux_for_Tegra/kernel/dtb
$sudo ./flash.sh -r -k kernel-dtb jetson-xavier-nx-devkit-emmc mmcblk0p1
更新内核镜像(kernel/Image 涉及外设驱动)
Xavier NX检索内核先判断根目录下/boot/Image 文件,此时只需要把新的内核Image文件复制到 Xavier NX开机后的/boot/ 目录后再重启即可,通过uname -a 查看内核信息如日期时间是否为更新的内核
$sudo cp $PWD/Image /boot/
$sudo reboot
系统备份(备份Xavier NX机器中的系统及全部文件至当前目录的backup.img)
$sudo ./flash.sh -r -k APP -G backup.img jetson-xavier-nx-devkit-emmc mmcblk0p1
如何恢复使用备份的镜像:
1、上面步骤备份会生出两个文件,把其中的backup.img.raw 重新命名到bootloader/system.img(软件镜像包含用户空间的所有文件信息),backup.img 文件不被使用可以删除掉
2、运行命令重新升级机器:
$sudo ./flash.sh -r jetson-xavier-nx-devkit-emmc mmcblk0p1
TX2:
系统镜像生成并升级(把机器中的所有内容擦除并刷机,重新制作system.img)
$sudo ./flash.sh jetson-tx2 mmcblk0p1
系统完整升级但不生成system.img镜像(把机器中的所有内容擦除并刷机)
$sudo ./flash.sh -r jetson-tx2 mmcblk0p1
更新DTB 设备树(涉及外设驱动)
将新的DTB文件"tegra186-quill-p3310-1000-c03-00-base.dtb"复制到目录Linux_for_Tegra/kernel/dtb
$sudo ./flash.sh -r -k kernel-dtb jetson-tx2 mmcblk0p1
更新内核镜像(kernel/Image 涉及外设驱动)
TX2 检索内核先判断根目录下/boot/Image 文件,此时只需要把新的内核Image文件复制到 TX2 开机后的/boot/ 目录后再重启即可,通过uname -a 查看内核信息如日期时间是否为更新的内核
$sudo cp $PWD/Image /boot/
$sudo reboot
系统备份(备份TX2机器中的系统及全部文件)
$sudo ./flash.sh -r -k APP -G backup.img jetson-tx2 mmcblk0p1
如何恢复使用备份的镜像:
1、上面步骤备份会生出两个文件,把其中的backup.img.raw 重新命名到bootloader/system.img(软件镜像包含用户空间的所有文件信息),backup.img 文件不被使用可以删除掉
2、运行命令重新升级机器:
$sudo ./flash.sh -r jetson-tx2 mmcblk0p1
TX1:
系统镜像生成并升级(把机器中的所有内容擦除并刷机,重新制作system.img)
$sudo ./flash.sh jetson-tx1 mmcblk0p1
系统完整升级但不生成system.img镜像(把机器中的所有内容擦除并刷机)
$sudo ./flash.sh -r jetson-tx1 mmcblk0p1
更新DTB 设备树(涉及外设驱动)
将新的DTB文件"tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb"复制到目录Linux_for_Tegra/kernel/dtb
$sudo ./flash.sh -r -k kernel-dtb jetson-tx1 mmcblk0p1
更新内核镜像(kernel/Image 涉及外设驱动)
TX1检索内核先判断根目录下/boot/Image 文件,此时只需要把新的内核Image文件复制到 TX1开机后的/boot/ 目录后再重启即可,通过uname -a 查看内核信息如日期时间是否为更新的内核
$sudo cp $PWD/Image /boot/
$sudo reboot
系统备份(备份TX2机器中的系统及全部文件)
$sudo ./flash.sh -r -k APP -G backup.img jetson-tx1 mmcblk0p1
如何恢复使用备份的镜像:
1、上面步骤备份会生出两个文件,把其中的backup.img.raw 重新命名到bootloader/system.img(软件镜像包含用户空间的所有文件信息),backup.img 文件不被使用可以删除掉
2、运行命令重新升级机器:
$sudo ./flash.sh -r jetson-tx1 mmcblk0p1
Nano:
系统镜像生成并升级(把机器中的所有内容擦除并刷机,重新制作system.img)
$sudo ./flash.sh jetson-nano-emmc mmcblk0p1
系统完整升级但不生成system.img镜像(把机器中的所有内容擦除并刷机)
$sudo ./flash.sh -r jetson-nano-emmc mmcblk0p1
更新DTB 设备树(涉及外设驱动)
将新的DTB文件"tegra210-p3448-0002-p3449-0000-b00.dtb"复制到目录Linux_for_Tegra/kernel/dtb
$sudo ./flash.sh -r -k kernel-dtb jetson-nano-emmc mmcblk0p1
更新内核镜像(kernel/Image 涉及外设驱动)
Nano检索内核先判断根目录下/boot/Image 文件,此时只需要把新的内核Image文件复制到 Nano开机后的/boot/ 目录后再重启即可,通过uname -a 查看内核信息如日期时间是否为更新的内核$sudo cp $PWD/Image /boot/
$sudo reboot
更新U-Boot 分区(Linux_for_Tegra/bootloader/t210ref/p3450-porg/u-boot.bin)
$sudo ./flash.sh -k LNX jetson-nano-emmc mmcblk0p1
系统备份与其他平台不同,按照下面的步骤操作
Nano 的恢复机制和其他平台不同,需要按照如下方式:
备份步骤:
- Nano B01 开机进入系统,root运行如下两个命令,建立备份镜像到HostPC端/home/twsrv01/Downloads/ (修改为自己的IP和对应路径)
$echo u > /proc/sysrq-trigger
$dd if=/dev/mmcblk0p1 | ssh twsrv01@192.168.1.195 dd of=/home/twsrv01/nano/jp43.raw
(30-60分钟不等,依据机器内系统实际大小)
- 进入HostPC (Ubuntu18.04),Nano L4T下载路径,运行如下命令:
twsrv01@twsrv01:~/nvidia/nvidia_sdk/JetPack_4.2.2_Linux_GA_P3448-0020/Linux_for_Tegra$cd bootloader
twsrv01@twsrv01:~/nvidia/nvidia_sdk/JetPack_4.2.2_Linux_GA_P3448-0020/Linux_for_Tegra/bootloader$
./mksparse -v --fillpattern=0 /home/twsrv01/nano/jp43.raw system.img
恢复备份的镜像步骤(即升级刚备份的system.img):
twsrv01@twsrv01:~/nvidia/nvidia_sdk/JetPack_4.2.2_Linux_GA_P3448-0020/Linux_for_Tegra$sudo ./flash.sh -r jetson-nano-emmc mmcblk0p1
Nano重新开机,核对相关文件信息是否一致确认备份恢复成功与否
参考:Xavier 备份恢复https://www.elinux.org/Jetson/AGX_Xavier_Alternative_II_For_Cloning