Jetson Orin Nano nvme系统备份和恢复

        大家好,我是虎哥,Jeston Orin nano 8G模块,我自己也玩了一段时间,配置了很多环境后,我就在琢磨如何将系统像之前的模块一样捞取出来后,在新模块上进行恢复。过程是曲折的,结果也是曲折的,Orin nano确实继承了NANO的一些风格,这些都不是很友好了,这里给大家提供两种办法,一种我自己画了好几天反复做验证,是可行的,另外一种,是我之前在 nano 上的SD卡系统使用过,料想应该也是可行的,但是NVME存储对应的设备贵太多,反正一趟下来,我整体感觉都不是很好了!

目录

1、前期准备

2、使用initrd 备份文件系统

3、烧写备份系统至至新的NVME存储

4、土豪版方案


1、前期准备

首先准备好你自己的套件。

         我自己用的是微雪的载板,核心模块用的是8G不带SD卡的模块。官方提供的版本是带SD卡座的,注意对比区别。

        其次,你的开发套件已经烧写过系统至NVME,默认的启动也是从NVME启动的。

        最后,你需要找一块和你开发条件上一个大小的NVME存储,建议用同一个型号,存储大小需要一对一一致。这点很重要,我反正目前没有找到大存储恢复到小存储的方案,当然小存储恢复到大存储是没有什么问题。也就是你要满足这两个条件,就可以开始下面的方法了。

  • 载板NVME存储大小要小于你存储备份系统的盘

  • 恢复NVME空盘存储大小要大于等于之前备份的存储

所以,汇总一下,你需要准备好得大致物料清单见下图。

2、使用initrd 备份文件系统

开发套件烧写USB线连接到,然后模块recovery模式启动

 如果你PC端使用的事虚拟机,那这个时候,你电脑就会有一个接入选择

 然后lsusb就可以看到设备接入的ID。

         当然,这个时候由于你已经有系统,所以是可以软件进入recovery模式,登录到你模块的终端,输入以下命令。

sudo reboot --force forced-recovery

在你的主机端,进入烧写环境后,输入下面的命令,模块将启动停止在initrd位置。

$ cd Linux_for_Tegra
$ sudo ./tools/kernel_flash/l4t_initrd_flash.sh --initrd <board-name> <rootdev>
#我们实际使用的命令(板载NVME系统)
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --initrd --flash-only jetson-orin-nano-devkit nvme0n1p1
#我们实际使用的命令(板载USB存储系统)
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --initrd --flash-only jetson-orin-nano-devkit sda1

 当出现上面的打印的时候,记得把recovery的跳线冒断开。

 如果你使用虚拟机,会在此出现一次让你选择接入。

 到这,模块就已经停在了initrd位置,后续就需要你手动操作了。

在主机端按照提示输入命令。

#SSH登录模块
ssh root@fc00:1:1:0::2
#密码
root

 第一次链接,一般需要你生成秘钥。输入yes,回车。

提示你输入密码登录,密码是root。

这样我们就登录进去了模块。这个时候将我们准备的大的USB存储接入模块的USB。然后输入命令查看存储情况。

fdisk -l

 接下来我们技术输入命令,使用DD,将NVME存储对拷出来

#挂载U盘
$ mount /dev/sda1 /mnt
#DD对拷
$ dd if=/dev/nvme0n1p1 of=/mnt/system.img.raw

 之后再原位置继续输入以下命令

$ sync
$ umount /mnt

 完事后,我们就备份了当前运行的存储。将备份用的USB存储插入你的主机,就可以看到备份文件。

         你可以将这个和NVME存储一样大的文件拷贝到你的主机内,如果空间不够,那也可以继续放到USB存储,接下来我们要制作一个这个文件的压缩img文件,记得,存放这个文件的存储插到你的主机。

在你的主机找到备份文件的存储目录:

 可以进入看一下

 接下来我们就可以制作压缩IMG文件了。

#进入你的烧写工作目录,注意你自己的目录
cd ~/O100/O100_JetPack_5.1.1_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra
#执行压缩命令
./bootloader/mksparse --fillpattern=0 /media/nvidia/be2deb0f-3381-45c3-a1bc-32bf2139e5ef/system.img.raw system.img

 等待制作镜像完毕就可以了。

 制作完毕

3、烧写备份系统至至新的NVME存储

将一个空的NVME存储,刚换到你的系统上。注意新的NVME存储大小要大于等于之前备份的存储大小

将新的NVME安装到模块上。然后开发套件烧写USB线连接到,然后模块recovery模式启动。

此时你的主机还是老规矩,首先确认Orin模块连接到你的主机了。

lsusb

 此时,需要先烧写一遍空系统,可以直接执行命令,准备好环境。这一步是为了确保你的nvme0n1p1存储前面的引导部分全部都准备好。

#进入你的烧写工作目录,注意你自己的目录
cd ~/O100/O100_JetPack_5.1.1_Linux_JETSON_ORIN_NANO_TARGETS/Linux_for_Tegra
#全部生成烧写
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 \
  -c tools/kernel_flash/flash_l4t_external.xml -p "-c bootloader/t186ref/cfg/flash_t234_qspi.xml" \
  --showlogs --network usb0 jetson-orin-nano-devkit internal

 准备制作镜像。

 执行完毕后,其实官方脚本将系统制作到了如下目录。

cd {your path}/Linux_for_Tegra/tools/kernel_flash/images/external

 实际执行烧写的时候,最终是烧写这个目录的文件。

将备份的压缩文件覆盖这个img文件。

#先删除
sudo rm -f tools/kernel_flash/images/external/system.img
#拷贝之前备份的
sudo cp -f system.img tools/kernel_flash/images/external/

         这个时候,需要将烧写的空系统模块完成Ubuntu setup,这一步是必须的。不然后续恢复备份会出现空间不足,因为空系统不进行初始化,只有64G的镜像。

        开机之后就进入上图“Step 1. Ubuntu setup(oem-config)”阶段,进行以下9个步骤的系统配置工作:

1、同意授权:点选左下角“I accept the terms of thses licences”左边的框,然后点击右下角“Continue”按钮进行下一步;

2、选择“语言”种类:建议这个阶段先不要选择中文,直接点击右下角“Continue”按钮进行下一步;

3、选择“键盘布局”:直接点击右下角“Continue”按钮进行下一步;

4、连接WIFI无线热点:可以根据您的实际状况选择热点,或者现在先不连接,等后面进系统之后在连接,然后点击右下角“Continue”进行下一步;

5、选择“区域”:用鼠标点击图里“中国”范围,下面地区会更新为“Shanghai”,然后点击右下角“Continue”进行下一步;

6、 配置用户名与密码:这个步骤算得上是最重要的环节,因为没有预设值,因此包含用户名(Your Name)、设备名称(Your computer’s name)、密码(Choose a password)都需要自行输入,然后点击右下角“Continue”进行下一步;

7、 配置使用的磁盘空间:预设为最大可用空间,建议不做修改,然后点击右下角“Continue”进行下一步;

8、是否安装Chromium浏览器:接受预设值(安装),然后点击右下角“Continue”进行下一步;

 接下去系统就会根据前面的选择,执行“System configuration”,如下面两张图所示的步骤。

         执行完系统配置之后,就会自动重启,然后进入Ubuntu 20.04 L4T(Linux for Tegra)桌面级操作系统,如同所有Ubuntu操作系统第一次登录时需要执行的步骤一样,都选择“Next”就可以,然后就会看到下面这个熟悉的Ubuntu标准桌面。

 然后开发套件烧写USB线连接到,然后模块recovery模式启动。

此时开始烧写我们备份的。此时你的主机还是老规矩,首先确认Orin模块连接到你的主机了。

lsusb

 然后开始烧写替换后的系统

#只更新 APP,似乎有用 flash APP partition in the NVMe:
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --flash-only --external-only \
    --network usb0 -k APP --external-device nvme0n1 \
    -c tools/kernel_flash/flash_l4t_external.xml jetson-orin-nano-devkit internal

烧写完毕,系统正常启动。

 载板系统中已经变大了,之前装的ROS之类的都在了。

4、土豪版方案

感觉上面的办法很繁琐,所以我们还提供一种土豪办法,简单一点,可以淘宝上找NVME存储对拷机,可以帮你完成母盘对拷。

 这种算是比较便宜的,对于一些公司批量做,可以考虑一拖多的对拷。

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器人虎哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值