Jetson Xavier NX 备份与烧录固态系统
进入 Linux_for_Tegra/tools/kernel_flash/images/external ,将其中的 system.img 重命名为 system.img.bak。之后进入 Linux_for_Tegra,将 Linux_for_Tegra/bootloader 中的 system.img 重命名为 system.img.bak。该方法需要极大的空间来存储img文件与raw文件,
目录
5.2 Fail to verify Stage25ignature SHA2
1 需要的硬件
像是 nx,nx附带的固态硬盘,显示器 这些就赘述了
- 一个ubuntu实体机(虚拟机听说也行,但是没测试过),我当前ubuntu的版本是16.04
- 一个能连接在ubuntu上的硬盘盒(需要读取nx附带的固态硬盘)
- 短接线(让nx进入恢复模式)
- 安卓数据线
该方法需要极大的空间来存储img文件与raw文件,一个raw文件128G,img文件与系统存储的内容有关,即使是什么都不存也会有38G
在nx上输入 sudo fdisk -l /dev/nvme0n1 ,这里需要记录nx的这些信息,后续我们就不再开启nx了
2 进入nx刷机模式
这里的nx需要有系统,空板子是不行的。需要在配置Linux_for_Tegra之前就让nx与ubuntu相连
之后进入刷机模式,用短接线短接 FC REC和GND引脚
然后用 安卓数据线 连接 nx与ubuntu
3 需要安装在ubuntu上的软件
我们全程只需要在ubuntu端进行操作,下面的软件都是安装在ubuntu上的
3.1 安装gparted
图标是这样的
这里建议把硬盘盒与ubuntu连接起来,看一下固态的分区,能备份的是这样的
像下面这样是无法备份的
3.2 安装nvidia官方烧录包
3.2.1 下载
下载地址 Jetson Linux | NVIDIA Developer
下载这三个东西,版本32.6.1是测试过的,别的版本没测过
把这三个包放在一起,然后打开终端
依次输入下面的命令进行解压
- tar xf Jetson_Linux_R32.6.1_aarch64.tbz2
- sudo tar xf Tegra_Linux_Sample-Root-Filesystem_R32.6.1_aarch64.tbz2 -C ./Linux_for_Tegra/rootfs/
- sudo tar xf secureboot_R32.6.1_aarch64.tbz2
解压之后会得到这个
- 解压的时候需要等待一会儿
3.2.2 配置
安装 qemu
- sudo apt-get install qemu-user-static
生成二进制文件,这一步需要在 Linux_for_Tegra 中执行
- sudo ./apply_binaries.sh
看到最后的success就表示OK。
修改系统数据
- vim ./tools/kernel_flash/flash_l4t_nvme.xml
上图的 512 250069680 是从一开始看nx那张图中得来的
构建系统镜像
- sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash jetson-xavier-nx-devkit-qspi internal
之后输入
- sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --external-device nvme0n1p1 -c ./tools/kernel_flash/flash_l4t_nvme.xml -S 118GiB --showlogs jetson-xavier-nx-devkit-emmc nvme0n1p1
这两步结束之后能看到 success 就对了
至此需要准备的东西就完毕了,下面开始正式的备份烧入流程
4 备份系统
将nx的固态硬盘放到硬盘盒中,之后将硬盘盒与ubuntu连接
之后打开 gparted,然后选择指定的设备
我们需要记录APP的partition,我上图需要记录的内容就是 /dev/sdb1
之后开始备份系统,of是你备份文件要放置的路径,if是你上面记录的内容,其他的地方不用改
- sudo dd if=/dev/sdb1 of=/home/suyu/nx_rootfs.raw bs=1M
可以在另一个终端中输入
- sudo watch -n 3 pkill -USR1 ^dd$
这样你就能看到进度了,我当前raw的文件大小是128G左右的大小
等待结束后就可以得到 nx_rootfs.raw 这个文件了
之后进入 Linux_for_Tegra,将 Linux_for_Tegra/bootloader 中的 system.img 重命名为 system.img.bak
之后将nx_rootfs.raw放在bootloader中,然后输入
- ./mksparse --v --fillpattern=0 nx_rootfs.raw nx_rootfs.img
过程比较久,等结束后,你会在bootloader中得到 nx_rootfs.img
5 烧入系统
进入 Linux_for_Tegra/tools/kernel_flash/images/external ,将其中的 system.img 重命名为 system.img.bak
之后将bootloader中得到的nx_rootfs.img复制到 Linux_for_Tegra/tools/kernel_flash/images/external 中
之后将nx_rootfs.img重命名为system.img
在 Linux_for_Tegra 打开终端,然后输入
- sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --external-device nvme0n1p1 -c ./tools/kernel_flash/flash_l4t_nvme.xml -S 118GiB --showlogs jetson-xavier-nx-devkit-emmc nvme0n1p1
6 我遇到过的问题
6.1 烧录过程中卡在某个地方不动
在烧录的过程中只会在这里慢一点,在其余地方如果等了超过10分钟,建议重新刷一下,偶尔会出现卡在B、USB这种情况
6.2 Fail to verify Stage25ignature SHA2
烧录的时候出现这种错误
重新搞了一下 Linux_for_Tegra,依次在 Linux_for_Tegra 目录下执行了如下命令
- sudo ./apply_binaries.sh
- sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash jetson-xavier-nx-devkit-qspi internal
- sudo ./tools/kernel_flash/l4t_initrd_flash.sh --no-flash --external-device nvme0n1p1 -c ./tools/kernel_flash/flash_l4t_nvme.xml -S 118GiB --showlogs jetson-xavier-nx-devkit-emmc nvme0n1p1
执行完之后,将img文件再次复制到Linux_for_Tegra/tools/kernel_flash/images/external中,然后再烧录就可以了
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)