大家好,我是虎哥,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存储对拷机,可以帮你完成母盘对拷。
这种算是比较便宜的,对于一些公司批量做,可以考虑一拖多的对拷。